見出し画像

オープンデータと公開APIを使ってシンプルに本を探せるWebサービスを作った話

Permalink: https://da1.blue/n/n850d5efd5496

【2022-09-03追記】
Code4Lib JAPANカンファレンス2022 のライトニングトークで発表しました。使用したスライドは次の通りです。

表題通りなのですが、個人的にSimple Book SearchというWebサービスを作りました。

もともとの意識は、既存のサービスが本を探すときに必ずしも自分のニーズに合っていないなあということでした。例えば、最初から特定の本が欲しい場合は、オンライン書店なりカーリルなりNDLオンラインなりで検索すればよいのですが、特定のテーマについての本を探しているというときには「ノイズが多い」と感じる場合が多いような気がしました。

また、その本が自分の求めているものかどうかは商品詳細・書誌詳細を見ないと分からないことが多く、それなりにストレスフルな体験となっていました。

ということで
「検索時にノイズが気にならない」 × 「画面遷移が少ない」
本の検索サービスを作りました。

「検索時にノイズか気にならない」を実現するために

とはいえ、技術力もないので、検索機能についてはAPIのある既存のサービスにおまかせしたいところです。そこで、目を付けたのが国立情報学研究所のCiNii Booksです。このサービスは大学図書館等の総合目録であるNACSIS-CATのデータを使用しておりデータの品質が高く、REST APIがあるという利点もあり、さらには検索結果のソート順として「所蔵館順」が選べるのです。

多くの図書館が所蔵しているということは、多数の図書館が(多くは購入という経済行為を経て)蔵書とする判断をしているということで、なんらかの価値をその本に認めているということになります。
まあ、多い順にソートすれば「ノイズ」感は減るかなと思いました。

「画面遷移が少ない」を実現するために

とはいえ、自分の求めている本かどうかを判断するためには、CiNii Booksから得られる基本的な書誌情報のほかにいくつかの情報があることがよいと考えました。

具体的には

をそれぞれAPIを使用して追加しました。

また、再検索の候補表示のために件名の上位語・下位語・関連語などをWebNDLAからNDLSHのデータセットを使用し、キーワードについての知識を補完するために、WikidataDBPedia Japaneseを使用してキーワードに対応したウィキペディア記事の概要を表示するようにしました。

その他・感想など

実装するうえでは、それなりにデザインはすっきりさせたいなと思い、また簡単に実装したかったので、VueとBootstrapをちゃんぽんしています。
(「Webコンテンツ公開方法の理解と実践」をテーマに研修講師をすることになったため、どっちも触ってみたかったというのが動機になります)

実行環境としては、GitHub Pagesで動かし、CloudflareでMinifyをかけています。というわけで、維持費はゼロです。

普段、自力でサービスをつくるという経験はなかなか持てないので、(できあがったもののクオリティは別にして)ふつうに楽しかったです。

Cover Illustration is automatically generated with Stable Diffusion, and provided to public under CC0 condition.