盆暗の学習記録

データサイエンス ,エンジニアリング,ビジネスについて日々学んだことの備忘録としていく予定です。初心者であり独学なので内容には誤りが含まれる可能性が大いにあります。

書籍の情報を検索して参考文献のフォーマットで取得できるChrome拡張機能を作ってみた

表題の通りのものを作りました

Book Searcher

もし同じニーズのある方がいらっしゃいましたらお使いください

背景

私は普段、なにか文献の情報を取得して、APA形式などの参考文献の形に整形したい場合は

Google Scholar ボタン

という、Googleが公式に出しているGoogle Scholar拡張機能を使っています。

この拡張機能Google Scholarなので論文を探すときには素晴らしいのですが、書籍の情報は検索しても出てこないことが多々あります。

そこで、もっとヒット率の高い拡張機能が欲しいと思って作ったのが今回の拡張機能になります。

機能

検索すると、画像のように検索結果の一覧がでてきます。

また、「Citation」のところをクリックすると参考文献フォーマットが出てきます。

どうやって作っているのか

書籍データ・検索システム

Google Books APIを使っています。

最初は別の方法を探したのですが、いいものが見つかりませんでした。 例えば版元ドットコムさんが出しているopenBDは良さそうなAPIかなーと思ったのですが、利用規約的に難しそうなのと、そもそも提供終了予定らしいので無理だなと。他の案だと、例えば国立国会図書館のデータは非営利なら使えそうな感じでしたが新しい本への網羅性など不安でしたので、結局「Google Booksがいいな」となりました。

もしGoogle BooksがScholarのように公式の拡張機能を出していたら自作する必要はなかったのですが…。

参考文献のフォーマットへの整形

citation-js というパッケージを使っています。

citation.js.org

最初はここのロジックも自作しようかと思っていたのですが、世の中にはいろいろなパッケージがあるのだなと痛感しました。ありがたいです。

ただ、日本語文献については専用の形式に整形するものを自前で作ってもよいかなーとも思っています。現状まだ対応できていないですが…

名前のパース

Google Books APIでの著者情報は姓名が分割されておらず、例えば Guido W. Imbens のようなフルネームが1つの文字列で返ってくる形になっています。

APA形式だとImbens, G. W.のようにしないといけませんので、著者の名前をパースする必要があります。

名前のパースはhumanparserパッケージを使っています。

www.npmjs.com

フロントエンド・UI

TypeScript で Vite + React の構成にしています。

またMaterial UIを使っています。

拡張機能の開発でReactを使ったのは初めて(これまではせいぜいjQueryくらいしか使わなかった)のですが、問題なく使えますね。

今後もこういう構成を使っていきたいと思います(Material UIはサイズ調整に苦労したので今後は採用しないかも)

既知の問題

Google Books APIの返り値において、日本語書籍の出版社の情報が欠損していることが結構あります。

そのような本は、この拡張機能では出版社の情報が抜けたままになっています。

今後いい解決策が思いついたら対応したいです。


その他のChrome拡張

他にもChrome拡張機能を出しているのでもしご興味があればぜひご覧ください

  • Link Generator:表示中のページへのリンクをお好みの形式で生成します(Markdown、HTMLなど)
  • note 目次追加:note.comの記事の右側に目次を追加します。