見出し画像

NotionAPIを使って小さな個人図書館を試してみる

はじまり|同じ本が2冊ある…

突然ですが、私は本を買うのが趣味です。ある時までは、本を読むのが趣味だと思っていたんですが、そうは言えないほどに家の中に未読の本が溜まっていき、今ではあくまで本を買うことが趣味ということにしました。そんなある日、気づいたら家の中に同じ本が2冊と出会い、なんともいえない残念さを感じ、本を管理するしくみをつくろうと思い立ちました。

目指したい3つのポイント。すばやく簡単に登録できること。分類や項目を自分好みにカスタマイズできること。他の人と本やオススメを共有できること。
目指したい3つのポイント

そこで、まわりの人との本の情報を交換したり、本自体を貸し借りができるような「小さな個人図書館」のようなものをつくれないかと構想しました。

本を管理するしくみやアプリはいくつかありますが、この「小さな個人図書館」を実現するため、本のジャンルや貸し借りの状態管理など、管理のしかたを自由にカスタマイズして、簡単に変更できる状態を目指すことにしました。同時に管理が面倒にならないように、すばやく簡単に登録できることを重視しました。

いざ、実装

そこで、持っている本・新しく買った本をデジタル上で管理するためのデータベースにはNotionを活用することにしました。そして、登録の手間を省力化する部分を、バーコードをスキャンするだけで、自分の欲しい情報を自動で登録してくれるしくみとしてつくってみました。

システム構成図。本のバーコードを読み込み、書籍情報を参照しNotion APIを用いてNotion上に保存するしくみ。
システム構成図(本のバーコードから書籍情報を参照しNotion上に保存)
  1. 画像認識ライブラリである「OpenCV」を用いて、書籍からバーコード抽出をする。

    1. ウェブカメラからのリアルタイムの映像に対して、「BarcodeDetector」でバーコードを抽出。

  2. 抽出したバーコードから書籍情報(タイトル・著者名)や書影を「Google booksのAPI」と「楽天books API」を用いて取得する※。

  3. 取得した情報を「Notion API」を用いて、Notionのデータベースに登録する。

※Google books APIは登録不要で使用可能で、一部書影の取得ができないものがあったため楽天ブックスAPIで書影を取得しています。本来、併用する必要はありません。いろんなAPI触ってみました。

つくってみて

今回作成した本を管理している様子。本が書影・タイトルとともに整理されている。
本を管理している様子

ひとまず動いて登録するところまではすんなり完了し、使用しているウェブカメラのAFが合焦すれば瞬時に登録が完了し、手作業で登録する手間を大幅に軽減できました。面倒でできていなかった本の一覧化をできたことで、実際に人におすすめを教えたり、本を貸してみたりできるようになりました(積読もしっかり可視化されてしまいました汗)。

今回はすぐ実装できるようにPCで試してみましたが、より自然に日常生活の中で使うことを考えると、アプリケーションとして実装したり、スキャナーのようなハードウェアまでつくったりしたいなと思いました。

(執筆:ショウジ)