なろう殿堂入りAPIは作品が過去にどのランキングに載ったか(殿堂入りしたか)を調査できるAPIです。
対象となるランキングは「小説を読もう!で公開しているランキング」で2013年5月1日以降の日間、週間、月間、四半期ランキングの一部です。
現在、R18ランキングを取得するAPIは提供しておりません。
なろう殿堂入りAPIはHTTPでのリクエストに対してJSON形式、JSONP形式又はYAML形式で応答します。
すべての殿堂入りを調査できるわけではありません。
出力形式
JSON形式、JSONP形式またはYAML形式となっています。
標準はYAML形式となっていますが、outパラメータで変更できます。
文字コードはUTF-8です。
APIのURL
https://api.syosetu.com/rank/rankin/
GETで送信。POSTでは受信できません。
ncodeは必須です。指定しない場合、Error: Novel not found.が出力されます。
GETパラメータ
パラメータ | 値 | 説明 |
---|---|---|
gzip | int(1~5) |
gzip圧縮してgzipファイルとして返します。 |
out | string |
出力形式をyamlまたはjsonまたはphpを指定。 |
ncode | string |
Nコードです。 |
https://api.syosetu.com/rank/rankin/?ncode=N0001A
N0001Aが過去にどのランキングに掲載されたかを調べるURLです。
outパラメータの詳細
出力形式を指定できます。
jsonまたはyamlまたはphpで指定してください。
-
yamlYAML形式(デフォルト)
-
jsonJSON形式
-
phpPHPのserialize()
-
jsonpJSONP形式
JSONPの使い方
JSONPを利用することでJavaScriptから直接、APIを利用できるようになります。
-
callbackコールバック関数名。コールバック関数名には半角英数字など/^$?[a-zA-Z0-9\[\]\.\_]+$/ (perl) の正規表現に一致する関数名を指定してください。
https://api.syosetu.com/rank/rankin/?out=jsonp&callback=call&ncode=N0001A
JSONP形式でコールバック関数名をcallにしたい場合のURLです。
YAML形式の出力に関する動作について
出力形式にYAMLを指定した場合、パラメータを指定する事で利用するライブラリを変更できます。
パラメータ | 値 | 説明 |
---|---|---|
libtype | int |
利用するライブラリを指定できます。
|
https://api.syosetu.com/rank/rankin/?ncode=N0001A&libtype=1
従来通りのライブラリで出力を行ないます。
文字列が格納される部分が数値で構成されている場合でも、数値はダブルクォートで囲まれません。
https://api.syosetu.com/rank/rankin/?ncode=N0001A&libtype=2
新ライブラリで出力を行ないます。
文字列が格納される部分が数値で構成されている場合、数値がダブルクォートで囲まれます。
出力
APIサーバが出力する文字コードはUTF-8です。デフォルトはYAML形式です。
outパラメータでJSON形式などにも変更できます。
要素 | 説明 |
---|---|
rtype |
ランキングタイプです。日付-種別の形式です。種別は日間の場合はd、週間の場合はw、月間の場合はm、四半期の場合はqとなります。 |
pt |
ポイント |
rank |
順位1~300 |
制約について
殿堂入りの対象となるランキングのデータは2013年5月1日以降の「小説を読もう!で公開しているランキング」を蓄積(バックアップ)したものです。
しかしながら、すべてのランキングの蓄積はサーバリソースの制約上、不可能であり、週間は毎週火曜日のみ、月間と四半期は毎月1日のランキングを蓄積し、これらの蓄積されたランキングに掲載された場合のみ、殿堂入りとして結果を出力します。
そのため、たとえば、月曜日に週間ランキングに掲載された場合でも、次の火曜日に週間ランキングに掲載されていない場合は、殿堂入りとして扱われません。
また、「小説を読もう!で公開しているランキング」の日間ランキングは1日3回更新されていますが、このAPIでは午前4時~午前7時に作成した日間ランキングのみを蓄積しAPIで提供しています。
午後の日間ランキングに掲載され、翌朝の日間ランキングに掲載されなかった場合は殿堂入りと認定されません。
予めご了承願います。
利用制限
負荷状況により今後、導入されることがあるためキャッシュの導入など、利用制限を想定したシステム設計をお願いします。ただし、古い情報を誤って掲載しないよう一定期間(長くても2週間)でキャッシュの更新・削除をお願いします。
IPアドレスごとに利用制限を行います。
1日の利用上限は80,000または転送量上限400MByteです。
利用制限は初回アクセスから24時間が適用範囲です。
初回のアクセスから24時間後に回数と転送量を記録していたカウンタと初回アクセス時刻をリセットします。
なお、1日の利用上限を超えた場合、エラーの発生確率が増します。
混雑状況にもよりますが、リクエスト回数または転送量が利用上限の120%を超えるとほとんど接続できなくなります。
備考:利用制限カウンタは厳密ではなく多少のマージンを設けてあります。
転送量は圧縮することで減らせます。
- gzip=5を指定し、gzipファイルで受信する。
デメリットとして受け取り側で解凍する手間は発生するが、かなりの転送量を削減できる。 - YAML形式を使う。一番容量が小さいため。
遅延について
データベースサーバは日本国内の複数拠点に分散されていることがあります。
APIから小説データベースに接続した場合、原則としてスレーブサーバにつながります。
マスタサーバとスレーブサーバ間は10秒以内にデータを同期しています。
しかし、何らかのネットワーク障害が発生した場合、遅延が発生し、サーバによってデータにばらつきが生じることがあります。
また、実際にランキングのデータが修正されてからAPIに反映されるまで遅れがあります。