Skip to content.

Sections
Personal tools
You are here: Home » コミュニティ » XP-jp » XP関連記事 » XPとパターン Ralph Johnson'sの見解

Document Actions

XPとパターン Ralph Johnson'sの見解
[English]

原文: Ralph Johnson
邦訳・編集:(株)永和システムマネジメント   平鍋健児
作成日:ver 1.0 2002, 12/7
ver 1.1 2002, 12/14

次のような質問をしばしば受ける.

"XP(Extreme Programming) とパターンは関係があるのか?"

次の2つの記事は,こういった質問に Ralph Johnson(書籍『デザインパターン』の著者,GoFの1人)が答えた ものである.この記事は,'pattern-discussion@cs.uiuc.edu' メーリングリストにおいて議論された ものを,Ralph Johnsonの許可を得て編集したものである

    Re: Patterns, QWAN and Extreme Programming

Subject: Re: Patterns, QWAN and Extreme Programming
From: Ralph Johnson < johnson@cs.uiuc.edu >
To: Michael.Pont@tesco.net, patterns-discussion@cs.uiuc.edu
Date: Tue, 12 Feb 2002 06:13:39 -0600 (CST)

> From: "Michael Pont" < Michael.Pont@tesco.net >

> 誰か,XP とパターンの関連について,よい論文を知りませんか?

私が知る限り,存在しません.いちばんそれに近いのは,Joshua Kerievsky が「パターンと XP はよく合う(XP and Patterns go together)」と書いたもの (*1) でしょうが,でもこれは直接関連について書いてあるものではありませ ん.実際,パターンとXPは非常に強い関連があります.これは,両方を発明し たのが同じ人物だということ,それに,両方が同じプログラミングコミュニ ティの小さな一角から育って来たことを知っていれば,驚くことではないで しょう.つまり,「非常に」強い社会的(social)関連があり,同時に強い思想 的(philosophical)関連があるのです.後者は,前者からの帰結と考えられま す.

私が物語を説明するなら.Kent Beck が XP とパターンの両方を発明した,と いうことになるでしょう.「発明した」というのは言いすぎかもしれません. 彼は,多くのアイディアをWard Cunningham から学んでいます.でも,Kent は営業・広報に長けており,多くの人々を巻き込んでいったのです.Ward と Kent は 80年代中頃にChristopher Alexander を発見し,数年間,彼のアイディアを 真剣に考えるべきだ,と周囲に説いてまわりました.私も『時を超えた建設の道』 (*2) と『パタン・ランゲージ』 (*3) を1988年から1989年に読み,興味を覚えましたが,これを適用することには考 えがおよびませんでした.OOPSLA '90 で,Kent と私はHotDraw についてのパ ターン言語の論文を書きました (*4) .その時に,私は Alexander ファンに転身したのです.Kent は1993年にコロ ラド州でワークショップを開催し,Jim Coplien と Grady Booch にパターン の重要性を説得しています.私が知る限り,初期のXPリーダーたちは,パター ンコミュニティ,もしくは,Smalltalk コミュニティ出身です.

Kent は,XPをマーケティングする際,パターンの時とは違ったアプローチを 取りました.両者に違いは多くありますが,重要なのは,XPについて彼が書い たものには,Chistopher Alexander が出て来ないということです.私が推測 するに,典型的なソフトウェア開発者に Alexander を指し示すのは間違いで あると彼は考えたのではないでしょうか.なぜなら,Alexander の考えは彼ら に理解しにくく,Alexander をこの議論に持ち込むと,人々はすぐにソフト ウェア開発の話題から逸れて行ってしまうからです.Kent は,みんなに「ソ フトウェア」を考えて欲しかったのでしょう.Alexander について知りたい人 は,パターンに関する文献から,どちらにしてもそこに行きつくだろうと彼は 考えました.しかしながら,XP は,パターンがそうであるように,Alexander のアイディアを基礎にしていることは間違いありません(ただし,ソフト ウェアパターンはすべて,100% Alexander アプローチだということではあり ません).

私が最初の3,4回 Alexander を読んだとき,私を引き付けたアイディアは, 「極端にインクリメンタルな設計」と「マスタープランの悪」です. Alexanderは,快適な場所は,多くの人によって長い時間をかけて設計される こと,そして,マスタープラン無しに一貫性(coherency)を保っているのは, その人々が共通のパターン群を共有していることを証明するものだと指摘 しました. そして Alexander は,パターンを「設計を生み出すもの」 (transformations to a design)である,と考えたのです.

