著作一覧 |
「オブジェクト指向プログラムのためのパターン言語の使用」を読み返している。
漠然と感じていたことをあらためて書き出してみる。
アプリケーションプログラマーとフレームワーク(端的にはRails)の関係について。
以下は、上記文章のもじりである。
もし、元のアレクザンダーの考えが正しく、そしてケントベックとウォードカニンガムが考えたようにアレクザンダーが建築に対して用いた考え方がプログラムに適用可能なような普遍性を持つのであれば、以下の言明は真となるはずだ。
Alexander氏は、家やオフィスというものは、実際にそこにいる人たちの手によって設計され、作られるべきだと提案している。氏がこう結論付けたのは、ある構造(a particular structure)への要求を一番よく知っているのは、彼ら自身だからだ。我々はこれに賛同し、フレームワークにも同じ論旨を展開した。つまり、プログラマーは、自分自身のフレームワークを書くべきなのである。この考えはアホみたいに聞こえるかもしれない。建築とプログラムとの規模や複雑性の違い、設計のプロになるためのトレーニング年数などを考えると、その通りだろう。しかし、Alexander氏が説得力のあるシナリオを提供している。そのシナリオは、「パターン言語」と呼ばれるコンセプトを中心に展開されている。
次にRailsについて考えてみる。Railsは優れたフレームワークとして受け入れられていると考えられる。
上記の2点から、Railsはプログラマーから見たWebアプリケーションフレームワークのパターン言語を設計に適用した結果とみなすことができる。
事実、Railsを利用していて感じることのひとつに、うまくできているな、という思いがある。何かをしたいときに、それがたいていにおいて用意されているか、少なくてもそれをたやすく実現するための仕組みが用意されている。だいたいにおいて。
誰か他のプログラマーにRailsの良い点を説明する必要が生じたと仮定しよう。
一番簡単なのは、実際に使ってもらうことだ。
しかし、別の方法論もあり得るのではないか?
パターン言語とは、設計過程で発生するあらゆる問題に対し、実際に機能するソリューションを提供することで、設計者を導くというものだ。パターン言語は、一連のちょっとした知識がある一定のスタイルで記述、整列されており、設計者がその時点で最も適した質問を尋ねる(または答える)ことができるようになっている。
(良く考え抜かれたFAQとはパターン言語のインスタンスか?)
パターン言語を、これから生まれるものを記述するために利用するのではなく、すでに存在するものを記述するために利用する。そのような利用方法が効果的かどうかを試す。
練習問題:Rubyはプログラマーを幸福にするプログラミング言語と利用者から考えられているようである。もし、そのように感じているのであれば、プログラマーの立場からプログラミング言語Rubyをパターン言語で記述せよ。
ジェズイットを見習え |
なんとなく、フレームワークユーザ(=アプリケーションプログラマ)にとっての「パターン言語」という概念のヒントはDSLにある気がしてきました。
そうですね。もちろん、フルスタックやモデルとDBの一致といった点もあるとは思いますが、特にMVC周りに注目するとDSLが大きそうです。<br>DSLは、「余分な説明の排除(知識集中)」「簡潔で要領を得たコマンド(書きやすさ)」「実行すべきことの直接的な指示(仕様とコードの直結)」「記述と結果の一致(コードリーディングの容易さ)」というようなパターンかな、とか考えていく(まだ、考えてるだけでどうしようかと)と、結局、DRYの一言に落ち着くようだな、と。
あ、DSLが「パターン」または「パターンを集約したもの(?)」という意味ではなくって。<br>あんまりうまく説明できないのですが(artonさんはアレグザンダーは読まれてるんでしたっけ?『時を超えた建設の道』とか)、「家を使う人々がパターン言語を使いながら・作りながら建築をしていく」、というアレグザンダーの描いた感覚が、「プログラマがDSLを使いながら・作りながらプログラミングをしていく」、というスタイルに近いような気がするのです。
へへ、読んでません。読むべき?<br>と書いてから高橋さんの説明を読み直すと、おもしろそうですね。読もう。
あー、正直、『時を超えた建設の道』は電波がゆんゆんしすぎな気がする上にお値段も高いので、手軽に読むなら『パタンランゲージによる住宅の建設』とかの方がおすすめです。こっちはもろXPだし。とはいえ、『時を〜』を読まないとアレグザンダーを読んだことにはならない、という気もするので、教養としては『時を〜』を読んでおくのもよいかと思います。
ゆんゆんぶりは、アマゾンに書評されてました。まあ、いいんじゃないですかね(確かに、教養としての読書だし)。しかし、確かに高価ですね。