言語ゲーム

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

Twitter: @propella

超 wiki

wikiはこういうアプリケーションだ。通常のwikiと同様 web ブラウザによってもアクセス出来るが、専用ブラウザを使う事も出来る。専用ブラウザの場合、記事の入力は一文字タイプする度にサーバーに送られ、もしも同時に閲覧していたユーザが居た場合彼らの画面にも直ぐに反映される。従って、チャット的な利用が可能である。

また、無制限 undo が可能である。専用ブラウザの undo 機能とサーバの履歴管理機能は完全に統合され、undo はサーバサイドで実行される。undo されてもその情報は失われない。undo 前の間違った情報は、新しい情報によっても上書きされる事が無く、別の枝として生き続ける。つまり、いつでも redo が可能である。この機能についてもう少し突っ込んでみよう。

人間があるアプリケーションを立ち上げ、ある文書を完成させるまでの過程を、一本のツリーに例えてみる。作業はツリーの幹から始まり、枝に向かって辿ってゆく。間違いがあって引き返す時の様子は、少し前の位置から別の枝を伸ばす様子に例える事が出来る。最終的にはどこかの枝が目指すべき文書の最終形態だが、今までに間違った入力もすべて他の枝として残る。

wikiでも、普通のwikiのようにページを増やす事が出来るが、これも内部的には上に書いた枝の仕組みを流用する。最初の文書(例えば、FrontPage)を編集していて、ページを増やす必要があった場合、編集中の文書に別の名前を付ける。例えば、SecondPage。その後での更新内容はすべて SecondPage の物なので、不要な記事はざくっと消してしまう。消す前の記事には、FrontPage という名前で直ぐまた参照出来る。

wiki 上でページを増やす必要があるときは、多くの場合現在のページに文章が増えすぎた為なので、一つの文書を二つに分割するこの操作は直感的である。纏めると、超wikiの特徴は次の通りだ。

  • 同時アクセス中のユーザの内容は完全に同期されている。
  • クライアントでの undo 操作とバージョン管理は完全に統合されている。
  • 新しいページの作成とバージョン管理も完全に統合されている。

実装の面から言うと、効率はともかく subversion を使うと簡単に作れると思う。