フラグメントをタグで分類する

Piggydbでは、フラグメントに対して、その内容を表現するタグ(ラベル)を貼り付けることができます。タグは検索のための目印となる情報です。あなたが今見ているこのフラグメントにもいくつかのタグが貼り付けられています。
作成されたタグの一覧は「タグ」メニュー(#44)から見ることができます。その中から一つのタグを選んでクリックすれば、そのタグが貼り付けられているフラグメントの一覧を見ることができます。

タギングの可能性

タグはとても柔軟性の高い分類の方法です。
情報を整理するための手法としては、予め分類の体系を作っておき(カテゴリー)、情報をそれらのいずれかに振り分けていく、というトップダウンのやり方が一般的でしたが、タギングはこれと反対で、ボトムアップに情報を分類します。
どのような分類があるのかは気にせずに、その情報に相応しいと思えるラベルを思いつくだけ貼っておいて、同じラベルの付いたものを後から引き出す、というのがタギングのコンセプトです。
Piggydbのタグシステムは、従来的なタグ(ボトムアップ)としての使い方だけではなく、カテゴリーのように予め分類を作っておいて、それらを適用する(トップダウン)という使い方も可能です。必要に応じて両方の使い方が出来るようになっています。
さらにタグはカテゴリーと違って、単なる分類・整理の用途には留まらず、様々な応用が可能です。例えば、自分がやらなければならない仕事の一覧(TODO)を管理したり、情報を共有している他のユーザーに対するメッセージとして利用したり、等等。

何のために「分類」するのか? → ...

そもそも何のために「分類」するのでしょう? おそらく多くのケースにおいて、分類は後々の検索性のために行われるのではないでしょうか。例えば、カテゴリーは、全ての情報が、体系化されたカテゴリーのどこかに必ず所属するという条件を以って、情報の検索性を保証する仕組みです。
しかし検索性を確保するためのカテゴライズは情報量が多くなるに従って必ず破綻することが知られています。いわゆる「こうもり問題」です。また分類という作業は継続的に行うには知的負荷の高い作業です。カテゴリーの多重化などによって「こうもり問題」を解決しても一貫性のある分類を維持するのは至難の業です。よって、分類することは放棄され、情報は時系列に保存しあとは検索すれば良い、ということになります。
これは完全に私の主観的な考えですが、こういったいわゆる情報管理のための整理術云々(書店に行くとそういった書籍が沢山並んでいますが)、というのは全く重要なことではない、はっきり言って、どうでもよいと考えます。それよりも「何か重大な情報を見逃してしまっているのではないかという強迫神経症」から早く解放されるべきです。
ではPiggydbにおける「分類」とは何なのか? それは一言で言えば、「ユーザー自身が学習するため」の分類です。本来分類という作業は機械的にできるものではありません。先程書いたように知的負荷の高い作業です。検索のためのタグ付けであれば、単純にキーワード検索でもいいということになってしまうかもしれませんが、本当の分類(classification)は、そのキーワードが情報に含まれるかどうかとは無関係です。よって、Piggydbではユーザー自身が考えてタグ付けすることが重要です。

特殊タグ

通常、タグフラグメントを分類するために利用しますが、Piggydbならではのユニークな機能として「特殊タグ」があります。特殊タグフラグメントに付けることで、フラグメントに様々な機能を持たせることができるようになります。
特殊タグは、他のタグと区別するために、文字 '#' から始まる名前を採用しています。
特殊タグも通常のタグと同様、タグによって分類したり、また特殊タグの機能を継承する子供のタグを作ることができます。

特殊タグ: #user → ...

新しいユーザーを作成するためには、「ユーザー名をタイトルとするフラグメントを作って、"#user"というタグを付ける」だけです。これをユーザーフラグメントと呼びます。ユーザーを作成できるのは、ownerユーザーのみです。
作成されたユーザーのパスワードは、デフォルトの状態でユーザー名と同じになります。例えば、"marubinotto"というタイトルのフラグメント#userタグを付けた場合は、ユーザー名は 「marubinotto」、パスワードは「marubinotto」でログインできるようになります。ログインしたらすぐにパスワードを変更するようにして下さい (メニュー「システム/パスワード変更」)。

特殊タグ: #trash → ...

フラグメントを削除したい場合は、そのフラグメントゴミ箱タグ#trashを貼り付けます。
実際には、ゴミ箱タグを貼り付けても、そのフラグメントがデータベースから完全に削除されるわけではありません。一部のページから見えなくなるだけです。ゴミ箱タグのページに移動して、フラグメントからゴミ箱タグを取り除けば、そのフラグメントを復活させることができます。
ゴミ箱タグの追加は、フラグメント・ツールボタン(#120)からも行えます。

特殊タグ: #bookmark

#bookmarkタグを付加されたフラグメントは、サイドバーの「ブックマーク」一覧に追加されます。頻繁にアクセスするフラグメントや重要なフラグメント#bookmarkタグをつけておくと、いわゆるショートカットのように機能します。
ブックマークへの追加は、フラグメント・ツールボタン(#120)からも行えます。

特殊タグ: #home

#homeタグを付加されたフラグメントは、ホームフラグメントとしてホームページに表示されるようになります。ホームフラグメントはいくつでも設定することができます。
このサイトでは、フラグメント #1 がホームフラグメントになっています。
Piggydbを複数人のユーザーで利用している場合は、ホームフラグメントをユーザーみんなの共有情報として利用できます。
ホームフラグメントへの設定は、フラグメント・ツールボタン(#120)からも行えます。

特殊タグ: #public → ...

#publicタグ、あるいはこのタグの下位に所属するタグが付いているフラグメントは外部に公開されます。つまりログインしていなくてもその内容を見ることができるようになります。ただし、公開されるのはフラグメントのドキュメント・ビューのみです。通常の編集画面は公開されません。
公開されたフラグメントへアクセスするためのURLは、通常のドキュメント・ビューのものと同様になります。以下のようなURLです。
 http://<host-name>:<port>/<war-name>/document-view.htm?id=6
公開されるのはあくまで#publicタグが付いたフラグメントだけです。関連するフラグメントや埋め込まれたフラグメントに#publicタグが付いていなければ、それらを外部から見ることはできません。

特殊タグ: #pre → ...

一つのフラグメントの中で整形済みのテキストを書く場合には、対応するWiki記法(#43)がサポートされています(行頭をスペースで始める)。しかし、フラグメント全体を整形済みテキストとして扱いたい場合は、#preタグが便利です。
#preタグを付加されたフラグメントの内容は、スペースや改行などを含めて、そのまま表示されるようになります(Wiki記法は全て無視されます)。

特殊タグ: #code → ...

#preタグに加えて、#codeタグを付加されたフラグメントは、その内容がプログラムコードだと認識されて、プログラムを読みやすくするためのハイライト表示が適用されます。

タグをタグで分類する(階層タグ)

タギングの問題点は、タグの数が多くなった場合に収拾がつかなくなってしまうことです。また、本来分類には上下関係がありますが、従来のタグシステムでそれを表現するのは非常に手間がかかります。
Piggydbではタグに上下関係をつけることでこの問題を解決します。フラグメントだけではなく、タグ自身もタグで整理することができるのです。
例えば、「言語」→「英語」のような関係をつけておけば、「英語」というタグをつけるだけでその情報は同時に「言語」という意味も持つようになります。「言語」というタグで情報を検索すれば、「言語」の意味を持つ全ての情報(例えば、「英語」だけでなく、「日本語」とか「中国語」なども)を見ることができます。これが「タグの意味が継承される階層タグ」機能です。そして、たとえタグが大量に登録されても、階層によって整理することができますので収拾がつかなくなるという事態は避けることができます。

フラット(一階層)なタグとフォークソノミー

Web2.0に分類される、多くのインターネットサービスが採用するタグシステムがフラット(一階層)であることには理由があります。複数の人間によって付けられるタグの、意図しない一致による集合知やコミュニケーションの発生を目的にしているためです。いわゆるフォークソノミー(folksonomy)と呼ばれるものです。こういった場ではできるだけコストの低い分類方法が求められます。
Piggydbは、こういったWeb上のサービスとは異なり、情報の共有を個人あるいは少人数に限定することによって、人のメンタルモデルが持つ本来の複雑さをできるだけそのまま表現できるような道具立てを提供する、というのが一つのコンセプトになっています。

タグツリービュー

タグの階層を確認するためにはツリービューを利用します。

タグ付けの際、親子関係にあるタグと入れ替わる仕様について → ...

仕様について気になった点がありますので、報告させていただきたいと思います。
まず、タグAとタグBがあり、それぞれ、次のような構造になっているとします。
 タグA
 |
 +―タグB
次に、あるフラグメントがあり、タグBが設定されているとします。 そこで、このフラグメントタグAを設定すると、フラグメントにはタグAのみが設定されている状態になります。
わたしは概念とタグを対応させて使っており、より広い概念が親に、その概念に属するものが子になるようにタグのツリーを構成しています。 そのため、タグBが設定されているところで、タグAを設定すると(操作を誤る・気付かず、など)、タグBが削除されてしまい、狭い概念の情報が消え去ってしまうのです。
より具体的な例を示します。
 タグ「乗り物」
 |
 +―タグ「車」
上のタグ構造で、フラグメント「トヨタのリコール問題」にタグ「車」を割り当てたとします。ここで、タグが設定されていることを失念するなどして、これは乗り物に関する記事だ、ということでタグ「乗り物」を設定すると、このフラグメントから「車」というタグ情報が消えてしまうのです。
このような仕様は、より細かい概念でフラグメントを仕分けたのに、その仕分けされた情報を消去してしまう場合があることになります。
他の意図をもってこのような仕様にされているのかもしれませんが、上記のような使い方をした場合には予期しない動作となるので、仕様の変更について検討いただければと思います。

タグビュー

ページ上部の「タグ」メニューをクリックすると、現在登録されているタグの一覧を、様々な形式で見ることができます。

タグツリービュー

タグの階層を確認するためにはツリービューを利用します。

タグクラウドビュー

タグクラウドビューでは、より頻繁に利用されている(他のフラグメントタグに貼り付けられている)タグほど、大きく表示されます。登録されてはいるが全く利用されていないタグはこのビューには表示されません。

タグフラットビュー

タグフラットビューでは、全てのタグがアルファベット順にグルーピングされて表示されます。ツリービューでは下の階層に埋もれてしまうタグもこちらではフラットに確認することができます。

タグビューにて、選択したタグを「まとめて分類」する → ...

タグビューでは、複数のタグを選択して、それらに一括タグを貼り付けることができます。

タグの名前変更と削除

タグの名前変更と削除は、タグページにて行えます。
下のスクリーンショットの①の部分に、名前変更と削除のためのツールボタンがあります。

タグジャンプ

キーワード検索用のインプットボックスにタグの名前を入力して、タグジャンプ用のボタンをクリックすると、タグページに直接ジャンプできます。タグジャンプ用のボタンは、検索ボタンのとなりに配置されています。
このインプットボックスではタグ名の補完ができるようになっていますので、タグの最初の何文字かを入力して、補完して、タグジャンプ、という感じで素早くタグページに移動できます。

フィルタでより高度な検索を行う

Piggydbに用意された「フィルタ」という仕組みを使うと、複数のタグを組み合わせて、より高度な検索を行うことができます。
フィルタを利用するためには、「フィルタ」メニューから「新規フィルタ」を選択してクリックします(#114)。

関連するタグ

タグページやフィルタページのサイドバーには、以下のスクリーンショットのような「関連するタグ」の一覧が表示されます。関連するタグとは、タグフィルタで検索されたフラグメントについて、現在検索条件となっているタグの他にはどのようなタグが付いているかを調べてリストアップしたものです。
上の画面のように関連するタグは件数順にリストアップされます。「× 34」のような形でそのタグの件数が表示されます。
それぞれのタグの右側には「+」と「-」ボタンが付いていますが、これらのボタンを利用して現在表示されているフラグメントのリストをさらに絞り込むことができます。「+」をクリックすると、そのタグを検索条件に追加、「-」ボタンをクリックすると、そのタグで分類されているフラグメントをリストから除外します。

関連するタグ

タグページやフィルタページのサイドバーには、以下のスクリーンショットのような「関連するタグ」の一覧が表示されます。関連するタグとは、タグフィルタで検索されたフラグメントについて、現在検索条件となっているタグの他にはどのようなタグが付いているかを調べてリストアップしたものです。
上の画面のように関連するタグは件数順にリストアップされます。「× 34」のような形でそのタグの件数が表示されます。
それぞれのタグの右側には「+」と「-」ボタンが付いていますが、これらのボタンを利用して現在表示されているフラグメントのリストをさらに絞り込むことができます。「+」をクリックすると、そのタグを検索条件に追加、「-」ボタンをクリックすると、そのタグで分類されているフラグメントをリストから除外します。

タギングのコツ

キーワードとタグを混同しない → ...

タグを付けるときに、何も考えずに、タイトルや本文中にあるキーワードを利用するというのはあまり有効ではありません。これらのキーワードはタグにせずとも全文検索の対象となりますし、キーワードが必ずしもそのフラグメントの(本質的な)内容を表現しているとは限りません。
まずタグは思ったほど必要にならないと考えた方が良いかもしれません。まずはつながりのネットワークだけを作っていき、ネットワークあるいはツリーが複数出来上がってきた頃に、それらに共通する概念を発見したらそれをタグにします。このような「発見」に基づくタグは比較的有益です。

固有名詞をタグに使う → ...

Chaos Piggydbで取り上げた「超」整理法という本に、「分類の単位として固有名詞を用いるべき」だという指摘があるのですが、これはPiggydbを利用する際にも有効な手法だと思います。
同じようなテーマを共有するフラグメント登録していると、それらのフラグメントに対して、くり返し同じ組み合わせのタグを付けていたりする事がよくあると思います。こういった場合は、それらのタグを統合するような固有名詞があれば、そちらをタグにしておいた方が後々の変更に強くなります。
通常はタグとして抽象名詞や形容詞などを利用する場合が多いと思います。このようなタグはその時の主観的な判断によって選択されるので(例えば重要性に関することやジャンルなど)、知識が成長すると共に認識が改まり、変更が必要になる可能性が高くなります。しかし、固有名詞ではそういった心配をする必要がありません(固有名詞の呼称が変わったとしてもタグのリネームは容易です)。
Piggydbではタグに対してもタグ付けできるので、固有名詞を分類のクッションとして利用することができます。例えば、複数のフラグメントに固有名詞でないタグを付けていて、それらの分類に対する認識が変わった場合、該当するフラグメント全てに対して修正を施さなければならなくなります。しかし、フラグメントに固有名詞タグを付けている場合、その固有名詞タグに対する分類を修正するだけで済みます。
ちょっと分かりづらいと思うので、具体的な例で説明してみます。
Chaos Piggydbでは書籍の内容を引用したデータベースを作っていますが、これらのフラグメントには基本的に書籍の名前のタグが付いています。そして具体的な内容についての分類はこの書籍名タグに対して行っています。実は個人的に作っているプライベートのPiggydbでは、当初直接フラグメントに内容を表すタグを付けるようにしていました。しかし同じ書籍から引用される内容は当然のことながら、同じようなテーマに沿ったものが多く、同じ組み合わせのタグがくり返し現れます。もし、この組み合わせに一つタグを追加したくなった場合、該当する全てのフラグメントを見ながら、タグを追加していく必要があります。Piggydbではフラグメント一括処理が比較的簡単にできるので、数が少なければそれほど大変な作業ではないと思うのですが、書籍名をタグにしていれば、そのタグに対してタグを追加するだけで済みます。

タグパレット(ドラッグ&ドロップでタギング)

ページ上部、メインメニューバーの右側にあるタグアイコンをクリックすると、以下のように現在登録されているタグの一覧を見ることができます。パレット上のタグ名をクリックするとそのページにジャンプすることができます。
タグパレット上にあるタグは以下のようにドラッグすることができます。
タグをドラッグして、フラグメントの上に移動すると、以下のように対象のフラグメントがハイライトされます。このようにハイライトされている状態でタグをドロップすると、そのフラグメントにドロップしたタグを追加することができます。