連載
» 2004年11月17日 12時00分 公開

実行可能な知識とソフトウェア(8):建築家の視点、アーキテクトとしての共通認識

……確かに建築は幾何学的な側面を持つ。しかしもっと抽象的なソフトウェアにとってこの「幾何学的特性」とは何を意味しているのだろうか? UMLモデルか? 確かにソフトウェアのアーキテクチャを何らかのダイヤグラムに表したときの幾何学的特性が意味を持つかもしれない。(本文より)

[山田正樹,メタボリックス]

 今回は少し趣を変えて、「本物のアーキテクト」、つまり建築に携わる人たちとわれわれがどのような接点を持っているのか、そこで彼我の間にどのような共通点と相違点があるのかを、彼らの著作をひもときながらざっくばらんに探ってみようと思う。

 まずは磯崎新の「プロセス・プランニング論」(鹿島出版会、1997、『空間へ 根源へと遡行する思考』所収)より。建築の計画概念には3つの段階があるという。1つはクローズド・プランニング(閉ざされた建築)、もう1つはオープン・プランニング(開かれた建築)、最後はプロセス・プランニング(プロセスの建築)。

 クローズド・プランニングとは最初から完成した状態を予想して作られる計画(設計)である。ソフトウェア開発でいえば、これは最初に最終成果物をきっちり設計し、それに向かって一目散に開発を進めるやり方だ。ウォータフォールでもインクリメンタルでもあり得る。開発が終了したときがソフトウェアの完成したときだ。しかし私たち自身がよく分かっているように、実際にはクローズドなソフトウェアはない。「保守は開発の倍のコストが掛かる」というような口伝がそれを物語っている。

 それに対してオープン・プランニングとは最初から拡張可能であることを目指して作られる計画である。ソフトウェア開発でいえば、コンポーネントとかフレームワークとかオブジェクトとかを使い、ユーザーに対してはプラグインなどのメカニズムを提供する。現在の主流であるいわゆるモジュール化の技術である。プロダクト・ラインなんていう考え方もそうかもしれない。建築においては(この論文では図書館建築がテーマになっているのだが)、できるだけ均質で同じ大きさ(グリッド)の空間を作ることによって増築や用途の変更がしやすいような建築物になる(ただしこの辺はソフトウェアとは多少事情が異なっているようだ)。

 しかし磯崎新はオープン・プランニングに対して、オープン・プランニングには方向性がなく、すべての用途の最大公約数にすぎない、つまり、『時間』が止まっていると批判する。もっともソフトウェアでは必ずしもそうとはいえないように思える。例えばEclipseを考えてみればよい。そこには建築に比べてはるかにダイナミックなアーキテクチャがある。とはいえ、アーキテクチャそのものがダイナミックに成長していくわけではない。いわばあらかじめ計画された範囲内での自由があるだけだ。

 プロセス・プランニングとは「時間的な推移の各断面が、常にその次の段階に移行するプロセスあると考える方法」、つまり「成長する建築」である。ここで初めて「モノ」だけではない、(本当の意味での)時間の概念が持ち込まれる。ソフトウェアでいえば、時間とともにアーキテクチャそのものが進化していくようなソフトウェアである。本当にそんなソフトウェアがあり得るのだろうか?

 磯崎新は大分県立図書館での自分の経験を基に、

 《そのひとつの操作としては、図書館の空間体系を整理してみることであった。いまでは図書館は複雑な機構をかかえこんでいる。しかし、その原初的な形態は<<人間が本をよむ空間>>だったのだ。(中略)タテのこのような空間の系列を整理すると私たちはひとつのイメージをつかむことができる。それは<<空間を体系化>>することであり、これを可能にしていくのは<<機能の類型化>>ともよべる操作である》と書いている(『空間へ 根源へと遡行する思考』p.82〜83より抜粋)。

 これは私たちの言葉でいえばドメインのモデリングやアナリシス・パターンといってもよさそうだ。つまり少なくとも建築ではシステムの側よりはユーザーの側に寄り添うことで、より時間を含んだ柔軟なシステムが得られる可能性があるといえるのかもしれない。

 しかしもっとダイナミックな「成長するアーキテクチャ」はあり得ないだろうか? 例えばアーキテクチャが明示的なモデルとして定義されていて、実行しながらそのモデルが変更されていくような……。

 次の登場人物はクリストファー・アレグサンダー。多分ソフトウェア業界で最も有名な建築家の1人であり、いわずと知れたパターン言語の父である。今回はアレグザンダーのパターン以外のアイデア(『クリストファー・アレグザンダー 建築の新しいパラダイムを求めて』、スティーブン・グラボー、工作舎、1989)について見てみようと思う。

 アレグザンダーは、パターン・ランゲージを実際の建築のデザインに使ってみて多くの欠点があることに気付く。つまり、《素晴らしく、美しいパターンを多く身につけてはいても、落ち着いた感じはなく、満足のいくものではありませんでした》(『クリストファー・アレグザンダー 建築の新しいパラダイムを求めて』p. 268より抜粋)と。これは私たちのソフトウェアについても同じような羽目に陥る場合が多い。多くのパターンを知っていて、それをちりばめたソフトウェアを作っても必ずしも全体のアーキテクチャが美しくは見えないというようなことはないだろうか?

 アレグザンダーはそれに対して重要な2つの性質、「一体性(one-ness)」と「幾何学的特性」を見いだす。つまりアーキテクチャとは単に雑多なパターンをつなぎ合わせたものではない。良いアーキテクチャには、例えば良いトルコ絨毯(じゅうたん)のテクスチャが持つような全体的構造があるはずだ、というのである(アレグザンダーはトルコ絨毯のコレクターでもあるのだそうだ!)。いきなりトルコ絨毯といわれてもよく分からないが、アレグザンダーは12の幾何学的特性(「まとまりのある空間的フィールドを創造するために相互に作用する特性群」)を提示している。以下、コンパクトにまとめたものを紹介する。

  1. スケールの段階性:あらゆる部分がより小さい部分を持つ
  2. 良い形状:あらゆる部分ははっきりした形状を持つ
  3. 力強い境界:あらゆるものに境界が存在する
  4. 両義性:境界の力強さは地と図の反転をもたらす
  5. 繰り返し:同じものが繰り返される構造は特別な秩序をもたらす
  6. 交代反復:単純な繰り返しよりもメリハリのある繰り返しの方が良い
  7. ポジとネガ:あらゆる実体にはそれに隣接したほかの実体がある
  8. 相互結合:2つの部分は強く結び付いている
  9. コントラスト:コントラストは区別を与える
  10. 中心:関係の焦点
  11. 微妙な不規則性
  12. 内部の穏やかさ、バランス

 確かに建築は幾何学的な側面を持つ。しかしもっと抽象的なソフトウェアにとってこの「幾何学的特性」とは何を意味しているのだろうか? UMLモデルか? 確かにソフトウェアのアーキテクチャを何らかのダイヤグラムに表したときの幾何学的特性が意味を持つかもしれない。ただしUML程度の抽象化の度合いではそこまでいけないようにも思える。一方では例えばアーキテクチャを頭の中に思い浮かべるときには、何かの「形」をイメージしていないだろうか?

 アレグザンダーはさらにこのような幾何学的特性を創出するためのプロセスも考えている。それは「センタリング・プロセス」と呼ばれている。つまりアーキテクチャの中心やまとまりを作り出すプロセスだ。例えばエクストリーム・プログラミングでは、メタファとリファクタリングによってアド・ホックにセンタリング・プロセスを実現しているのかもしれない。しかしもう少し明確な「ソフトウェアのセンタリング・プロセス」は存在しないのだろうか?

 今回の話は“?”だらけだった。本当にこんな話がソフトウェア・アーキテクトに役に立つのかどうかすら分からない。けれどあなたがある程度の経験を積んだアーキテクトならば、再帰構造とか、対称性とか、汎用性にきっと快感を覚えるのではないだろうか? それにはいったいどういう意味があるんだろうか?

 次回からはまたソフトウェアの話に戻って、もう少し具体的なアーキテクチャとプロセスの関係を調べていこう。

著者プロフィール

山田正樹

(株)ソフトウェア・リサーチ・アソシエイツ 、(株)ソニーコンピュータサイエンス研究所を経て、1995年(有)メタボリックス設立。代表取締役。アーキテクチャ、モデリング、マネージメント、コラボレーションなどを含む広い意味でのソフトウェア・プロセス・エンジニアリングが専門。ソフトウェア・ツール開発、メンタリング、コンサルティングなどを行っている。


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