Index: [Article Count Order] [Thread]

Date:  Tue, 6 Mar 2001 20:23:54 +0900
From:  "hasegawa" <hasegawa@....jp>
Subject:  [XP-jp:01691] Re: XP で再利用できますか?
To:  <extremeprogramming-jp@....jp>
Message-Id:  <007b01c0a62f$f06b4710$640aa8c0@....jp>
References:  <006901c0a4c7$2d151f20$640aa8c0@....jp><20010304201950118.AAA228@....jp@ginza> <20010306.165323.123553073.u90156@....jp>
X-Mail-Count: 01691

長谷川@テクノポートです。

----- Original Message ----- 
送信者 : "Yuji Yamano" <u90156@....jp>
送信日時 : 2001年 3月 6日 火曜日 午後 04:53

> yterada@....jp (Y.Terada) writes:
> 
> > 従来のオブジェクト指向方法論では,パターンの本質的理解を促進しない.あるい
> > は,機械的な適用を促している.つまり,将来の変更や拡張を完全に予測した柔軟
> > 性の高い設計を行い,それ以降はフレームワークに機械的に従うだけで良いシステ
> > ムが構築できることを目指している.そのため,設計者は常に,自分の設計が十分
> > な柔軟性を持っているものなのか不安にさらされることになる.
> 
> 質問なんですが、従来のオブジェクト指向方法論は、パターンの機械的な
> 適用を促しているのでしょうか?
> 単にスコープ外だったんじゃないかと思うんですけど。

まずは、この上に、
> (パターン等の)再利用,というと,本質を見ることなく型にはめていくだけで素
> 晴らしい製品ができる,と言っているように感じられるが,それは正しくない. 
があり、パターンと言うよりも部品やコードなど、何らかの再利用と
考えてもらえばすんなりするのではないでしょうか。

パターンは既にあったオブジェクト指向の文脈上に現れたので、
オブジェクト指向がパターンの本質を理解すると構図は難しいです。
そういう意味で、やまのさんの言うようにスコープ*外*だと思います。

ただ、オブジェクト指向は、何らかの再利用を唱えていたはずです。
どの本を選ぶか迷ったんですが、手近なところで、Allen I.Holubの
『C+C++オブジェクト指向システムの設計と実装』にある文を抜き出します。

    問題の全体を解決するために、汎用のサブルーチンのセットを使うことを
    OOPではコード再利用と呼んでいる。...私が言いたい点は、問題を一度
    解決したら二度と解決する必要がないということである。これが再利用
    可能コードの一般的性質で、いくつかのプログラムにリンクされるという
    ことではない。

実際は、これだけにとどまらないと思います。そして、その再利用を期待して
かなりの会社やプロジェクトでトライしたと思います。しかし、どうも思う
ようには行かなかったように思います。機械的な適用を夢見たオブジェクト
指向の利用者が悪かったのかもしれません。しかし、オブジェクト指向の
唱えた再利用には、何か根本的な問題を抱えていると私は考えています。

実際、上記の「問題を一度解決したら二度と解決する必要がない」というのは、
かなり狭い見方だと思います。文脈が変われば、問題の捉え方も異なります。
この本では標準Cライブラリを取り上げていますが、これも変わってくると
思います。私はそういう意味で捉えました。

> > XP はこのような状況を打開するものである.XP は YAGNI の原則などにより,将来
> > の変更を予測した柔軟性を持たせることに対して否定的である.パターンは参考に
> > するが,部品やパターンの画一的,機械的な再利用を否定する.これは,逆にいえ
> > ば,システムごとに固有の本質を見抜き,そのシステムに最も自然な設計を行うこ
> > とを促進している.
> 
> XP が部品やパターンの画一的、機械的な再利用を否定しているとは思えません。
> これもスコープ外だと思います。

これは部品の見方のような気がします。ちょっときわどい表現もありますが(^^;、
自分達にあった選択の上で選択するのであり、一般的に再利用がいいとか、
将来を十分見越した設計・実装をしなければならないと言うことなんか、
まずは無視しよう、という姿勢があるように思えます。

#あるべきフォースに立ち返ろう、とでもいいますか。
#そういう文脈にこそ、真のパターンが生まれると思い、
#期待しているわけです(^^;。

それに、画一的、機械的な再利用を否定していないなら、もっと
既存の良く使われている原理やパーツを利用するようにも感じます。
#プロジェクトを立ち上げるなら、部品探しから始めるのが
#巷でよくとられている戦略のような気がします(^^。
これは私の*うがった*見方かも知れませんが、どこか自分達で
一からやろうという気がして仕方ありません。

> > すなわち,XP はシステムから機械的な再利用を排除し,ごく自然に「本質」へと辿
> > り着く道しるべとなっている.
> 
> 結果的にそうなることはあるかもしれませんが、ここまで言いきってしまう
> 事には抵抗があります。技術の本質を理解せずに機械的に利用するのは、
> パターンとかソフトウェアに限った話ではなく、わりと一般的な人間の行動
> のような気がします。

「わりと一般的な人間の行動」、私もその通りだと思います。しかし、
それがだめなこともある程度わかっていると言うのが面白いですね。

XPとパターンランゲージ(PL)には、奇妙な符号があるように感じています。
この場合も、「当たり前」のことに対して、XPもPLも反応しているように
思います。XPは当たり前のことに対して、実践を持って対応しているように
見ています。そうすることにより、良い点と悪い点を身につけて行く戦略の
ように思えます。

他方、PLは(あくまで個人的な捉え方なのですが)、秩序を発見することで
対応しようとしていると見ています。と言っても、経験から抽出するという
至極平凡なものであると思います(が難しいです...)。
そして、それがないと、間違った設計ややり方をしてしまうと考えています。
まさにアンチパターンの世界が生まれます。どうしても、知らないと手近な
引力に引き寄せられ、変なことをしてしまうんですね。

まあ、そういった点から、XPには単なる与えられた技術ではなく、
自分達のものとして身に付けていこうという姿勢を感じる訳で、
寺田さんがまとめてくれたものに、快くうなづいたと言うわけです。

と言っても、XPをこの文で規定しようと言う気はありません。
未知のXPというものを捉えようと言う、ひとつの試みに過ぎません。
従って、思い違いもあるかと思いますが、それを判断するには、
もうしばらく時間が必要かと。

#この辺りが、外から見る時の限界かもしれません(^^;。

-- 長谷川(hasegawa@....jp)