連載
» 2006年06月28日 12時00分 UPDATE

ソフトウェア開発をちゃんと考える(5):自然言語としてのパターン

建築家クリストファー・アレグザンダーが考えていたパターンと、われわれソフトウェア業界で通常パターンと呼ぶものとの間には大きな隔たりがある。われわれが本当に必要としているのはどちらのパターンだろうか?

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

 実は僕はソフトウェアのデザイン・パターンそのものにはほとんど興味がない。嫌いでも好きでもない。ソフトウェアを書くときに自然に使っているけれど、いまどきのパターンの名前をいっぱい知っているわけではない。4人組(Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)の本(「オブジェクト指向における再利用のためのデザインパターン」)が出る前から、つまり、それぞれのパターンが自分の名前を持つようになる前から、SmalltalkやC++のいくつかのライブラリやNeXTStepで、多くのパターンを学び、使い、作ってきたけれど、その程度だ。

 ソフトウェアに限らず、モノを作る作業を繰り返していれば、そこには必ず何らかのパターン「が生まれて」くる(パターン「を作る」のではなく)。デザイン・パターンの教科書を書いた4人組が偉かったのは、パターンが生まれてくる過程を目の当たりにして見せたことだろう。彼らの本に書いてあるのは、結果として出来上がった(名前を付けられた)パターンのカタログではなく、なぜパターンが必要とされ、どのようにして生まれ、どのように変化しながら使われているかという生成(流転)の物語だった[注1]。


注1 そういう意味ではそのうちに誰かが、それぞれのパターンがどのようにして使われなくなっていったかを書き足せば、物語は完結するのかもしれない。


 ソフトウェア・デザインのパターン言語は、建築家クリストファー・アレグザンダーのデザイン・パターンの考え方を下敷きにしていることはよく知られている。もっとも建築の世界でデザイン・パターンは主流ではないし、アレグザンダーのパターンの集大成ともいわれる盈進学園東野高校プロジェクトも必ずしも成功したとは見なされていない[注2]。アレグザンダー自身にとっても、ある時点で彼の思考と実践を最もよく表すものがパターンであったということであり、パターンの考え方は時を追って変化している。また最近は「Nature of Order」ということを考えているらしい[注3]。それはそれとして、一度、われわれはアレグザンダーの本に戻って、そこには実際にはどんなことが書かれていたのかを読み直してみよう。


注2 それでもなお、われわれがアレグザンダーの仕事に注目するのはなぜだろう? それは単にニューエイジ風の耳当たりの良い、何とでも解釈のできる言説が並んでいるからか? もっと本質的な何かがあるからか?

4巻本として出版されているが、いまのところ邦訳はない。


 デザイン・パターンに関して、アレグザンダーは全6巻の本を書いているが、ここでは手元に邦訳書のある次の4冊のうち、

  • 時を超えた建設の道(1979)
  • パタン・ランゲージ(1977)
  • パタンランゲージによる住宅の建設(1985)
  • まちづくりの新しい理論(1987)

まずは「時を超えた建設の道」を見ていくことにする。

 「時を超えた道」というのは多分老子の「道」(TAO)のことだろう。実際、本書は3部構成(「質」「門」「道」)になっている。それはつまり“名付け得ぬ質に到達するための門をくぐる道”を示している。語り口も心なしか老子風である。

 本書はパターンのカタログではない。パターンとは何かを説いている。本書全体を通じて強調されているのはまず第一に「生き生きと生きている」ことである。重要なのはパターンが「動機/状況」「フォース」「実現」という形式に従っていることだけでは全然ないのだ。「生き生きと生きた」[注4] パターン・ランゲージがなければ、いくらパターンを使っても生き生きとした建築物を作ることはできない。そして本書では(例えば)画一的コンクリートと鉄とガラスの箱の建築は明らかに生き生きとした建築とは見なされていない。つまり、そもそもアレグザンダーのパターンはつまらない、ありきたりな(例えば)会計システムを(ありきたりのままに)作るためのものではないのである。


注4 この「生き生きと生きている」という言葉はイヴァン・イリイチのコンヴィヴィアリティ=生き生きと生きる(convivialityとは一緒に酒を飲むということ)を思い起こさせる。


 第2に強調されているのは、パターンとは孤立した存在、部品ではないということである。1つの正しいパターンというものもないし、パターンを組み合わせて正しい建築ができるということもない。重要なのはパターンとパターンの関係が作り出すネットワークなのであり、パターンの関係も(こそが)パターン・ランゲージの構成要素なのだ。なぜならそもそも言語(ランゲージ)とはそういうものなのだから。

 例えば、ファクトリ・パターンを知っていてそれを使っただけでは多分何の意味もないのである。ファクトリの意味ならば辞書(カタログ)に載っている。そうではなくて、依存性を減らすことでプログラムを「美しく」することができる、依存性を減らすためにインターフェイスに対するプログラミングを行う、インターフェイスをどこかで具体化するためにファクトリを使うのである(あくまで例えば、だ)。つまり、適切な文脈で適切な言葉を使うから会話が成り立つのであって(逆に会話の内容から言葉の定義ができてくることもある)、それは言葉(やその定義)自身には含まれていない。

 そして、次に強調されているのは、パターンは人為的に作られるものではなく、自然に有機的に生成、発生していくものであるということである。「パターンは意識的に作り出そうとしてはならない。……頭に浮かんでくる意図は追い払うこと。……ひたすらパターンだけにこだわっていればよい。その気になりさえすれば、さしたる努力もなしに、パターンと現実の局面が一体となって、頭の中に正しい形態が生み出されるのである」(p.318)。重要なのは個々のパターンそのものというよりも、パターンが生成されるプロセスにあり、そのプロセスとは全一性に向かうプロセス(シーケンス)なのである。プロセスはランゲージに内包されている。

 アレグザンダーは「分化」というトップダウンなプロセスを重視している。しかし残念ながら、そのプロセスは極めて暗黙的だ。われわれにとっては例えば「テスト駆動開発」も1つの重要なプロセス(パターン・ランゲージ)であるが、やはりテスト駆動開発しているというだけで全一性(名付け得ぬ質)に向かうのはいささか困難だろう。エクストリーム・プログラミングには議論の多い「メタファ」というプラクティスがある。なかなか理解も利用もされないが、ここに全一性へのヒントがあるかもしれない。

 そして「時を超えた建設の道」の最後にアレグザンダーはいう。「ランゲージとは、私が無我と呼ぶ心境に達するための道具なのである。……それは、もはやランゲージを必要としないほど自分の心に忠実に生きる、あの心境へと導く門口にすぎない」(p.443)と。

 さて、「時を超えた建設の道」は邦訳のあるパターン本4冊の中でも風変わりな方であるのは確かだ。しかし、アレグザンダーが考えていたパターンと、われわれソフトウェア業界で通常パターンと呼ぶものとの間には大きな隔たりがあることをお分かりいただけただろうか。アレグザンダーにとってのパターンとは何よりも自然言語のようなもの、つまり生きていて、関係性の網の目であり、自然に発生/生成し、最後には使っていることさえ忘れてしまうようなものなのだ。

 果たして、われわれが本当に必要としているのはどちらのパターンなのだろうか?

Copyright© 2016 ITmedia, Inc. All Rights Reserved.

Loading

ピックアップコンテンツ

- PR -

注目のテーマ

マーケット解説

- PR -