青空文庫ブンゴウメールやゾラサーチなど、青空文庫を活用したサービスを色々作っています。その関係で青空文庫APIがほしくて眠れない日々が続いていたので、作りました。「AOZORA」+「API」で「ZORAPI(ゾラピ)」です。ZORAPI(ゾラピ)「ゾラサーチ」というのが青空文庫を読了時間で検索できるようにしたサービスで、このAPIはそのデータを誰でも使えるように一般公開したものです。そのため通常の作品情報に加えて、作品の文字数や書き出し・青空文庫での累計アクセス数などの情報も返してくれるあたりがちょっといい感じかと思います。メロスだとこんな感じ:https://api.bungomail.com/v0/books/1567まだまだ不具合もありそうだけど、一旦使えるようにはなったので公開してみます。v0なのでいろいろ許してください(フィードバック大歓迎です)。つくったもの青空文庫には2019年9月現在で約1.6万件の作品データ、約1,000件程度の人物(著者・翻訳者など)データが登録されています。公式がこれをまとめた巨大なCSVファイルを自動更新で公開してくれているので、基本的にこのデータを検索して返すAPIとなっています。公式CSVをスプレッドシートに取り込んで公開してるので、どんなデータが返ってくるかはこれを見てもらうのが早いかと。スプレッドシート公式CSVは毎日更新されてますが、ほとんどの場合そんなに最新のデータが必要になるわけじゃないと思うので、データ更新は不定期で対応する予定です。APIで取れるデータの最新情報は前述のスプレッドシートで確認してください。personsそれぞれのエンドポイントに対して、カラム名での検索と、ID指定で特定ドキュメントの取得ができます。検索は基本完全一致ですが、一部カラムはLIKE検索もサポートしています(後述)。検索(一覧取得)https://api.bungomail.com/v0/books?作品名=桃太郎https://api.bungomail.com/v0/books?作品著作権フラグ=なし&文字遣い種別=新字新仮名&limit=5https://api.bungomail.com/v0/persons?人物著作権フラグ=なし&limit=5検索対象となるのは、スプレッドシートでオレンジ色になっているカラムです。対象カラムであれば、上記の例のように複数組み合わせて絞り込み(AND検索)することもできます。特定レコード取得https://api.bungomail.com/v0/books/1567(作品ID)https://api.bungomail.com/v0/persons/35(人物ID)詳細な使い方やレスポンスのフォーマットについてはドキュメントをご参照ください。アピールポイント作品の文字数・書き出し・累計アクセス数も取れる公式のCSVで得られる情報に加えて、「ゾラサーチ」で利用している独自データも追加しています。具体的には「作品の文字数」「書き出し」「累計アクセス数」です。LIKE検索も(一部)サポートFirestoreを使ってるので検索が弱く、基本的に検索は完全一致となります。フリーワード検索したいこともあるので、一部カラムでLIKE検索もサポートしました。booksの「作品名」、personsの「姓名」カラムが、それぞれLIKE検索に対応しています。https://api.bungomail.com/v0/books?作品名=/走れ/&姓名=太宰治のように//で囲んでお使いください。他のカラムとの併用も可能です。Firestoreで全文検索する方法はこちらの記事を参考にさせていただきました。qiita.com控えめに言って天才としか言いようがないメソッドですので、Firestore使う方はぜひご参考ください。感謝しすぎてreact使ったこともないのに「りあクト!」新刊買ってしまいましたw限界こんな感じのAPIなんですが、無料運営にこだわってFirestoreに依存している結果、弱点も多いです。並べ替えができないすべてのレスポンスが「累計アクセス数↓・作品ID↑」順でソートされております。これ以外でのソートはできません。文字数とか名前とかで並べたいよね。複合indexの組み合わせが爆発するので、とてもすべてはindexできそうにありません。してもこの条件でソートしなければ死ぬ、とかの要件があればご相談ください。(でもそこまで追い詰められてたら自前でデータ取り込んで検索したほうがいいと思います)アクセス数が爆増したら登録制にするかもFirebaseの無料プランで運営しているため、当然使用量に制限があります。検索結果は超長期でCDNキャッシュする予定ですが、それでもアクセスが多すぎる場合は登録制にして利用を制限するかもしれません。そんなことにはならないと思うんですけど。全データ取得の目的でAPI投げまくるとかを検討されている場合、たぶん公開してるスプレッドシートをダウンロードして直接読み込んでもらったほうがお互いハッピーだと思いますので、ぜひそちらをご検討ください。まとめという感じで、まぁいろいろ制限はありますが何とか使えなくもないAPIができたんじゃないかと思います。がんばりすぎずに長生きしてほしいなと思ってますので、これでもいいよという方はぜひ使ってみてください。バグや改善要望、使ってみたレポートもお待ちしておりますよ。18:29作品の書き出しなども取得できるちょっと便利な青空文庫API「ZORAPI(ゾラピ)」ベータ版を公開しましたTweet関連記事2019-04-04青空文庫の作品を目安の読了時間で検索できるサービス「ゾラサーチ」をリリースしましたタイトルのまんまですが、また地味なサービスを作りました。以前に「死なないWebサービスの作り方」みたいな記事を書いたと...2018-04-25青空文庫の短編を1ヶ月で読み切れるように小分けして毎日メールで配信してくれる「ブンゴウメール」をリリ...めっちゃ小粒ですが、久々にWebサービスつくりました。作品の書き出しなども取得できるちょっと便利な青空文庫API「ZORAPI(ゾラピ)」ベータ版を公開しました独自ドメイン取るべきかどうか問題を判断できる(かもしれない)フローチャートを作りましたプロフィールぼっちスタートアップでニッチなWebサービスを作ったりしています。TOURNAMENT」など。読者になるスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。