48-ブラウザ(Google Chrome, Internet Explorer, Firefox等)で使ってみる。
※2018年3月現在の情報です。使用する場合は最新の情報を確認してください。
それでは今回は一番簡単な小説家になろうの『WebAPIの使い方』を説明します。説明を簡単にするため、一部正確でない表現もありますが、ご容赦ください。
WebAPIを使うにはプログラミングが必要なんでしょ、って思われる方も多いかもしれません。ですが、使うだけならプログラミングは必要ありません。ブラウザだけで使えます。
プログラミングが必要なのは、大量のデータを取得、加工、集計、解析、分析するため、もしくは自動データ取得のため。または、補助サイトを作る、スマホアプリを作るなどで利用する。そういった使い方をするにはプログラミングは必須です。ですが、少しのデータを知りたいのであれば必要ないです。
単に検索の補助ツールとしてや、単発の解析で使う場合であればプログラムせずにブラウザ + Excelの組み合わせだけで済むことが多いです。またブラウザであればスマホの人も簡単に使うことができます。そんなわけで、一番簡単にWebAPIを使いたいのであれば、ブラウザを利用することをおすすめします。
ではどんな感じで使うのかというと、小説家になろうのWebAPIのフォーマットをアドレスバーに打ち込むだけです。それだけでいいのです。打ち込んだ結果は画面に表示されますので、それをテキストやExcelなどに貼り付けて調べたり、解析したりすればいいのです。単に小説のNコードを調べるだけでもいいですね。
特になろう小説APIでは1回最大500件取得できます。なろうの検索フォームだと1ページ20件なので全体を眺めたい時に不便です。なろう小説APIだと2000件の小説データを取得するのに表示は4回ですみます。あらかじめ検索用の文字を用意していれば、1分もあれば2000件の検索が可能なのですよ? 簡単な補助検索機能として使うのも全然ありですね。また詳細検索よりも高度な検索指定ができます。
1万作品の小説データを解析しようと思っても、最小20回のリクエストで済むので、手動でもできないことはないのです。
というわけで、今回はブラウザを利用した小説家になろうのWebAPIの使い方をお教えします。これを使えば簡単な検索、解析、分析も出来ちゃいますよ。
ブラウザはGoogle Chromeで説明しますけど、基本的に他のブラウザでも同じように動作します。自分が普段使うブラウザで試してみてください。あまりにも特殊なブラウザは分からないですが。
では早速使い方を見ていきましょう。まずはなろうのWebAPIの仕様からです。小説家になろうのAPIは誰でも使うことができます。他のサイトだと利用登録が必要な場合が多いのですがなろうの場合は必要ありません。
単純に指定したアドレスにリクエストを送ると、必要な情報が返ってくる仕組みです。例えば、『なろう小説ランキングAPI』だとこんな感じです。2013年5月1日の月間ランキングを取得したい場合はこれをブラウザのアドレスバーに打ち込みます。するとその結果が画面に表示します。『https://api.syosetu.com/rank/rankget/?rtype=20130501-m』(コピペ用です。試してみてください)
基本的になろうのWebAPIはアドレス部とリクエスト部に分かれてます。アドレス部は固定で、リクエスト部を変えて知りたい情報を取得します。ランキングAPIの場合は日付とランキングの種類ですね。
では実際にAPIの種類ごとに使っていきます。『なろう小説ランキングAPI』、『なろう殿堂入りAPI』、『なろう小説API』で説明します。(といっても打ち込みと結果を見るだけですが)
・『なろう小説ランキングAPI』
アドレス部:"https://api.syosetu.com/rank/rankget/?"
リクエスト部で指定可能なパラメータはgzip、out、rtypeです。このうちgzip、outは省略可能です。gzip、outはデフォルトで問題ないです。rtype指定だけで十分です。gzip、outの詳細が知りたい人は各自で調べてください。
リクエストフォーマットは『rtype=yyyymmdd-x』(yyyyは西暦、mmは月、ddは日です。xは日間はd,週間はw,月間はm、四半期はq)です。
また制約があって、2013年5月1日以降の日付、週間を取得する場合は火曜日、月間、四半期を取得する場合、日付は1日を指定。破るとエラーが出ます。
出力は、Nコード、ポイント、順位(1~300)です。得られたNコードをなろうの検索に入れると該当小説が分かります。
例として2018年3月1日の日間ランキングが見たい場合は『https://api.syosetu.com/rank/rankget/?rtype=20180301-d』をアドレスバーに打ち込んでください。こんな感じで300位まで見ることができます。
以下、コピペ用。試してみてください。(技術マニュアルの例題より)
1. [https://api.syosetu.com/rank/rankget/?rtype=20130501-m]
2013年5月1日の月間ランキングを取得する。
2. [https://api.syosetu.com/rank/rankget/?rtype=20130502-d]
2013年5月2日の日間ランキングを取得する。
3. [https://api.syosetu.com/rank/rankget/?rtype=20140401-q]
2014年4月1日の四半期ランキングを取得する。
4. [https://api.syosetu.com/rank/rankget/?rtype=20140408-w]
2014年4月8日(火曜日)の週間ランキングを取得する。
・『なろう殿堂入りAPI』
アドレス部:"https://api.syosetu.com/rank/rankin/?"
リクエスト部で指定可能なパラメータはgzip、out、ncodeです。先ほどと同様にncode指定だけで十分です。
リクエストフォーマットは『ncode=<Nxxxxx>』(<Nxxxxx>は対象小説のNコード)です。
例としてNコード<N9669BK>(無職転生)の殿堂入りが見たい場合は『https://api.syosetu.com/rank/rankin/?ncode=N9669BK』をアドレスバーに打ち込んでください。
出力は、ランキングタイプ、ポイント、順位(1~300)です。ランキングタイプは、なろう小説ランキングAPIと同じ形式です。ちなみにない場合は『Error: Data not found.』が返ってきます。
以下、コピペ用。試してみてください。
1. [https://api.syosetu.com/rank/rankin/?ncode=<Nxxxxx>]
<Nxxxxx>を自分の知りたい小説のNコードに変えてください。
・『なろう小説API』
アドレス部:"https://api.syosetu.com/novelapi/api/?"
リクエスト部で指定可能なパラメータは大量にあるので以下にまとめます。(詳細は技術マニュアル)基本的に詳細検索のパラメータと同じです。
gzip:圧縮用(省略可)
out:出力形式(省略可)
lim:最大出力数(1~500 省略した場合は20)
st:表示開始位置の指定(1~2000 省略した場合は1)
※1リクエストで500件以上の検索結果があった場合はこれを変えて取得する。
※小説家になろうの検索システムと同じで2000件が同じ検索条件では限界。
of:出力する項目(省略した場合は全項目出力)
order:出力順序(省略した場合は新着順)
word:検索キーワードを指定(省略可 文字コードはUTF-8)
notword:除外キーワードを指定(省略可 文字コードはUTF-8)
title、ex、keyword、wname(キーワードの抽出対象の範囲 タイトル、あらすじ、キーワード、作者名 指定しない場合はすべて)
biggenre:大ジャンル指定(省略可)
notbiggenre:除外大ジャンル指定(省略可)
genre:ジャンル指定(省略可)
notgenre:除外ジャンル指定(省略可)
userid:ユーザID指定(省略可)
isr15、isbl、isgl、iszankoku、istensei、istenni、istt:(登録必須キーワード指定 省略可)
notr15、notbl、notgl、notzankoku、nottensei、nottenni、nottt:(登録必須キーワード除外指定 省略可)
minlen:最小文字数指定(省略可)
maxlen:最大文字数指定(省略可)
length:文字数指定(minlen, maxlenとの併用は不可 省略可)
kaiwaritu:会話率指定(省略可)
sasie:挿絵数指定(省略可)
mintime:最低読了時間指定(省略可)
maxtime:最大読了時間指定(省略可)
time:読了時間を指定(mintime, maxtimeとの併用は不可 省略可)
ncode:Nコード指定(省略可)
type:小説タイプ指定(短編、連載中、完結済連載小説、すべての連載小説、短編と完結済連載小説 省略可)
buntai:文体指定(省略可)
stop:連載停止中作品指定(省略可)
ispickup:ピックアップ条件の指定(省略可)
lastup:最終掲載日指定(省略可)
opt :オプション項目の指定(省略した場合はなし)
リクエストフォーマットは『of=t-n-s&lim=100&order=favnovelcnt&biggenre=2&minlen=10000』のようにパラメーターごとに&でつなげ、同じパラメータで複数の条件を指定できる場合は-でつなげます。
上の場合、出力をタイトル、Nコード、あらすじにして、出力結果の最大を100件、並べ替えはブックマーク数の多い順。抽出条件は大ジャンルがファンタジーで最小文字数が10000字の作品となる。
アドレスバーに打ち込むと、『https://api.syosetu.com/novelapi/api/?of=t-n-s&lim=100&order=favnovelcnt&biggenre=2&minlen=10000』こんな感じに表示されます。
こんな感じに初めにallcount:で該当小説の数が、その下にofパラメータで指定した小説情報が表示されます。要するに詳細検索で必要なパラメータだけ表示させた感じですね。余計な情報は表示されません。
でofパラメータですが、以下のパラメータが指定できます。
t:小説名
n:Nコード
u:作者のユーザID
w:作者名
s:小説のあらすじ
bg:大ジャンル
g:ジャンル
k:キーワード
gf:初回掲載日
gl:最終掲載日
nt:連載、短編フラグ
e:完結済みフラグ
ga:全掲載部分数
l:小説文字数
ti:読了時間
i:長期連載停止中フラグ
ir:R15フラグ
ibl:ボーイズラブフラグ
igl:ガールズラブフラグ
izk:残酷な描写ありフラグ
its:異世界転生フラグ
iti:異世界転移フラグ
p:投稿媒体
gp:総合得点
f:ブックマーク数
r:レビュー数
a:評価点
ah:評価者数
sa:挿絵の数
ka:会話率
nu:小説の更新日時
ua:最終更新日時
またオプションでweeklyを指定すると週間ユニークユーザ数も返ってきます。ちなみに週間ユニークユーザ数は前週の日曜日から土曜日分のユニークの合計です。毎週火曜日早朝に更新されます。
こればっかりは使って慣れる必要があるので、いくつかコピペ用のサンプルを用意しておきます。実際に試してみてください。
1. [https://api.syosetu.com/novelapi/api/?of=r-f-a-l&ncode=N5084EJ]
指定したNコードのレビュー数、ブックマーク数、評価点、小説文字数を取得する。(N5084EJはこのエッセイ。知りたい小説のNコードにしてください)
2. [https://api.syosetu.com/novelapi/api/?of=t-n-gp-gf&lim=100&order=hyoka&userid=1090932]
指定した作者の作品のタイトル、Nコード、総合得点、初回掲載日を取得する。並べ替えは評価の高い順、最大100件の表示。(1090932は夕月のID。知りたい作者のIDにしてください)
3. [https://api.syosetu.com/novelapi/api/?of=t-l-ka&lim=100&order=weekly&word=魔法&biggenre=2&kaiwaritu=20-50&opt=weekly]
キーワード”魔法”でジャンルが”ファンタジー”で会話率が20%以上50%以下の作品のタイトル、小説文字数、会話率、週間ユニークユーザー数を取得する。並べ替えは週間ユニークユーザの多い順の高い順、最大100件の表示。
※本来キーワードはUTF-8で書かないといけないけど、ブラウザで変換してくれるのでこのまま。プログラミング時にはURLエンコードが必要。
4. [https://api.syosetu.com/novelapi/api/?lim=100]
新着順で100件の小説を表示する。(ofパラメータ指定なし)
というわけで、こんな感じで使うことができます。『なろう小説API』は少しややこしいですが、あらかじめよく調べるキーワードや条件をテキストなんかにしておいてそれをコピペするといいでしょう。
ぜひやってみてください。こういうのは試してなんぼのもんです。貼り付けには1秒以上かかるので利用制限を気にする必要はないと思います。実践してみてください。初めはコピペから試してみてはいかがでしょうか。慣れたらアレンジしてみてください。
◆ ◆ ◆
ということで、今回ブラウザでWebAPIを使いました。プログラミングしましたか? しませんでしたよね。やったのはコピー&ペーストだけです。実際のところWebAPIはプログラミングなしても使えます。あまり難しく考える必要はありません。
これを応用すれば、いろいろなことが出来ます。
簡単な解析だって出来ますし、ようは使い方です。全小説を解析するためには今だと最低1100回の取得が必要なので、さすがにこれはプログラミングしないと厳しいですが、統計的な手法であればそれの1割、100回(5万作品)くらいでも十分でしょう。特に今の人気作品を調べるならそれで十分ですね。
色々と試してみてはいかがでしょうか。
◆ ◆ ◆
おまけ ~WebAPIを使った低評価小説の簡単な探し方~
今回はおまけとしてWebAPIを使った低評価小説の探し方についてお教えします。小説家になろう上だとランキングや検索システムではどうしてもポイントの高い作品や、よく見られている作品が引っかかります。
それは検索システムの並べ替えに評価の低い作品を上位に持ってくる機能がないからです。ですが、なろう小説APIでは『総合評価の少ない順』に並べ替えを行うことができます。これを利用することで、埋もれてしまった低評価作品を発掘することができます。
ofパラメータで『Nコード』、『タイトル』、『あらすじ』、『キーワード』、『ブクマ』、『評価』、『文字数』、『ジャンル』あたりを取得するようにすればちょうどいい感じで表示してくれます。
ということでやり方を説明しますね。
1. 取得したい条件を決める。キーワードや、文字数、ジャンルなんかを決めてください。
ここではキーワード"魔女"、文字数は1万字以上とします。
2. 知りたい情報を決める。
ここではNコード、タイトル、キーワード、文字数、総合評価、ブクマ数、レビュー数、最終更新日
3. APIリクエストのフォーマットを作成する。以上の条件だと、『https://api.syosetu.com/novelapi/api/?of=n-t-k-l-gp-f-gl&lim=500&order=hyokaasc&word=魔女&minlen=10000』ですね。
4. それをブラウザに打ち込みます。
こんな感じで返ってきますので、気になるタイトルなど見てNコードを調べてみるといいですね。ちなみに総合評価が0でもブクマ数がある場合があります。これは評価公開しない設定にしているためです。評価公開しない設定だとブクマがあっても総合ポイントが0になります。なので今回はブクマ数も同時に調べる設定にしています。1回で最大500作品見ることができるので効率的です。(本来はプログラムで検索システムを作るのがいいけど、補助と割り切ればこれでもいいかな)
これでどんなジャンルでも埋もれた作品の発掘が簡単にできますよ? もちろん低評価作品の分析にも使えます。作品数が多い場合はジャンルを指定するなどしてみるといいですね。
色々な使い方を各自で試してみるといいですね。いい感じの検索ができればそれをエッセイで発表してみるのもいいかもしれません。
どうぞご活用ください。




