Index: [Article Count Order] [Thread]

Date:  Sat, 10 Mar 2001 17:20:25 +0900
From:  "hasegawa" <hasegawa@....jp>
Subject:  [XP-jp:01702] Re: XP で再利用できますか?
To:  <extremeprogramming-jp@....jp>
Message-Id:  <010301c0a93b$002715e0$640aa8c0@....jp>
References:  <20010304201950118.AAA228@....jp@ginza><20010306.165323.123553073.u90156@....jp><007b01c0a62f$f06b4710$640aa8c0@....jp> <20010309.131854.74166346.u90156@....jp>
X-Mail-Count: 01702

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

----- Original Message ----- 
送信者 : "Yuji Yamano" <u90156@....jp>
送信日時 : 2001年 3月 9日 金曜日 午後 01:18

> 返事がおそくてすみません。

いえ、私の方がちょっと速すぎたようです。
#ちょっと時間ができたので、このときとばかりです(^^。
#でも、そろそろ私もお暇するときかもしれません。

> "hasegawa" <hasegawa@....jp> writes:
> 
> > パターンは既にあったオブジェクト指向の文脈上に現れたので、
> > オブジェクト指向がパターンの本質を理解すると構図は難しいです。
> > そういう意味で、やまのさんの言うようにスコープ*外*だと思います。
> > 
> > ただ、オブジェクト指向は、何らかの再利用を唱えていたはずです。
> > どの本を選ぶか迷ったんですが、手近なところで、Allen I.Holubの
> > 『C+C++オブジェクト指向システムの設計と実装』にある文を抜き出します。
> > 
> >     問題の全体を解決するために、汎用のサブルーチンのセットを使うことを
> >     OOPではコード再利用と呼んでいる。...私が言いたい点は、問題を一度
> >     解決したら二度と解決する必要がないということである。これが再利用
> >     可能コードの一般的性質で、いくつかのプログラムにリンクされるという
> >     ことではない。
> 
> ようやく、長谷川さんのおっしゃりたい事がわかったような気がします。:-)

感謝します(^^。

> オブジェクト指向方法論者の中に過度に再利用を強調する人々がいた。
> 再利用=機械的な利用と考えた人が多く、機械的にパターンを適用する事が
> 多かった。
> 
> という事なんですよね、きっと。再利用性の強調がオブジェクト指向の本質的
> な問題なのか、単なる宣伝文句なので些細な問題と考えるかは、議論のわかれ
> るところでしょうけど。:-p

ちょっと、誤解があるとまずいので、すこしだけ。
Holubさんを責めているわけでも、その当時、再利用を強調した人たちを
責めているわけでもなく、とにかく、そういう事実がまずあった、と言う
ことなんです。そして、実際、私もそう思ったんです。そして、そこには、
そう思わせる何かがあったと思いますし、今もオブジェクト指向というと、
そのように考える人もかなりいると思います。
#宣伝文句で終わらせることは、もったいないような(^^;。

と言っても、私自身、オブジェクト指向や再利用性の持つ欠陥を
上手く表現できずにいる状態なので、なんともわかりにくい文に
なってしまっていると思っています。これはお詫びします。

> > > XP が部品やパターンの画一的、機械的な再利用を否定しているとは思えません。
> > > これもスコープ外だと思います。
> > 
> > これは部品の見方のような気がします。ちょっときわどい表現もありますが(^^;、
> > 自分達にあった選択の上で選択するのであり、一般的に再利用がいいとか、
> > 将来を十分見越した設計・実装をしなければならないと言うことなんか、
> > まずは無視しよう、という姿勢があるように思えます。
> > 
> > #あるべきフォースに立ち返ろう、とでもいいますか。
> 
> なるほど、ここまでは同意できます。

本当に、いいフォースだと思います(^^。

> > #そういう文脈にこそ、真のパターンが生まれると思い、
> > #期待しているわけです(^^;。
> >
> > それに、画一的、機械的な再利用を否定していないなら、もっと
> > 既存の良く使われている原理やパーツを利用するようにも感じます。
> > #プロジェクトを立ち上げるなら、部品探しから始めるのが
> > #巷でよくとられている戦略のような気がします(^^。
> > これは私の*うがった*見方かも知れませんが、どこか自分達で
> > 一からやろうという気がして仕方ありません。
> 
> うーん、こちらは長谷川さんの願望が強く反映された解釈のように感じます。
> XP は再利用については否定も肯定もしないニュートラルな立場をとっている
> と僕は思っています。

余りここで変なことを言うとまずいかなと思い、途中で投げ出していた
『XPエクストリーム・プログラミング入門』を初めから通して読んでみました。
#読み終わってから小野さんのコメント集を見せてもらいました...。

そこで、関連するような部分を少し:
#この部分だけを読まれると困りますが...(^^;

・伝統的に将来のために計画を立て、再利用のために設計しろと
 言われているからだ。
・最新のアナリシスパターンやデザインパターンをマスターした人は
 XPでは成功しそうにない。
・コンサルタントが仕事を終えると、チームはコンサルタントの仕事を
 捨てて、もう一度自分達でやり直そうとする。
・XPは「再利用を前面に出す」ことに重きを置いていない。

確かに、XPにはほとんど再利用という言葉が出てきません。
でも、それはなぜ?っていう疑問がこの一連のスレッドの原点のような
気がします。で、XPの本を読んで思ったんですが、やはりまず、
開発者が学習することが優先されていました。そして、コードで
関連しそうなのが「重複したロジックがない」というものでした。

この「重複...」も、人によっては再利用になってしまうかも
知れませんが、やはり全然意図されたものが違いますね。
実際、リファクタリングを基盤にすると、再利用性が
どれだけの意味を持てるのか、かなり疑問です。

まあ、でも、やまのさんが言ってられるのは「機械的な再利用」
の方なので、そちらの方へ...。

> > > 結果的にそうなることはあるかもしれませんが、ここまで言いきってしまう
> > > 事には抵抗があります。技術の本質を理解せずに機械的に利用するのは、
> > > パターンとかソフトウェアに限った話ではなく、わりと一般的な人間の行動
> > > のような気がします。
> > 
> > 「わりと一般的な人間の行動」、私もその通りだと思います。しかし、
> > それがだめなこともある程度わかっていると言うのが面白いですね。
> 
> 実は、僕はこういう行動が常に駄目だとは思っていません。技術の本質を理解
> しなくても機械的に利用でき、かつそれで満足できる結果が得られるのであれ
> ば、それでも良いのではないでしょうか。重要なのは、状況にあった正しい選択
> でしょう。
> 
> ただ、正しい選択ができるようになるためには、ある程度の経験や本質の理解
> が必要で、そうすると単純に機械的に適用とはいえないわけで、矛盾しちゃいま
> すね。:-p

自分でわかってらっしゃるんで、突っ込みにくいですが(^^;。
そうですね、「であれば」の後ろには、「今のような状況には
なっていない」を入れても不自然じゃありませんね(^^;。
#単なる茶々ですみません(^^;

この矛盾は「正しい選択」にあるんですが、ただ部分的に見ると判断できない
ようですね。普通、AをしてOK、そしてBをしてOKと続けていくんですが、
多くの場合、後者は前者の決定により何らかの影響を受けていると思います。
これを続けていくと、どんどん選択肢が狭まって、途中で行き詰まると、
どうしたらいいのかわからなくなるんだと思います。
#また、変な方に行ってしまいました(^^;。

今回EC本を読んで、「共有所有」があるのに気づきました。
これは、前回のプロジェクトで是非適用したかったものですが、
他の実践がひとつもないので、多分失敗していたような気がします(^^。

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