info

Navigation

Recent site activity

Publications‎ > ‎Nippon‎ > ‎

MeeMeeMee

C++ Report
C++ Report

メェーメェーメェーー (原題: Baa Baa Baaa)

James O. Coplien, Bell Labs
C++ Report 11(9), October 1999, pp. 33 - 37


翻訳: 長谷川洋一 ( Youichi HASEGAWA )
有限会社テクノポート

日本語 第1版 2001年4月8日

はじめに

 私がこの記事を書いている今,毎年イリノイ州のアラートンパークで行われているPLoP(Pattern Languages of Program Design)の第6回コンファレンスが開かれようとしている.これは,年中行事を彩る幾つかのPLoPコンファレンスのひとつだ.PLoPコンファレンスには,ドイツのKloster Irseeで行われるEuroPLoP,アリゾナ州で開かれるChiliPLoP,そしてまだ計画中だが,オーストラリアのMelbourneでのKoalaPLoPがある.これらのコンファレンスに出席すれば,OOPSLA,TOOLS,そしてECOOPに列席する面々に出会うことになるだろう.しかし,似ているのはそれぐらいだ(訳注:KoalaPLoPは2000年5月に開催された.)

 現在主流となっている学術的なコンファレンスは,従来から引き継がれている斬新性に基づいている.論文は新しいアイデアを賞揚しなければならない.論文に関連する先行技術を引き合いに出し,その先行技術から自らのアイデアを区別することが重要だ.たいてい,より良い/より安い/より速いといった主張は,形式的に証明されるか,実践への適合を通して実証されなければならない。そこでは,論文のレビューはその分野に通じている者が実施しレビューアが誰かは論文投稿者に知らされることが無い.そして,通常,一回限りのレビューとなる.

 PLoPコンファレンスは,このようなものではない.論文は,長年に渡って実証されたアイデアをいかにして利用するかが記述されなければならない.依然として,先行技術を引き合いに出すことは,読者が問題を解決するのに役立つので重要だ.しかし,その技術の有用な使い方を引き合いに出す方が,既に出版されている関連文献の場所を示すよりもはるかに大切だ.そこでの1対1のレビュー,すなわちピアレビューは,人を惹き付け(engaging),熱のこもった(intense),そして協力的な(supportive)ものだ.

 なぜ,このように違うのか? 2つのコミュニティでは,価値体系(value systems)と目的(goals)が異なる.ECOOPのようなコンファレンスでは,技術の現状を前進させることに報い,コミュニティでこれらの進歩を共有するための公開の場を提供する.他方,PLoPのコンファレンスでは,成功した実践を時間をかけて文書化した人に報いる.PLoPコミュニティにおいては,作品におけるアイデアの質にレビューの焦点をあてるだけではなく,同様に,発表の質に対して周到な注意を払う.パターンの学識本体(訳注:文献等)の成長に寄与する人たちを激励,助成するため,パターンコミュニティでは,著者の尊厳を守り,安心してレビューを受けられる環境の提供に努めている.

 したがって,PLoPコミュニティにおけるピアレビューの文化は伝統的な学術的コンファレンスと非常に異なっている.細かい点はそれぞれのコンファレンスで異なるが,おおむね次のようなやり方が行われる:

  1. 各PLoPコンファレンスから,論文の募集が案内される.

  2. この案内を受けて,著者は作品を提出する.シェパードは著者と一緒になって推敲し,論文を改善するフィードバックを著者に提供することで,プログラム委員会にその論文が受け入れられる可能性を高める. (訳注:パターンコミュニティでは,シェパード(羊飼い)と羊という表現をする.シェパードは羊飼いの意味で,論文の推敲を指導する人を指す.指導を受ける人を「羊」と呼び,羊飼いと羊によってシェパーディング=推敲作業が行われる.)

  3. 著者とシェパードはその論文に対して数回やり取りをする.

  4. 論文はプログラム委員会に提出される.そこで,更なる改善を求めて論文を送り返すか,コンファレンスで発表することを受理するかが決定される.「コンファレンスでの発表」とは,著者がその作品をライターズワークショップに持ち込むことを指している.そこでは,支援的で建設的なセッティングのもと,著者はさらなるフィードバックの利益を得ることができる([Coplien1997]).

  5. 発表者に選ばれた著者はコンファレンスのライターズワークショップに参加する.

  6. 著者は,ワークショップで得たフィードバックを作品に取り入れる.おそらくシェパードと一緒にそれを検討することになるだろう.

  7. 著者は,再度自分の論文をコンファレンスに提出し,その論文はコンファレンス後のプロシーディング(報告資料)として出版される.通常,技術レポートとしてスポンサーとなる大学か企業が出版する(たとえば,[EuroPLoP1998]).

  8. 著者はまた,作品が集成本として出版されるものとしてふさわしいと認められたなら,その作品を出版に提供することもある.パターンコミュニティの初期の頃には,ひとつかそれ以上のPLoPの作品がコンファレンス後のプロシーディングといったものの中に集められた([PLoPD1]のように.これは最初のPLoPから作品が集められた).最近になって,これらの出版物は,コンファレンスのプロセスから切り離されるようになった(もうすぐ出版されるPLoPDシリーズの第4巻のように.これは最近開催されたPLoPとEuroPLoPのコンファレンスから選ばれた作品で構成されている)

 この最終ステップ自身,何度か編集が繰り返され,プロによる出版編集や整形作業を含んでいる.出版されたパターン文献は,ソフトウェアの世界で最も丹念に吟味された文献に入る!

