言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

シナプス・リンク

このネタは、もしかしたら本当に商売になるかも知れないから黙っておこうと思っていた。しかし友人に喋っても反応がイマイチで、多分作らないと思うのでネタだけを書く。

サイトのリンク構造というのは、まずツリー状であるべきだ。入り口がまずあって、そこから全ての情報へ最短距離で行くためのある道筋が用意されている。技術的には、ツリー状であるとは全ての情報に親が一つだけ存在して、どんな情報も親を辿れば同じ場所に帰ってこれると言う事。ウェブ上での場所を直感的に把握する為には、ツリー状の配置はすごく協力だ。

一方で、ツリー状にサイトを構成するのは非常に面倒臭い。予め大枠を考えないといけないし、一度考えた大枠もそのうち実情と合わなくなるが、ツリー状にデザインしたサイト内で構成を変えるのって結構面倒くさい。これは人間ではなく、コンピュータの仕事であるべきだ。

まずこのシナプス・リンクを実現する為には、ユーザにくだらないプライバシー意識など捨ててもらう。サイトにアクセスしたユーザの全ての行動は記録され、利用される。そして、もっとも頻繁にアクセスのあるサイトが、自動的にトップページになる。当然、人気の移り変わりと共にトップページは勝手に変わるので注意。最初はさすがにある程度のリンクを人間が張るのだが、その後はアクセス記録の検索エンジン情報を利用してリンクを貼る。例えば、このページが「鳥取のスタバ」というキーワードに引っかかった場合、このページは「鳥取のスタバ」で他のページからリンクされる。

こんな感じでリンクを増やしていくとリンクだらけになってしまうので、ある程度閾値を設定するのだが、それにもアクセス記録は有効だ。ユーザの行動はクッキーによって全て記録されているので、あるユーザが最初「鳥取のスタバ」ページに入り、次に別の機会に「ノースカロライナの漫画喫茶」にアクセスすると、自動的に二つのページにリンクが張られる。このような関連がどんどん増えていくと強い関連と弱い関連が自然と現れる、この強い関連だけを使って、全体がツリー状になるようサイトマップを構成する。リンクを利用する人が大きければその枝はだんだん幹になってゆき、少なければ細くなる。デザイン上の問題としては、全体をまずまずバランスの良い枝ぶりにする必要がある。

目指すは打倒 google! すなわち、google がインターネット全体のマクロな構造を利用して世界をランク付けしようとしているのに対して、シナプス・リンクではサーバにしか知りえないミクロなアクセス解析情報を駆使して強結合な世界を作り出す。また、シナプス・リンク・サーバをクラスタ化する事によって、複数ホストによるより大きなツリーを作る事も出来る。その場合、どちらが幹になるかはお互いのアクセス情報を正直に開示して決める。

以下コンセプト。考えてみれば当たり前だが、web とは言葉の意味を調べる為にあるのではない。特にプログラミングのような、定義と利用が明確に分かれている言語を使い慣れていると、ついつい普通の単語に関してもそういうもんだと思ってしまうのだろう。ウェブの単語にリンクを貼るという行為は、リンク先にその単語に関する何かの情報があるものだと期待させる。もしも自然言語ついてに定義と利用を明確に定める事が出来るとすれば、我々の言葉は全体としてツリー状の構成をとる事が出来る。つまり、あらゆる単語が他の言葉で定義され、最終的にはどの単語にも説明できない絶対単語にたどり着くはずだ。数学は実際そういう構成をしている。しかし我々の言葉はそうではない。

言葉を言葉によって定義する事は出来ない。出来るのは、言葉を使う事によって言葉同士の関連を暗示する事だけである。「言葉の意味とは、その使用である」Byウィトゲンシュタイン。一方、コンピュータ言語にありながら、Smalltalk の senders という概念は、Smalltalk の 「自然言語趣味」を如実に表していて興味深い。Smalltalk プログラマは頻繁に senders (あるメッセージを使っている場所を全部検索する) を調べて、これから実装しようとするメッセージが、今までの利用状況に照らし合わせ相応しいかどうかに常に気を払う。つまり、Smalltalk - 世間話 - には「世間」が存在する。この世間は誰かによって定義されたものではないが、おそらく世間自らが作り上げたものである。そしてウェブもまた然り。