フラグメントをタグで分類する
Piggydbでは、フラグメントに対して、その内容を表現するタグ(ラベル)を貼り付けることができます。タグは検索のための目印となる情報です。あなたが今見ているこのフラグメントにもいくつかのタグが貼り付けられています。
タギングの可能性
タグはとても柔軟性の高い分類の方法です。
情報を整理するための手法としては、予め分類の体系を作っておき(カテゴリー)、情報をそれらのいずれかに振り分けていく、というトップダウンのやり方が一般的でしたが、タギングはこれと反対で、ボトムアップに情報を分類します。
どのような分類があるのかは気にせずに、その情報に相応しいと思えるラベルを思いつくだけ貼っておいて、同じラベルの付いたものを後から引き出す、というのがタギングのコンセプトです。
Piggydbのタグシステムは、従来的なタグ(ボトムアップ)としての使い方だけではなく、カテゴリーのように予め分類を作っておいて、それらを適用する(トップダウン)という使い方も可能です。必要に応じて両方の使い方が出来るようになっています。
さらにタグはカテゴリーと違って、単なる分類・整理の用途には留まらず、様々な応用が可能です。例えば、自分がやらなければならない仕事の一覧(TODO)を管理したり、情報を共有している他のユーザーに対するメッセージとして利用したり、等等。
何のために「分類」するのか?
そもそも何のために「分類」するのでしょう? おそらく多くのケースにおいて、分類は後々の検索性のために行われるのではないでしょうか。例えば、カテゴリーは、全ての情報が、体系化されたカテゴリーのどこかに必ず所属するという条件を以って、情報の検索性を保証する仕組みです。
しかし検索性を確保するためのカテゴライズは情報量が多くなるに従って必ず破綻することが知られています。いわゆる「こうもり問題」です。また分類という作業は継続的に行うには知的負荷の高い作業です。カテゴリーの多重化などによって「こうもり問題」を解決しても一貫性のある分類を維持するのは至難の業です。よって、分類することは放棄され、情報は時系列に保存しあとは検索すれば良い、ということになります。
これは完全に私の主観的な考えですが、こういったいわゆる情報管理のための整理術云々(書店に行くとそういった書籍が沢山並んでいますが)、というのは全く重要なことではない、はっきり言って、どうでもよいと考えます。それよりも「何か重大な情報を見逃してしまっているのではないかという強迫神経症」から早く解放されるべきです。
特殊タグ
通常、タグはフラグメントを分類するために利用しますが、Piggydbならではのユニークな機能として「特殊タグ」があります。特殊タグをフラグメントに付けることで、フラグメントに様々な機能を持たせることができるようになります。
特殊タグ: #user
特殊タグ: #trash
特殊タグ: #bookmark
特殊タグ: #home
Piggydbを複数人のユーザーで利用している場合は、ホームフラグメントをユーザーみんなの共有情報として利用できます。
特殊タグ: #public
#publicタグ、あるいはこのタグの下位に所属するタグが付いているフラグメントは外部に公開されます。つまりログインしていなくてもその内容を見ることができるようになります。ただし、公開されるのはフラグメントのドキュメント・ビューのみです。通常の編集画面は公開されません。
公開されたフラグメントへアクセスするためのURLは、通常のドキュメント・ビューのものと同様になります。以下のようなURLです。
http://<host-name>:<port>/<war-name>/document-view.htm?id=6
タグをタグで分類する(階層タグ)
例えば、「言語」→「英語」のような関係をつけておけば、「英語」というタグをつけるだけでその情報は同時に「言語」という意味も持つようになります。「言語」というタグで情報を検索すれば、「言語」の意味を持つ全ての情報(例えば、「英語」だけでなく、「日本語」とか「中国語」なども)を見ることができます。これが「タグの意味が継承される階層タグ」機能です。そして、たとえタグが大量に登録されても、階層によって整理することができますので収拾がつかなくなるという事態は避けることができます。
フラット(一階層)なタグとフォークソノミー
Web2.0に分類される、多くのインターネットサービスが採用するタグシステムがフラット(一階層)であることには理由があります。複数の人間によって付けられるタグの、意図しない一致による集合知やコミュニケーションの発生を目的にしているためです。いわゆるフォークソノミー(folksonomy)と呼ばれるものです。こういった場ではできるだけコストの低い分類方法が求められます。
Piggydbは、こういったWeb上のサービスとは異なり、情報の共有を個人あるいは少人数に限定することによって、人のメンタルモデルが持つ本来の複雑さをできるだけそのまま表現できるような道具立てを提供する、というのが一つのコンセプトになっています。
タグ付けの際、親子関係にあるタグと入れ替わる仕様について
仕様について気になった点がありますので、報告させていただきたいと思います。
タグA | +―タグB
わたしは概念とタグを対応させて使っており、より広い概念が親に、その概念に属するものが子になるようにタグのツリーを構成しています。
そのため、タグBが設定されているところで、タグAを設定すると(操作を誤る・気付かず、など)、タグBが削除されてしまい、狭い概念の情報が消え去ってしまうのです。
より具体的な例を示します。
タグ「乗り物」 | +―タグ「車」
上のタグ構造で、フラグメント「トヨタのリコール問題」にタグ「車」を割り当てたとします。ここで、タグが設定されていることを失念するなどして、これは乗り物に関する記事だ、ということでタグ「乗り物」を設定すると、このフラグメントから「車」というタグ情報が消えてしまうのです。
このような仕様は、より細かい概念でフラグメントを仕分けたのに、その仕分けされた情報を消去してしまう場合があることになります。
他の意図をもってこのような仕様にされているのかもしれませんが、上記のような使い方をした場合には予期しない動作となるので、仕様の変更について検討いただければと思います。
フィルタでより高度な検索を行う
関連するタグ
タギングのコツ
キーワードとタグを混同しない
固有名詞をタグに使う
Chaos Piggydbで取り上げた「超」整理法という本に、「分類の単位として固有名詞を用いるべき」だという指摘があるのですが、これはPiggydbを利用する際にも有効な手法だと思います。
同じようなテーマを共有するフラグメントを登録していると、それらのフラグメントに対して、くり返し同じ組み合わせのタグを付けていたりする事がよくあると思います。こういった場合は、それらのタグを統合するような固有名詞があれば、そちらをタグにしておいた方が後々の変更に強くなります。
通常はタグとして抽象名詞や形容詞などを利用する場合が多いと思います。このようなタグはその時の主観的な判断によって選択されるので(例えば重要性に関することやジャンルなど)、知識が成長すると共に認識が改まり、変更が必要になる可能性が高くなります。しかし、固有名詞ではそういった心配をする必要がありません(固有名詞の呼称が変わったとしてもタグのリネームは容易です)。
Piggydbではタグに対してもタグ付けできるので、固有名詞を分類のクッションとして利用することができます。例えば、複数のフラグメントに固有名詞でないタグを付けていて、それらの分類に対する認識が変わった場合、該当するフラグメント全てに対して修正を施さなければならなくなります。しかし、フラグメントに固有名詞タグを付けている場合、その固有名詞タグに対する分類を修正するだけで済みます。
ちょっと分かりづらいと思うので、具体的な例で説明してみます。
Chaos Piggydbでは書籍の内容を引用したデータベースを作っていますが、これらのフラグメントには基本的に書籍の名前のタグが付いています。そして具体的な内容についての分類はこの書籍名タグに対して行っています。実は個人的に作っているプライベートのPiggydbでは、当初直接フラグメントに内容を表すタグを付けるようにしていました。しかし同じ書籍から引用される内容は当然のことながら、同じようなテーマに沿ったものが多く、同じ組み合わせのタグがくり返し現れます。もし、この組み合わせに一つタグを追加したくなった場合、該当する全てのフラグメントを見ながら、タグを追加していく必要があります。Piggydbではフラグメントの一括処理が比較的簡単にできるので、数が少なければそれほど大変な作業ではないと思うのですが、書籍名をタグにしていれば、そのタグに対してタグを追加するだけで済みます。