大村です。
出張に行ってたんですが、その間にC・アレグザンダーの
「 時を超えた建設の道」を読みました。(平田 翰那訳/鹿島出版会)
この本は、デザイン・パターンの原点といわれている「パタン・ランゲージ」
の理論編とでもいうべき本ですが、読んでみて、これはデザパタというより
XPの理論なんじゃないかという気がしてきました。
まだ消化しきれてないんで、すべての点を指摘することはできませんが、
例をあげると、こんなのがあります。
まず、アレグザンダーは、建築というものは、そこで生活する人が生き生きと
して、くつろいで、創造的である/になれることを理想としています。
これはXPの求めるものと同じではないでしょうか。(これだけだとあんまり関係ない
ようにみえますが、他の部分とあわせると、XPの意気込みと近い気がします)
それから、この本の後ろのほうで、実際にパタン・ランゲージを使って
建築の設計を進める話がでてくるのですが..
設計の最初のステップとして、パタンの一覧を作ります。これのことをパタン・ランゲージと
呼んでいます。
これ、なんの一覧かというと、作ろうとしている建築物(我々の場合はシステムになりますが)
が満たしていてほしいパタンを列挙するわけです。
このあたりでパタンといっているのは、まるでXPのストーリーと同じような気がします。
(ストーリーのパターンというのがあるのかもしれません)
また、パタンというのは、専門家のものでなく、誰もが自分の中にもっていて、それに気
づき自分の中を探し出せばみつかるもの、なのですが、そういうことから、
パタンをガイドとして設計を進めていくうえで、建築家でなく、その場所に住む人々自身が
パタンを提案し、さらに、詳細レベルのパタンを煮詰める作業を彼ら自分が行ったり
するようです。(本にある例では、その作業に携った人々が、その作業をしていた期間を
特に輝かしい時として記憶していたことが書かれています)
ここらへんは、customerも一緒の場所で仕事をするというのがXPにありましたが、
それに似ていなくもない。また、Pair Programmingによってプログラムを全員のものとする、
というような話とつながっていくように思います。
細かい点をあげると違うんですが、全体の姿勢というか、目的みたいなものが
似ているように思います。
それから、パタンにガイドされる設計には、ある意味YAGNIなところがあります。
パタンの間には依存関係があり、もっとも大きなレベルのパタンから煮詰めていく
ことが必要なのですが、そのとき後になって煮詰めなくてはならなくなるはずの
詳細のパタンについては先の段階で考えなくても絶対大丈夫だといいます。
後戻りすることはないそうです。
これをXPに敷延すると、YAGNIでやっていても、ちゃんとパターンを押えていれば、
後で困ることはないよというようなことになるのかなという気がしました。(ここで
XPとパターンがつながるのかなと思いますが、どんなものでしょう、よくわかりません)
建築の場合、それをとりまく環境の変化はゆるやかですが、それでも変化はあり、
それに対応して、システムの中の死んでいくパタンと生れてくるパタンがあるという
ような話もありました。これはリファクタリングにつながるのかなと思います。
他にもあると思うのですが、気づいてなかったり誤解してたりするかもしれません。
Alexanderをソフト開発の世界に知らしめたのは、Kent BeckとWard Cunninghamだそうですが、
この本を読むかぎり、デザイン・パターンではその思想の表面的なものしか捉えることができなかった
けれど、XPに至って、デザパタを超え、Alexanderの思想が深くrealizeされたというような気がします。
(勿論、だからデザパタがだめだとか不要だなんてことを言っているわけではありませんよ)
あと、XPでは、禅とか武士道とかのにおいがしますが、Alexanderは老子あたりの雰囲気です。