自分の経験の枠組みは自分で変えられるか？というのは言いかえれば、「ユーザが自分の環境の構築に主体的に参加する」ということになると思うけど、この考え方の源流の一つとして次の話がある。

これは、今、流行ってるソフトウエア開発の方法論の源流にクリストファー・アレグザンダーという建築家の「パターンランゲージ」という概念がどのように影響を与えたかについて解説している講演だ。

何で建築家がソフトに関係してくるかと言うと、このアレグザンダーという人は、人が集まり都市が自然に生まれてくるようなプロセスでビルを建てることができないかということについて考えた人で、そのテーマがソフトウエアと本質的に関わってくるからだ。

つまり、設計者(開発者)がユーザの上に立って、上から目線で「おまえたちの欲しいものはこれだろう」と考えて作るのでは、ユーザにとって使いやすい都市(ソフト)はできないということ。

ビルもソフトも、使いやすいものを作るには、使う人が設計に関与することが絶対に必要であるというのが、「パターンランゲージ」の思想。

それを何で「パターンランゲージ」と呼ぶかと言えば、ユーザが設計に参加することをサポートするのが建築家(設計者)の役割でその道具が「パターンランゲージ」だから。そこをサポートする為には、

パターン=形を生み出すルール

ランゲージ=意図的に曖昧さを導入した記述

が必要であるということ。

Wikiを発明したウォード・カニンガムという人と、XPを提唱したケント・ベックという人は、二人とも、このアレグザンダーの「パターンランゲージ」に強い影響を受けている。

つまり、WikiもXPも、設計者と利用者の関係を見直す為の方法論という性質がその中核にあるわけだ。Wikiは自分たちが使う文書を自分たちが作っていくということだし、XPの方も「エクストリームプログラミング入門」という最初の教科書的な本に「XPの目的は利用者と開発者の関係を見直し新たな社会構造を作ることである」と書いてある。

ソフト開発の本なのに、ちゃんと「社会構造」って書いてあるそうです*1。

このXPの思想のエッセンスを抜き出したのが「アジャイル」であり、その「アジャイル」の為の道具として使い勝手がいいというのが、Rubyが広まった一つの大きな要因なので、この考え方とRubyとも密接なつながりがあると見ていいと思う。

Rubyの場合は、プログラミング言語のユーザとしてのプログラマが、プログラミング言語(を中心としたソフトウエア開発全般の環境)の構築に参加するという意味で、利用者=設計者という側面を強く持っている。

そして、Rubyもアジャイルも、効率の良さは評価されているものの、評判ほどにはビジネスの現場には導入されてない。

その理由は、どちらも歴史が浅く裾野に広がってないということもあるけど、何より「利用者=設計者」という前提が、確かに社会構造にとってラディカルな変革を要求するからだろう。企業というのは、システムを提供する側かそれを使う側かどちらか一方の役割に自分を限定したがるものだが、それだとRubyもアジャイルもうまく使えない。マニュアルが整備されてないとか資格試験がないとか解決が可能である問題もたくさんあるが、根本の思想レベルにおける葛藤という、簡単にはカタがつかない問題もそこにはある。

関係者一同が一つのプロセスに参加するという意識が必要なのだ。

と言っても、意識だけでは単なる精神論になってしまう。

江渡さんの講演で一番印象に残ったのは、「意図的な曖昧さの導入」という所。アレグザンダーは最初、デザインを数学的に記述するという試みをしていて、それから「パターンランゲージ」に方向転換したそうだ。

つまり、デザインと一意の価値観は両立しないということだと思う。ビルの設計にユーザが参加すると言っても、その設計要素一つ一つについて、ユーザ各人が与える意味は一致しない。同じものに違う意味を見ながら合意していく為の道具がパターンランゲージであり、「意図的な曖昧さの導入」なのだろう。