Wikiと里山とリファクタリング

うーん、まとまってないけど、とりあえず書いておこう。あとで再考する。

オブラブ2007夏イベントの江渡さんの資料 [1] を見ていたら、昔のWikiに対する思いが蘇えってきた。 江渡さんが言うところの、ThreadModeとDocumentModeは、以前ゲーム関連のWikiサイトを運営していた時になんとなく感じていた。その頃は、Tiki [2] を使っていて、TikiのCommentPluginを改造して、掲示板ぽく書き込み/表示ができるようなページと、それらの議論をまとめるページとを使いわけていた [3] 。なぜなら当時は今よりもWikiは一般に知られていなく、特にソフトウェアエンジニアではない利用者にWikiをそのまま公開して成長させることが難しかったからだ。Wikiをよく知らない人は、どうしていいかわからない。そこに掲示板というフレームワークを使ってInputしやすいようにした。そこの掲示板の議論は、まとめページに自分が編集していた。そのうちに、利用者もWikiがなんたるかがわかってきて、自己紹介ページを作ったり、各自好きなページを作っていた思い出がある。

この時に学んだのはWikiサイトは利用者のスキルが非常に重要だということだった。具体的には、発散と収束を意識しながらWikiPageを拡張しながら、その結果をいかにHuman Readableにまとめていくかということだ。これらのプロセスは、同一WikiPage内で行われるのが本来の使い方なのかもしれない。しかし掲示板風ページと、まとめページを明確に分けた方が利用者が混乱しにくいしメンテしやすいと判断して当時は上記のような運営方法に辿りついた。江渡さんの資料によるとWikipediaに近いのかもしれない。

Wikiは無造作に使いつづけていくと、わかりづらくなりいつかは破綻する。つねにWikiに対して利用者がメンテナンスする意思、スキルがないと容易にカオス状態に陥いってしまうのだ。Wikiサイトを運営する場合は、人が常にWikiというシステムに働きかけることで維持できるということを忘れてはならないし、利用者にそのような思想/スキルをもってもらうことに越したことはない。

Wikiのメンテナンスは里山 [4] に似ている。里山は日本に昔からある、人が生活の糧となる燃料、堆肥を得るために、攪乱して(手を入れて)維持していくクヌギやコナラ、シイを中心とした落葉照葉樹の低山、平地のことだ。( ダッシュ村 [5] を見てる人は馴染があるかもしれない) 里山は人の攪乱があって、始めて里山(落葉照葉樹)の状態を維持できるが、攪乱が行われないと、変化してしまい、最後には極相 [6] と呼ばれる状態に到達してしまう。里山に代表される人の手の入った自然は、実は安定化(極相)しないように人が働きかけているとも言える。里山という状態を保ち続けるために人が働きかけて変化し続けていく。Wikiは安定するために変化を続けていくという点でも XPの兄弟 と言えるのかもしれない。

そしてWikiにリファクタリングが必要という意見にも強く同意する。 Refactorable Wiki を提唱していたけど結局作っていないので、そろそろ誰か作ってください(w。Wikiページ=Class、チャプター/セクション=Method、文章=コード片と捉えると、Eclipse JDTを使っている人には特に伝わりやすいのではないだろうか。Extract/Inline Page、Extract/Inline Sectionなんてのがさくさくできると、Wikiのメンテナンスが確実に楽になることが容易に想像できるだろう。これを突き詰めると 文章自体がリファクタリング可能である という結論に至る。先日のエントリ [7] でも書いたように、構造を持つものは全てリファクタリング対象であるという仮説の通りだ。(検証可能性という点で微妙ではあるが)

[1]: http://www.slideshare.net/eto/the-timeless-way-of-programming-between-wiki-and-xp
[2]: http://www.hyuki.com/yukiwiki/wiki.cgi?Tiki TikiWikiじゃない
[3]: archive.orgにトップページだけがのこっている。http://web.archive.org/web/20020603092400/http://www.backy.com/vf/tiki.cgi
[4]: http://ja.wikipedia.org/wiki/%E9%87%8C%E5%B1%B1
[5]: http://ja.wikipedia.org/wiki/%E6%A5%B5%E7%9B%B8
[6]: http://www.ntv.co.jp/dash/village/
[7]: http://giantech.jp/wiki/2007-06-15_04-22