表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
とあるスコッパーの備忘録 ~良作発掘のためには手段は選びません~  作者: とあるスコッパー
7章-なろうデベロッパーを使った探し方

この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

57/60

49-Excel VBAで取得してみる。

※2018年3月現在の情報です。試す人は最新情報を確認してください。

※Excel2016でやってます。PC推奨。

※プログラミングはPCのみです。スマートフォン版は現在はマクロ機能ありません。

 WebAPIの取り方や、データ形式は分かりましたね。それではプログラムではどう取得するのかについて説明します。今回は皆さんになじみのあるExcelで説明します。Excelを持っている方は試してみてください。


 スマホと携帯の人は読み飛ばすか、斜め読みでも結構です。この話はPC推奨です。


 もし、他の言語を使える方はその言語でやってみてください。こだわる必要はありません。Excelを選んだのは、使用者数が多いからですね。でも他の言語は説明しません。『WebAPI <言語名>』で検索してください。


 さて、今回はExcelを使いますよ。前半はプログラミングなしでの取得方法、後半はプログラミングで取得する方法です。ソースコードも一応おいておきます。ちなみに、詳細なプログラミング解説はしません。この関数はどうだとかまで言い始めると終わらないので、使う人は調べてから使ってください。


 ExcelVBAは色々なサイトで使い方を解説されているので、興味が湧いた人はこの機会に勉強してみるといいでしょう。というわけで、まずはプログラミングなしで関数を使った取得の仕方です。



1. 『ExcelでプログラミングなしでWebAPIを取得する方法』

 Excelには多くの関数が用意されており、WebAPI用の関数もあります。


 それが『WEBSERVICE』関数です。使い方は『=WEBSERVICE("URL")』のように書きます。Web サービスからデータを返してくれます。URLの部分は前回説明したWebAPIのフォーマットを入力します。例を挙げると、


 『=WEBSERVICE("https://api.syosetu.com/novelapi/api/?of=r-f-a-l&ncode=N5084EJ")』

 例えばこれだとNコードN5084EJのレビュー数、ブクマ数、評価ポイント、文字数を返します。


挿絵(By みてみん)


 もし、キーワードや除外キーワードを使う場合は、その部分をUTF-8にエンコードされた文字を入れる必要があります。そんな場合に使うのは『ENCODEURL』関数です。使い方は『=ENCODEURL("文字列")』のように書きます。URL用のUTF-8にエンコードされた文字列を返します。例を挙げると、


 『=WEBSERVICE("https://api.syosetu.com/novelapi/api/?of=t-l-ka&lim=10&order=weekly&word=" & ENCODEURL("魔法"))』

 例えばこれだと魔法のキーワードが入った作品を週間ユニークユーザーの多い順に並び替えて、上位10作品のタイトル、文字数、会話率を返します。


挿絵(By みてみん)


 こんな感じで使います。これらの関数はExcel2013から使えます。それ以前のバージョンでは使えません。


 また制約があって受け取れる文字数は32767文字です。それ以上の文字数が返ってきた場合はエラーになります。すべてのパラメータの取得だと20~50作品分ですかね。使う場合はofパラメータ指定かlim指定が必須です。


 注意点ですけど、WEBSERVICE関数を入力したセルを別のセルにコピー&ペーストすると一斉にWEBSERVICE 関数が実行されます。なるべく単品で実行させるようにしてください。調子乗って100個くらいコピペすると大量のリクエストが同時に送られます。


 ただ、一度実行された後は、明示的に再計算させない限りそのままです。関数の文字数とかを変えない場合は、他の関数のように都度再計算されません。なるべく負荷を抑えるような仕様になっているようです。


 そのあたりに注意して使ってみてください。



2. 『Excel VBAでプログラミングしてWebAPIを取得する方法』

 さてここからプログラミングです。あくまでも一例です。Excelを使わなくてもいいですし、他のやり方もいっぱいあります。プログラムが出来る人は多分他の言語でやる方がいいと思いますよ。


 ではまずはExcelの準備です。プログラミングをするためにはいろいろな準備が必要です。それについてまず説明します。やる人は以下の手順でやってください。


 まずツールバーの[ファイル] -> [オプション] -> [リボンのユーザー設定]のメインタブで開発にチェックを入れてください。(ついている人はそのまま)これでプログラム用のタブが出てきます。


挿絵(By みてみん)


 次に開発タブの[VisualBasic]をクリック。VBE(Visual Basic Editor)を立ち上げてください。


挿絵(By みてみん)


 次に標準モジュールを追加してそこに以下の宣言文を追加してください。

『Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)』(Sleepを使うためのものです。これで1秒以上の間隔を強制的にあけます)


挿絵(By みてみん)


 最後にイミディエイトウィンドを立ち上げておいてください。

 

挿絵(By みてみん)


 ということで準備が終わったんで、プログラミングします。


 以下のコードを標準モジュールにコピぺしてください。'はコメント行です。


'********************************************

Sub SampleWebAPI()

Dim objXMLHttp As Object, strbuf As String


Sleep 1000'1秒待機。

Set objXMLHttp = CreateObject("MSXML2.XMLHTTP") 'Set

objXMLHttp.Open "GET", "https://api.syosetu.com/novelapi/api/?of=r-f-a-l&ncode=N5084EJ", False

'NコードN5084EJの小説のレビュー数、ブクマ数、評価数、文字数を取得する。

objXMLHttp.send '送信


strbuf = objXMLHttp.responseText 'APIの結果を変数に代入する

Debug.Print strbuf 'イミディエイトウィンドへの貼り付け

Set objXMLHttp = Nothing 'オブジェクトのクローズ

End Sub

'********************************************


挿絵(By みてみん)



 これで、カーソルをSampleWebAPI関数内において、スタートボタンを押してください。もしくはF5キーを押す。



挿絵(By みてみん)


 そうするとプログラムが実行されます。以下が実行結果ですね。こんな風にstrbufに結果が格納されています。これをシートに貼り付けたり、分離したりしてデータを集めます。


挿絵(By みてみん)


 objXMLHttp.Open のURLを変えると自分の好きなデータが取れます。これを応用すれば番外編のようなデータ分析、解析が出来ちゃいますね。


 ただ、気を付けてほしいのはSleep関数です。For文とかのループを入れる場合にはこれも必ず含んでください。プログラムによるリクエストは非常に高速です。そのため待ち時間を入れるのにSleep関数を使っています。これを外すと連続リクエストになるので、サーバーへの負荷が非常に大きくなります。なのでこれを外さないようにお願いします。


 またこのファイルを保存する場合は拡張子をxlsmにしてください。そうでないとマクロの内容が消えます。


挿絵(By みてみん)


 Excel VBAでWebAPIを使う場合はこんなかんじですね。色々と試してみてください。


◆ ◆ ◆


 さて、これでとあるスコッパーの7章本編は終わりです。導入しか説明はしませんでしたが、いかがでしたか? またこの7章をもって、探し方の説明は終わりです。あとは番外編とエピローグだけです。


 これまで、色々な探し方を紹介してきましたが、何か参考になることはありましたでしょうか。もし、一つでも参考になることがあったなら、幸いです。


 サイトが大きくなり、投稿される小説の数が多くなるほど探すことは難しくなります。これは人気サイトにとって避けられないことなのです。ですが、幸いにも小説家になろうではいろいろな探し方が用意されています。ぜひ、あなたの好みの小説を探してみてください。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