寺田@東工大 です.
上手さん,山田さん,コメントありがとうございます.
おかげで,XP 的な再利用が分かってきた気がします.
多分こんな感じだと思います.
1.まずは動くものを!
2.それからリファクタリングで抽象クラスの導出!
3.結果的に再利用可能なものが残る!
できる限りの「シンプルデザイン」を extreme に追求した結果として残ったものが,
再利用可能なコンポーネントである,という考え方ですね.
XP の考え方(YAGNI など)から,何となく XP と再利用が相容れないもののような
気がしていましたが,そんなことはないということが分かってきました.上手さん
のおっしゃるように,パターンやコンポーネントのコミュニティと XP のコミュニ
ティの間に交流があること自体が,何よりの証拠ですね.
ところで,あまり詳しく読んではいないのですが,萩本順三氏の提案している Drop
という開発手法では,再利用可能なコンポーネントを開発するサイクルを明示的に
示しています.
Drop のページ:
http://www.njk.co.jp/otg/Drop/Drop_v20/
簡単に言うと,
・ADG (Application Development Group) アプリケーションを開発
・ODG (Objects Development Group) ライブラリ/コンポーネントを開発
という2つのチーム/観点に分けて開発を行う,というもののようです.
私はこの考えに触れた時,(実務経験がないくせに)随分納得させられてしまった
覚えがあります.
以来,「アプリケーション開発」と「ライブラリ開発」という2種類の視点で見る
ようにしています.その視点で XP を見たとき,「XP は完全にアプリケーション開
発に焦点を絞った手法ではないだろうか」という感想を持ちました.
XP 的な再利用の追求も良いけれど,Drop の ODG のような,最初から再利用を念頭
においた開発,というものアリじゃないか,と思います.
XP 的にはこういう考え方は受け入れられないものなのでしょうか?