パターン、Wiki、XP ―― 時を超えた創造の原則
あとがき
筆者はもともとWikiの起源について調べようとしていました。WikiはWeb上のシステムなので,1991年のWebの誕生より前にさかのぼることはないだろうと思っていたのですが,調べていくうちにもっと昔の思想と深い関係があることがわかり,最終的には1960年代からの約半世紀にわたる歴史を調べることになりました。こんなにも昔の思想が形を変えて現在に影響を与えていることに驚きました。そして,この驚きを伝えたいと思い,本書を書きました。
「無名の質」という難解な概念
WikiやXP,デザインパターンといった一連の流れを生み出したアレグザンダーの建築理論は,あらためて考えてみても非常に難解なものがあります。アレグザンダーの思想の中心には『時を超えた建設の道』で展開された「無名の質」という概念があります。本文でも触れましたが,無名の質は非常に理解が難しいキーワードです。そもそも「名付けられぬ質」と名付けていること自体,矛盾した行為のように感じます。
プログラマがプログラミングをするときにも,さまざまな「名付けにくい概念」が登場しますが,それでもできるだけ適切な名前を探すように努力します。適切な名前を探すことはプログラミングの重要な作業の一つです。そのため,アレグザンダーが「無名の質」というキーワードを使ったことは,心情的に理解できないものがありました。
しかし経緯をたどってみると,アレグザンダーは数学科出身で,初期のデザイン理論は設計を数学的に形式化することが目的でした。設計の要求条件を列挙しその関係性を計算することは,まさしく設計をプログラミングすることです。その関係性の計算には当時まだ珍しかったコンピュータによる計算を用いていました。アレグザンダーがパターンを収集する際には,個々のパターンの名前に非常に気を遣っていました。アレグザンダーは,名付けることの重要性を十分にわかっていたはずです。
そのアレグザンダーがなぜ,あえて「無名の質」というキーワードを使ったのでしょうか。筆者はそこに根本的な方針転換があったと見るしかないと思いました。アレグザンダーはおそらく「読者に自分で考えてほしい」と思っていたのではないでしょうか。未定義語が前面に出されることによって,読者はいやおうなく自分でその謎について考えながら読むことになります。読者の思考プロセスをアレグザンダーの思考プロセスに巻き込むことで,ようやく理解されるような文章が狙いだったのではないでしょうか。
それを踏まえて考えてみると,デザインパターン,XP,Wikiは,実は同じような構造を持っていると思います。
土台としてのデザインパターン
デザインパターンの利用には,さまざまな批判があります。「繰り返し現れるコードを再利用可能な形式でまとめる」というのは当たり前のことを言っているだけではないか,何にでもパターンという名前を付けてわかったつもりになっているだけではないのか,といった批判です。筆者はこれらの批判はもっともだなと思っていました。しかし,それにもかかわらずパターンというアイデアが有効とされているのであれば,その理由を知りたいと思っていました。今回,パターンの起源をさかのぼることによって,ようやく少し見えてきました。
デザインパターンは書籍に取り上げられた23個のパターンがすべてで,それを使いこなすことがパターンを使いこなすことだという考え方は,まったく間違っています。そうではなく,プログラマがプログラミングをする際に,自分のプログラムにどのようなパターンが見いだされるかを自分自身で考え続けながらプログラミングすることが,本当の意味でパターンを使いこなす道なのです。つまりデザインパターンは,読者が自分自身のパターンを見いだすための土台として使うのが正しい使い方なのではないでしょうか。
XPのプラクティス,それらはルールにすぎない
XPについても同様に賛否両論の評価があります。XPを取り入れることによる成功事例がありますが,失敗事例もあります。XPで提唱されたプラクティスは,取り入れれば間違いなく成功する魔法の手段ではありません。筆者は,XPの有効性の限界がどこにあるのか,どのような場合にXPが成功するのかについて興味を持っていました。
XPではさまざまなプラクティスが提唱されていますが,それを「決まりごと」として受け取ってしまうと,開発プロセスはまったく改善されないでしょう。そうではなく,XPのプラクティスを入り口として,自分たちの開発プロセスを改善する方法を自分たち自身で考え続け,そこから得た経験をまたプラクティスとして抽出するようにする。そのようなプロセスを続けることによって初めて,XPのプラクティスが有効に働くようになると思います。
Wikiでコミュニケーションを改善し続ける
WikiはWeb上の情報公開ツールとしてブログと並んで語られてきました。しかし,筆者はこの2つには大きな違いがあると考えています。ブログには,システムとしてあらかじめ決められた情報公開の作法がありますが,Wikiにはシステムとしてあらかじめ決められたルールはありません。C2 WikiにはWiki利用のルールがありますが,それは参加者間の議論から生まれたものです。
WikiでもデザインパターンやXPと同じことが言えます。Wikiは,非常に自由度が高いコラボレーションツールです。その自由度の高さのもとで,どのように使えばいいのかを自分たち自身で考えながら使うようにします。利用のルールを自分たち自身で考え続けて実践することで,初めてWikiをWikiらしく使いこなせるようになるのではないでしょうか。
社会構造を見直すための生成的プロセスへ
デザインパターンもXPもWikiも,取り入れれば改善されるという魔法の手法ではなく,自分たち自身のプロセスを見直し,改善できる点を改善し続けることによってようやく有効に働くようになる生成的なプロセスです。
そのようにして見ると,『XPエクストリーム・プログラミング入門 第2版』においてベックが語った「ソフトウェアでは,新たな社会構造を作る機会がある」という言葉が重く感じられます(p.106参照)。改善できる点を改善することとは,その拠って立つ基盤を見直すことでもあります。つまり社会構造を改善することまで視野に含まれているのです。たとえば利用者と設計者の関係性を見直すことは,その両者に痛みを伴います。XPやWikiにさまざまな批判があるのは,そのような根本からの社会的関係性の改善を目標に含んでいるからではないでしょうか。
現代の情報技術の発展は目覚ましく,技術の進化によって社会は大きく変わったように見えます。しかし,技術を単に効率化のためだけに使うのであれば,社会的な構造は何も変わりません。Wikiは情報技術の一種ですが,そこにはアレグザンダーの理論が持つ社会変革のビジョンが含まれています。筆者はそのようなビジョンにおいて,Wikiに注目してきました。
パターン,Wiki,XPを貫く「時を超えた創造の原則」は,今後情報技術の枠を超え,さまざまな分野に発展していくに違いありません。どのような活動へと発展させていくことができるか,これからも考え続けていきたいと思います。