ライティングワークショップ Writing Workshop

 今年開催されたEuroPLoPでは,従来のプロセスに別のステップが加わった.やり方は昨年とほぼ同じだが,さらなる努力がなされた.標準的なライターズワークショップ(Writers' Workshop)では,用意されたグループで著者が建設的なフィードバックを受けることになるが,これに加え,そのコンファレンスの特色であるライティングワークショップでは,著者が直接シェパードと一緒になって作品を洗練する.(そう,この用語は紛らわしく,この記事で使われているところでは,十分気をつけて欲しい.いつかこの用語の問題を調整できれば良いと考えている.もし何か提案があれば知らせて欲しい.)

 今年のライターズワークショップは,Munich(ミュンヘン)にあるSiemens社のChrista Schwanningerによって,取りまとめられた.コンファレンスの前に,プログラム委員会が,ライティングワークショップに6つの論文を割り当てた(その内のひとつは,二人の著者によるものだ).Christaは,まずその作業のためにシェパードを選択し,それからシェパードに興味のある論文を各自ひとつ選択するよう求めた.

 私は今年のライティングワークショップでシェパードの一人となった.私の「羊」(訳注:推敲を受ける著者を指す)と初めて出合ったのはKaufbeuren駅でだった.偶然にも私達は二人とも時を同じくして到着し,Irseeに向かうタクシーを待っていた.開会のディナがその夕べに催され,次の朝,正式にコンファレンスが始められた.開会のセレモニーでは,今まで一度も参加したことのない人のために,ライターズワークショップでの具体的な進め方が実演された.

 その日の後で,すべての羊とシェパードが集まり,お互い顔を合わせ,面識を持つこととなった.私達は,グループで一緒に昼食を取ろうと計画したが,設備の都合でできなかった.その午後の5時に,最初のセッションとして,羊とシェパードは正式な会合をもった.

 その週の残りで何とかしようと,私達はコンピュータルームで相談することになった.そこは,著者達が仕掛りの作品を編集できるようにと用意されたものだった.ほとんどの羊は,自分の作品をきっちりマシーンに取り込んでおこうと早めに来ていた.羊はシェパードとほんの少しの会話の時間を持ってから,すぐに変更に取り掛かった.何人かは予定の会合時間の後も居残り,何人かは夕食にとってからも作業を続けるためにコンピュータルームに戻ってきた.

 私は,こういったライティングワークショップのやり方が正しいものなのかどうか懐疑的だった.特に,既に著者がコンファレンス以前に,シェパード(ライティングワークショップのメンバーとは違うグループに属していたが)との作業で利益を得ているのだ.しかし実際には,私はシェファーディングが公平になされていないことに気づいた.著者の意向にほとんど従い,シェパーディング期間全体を通じてほんのわずかなメールしか著者に送らないシェパードがいる一方,多くの指導を行っていたシェパードもいる.もっとシェファーディングに力を入れていれば,ライティングワークショップの幾つかの作品はさほど苦労することもなく,コンファレンスのメインとなるライターズワークショップにも十分値するものになっていただろう.これが,この活動の価値に対して私の目を少しばかり開かせてくれた.そして,おそらく顔を合わせてやるほうが確かにより上手くいくということだろう.

 著者たち−彼らのすべて−は,信じられないほど懸命に論文と取り組んだ.もし彼らのためにこのフォーラムが提供されなかったとしたら,これほど一生懸命に取り組めただろうか.断言はできないが,この環境,施設,そして彼らにとって有効な支援が,彼らを刺激し,鼓舞することにより,彼ら自身を前進させることになったと私は考える.

 最後に,私はこれらの論文が計り知れないほど改善されていくのに目を見張った.一方では,これは初期のシェパーディング作業の部分的な失敗を意味している.私達がライティングワークショップでほんの数時間一緒にすることで成し遂げたものを,何週間もかければ,シェファーディングでも達成することができただろう.他方,理由はともあれ,著者達全員が,彼ら自身の中に幾つかの素晴らしいパターンを持っていて,そして,ライティングワークショップがこれらのパターンを照らし出すツールとなるように思えた.

 次のステップは,メインとなるワークショップのひとつである発表に備えて,ライティングワークショップに提出された論文を査定することだろう.全てのシェパードは,羊を助けることに情熱を持って臨んでおり,おそらくほとんどが羊の論文を次のステップに進めるよう推薦するだろう.しかし,彼らはまた,時には没頭しすぎることがあることを十分知るほど用心深いので,たいていのシェパードは他のシェパード,またはパターンコミュニティの他のメンバーに,論文を見てもらい,裏づけとなる意見を提供してくれるよう頼んでいる.結局,私達は,ライターズワークショップにレビュの対象として2つの論文を送ったが,それらの論文はプロシーディングになって出版されるだろう.もうひとつの論文に協同で取り組んでいた二人の著者が,ワークショップに提出するまでに自分達の論文にさらなる作業を加えたいとみんなに告げた.少なくとも何人かのシェパードが,彼らの論文が十分提出できる状態にあると感じていたにも関わらず,彼らはそう述べた.別の一人の著者がコンファレンスに長く居られなかったので,その論文をライターズワークショップに入れるかどうか問題になった.

 最後になって,コンピュータルームの隣にあったコンファレンスルームがうまい具合に予約できたので,ライティングワークショップの召集をかけた.私達は,コンファレンスの本筋から外れているが,ライターズワークショップを開き,残りの2つの論文を取り上げた.共に肯定的なフィードバックと改善への提案がうまくバランスした楽しいワークショップとなった.

 ここには,作品をライターズワークショップへ追いやることで心の傷を作ってしまう危険性があるでは,と思われるかも知れない.私は,このことについて著者の幾人かに尋ねてみたが,彼らはそういった感じを抱いてはいなかった.彼らにとっては,肯定的な経験となっていた.おそらく,来年も彼らは来るだろう.ここには心の傷はなく,援助の雰囲気が満ち足りている.私は,この結末について,Norm Kerthと話をした.彼はコンファレンスに参加していなかったが,はるかかなたからライティングワークショップに関する様々な評判を聞いていた.彼は,「このことは,メンバーを助けすることがコミュニティの目的のひとつであることをコミュニティ自らが理解したことを示すものだ.」と述べた.

 私はこの活動の価値をすっかり確信するに至った.ライティングワークショップから出てきたいくつかの論文は,私見だが,本題となるライターズワークショップに受理された多くのパターンよりも優れていた思っている.時間や施設などの資源がありさえすれば,私達は参加したいと望む全ての人のためにライティングワークショップを開くだろう.その機会があれば,私もシェパードの一人として参加したいと思う.

 この経験によって私の疑念が粉砕されてから,Christaにうまくいくためにどんなことをしたのか聞いてみた.EuroPLoPでは,1998年にも同じようにライティングワークショップを開いていたが,ずっと規模の小さい活動で,私にはプログラムとして形式上それほど統合されているとは思えなかった.私は,うまくいくようにどのように計画したんだと,Christaに尋ねた.スケジュールはスムーズに運び,どのような尺度をもってしても,成功だと思えた.「私が計画したのはひとつだけよ」と彼女は答えた.「それは,シェパードを選んだこと.経験があり,一緒に作業ができ,しかも経験のないほかの人たちと一緒にやりたいと思う人を.」Neil Harrisonは,昨年のEuroPLoPでのライティングワークショップに参加したが,彼もまたこういっている.「ふさわしい人を確保することが鍵だよ」と.それさえできれば,後は何とかなる.まさに素晴らしい,創発的な(訳注:ちょっとしたことが予期もできなかった結果を生むこと)結果だ.これはおそらく1つのパターンだ.

シェパーディング Shepherding

 シェパーディングのプロセスは,ここでその概要を述べれば,1994年に開かれた最初のPLoPコンファレンスまでさかのぼる.はじめの頃は,印象が強烈で,意義深いものだったと記憶している.最近のコンファレンスでは,その輝きと鮮明度がいくらか失われたような気がしている.確かに,プログラム委員会の活動はより目に見えるものになっているが,これは最初の2つのPLoPにはなかったものだ.そして,これがシェパーディングの強調すべき点を置き換えてしまっているのではないかと危惧している.

 私と同じくこの懸念を抱いている人たちがいる.その中でも,Neil Harrisonは長年に渡って成功したシェパーディングをもとに,シェパーディングの効果を減らしてしまう落とし穴を避けるということを顧慮して,シェパーディングのパターンを捉えるべく取り組んでいる.

 「シェパーディングは4つの理由で重要だ」とNeilは言う.「第1に,パターンライティングについての専門的知識を専門家から初心者へ伝える手段となる.第2に,パターンを書く際に,たとえどのような人であっても,更に一対の目が加わるのだから,常に利益をもたらす.第3に,誰か自分以外の人が肩越しに見ていてくれるなら,気が楽になり,やる気も出るだろう.もちろん,論文の質は高まる.私達はこのことを何度も見てきた.最後に,シェパーディングはパターンコミュニティを強固なものにする.関係を築き,コミュニケーションを促進させる,そして,私達の営みの人間的側面への関心を述べる場を提供する仕組みとして働く.」

 シェパーディングは,ライターズワークショップに提出できるまでに論文を洗練させるという伝統的な役割だけでなく,EuroPLoPのライティングワークショップのように,活動にうまく適合する一連のテクニックとしても価値がある.これはライターズワークショップを置き換えるものではなく,それを補完するものだ.これら2つの活動では,人のダイナミックスが全く異なるのだ.シェパーディングを品質保証のひとつのステップと考えてみよう.Demingは,「品質は,それに関わる技術者が増えるに従って,低下するものだ」と言っている.なぜか? それぞれが問題は他の誰かが処理するだろうと考え,その結果,質に関する責任が一人の肩にかかってくる場合よりも注意を払わなくなるからだ.よいシェパードは,献身的に取り組んでいる.シェパーディングの段階では,自分以外ゆるんだ手綱を引き締めてくれる者などいない.それに,著者は自分の知っていることは,シェパードもまた知っていると考えている! 他方,ライターズワークショップは社会的な力を産み出す.そこでは,一人の考えがレビューする他の人たちの考えに基づき,とても一人がレビューしても思いつかない思考領域へと討議を導いていく.Neilは付け加えた.「それに,ライターズワークショップが一度きりで,パターンを個人的としてでなく一般的に評価するという違いがある.他方,シェパーディングは反復的でとても個人的なものだ.あるケースでは,パターンを世界的な見地に立って判断し,別のケースでは,実際に何が起こっているのかを知るために,著者の頭の中にまで入り込むことができる.」つまり,両方のレビューが,それぞれ価値を付け加えることになる.

 Neilは,シェパーディングのためのパターンを集めている.彼のパターンのパトレット(訳注:パターンの問題と解法を簡略に表したもの)をいくつか紹介しよう.昨年の8月に開かれたPLoPで,非公式にシェパーディングパターンの会合がもたれたが,これらのパトレットはそこで提示されたものだ.それらの内,シェパーディングプロセスに関するパトレットを少し示す:

三度の繰り返し(Three Iterations)

どのような作品でもシェパードディングに必要な作業量を前もって測り知ることはできない.

それゆえ:

早めに着手し,だいたい3回やり取りするよう計画しよう.三度の繰り返しで完了できるよう,自らを調整しよう.

半分のパン(Half a Loaf)

最良のシェパードであろうという熱意から,しばしば大量のコメントをそれほど力のない著者にドサッと送りつけてしまう.

それゆえ:

何度かに分けて,小さくまとめてコメントを送ろう.全てのパンを与えるより,半分のパンを与えよう.最も優先順位の高い問題から始めよう.

次に,パターンの仕上げに関するものを示す:

フォースが問題を定義する(Forces Define Problem)

問題の記述がしばしば貧弱なことがある.多くの場合,問題の記述は解法を前提としている.

それゆえ:

問題を堅固にするためフォースを利用しよう.著者がフォースと問題の記述の間を行き来できるよう助けてあげよう.

俯瞰図(Big Picture)

どこからパターンに取り組んだら良いかわからない.

それゆえ:

まず問題と解法を一緒に読んで俯瞰図を頭の中に描こう.それで概ねなんとかなるはずだ.

 Neilが展開しているパターンをパトレットレベルで,少しであるが味わってもらえたと思う.NeilはこれらのパターンをPLoP99で発表する予定だ(訳注:99年のPLoPでキーノートとして発表された).近い将来,公開Webサイトおよび出版物の形でこれらのパターンが誰もが見れるようになることを私は望んでいる.これらのパターンは,個々のシェパーディング経験に矛盾しない知見をPLoPの著者達に提供し,私達のコミュニティが熱望している優れた標準を支える手助けとなるだろう.

おわりに

 数年前,私はOOPSLA '96の運営議長を務めた.OOPSLAは,伝統的に引き継がれてきた論文審査とプログラム委員会からなる,より従来型の学術コンファレンスだ.ほとんどのコンファレンスがそうであるように,その委員会でも,良いアイディアの萌芽や,事実上まだ肉付けされていないアイディアを含んだ論文を手にしていることがわかった.誰かがこれらの論文をシェパーデイングすることを提案した.改訂するという条件付で受理しようというのである.それは新しいことではなかったのだが,過去の OOPSLA ではごく少数に限られていた.しかし専門誌の編集においては,シェパーデイングは一般的な慣習だ.OOPSLA '96 では,シェパーディングする論文が増えた.OOPSLA '97 では,シェパーディングの作業は手一杯の状態まで膨れ上がり,相当量の論文がテクニカルプログラムに受理された.今日に至っても,Adele Goldberg が羊を手助けすることに熱中し,信じられないほどの努力をしたことを私は覚えている.著者がコンファレンスの論文を書くより,彼女がシェパーディングのコメントに費やした時間の方がずっと多かったと思う.

 私はOOPSLAがまだこれを続けているのか知らないし,また,シェパーディングがパターンコミュニティで良い結果につながるとわかったことを受けて,OOPSLAでシェパーディングの習慣が広まったのかどうかもよくはわからない.しかし私はシェパーディングは良いことだと信じている.コミュニティの文献に新しい作品を加えるための承認プロセスに,さらなる品位と価値をもたらしてくれる.もしあなたがプログラム委員会に関与する機会があれば,ぜひシェパーディングを試してみてほしい.コンファレンスの論文が大幅に改善されるのを目のあたりにするだけでなく,作品に対して具体的に貢献するすることに気持ちよく思う運営委員のメンバーとそれに対して感謝する著者のコミュニティを手に入れることになるだろう.

道しるべ

 この記事に関してコメントや情報をくれたChristaとNeilに大変感謝する.ここに挙げたアイディアはすべて二人のものだ!

 Christa と私は,11月最初の週に行われる OOPSLA で(Richard Gabriel や Honna Segel と一緒に) Writers' Workshop を実施することになっている.そこでみなさんとお会いしよう(訳注:この記事は 1999年10月に発行されたものなので,既にこの OOPSLA は終わっている) .

参考文献

  • [Coplien1997] Coplien, James. The Column Without a Name: Writers' Workshops. C++ Report 9(4), April 1997, 51-60.

  • [EuroPLoP1998] Coldewey, Jens, and Paul Dyson, eds. Proceedings of the Third European Conference on Pattern Languages of Programing 1998, Kloster Irsee, Germany. Universitätsverlag Konstanz Technical Report, July, 1998.

  • [PLoPD1] Coplien, James, and Douglas Schmidt, eds. Pattern Languages of Program Design. Reading, MA: Addison-Wesley, 1996.

翻訳者からの謝辞

まず、シェパーディングパターンに関する私の質問に対して,この記事のことを教えてくれた Neil Harrison に感謝します.この翻訳は,ほとんど桜井麻里さんとのメールのやり取りの結果,できたものです.金澤典子さんの訳も参考にさせてもらい,さらに,この翻訳テキストからHTMLフォーマットへの変換もしてもらいました.お二人に感謝します.そして,最後にこの記事を書いてくれた Cope に感謝します.ここには私の知りたかったことと共感できることが共に含まれており,さらにそれを翻訳するという楽しみを与えてくれたことに感謝します.(長谷川)

Attachments (2)

  • cpprheader.gif - on Mar 16, 2008 11:55 AM by Gertrud Bjørnvig (version 1)
    2k View Download
  • from.gif - on Mar 16, 2008 11:54 AM by Gertrud Bjørnvig (version 1)
    1k View Download