| ホーム > 日記ダイジェスト > パターン・ランゲージってどんなものですか? | 検索 | 更新情報 |
|
|
|
質問
はじめまして。 結城さんの書いた「絵本を読むときのパターン・ランゲージ」や 「技術系メーリングリストで質問するときのパターン・ランゲージ」を読んで、 面白いと思い、メールしています。 パターン・ランゲージってどういうものなのでしょうか?
回答
結城の書いたものを読んでくださり、 またフィードバックを送ってくださり、ありがとうございます。 とてもうれしいです。
パターン・ランゲージとは何か? という質問については、とりあえず、以下をご覧になってみてください。
パターン・ランゲージ(パターン言語と呼んでも同じです)の話をする前に、 パターンの話をした方がいいでしょうね。 パターンというのはおおよそ次のようなものです。
「ある文脈で繰り返し起きる問題を解決する方法。 その方法にはいくつかの制約が課せられているかもしれない。 またその方法には分かりやすい名前がついている。 他のパターンとの関連も示される」
…と書いてはみたものの、あまりピンとこないですよね、きっと。 抽象的すぎるからですね。 私の書いた「絵本を読むときのパターン・ランゲージ」の中から1つパターンを抜き出してみましょう。 以下は、「いっしょに過ごすひととき」というパターンです。
「子供に絵本を読もうとしている」のがこのパターンの文脈です。 「子供の機嫌が悪かったり、親の機嫌が悪かったりして絵本がうまく読めない」というのが問題ですね。 うん、確かにそういうことは繰り返し起こる起こる。 制約はフォースとも呼ばれます。 ここでは問題を解決するための条件のようなものです。 「むりやり読むことはできない」「子供を怒らせたり泣かせたりしない」といったことです (私のパターンの書き方ではこのあたり少しあいまいです。ごめんなさい)。 この制約のために、先ほどの問題の解法として「子供が泣こうがわめこうが絵本を読む」というのはダメ、ということになります。 肝心の解決する方法は、 「絵本にこだわらずに、歌を歌ったり、親が自分の小さいころのお話をしたりしましょうね」というものです。 このパターンの名前は「いっしょに過ごすひととき」です。 解法のエッセンスを短い言葉で表現し、覚えやすく、人に伝えやすくしたものですね。 パターンの関連として、パターンのはじめと終わりにいくつかのリンクが示されています。
「なーんだ、パターンっていったって当たり前のことを書いているだけじゃん」と思われますか? そのとおりです。パターンは目新しい考えをむりやり作り出したものではありません。 みんながある程度意識していること、熟練した人が繰り返し問題を解決してきた方法、それがパターンです。 そしてそれらに一定のフォーマットを与え、まとめて記述したもの、それがパターン記述となります。
パターン記述のやりかた、すなわちフォーマット、またはテンプレートにはいろんな種類がありますし、 パターンを書く人が自分のパターンを書きやすいように(そして読者に読みやすいように)作成・修正したりします。 前述した結城のパターンの書き方はAlexanderという人が作ったフォーマットにほぼ従っています。
さて、ここまででパターンの話はおしまい。 今度はパターン・ランゲージの話をしましょう。 パターン・ランゲージは簡単に言えば、パターンを集めたものです。 でも単にパターンを集めればいいってもんではありません。 それらのパターンは相互に関連しあい、また補完しあいます。 ばらばらのパターンを集めたものではなく、緊密な関係をもったパターンたちを集め、 そしてその関係を十分に意識して記述したもの。それがパターン・ランゲージになります。
パターンが解法をあらわしたものだとすれば、 パターン・ランゲージは、解法の集合によって、文脈全体を描き出したものともいえます。 例えば、「絵本を読むときのパターン・ランゲージ」では、「子供に絵本を読んであげる」という文脈(コンテキストと呼ばれることもあります)を 描き出しています。 また、「技術系メーリングリストで質問するときのパターン・ランゲージ」では、タイトルの示す通り、 「技術系メーリングリストで質問する」という文脈を描き出しています。
このように考えてくると、 いろんなハウツーもの、心がけ、コツ、Tips集といったものは、 うまく表現すれば、パターン・ランゲージになりうる可能性を秘めていることがわかるでしょう。
パターンという考え方を、ソフトウェアの開発(特に設計部分)に適用したものが、 よく耳にするデザインパターンです。 分析に適用したものがアナリシスパターンらしいです (らしいです、というのは結城はアナリシスパターンのことをよく知らないからです)。
あなたは、 きっとパターンやパターン・ランゲージに興味があることと思います。 ぜひ、以下のリンク先のページをごらんになって、 あなたもパターンやパターン・ランゲージを書いてみませんか。
また、結城が管理しているデザインパターン・メーリングリストに参加してみてください。 主にソフトウェアよりの話題が多いですけれど、 パターンに関する意見や質問、パターンの紹介などを歓迎しています。
なお、結城はパターンというものを面白いと思って、 自分で勉強したり書いたりしていますけれど、 私に何か権威があるわけではありませんし、 パターンの専門家というわけではありません。 上に書いたこともずいぶんおおざっぱな話にすぎません。 念のため。
でも、パターンを書いたり、パターン・ランゲージを書いたりすることというのが、 わくわくするほど楽しいことである、というのは保証します。 ぜひいろいろやってみましょう!
Enjoy patterns!
(2001年12月3日の日記から)