パターンセミナーに参加

結城浩

今日は、Jim Coplien, Linda, Neilが講師のInArcadiaのパターンセミナーに参加しました。 MensorePLoPには参加できなかったのですが、 著書を通してお世話になっている有名な方々に1度お会いしようと思って出かけて行きました。 場所はお台場(テレコムセンター)のタイム24というビルです。 天気もよくてゆりかもめからの眺めはとてもきれいでした。 ゆりかもめの駅の名前には適当なでこぼこがあって、 記憶しやすいなあと思いながら。

Copeの講演は、Symmetry Breakingのお話でした。 (以下は要約ではなく、結城の心に残った部分のメモです) 自然界には真の(global)symmetryはなくて、 (global)symmetryがbreakして、 local symmetryへとredistributeしている。 global symmetryしか持たないpureなもの(言語)だけで 記述しようとすると(かえって)無理が生じる。 生き残るプログラミング言語というのは、 そうじゃないのじゃないか? ヘテロなものの方が残っているじゃないか。 aspect-orientedな方法論は、 symmetryを導入することによって、symmetry breakingを取り扱おうとしているが、 これは擬似的な方法であり無理がある。 (繰り返しますが、これはいいかげんなメモです。適当に読んでください)

コーヒーブレークのときに、 Lindaさんに、 あなたの編集なさったPattern Almanac 2000を読みましたよと話しかけたところ、 Lindaさんは「あら!あれを《読んだ》の?それはすごいわねえ!」とにっこり笑う。 あわわ。もちろん年鑑を全部《読んだ》わけではないですう…と笑いながら言い訳。 結城が、だいたい一人で仕事をしていて、 メールなどで他の人とコミュニケートしています、 という話をする。 Lindaさんが「あら!私もそうよ。一人でミーティングして、お家でお仕事。 そして他の人とメールのやりとり。ときどき他の人とテレビ会議ね」とうなずく。

[DP/ML]の参加者のお一人と、 レビューアのお一人と一緒に、 楽しくおしゃべりしながらお昼を食べる。 その後、 「[DP/ML]に参加しています…ROMですけれど」という方々から名刺をいただく。 ありがとうございます。 FAQの翻訳を[DP/ML]でやったときにサポートしてくださった上手さんからも名刺をいただく。 恐縮です。 みなさんから、 デザパタ本読みましたよ、 会社でも何人も持っていますよ、 例の「猫」は面白いですね、 「絵本のパターン」は奥さんに見せたらうなずいていましたよ、 などと言っていただけてとてもうれしかったです。 ありがとうございます。 結城も、いま書いているマルチスレッド編の予告編をほんのちょっぴりおしゃべり。

午後はCopeのセッションの続きと、パネルディスカッション。 結城は、パターンを書くときに「読者」をどう考えるか、 という質問をする。 これは前から気になっていたこと。 あるパターンと、そのパターンのパターン記述は別物であって、 読者層に合わせたパターン記述があってしかるべきではないか、と思っている。 Copeからは「そうはいっても『まず一人の読者に理解してもらう』ところから スタートするのだろう」というコメントをもらう。 そしてPattern Writer's Workshopの形式について示唆を受ける。

その中で、Workshopの中ではPattern Authorはただ聞くだけである、 というスタンスは面白く、しかも正しいと思った。 それは何かというと、パターン記述については著者の補足説明を口頭で行うというのは 「なし」であって、「書かれたものがすべて」であるということだ。 その上で、 「参加者が著者の書いたものをどう読むか」という様子を 著者が聞くというのはとてもよい。 それは、非常に多次元的で意味深いフィードバックだと思う。 うん。これはよくわかる。 いまマルチスレッド編を書いていて、レビューアから受けるメールがそれと近い。 読者同士の「議論」はないけれど、読者(レビューア)がどう感じるかを 生のままフィードバックしてもらうというのはライティングにとって非常に重要だ。 特にレビューア層と読者層が一致している場合は。 Pattern Writer's Workshopがうまく機能するのは、 参加者の層と、そのパターンの読者層が一致しているからだろう、と思う。

Lindaからは、確かにエキスパートが書いた短いパターン記述を普通の人が理解できない、 ということはよく生じる。そのためにパターンのフォームをどう選ぶか、どう改良するかということも大事。 はじめに短いパターン記述があって、エキスパートならそこだけ読めば理解できる。 経験がない人ほど先まで読んでいけば、より詳しく理解できる。そういう形式がいいですね…という話を聞けた。

考えてみれば、結城のデザパタ本も、パターン記述の1つの形式になっていることになる。 章のタイトル→章のイラスト→日常生活の例→パターン名の意味の解説→サンプルプログラム→パターン解説 →考えを広げるためのヒント→関連パターン→補講→練習問題…という流れは、 結城が「読者に最も分かりやすいだろう」と思って書いている順序になる。 そのときに思っていることだけれど、 「パターンを記述しよう」というよりも 「読者にパターンを理解してもらおう」という意識の方が強いように思う。 パターンをできるだけ正確に、Completeに伝えることよりも、 まずざっくりと、どういうことをお話したいのか、というイメージを伝えようとしている。 そのために、可能な限り具体的→抽象的という順序を守っている。 パターンよりもプログラムの方が具体的。プログラムよりも日常生活の例の方が具体的。 だから、日常生活の例→プログラム→パターン、の順序で書いているのだ。

パネルディスカッションの後、 Copeに『Java言語で学ぶデザインパターン入門』をプレゼントとして渡す。 「サインして」というので急いでサインする。 サインといえば、 (株)豆蔵の白川さんのカウボーイハット(?)にもサインさせていただく。 あのカウボーイハット、 MensorePLoP2001の参加者のサインで埋まっていましたね(^_^)。

などなど。 いろんな方からいろんなお話を聞けてとても嬉しかったです。 1つ1つここに書ききれません。ごめんなさい。 でも、本当に楽しい一日でした。 みなさん、ありがとうございます。

(2001年11月16日の日記から)

豊かな人生のための四つの法則