Kent は,『デザインパターン』 (*5) の中のパターンは,大きすぎると考えました (『Smalltalk Best Practice Patterns』 (*6) を見てみて下さい).彼のパターンの アイディアは,Martin Fowler によるリファクタリングカタログ (*7) により近 いものです.しかし,XP 自体,一種のパターン言語です.私は,Kent は Jim Coplien のプロセスパターン (*8) から影響を受けていると思います.『デザイ ンパターン』と『Smalltalk Best Practice Patterns』の中のパターンは「プ ロダクトパターン」であり,XP は一組の「プロセスパターン」だとも言えま す.でも,もしXP を一組のプロセスパターンと見るならば,それは非常に うまく定義された,パターン言語になっています.そして,それは,多くの点 でAlexander アプローチ(Alexanderian)だと言えるでしょう.特に,生成的 (generative)であるという点です.XP には「信頼性」や「理解容易性」に直 接関連するパターンが無いにも関わらず,「プラクティス」全体が結びついて, 信頼性が高く理解が容易なシステムを生成(generate)しています.パターン同 様,一つ一つのプラクティスには名前があり,それ自身を学ぶこともできま す.パターン同様,プラクティス全体が結びつくことで,個々の単純な足し合 わせよりも大きな効果が得られるのです.そして,XP は極端にインタラク ティブで,さらに,計画は可能な限り小さくなっています.

結論としての私の意見は,XP はAlexander スタイルの開発をソフトウェア にどうやって適用するかを示す,ソフトウェア開発のためのパターン言語であ る,というものです.

-Ralph


   Re: ソフトウェアに設計手順は意味を持つか?

Subject: Re: Do design sequences make sense for software?
From: Ralph Johnson < johnson@cs.uiuc.edu >
To: Mike Beedle < beedlem@e-architects.com >, < patterns-discussion@cs.uiuc.edu >
Date: Wed, 04 Dec 2002 07:16:45 -0600

On 11/28/02 7:12 AM, "Mike Beedle" < beedlem@e-architects.com > wrote:

> アジャイルプロセスとAlexander スタイルの構築アプローチに共通する
> 最も重要な点は,その基礎となるプロセスの性質です.
>
> - 自己組織化された個人からなるチームが,濃密な対話を育成しながら,
> 反省と適応サイクルを基礎にし,一歩一歩の成長(piecemeal growth)を通して,
> 高品質のプロダクトを創発するのです.

私は,誰かがよく「XPはQWAN(無名の質)と矛盾している」とか,「パターンは XPと互換性がない」,というのを楽しんでいます.私に言わせると,パターン とXPは Kent Beck が Christopher Alexander のアイディアを実践しようとし た,「最初の挑戦」と「二度目の挑戦」なのです.両方とも Alexander の思 想から派生していると言うことができます.XP は『デザインパターン』 (*5) よりも忠実に Christopher Alexander の仕事から派生しています.なぜなら,Kent はGoFの 誰よりも,強く Alexander に影響を受けているのですから.

私が87年~88年頃に『時を超えた建設の道』 (*2) を読んだ時に最も惹かれたの は,一歩一歩の成長(piecemeal growth)が強調されていた点です.一歩一歩の 成長は,自然界の法則であり,無名の質(QWAN)を得る方法であり,理想的な方 法なのです.私はリファクタリング (*9) のファンで,すぐにそれに共鳴しまし た.XP では,パターンよりもリファクタリングを強調しています.多くの人 が『デザインパターン』を読み,設計の最初からパターンを使うものだと思い 込んでしまいました.私たちはそうは言っていませんが,そういう仮定が入 り込んでしまったのです.GoF は,一歩一歩の成長のファンですが,その点を 『デザインパターン』では明確に提示しませんでしたし,他のパターンライ ターも同様です.一歩一歩の成長に関しては,他のどのパターンよりもXPは Alexanderアプローチに近いと言えます.

Kent は,『デザインパターン』はパターンの創発的な特性を十分に強調して いない,すなわち,生成的(generative)でないと考えました.XP はこの点を より強く強調しています.XP は1ダースのパターン(実際にはもっと多い)とし て知られるようになりましたが,「変更しやすさ」や「信頼性」に関して直接 の言及をしていないにも関わらず,パターンに従うことでこういった特性が生 成されるのです.XP は長期のスケジュールをどちらかというと重視していな いにも関わらず,プロジェクトは進捗の予測可能性がより高く,予定通り出荷 できる可能性もより高い,とXP支持者は言います.

Kent の「2番目の挑戦」で,彼は注意深く Alexander への言及を避けていま す.おそらく,彼は Alexander は単に人々を混乱させる,そして,無名の質 (QWAN)のような概念を持ち込まない方がよいと考えたのでしょう.そこで,彼 は,こういった概念を伝達する語彙群を,まったく新たに発明したの です.例えば,「コードの匂(code smell)」,「うまくいくかもしれないもっ とも簡単な方法(Do the simplest thing that could possibly work)」などで す.この戦略は,Gregor Kiczales がリフレクション(reflection)を再パッ ケージしてアスペクト指向(aspect-orientated)と呼んだことを,私に思 い起こさせます.もしアイディアが,あるパッケージでうまく売れないときは, それを再パッケージして別のマーケットでうまく行くか試すのです.よい戦略 です.

結論として,私の知る限りでは,Kent はAlexander の思想を基礎とする2つの ムーブメントを起こしました.そして,私たち(GoFあるいは,pattern-discussion ML)が Alexander についてXP支持 者よりも多く議論しているとはいっても,それが私たちの方が Alexanderの思 想に近い,ということではないのです.

-Ralph


   参照(編集者による)