Web上の本棚サービスを考える

色々触発されて。
図書館屋としてはコロン分類法をデータベースに落とし込むのが正当なんだろうけど、なんちゃってである俺にはその素養がない。ので、せいぜいがフォークソノミー的な分類をするのが関の山だ。

書誌テーブル

書誌情報のユニークIDとして、ISBNコードを使う。桁に余裕を持たせて、ISSNやASIN、JAN(EAN)、UPCなども格納できるよう、拡張性を持たせるのがいいだろう。
書誌テーブルはユニークIDと、そのIDが何コードであるかの二つのカラムしかない。
ISBN:4150307725、以下のようになる。

コード種 ユニークID
ISBN 4150307725

書誌−タグテーブル

次に書誌−タグテーブルを作成する。書誌とタグをフラットに結びつけるもので、冗長性を与えることで拡張性も確保する。
ISBN:4150307725、以下のようになる。

書誌ID タグ種 タグ内容 アマゾンから取得可能な情報
4150307725 書名 西条秀樹のおかげです アマゾンから取得可能な情報
4150307725 著者 森奈津子 アマゾンから取得可能な情報
4150307725 出版者 早川書房 アマゾンから取得可能な情報
4150307725 発行年 2004 アマゾンから取得可能な情報
4150307725 発行年月 2004/11 アマゾンから取得可能な情報
4150307725 発行年月日 2004/11/10 アマゾンから取得可能な情報
4150307725 文庫 アマゾンから取得可能な情報
4150307725 書影1 http://images-jp.amazon.com/images/P/4150307725.09.THUMBZZZ.jpg アマゾンから取得可能な情報
4150307725 書影2 http://images-jp.amazon.com/images/P/4150307725.09.MZZZZZZZ.jpg アマゾンから取得可能な情報
4150307725 書影3 http://images-jp.amazon.com/images/P/4150307725.09.LZZZZZZZ.jpg アマゾンから取得可能な情報
4150307725 収録短編 西条秀樹のおかげです
4150307725 収録短編 哀愁の女主人、情熱の女奴隷
4150307725 収録短編 天国発ゴミ箱行き
4150307725 収録短編 悶絶! バナナワニ園
4150307725 収録短編 地球娘による地球外クッキング
4150307725 収録短編 タタミ・マットとゲイシャ・ガール
4150307725 収録短編 テーブル物語
4150307725 収録短編 エロチカ79
4150307725 挿絵 浅田弘幸
4150307725 価格 ¥700 アマゾンから取得可能な情報
4150307725 ISBN 4-15-030772-5
4150307725 ページ 349 アマゾンから取得可能な情報
4150307725 サイズ 15×11 アマゾンから取得可能な情報

この形式で登録するならば、タグの種類が増えても、あるいは登録されたアイテムが本でなくても(DVDやCDその他でも)、充分登録することが可能である。
このタグは、新規登録の際はアマゾン等のデータベースから取得して初期設定するが、wiki的な方法によって全ての登録ユーザーによって追加、変更、削除が可能であるとする。収録短編などはこの方式によって、有志により登録されるべきであろう。
また、この形式によるならば、タグの種類を指定せず、タグ内容のみを対象にした検索により、広く関連アイテムを拾えることが期待できる。
また、別の例では、涼宮ハルヒの憂鬱 (角川スニーカー文庫)涼宮ハルヒの退屈 (角川スニーカー文庫)に、シリーズ名タグを追加することで、補足がやりやすくなる。

書誌ID タグ種 タグ内容 アマゾンから取得可能な情報
4044292019 シリーズ名 涼宮ハルヒ
4044292035 シリーズ名 涼宮ハルヒ

将来的にコミック単行本、アニメDVDが出たとすると*1、そのアイテムにもシリーズ名タグを追加することができる。コミック第一巻(ISBN:4047136581)を例に取るならば、このようになる。

書誌ID タグ種 タグ内容 アマゾンから取得可能な情報
4047136581 シリーズ名 涼宮ハルヒ

このようにしておけば、「涼宮ハルヒ」でタグ内容を完全一致検索することで、速度と正確さの両方を期待できる。

ユーザーテーブル

ユーザーを一意に識別できるユーザーIDで管理する。
正直、この部分はすでに議論されつくしている感もあるので、ここでは論じない。
ただ、特殊な点としては、蔵書を公開するかしないか、パブリックかプライベートかを選択する項目が必要だろう。

所蔵テーブル

ユーザーと書誌をつなぎ、さらには同じ書誌を何冊持っているかを管理するテーブル。
たとえば、私がISBN:4150307725買ってしまった場合。

ユーザーID 書誌ID 所蔵
eiji8pou 4150307725 1
eiji8pou 4150307725 2

所蔵−タグテーブル

書誌−タグテーブルと(ほぼ)同じ構造を持つ。書誌でなく、一つ一つの蔵書を対象にしたテーブルである。
所蔵IDは、所蔵テーブルの各カラムを":"をセパレータとして接続した文字列になる。
先の例で言えば、私は間違って同じ本を二冊買ってしまったが、そのうちの一冊をブックオフで売却したとする。

所蔵ID タグ種 タグ内容
4150307725:eiji8pou:1 入手年 2005
4150307725:eiji8pou:1 入手年月 2005/05
4150307725:eiji8pou:1 入手年月日 2005/05/23
4150307725:eiji8pou:1 入手理由 購入
4150307725:eiji8pou:1 入手先 amazon
4150307725:eiji8pou:1 登録年 2005
4150307725:eiji8pou:1 登録年月 2005/05
4150307725:eiji8pou:1 登録年月日 2005/05/23
4150307725:eiji8pou:2 入手年 2005
4150307725:eiji8pou:2 入手年月 2005/05
4150307725:eiji8pou:2 入手年月日 2005/05/23
4150307725:eiji8pou:2 入手理由 購入
4150307725:eiji8pou:2 入手先 ヤフーオークション
4150307725:eiji8pou:2 登録年 2005
4150307725:eiji8pou:2 登録年月 2005/05
4150307725:eiji8pou:2 登録年月日 2005/05/23
4150307725:eiji8pou:2 蔵除年 2005
4150307725:eiji8pou:2 蔵除年月 2005/05
4150307725:eiji8pou:2 蔵除年月日 2005/05/23
4150307725:eiji8pou:2 蔵除理由 売却
4150307725:eiji8pou:2 蔵除先 ブックオフ

これらの大半の情報(特に時間に関する物)は、特に意識しなくてもシステムの側で追加する。
また、蔵書それぞれに公開・非公開のフラグを立ててもいいだろう。

所蔵ID タグ名 タグ内容
4150307725:eiji8pou:2 公開 しない

恥ずかしくて言えない!
もちろん、これらのタグは使うも使わないも本質的に自由である。特にプライベートな領域での使用なので、本人さえよければ全く使わないこともあり得る。

登録方式

登録は、二つ考えられる。

  1. テキストやCSV形式によりISBNコードやその他の情報を記述し、そのファイルをアップロード、登録する。(→初期の大量登録向き)
  2. ISBNコードその他をフォームから入力し、書誌情報、所蔵情報を呼び出し、修正して登録する。(→毎日の逐次登録向き)

検索方式

検索方式も二つ考えられる。

  1. アイテム(書誌)のユニークIDから直接検索(→本屋で「これ持ってたかな?」と確認する。)
  2. キーワードを使い、タグ種を無視したタグ内容検索を行う(→普通の「なんかないかな」検索)

まとめ

まあ、妄想なんですが。いつも実現できそうな感じがしていやん。

*1:実際には漫画単行本がこの時点で一冊出ている。