「構造」と「機能」からPiggydbのモデルを分析する

ここ数日、タグについてのとても有意義な議論(#240より)が展開されていて、いろいろと刺激になっています。Piggydbの機能の背後にあるコンセプトやそこから派生するいろいろな考え方などは、研究サイトで検討しようと思っていたことで、こちらに載せるつもりはなかったのですが、せっかく機会を頂いたので、ちょっとログ的に書いておきたいと思います。
(注意)以下には無根拠な妄想が多分に含まれるので、あんまり真剣に読まないように。
以前に私のブログを読んだことがある方ならご存じの方もおられるかもしれませんが、私は、物事について考えるときに、「構造」と「機能」という概念が極めて強力なツールとして機能すると感じています。「構造」と「機能」は人間の認知の根幹を成すもので、人間が何かを認識する際、同じものを見ていても、構造的に捉えるか、機能的に捉えるか、基本はこの二つだけで説明できてしまいます。何故なら、これらの認知は人間の知覚器官に由来する云々、、、(略)
Piggydbはテキストや画像のような静的なデータの集まりを扱うツールなので、これについて分析する際は、「機能」は「意味」と言い換えた方がいいでしょう。
さて、まずこの道具立てを用意したところで、件の議論で比較の対象となっているEBtとPiggydbの違いについて考えてみます。EBtについては認識違いがあるかもしれないことは予めご了承下さい(間違いがあれば訂正します)。
#224でも書いたように、EBtの基本要素はメモとリンクだけです。Piggydbはそれに加えて、リンクに方向があり、タグという仕組みがあります。
「構造」と「意味」の枠組みで考えると、EBtで表現しているのはほぼ「構造」だけです。その構造がどのような「意味」を持つかはすべてユーザーの解釈に委ねられています。例えば、リンクはただつながっている以上の意味はなくて、つながりの意味は何なのか、例えば、従属関係なのか、あるいは修飾の関係なのか、といったようなことは表現されておらず、ユーザーの解釈次第です。以上のような特徴がEBtの柔軟性の高さの理由ではないかと思います。
と、これを書いた後にEBtの仕様を改めて見てみると、リンクにラベルが付けられるようになっているんですね。しかも、ラベルは方向別に付けられるようになっているようです。これは進化の方向としては凄く正しい気がします。というのも、リンクが具体化する過程でタグ的な概念が生じてくるからです。ますます興味深いEBt、、、
Piggydbでは、EBtにおいては暗黙に意識しているような「意味」も表現手段に加えていると解釈できると思います。つながりに方向があるのは、視点を意識しているためです。例えば、A → B と B → A は異なります。Aの視点から見たBとの関係とBの視点から見たAとの関係は異なるからです。つまり、これは「意味」を単位にしているということです。タグも同様です。タグというのは、情報の「意味」を表すために純化して設計された仕組みです。
以上のように、わかりやすさ、柔軟性の高さはEBtの方が優れているわけですが、では、Piggydbには+αの表現力を追加しているとして、それが何の役に立つのかという部分が問題になります。と実はこれが今後の研究課題だったりします。一つ言えるのは、Piggydbはメモやアイデアツールとしてはややオーバースペックなのではないかということです。このことが原因で、件の議論にあるように、タグとつながりに関する混乱が起きてしまうのだと思います。
こうやって考えると、Piggydbはかなりモデリングツールに近いような感じです。ああやはりと言うか、そうなる理由は個人的にはよく分かります。基本的に自分の思考パターンがそうなっているからでしょう。モデリングツールとしての力を十分に発揮できるようにするためには、また別の戦略が必要になるんでしょうね、、、
ひとつここで注意しておきたいのは、以上の議論はあくまでモデルについてだけの話で、アプリケーションの機能自体は別のパラメータとして議論する必要があるということです。だから本当は、上記のように単純な比較はできないのが実際のところです。

EBt作者さんのブログより「EBtの基本概念」

ここ最近Piggydb.jp上で熱いEBtですが、大変光栄なことに、作者のおかださんがPiggydbに言及して下さり、EBtについて大変興味深い記事を書かれています。
EBtが参考にしたというBTRON、名前だけは聞いたことがありましたけど、そういうものだったんですね。これは調査せねば。EBtもユーザーさんにご紹介頂いたので、こうやって知識が広がっていくのかと思うと感慨深いですね。
さて、せっかくEBtの経緯をご紹介頂いたので、Piggydbについても軽く紹介してみることにします。
Piggydbは元々、EBtほど明確な問題意識があって生み出されたものではないのですが、私がオブジェクト指向言語でプログラミングをしてきたこと、そしてWikiというWebアプリケーションに慣れ親しんできたことがアイデアの源泉にあることは間違いないと思います。
オブジェクト指向言語と言っても、JavaやC++なので、正確には「クラス指向」と呼べるものです。ネットワーク構造はオブジェクトのトポロジー、タグはそのままクラスに対応しています。もし私がSmalltalkのような純粋のオブジェクト指向言語に慣れ親しんでいたら、あるいは、EBtのようなものを作ったのかもしれません。
そのオブジェクト指向のモデルをWikiと融合したものがPiggydbの背後にあるのではないか、これは後付けの理由ですけれど、そのように考えています。
EBtの場合、オブジェクト指向と言っても、プロトタイプベースと呼ばれる、クラスのないモデルに近いような感じがします。オブジェクト指向をとことん純化すると、クラスという仕組みでさえオブジェクトで表現できるので、本当にオブジェクトだけの世界を構築できます。これはEBtの「メモ+リンクだけ」というシンプルさに通じるところがあります。EBtでもその気になればクラス(タグ)を実現できますし。
しかし、オブジェクトだけの世界だとしても、結局クラスのような仕組みは必要になる。それがプログラミング言語の世界でした。何故かと言えば、同じようなオブジェクトを共通化して表現をコンパクトにする必要があったからです。これは知識の世界で言えば、概念を発見して語彙を増やすということです。具体的な情報がぞろぞろと並んでいる状態から何かを掴んでそれを表現する手段があれば、それをボトムアップに構築できれば、面白いものが出来上がるのではないか、それが後付けで今のところのPiggydbのテーマです。
EBtについて興味深いなと思うのは、やはり「双方向リンク」です。おかださんの記事を丹念に読んでいくと、この「方向」というのは、モデルに含まれるものではなくて、情報を追いかけるときの方向なのかなと思いました。つまり、これはナビゲーションの問題で、私が考える「方向」とはレイヤーが違うような感じがします。そう考えると、EBtのモデルとしてはラベルを使用しない限り、リンクは「無方向」で、単純にネットワークというトポロジーだけがあると。そう考えると、私の言葉で言えば「構造」だけがある、ということになるのかなと思いました。そしてその解釈はアプリケーションの機能やユーザーの頭の中に表現されている。
その他、「リンクの方向に縛られて、思考が阻害される」というのは、なるほどと思いました。確かにPiggydbにおいては、つながりを作るときに「この方向で良いかな?」と一瞬考えてしまうことがあります。これはネットワークのノードが、テキストのように内容が曖昧なものになると、特に問題になるような気がします。文章としての上下関係は迷いませんが、比較的対等な横つながりの関係では煩わしい問題になりそうです。これは改善のきっかけとなりそうな良いヒントを頂きました。
以上、思いつくままだらだらと書いてみました。EBtブログの続きが楽しみです。