Index: [Article Count Order] [Thread]

Date:  Sun, 18 Feb 2001 11:20:18 +0900
From:  YAMADA Masaki <masaki@....jp>
Subject:  [XP-jp:01609] Re: XP  で再利用できますか?
To:  extremeprogramming-jp@....jp
Cc:  XP-ML <extremeprogramming-jp@....jp>
Message-Id:  <v04210a00b6b4d7d245c4@[192.168.0.250]>
In-Reply-To:  <20010217155931954.AAA259@....jp@ginza>
References:  <20010217155931954.AAA259@....jp@ginza>
X-Mail-Count: 01609

山田@メタボリックスです。

At 01:21 +0900 01.2.18, Y.Terada wrote:
>勉強不足のため理解が不十分なのですが,XP でいわゆるソフトウェアの「再利用」 
>は可
>能なのでしょうか?

大変面白い視点ですね。

「もちろん」と言い切ってしまいましょう:-)
XPはリファクタリングなどを通じて、再利用できるコンポーネントや
パターンは何かということを探索していくプロセスだと認識しています。

ただ「再利用可能コンポーネント」と言った場合に、実際には
2種類のモノがあると思います。
一つはフレームワークやライブラリなど外部からの再利用を前提としたものと
もう一つは通常のアプリケーションから抽出され内部で使われるものです。

今までの経験から言っても、
1. 問題を分析して、フレームワークを作り、
2. それからそれを使ってアプリケーションを作る
のは、そのドメインの経験がある程度ない限りうまくいきません。

昔はクラス構成は最低3回は書き直さないとまともなものはできないと言われてました。

うまくいくのはむしろ
1. アプリケーションをいくつか作り、
2. それらの蓄積の上にフレームワークをインクリメンタルに構築する
方だと思います。

一つのXPのプロジェクトが終わったら、次のプロジェクトで使えるクラス(群)が
かなり残されていると思いますよ。
「単純さの原則」「メタファ(アーキテクチャ)」「リファクタリング」などが
あるからです。

>私は,オブジェクト指向の利点は「再利用」にあると書かれているものを数多く目 
>にした
>ことがありますし,またそのように実感しています.しかし,XP からは「再利用」 
>の「
>におい」が感じられない気がします.
>
>YAGNI の原則,というのでしょうか?
>「いずれ必要になる」と思って余計なコードを書き足すな,という意味ですよね.
>でも,これは再利用を前提として開発する場合には絶対に必要だと思うのです.そ 
>れを頭
>ごなしに禁止してしまう XP には何となく違和感みたいなものを覚えてしまいます.

単純できれいに作られてさえいれば、後から少しのメソッドを追加することは
幾らでもできますから、そのときにやればいいのでは?
(もちろんソースコードもないパッケージとして外に出すようなものは
  また別の話になるでしょうけれど)

>でも「パターン」という形での再利用は推奨しているのですよね?
>ひょっとして,OO界(?)では,融通の利かなくて思うように再利用できない C++ 
>の言
>語仕様に嫌気がさして,ソースレベルでの再利用は諦めてしまったのでしょうか(笑)

C++はOOではないので:-)

パターンについても、僕はXPでは最近の立派な「カタログ」のようなものを
必死で勉強する必要はないと考えています。
できのよいソース・コードをいっぱい読む、自分でパターンを抽出する
能力を身につけることの方が大事だと思います。

>XP は,一つのプロジェクト単体の 成功/失敗 に焦点を当てているように思いま 
>す.しか
>し,会社ではプロジェクトが単発の打ち上げ花火で終わってしまってはダメで,今 
>後につ
>ながるようなノウハウや資源などを蓄積していかなくてはならないのだと思いま 
>す.その
>ためには,プロジェクトごとに少しでも再利用可能な部分を残せた方が良いはずです.

XPがすべての種類のソフトウェアによい解を与えているとは思えません。
が、XPは大変多くのノウハウ/資源を蓄積していくことが可能な方法でしょう。
誰も使わない(使えない)巨大な「ライブラリ」の残骸をいっぱい見てますから、
「再利用可能」ということの意味自体が問われなければならないと思います。
もちろん、製品やプロジェクトの性質によっては、Rational的な方法や
Product Line的な発想を必要とすることもあるでしょう。

以上はXP「風の」開発を長年やってきた経験からの感想です。

# ただXPにはモデリング、コンポーネント、パターンなどについて
# かなりアンビバレントな姿勢があって分かりにくいのも確かですよね。
# どれも重視してはいるけれど、やり過ぎたりそれ自身が目的になっては
# いけないという観点から、表面的には否定的だったり触れられていない
# ようにも見えるのでは、と思います。

---
山田正樹, (有)メタボリックス
259-0111 神奈川県中郡大磯町国府本郷576-8
tel: 0463-60-2234 fax: 0463-60-2266
moblie: 090-8347-9605
http://www.metabolics.co.jp/