Index: [Article Count Order] [Thread]

Date:  Mon, 25 Aug 2003 13:18:18 +0900
From:  Hidehiko AKASAKA <akasaka@....jp>
Subject:  [XP-jp:04644] Re: アジャイル開発に【自然な役割】は必要? (Re:  「 An ExtremeProgrammingEpisode 」の翻訳版を掲載しました)
To:  extremeprogramming-jp@....jp
Message-Id:  <20030825131816.91E9.AKASAKA@....jp>
In-Reply-To:  <20030825091552t-ushio@....com>
References:  <20030824135006.BDE1.AKASAKA.H@....com> <20030825091552t-ushio@....com>
X-Mail-Count: 04644

赤坂です。

牛尾さん、コメントありがとうございました (^o^)
# りぷらい早すぎるのかな? >自分

t-ushio@....com san wrote:

> お役に立てるかはしりませんが、一応自分なりのご回答ということで。

とても貴重なご意見でした。ありがとうございます。

> #最近EclipseでTDD好き度がさらに向上しています。 :-p

# そろそろC++はエスケープしたくなってきました(^^;;

> >> ペアプロ、テスト駆動開発を実践されている方に質問です。> 皆様
> >> ソースコードで自然な責務に分割することは、訓練によって出来るようになるの
> >> でしょうか?
> 
> なんというか、大きなレベルで考えるのは図のほうが楽ですが、ある程度細かくなると
> TDDのほうがずっと楽というイメージを受けました。図だけで考えていると、コードを
> つくったことを想像するのですが、実際つくるとそんな上手くいかなかったことが
> 多かったように思います。

そうですね。モデルと実装のギャップは、私もしばしば経験します(^^;;

>  逆にTDDでつくっていると、「先にテストを作る」「少しだけ進捗する(fake it, make itなど)」
> 「少しだけリファクタリング」で、なんというか、複雑な問題を小さな問題に分割できる
> ので、ブレが少ないですし(大きな問題は小さな問題に分割して考えるのは問題解決の
> 基本ですよね)、先にテストを作るので使用するイメージを体感しながら
> 責務を割り当てていけるので楽だなぁと思いました。自分のつくるコードのレベルも
> 他の達人の皆さんからみればしょぼいかもしれませんが、自分としては前より上手くなった
> と思います。
>  これを書いているときにふと頭に思い浮かんだのですが、コードのみで考えると
> 概観をイメージしますし、図だけで考えているとコードをイメージします。
>  どっちのケースでもイメージを早く具現化できる方向にもって行くほうがいいのかな
> ということをぼーっと思っています。要はできるんならその人にとって楽だったらいいのかなぁ。
> と私は思います。

なるほど、無意識に保管する思考回路が働くんですね。すごい!!ですね。

> >ただやはり、「シンプル=分かり易い」ものを作る為には、局所的な視点
> >(コード)だけでは無理があるように感じます。
> >実践されている方達も、必要性を感じたら、当然、紙やホワイトボードやCRC
> >カードなどを使ってシステムを概観できる抽象度のモデルを考えるのだろうと
> >思います。
> >その辺については何か誤解がありますか? > XPを実践されている皆様
> 
> アジャイルモデリングのアンブラーさんもいってましたが、アジャイルモデルでも
> 実装はTDDお勧めだぜ!といっていました。

僕も必ずしも否定するものではありません
# 紛らわしい言葉遣いがアレですが(^^;;

>  私の場合は適当なので、モデルの概観を考えたいときは裏紙とかでさっとモデリング
> することもありましたし(大抵は概念レベル)、オブジェクト図でお客様のデータを分析する
> こともやったこともありますし、コンポーネントのことを考えているときはタイプ図を
> 書いたこともあります。ややこしいアーキテクチャ考えている時は(1、2回ぐらい
> しかありませんでしたが)インド料理屋にストーリカードもっていって、そこで飯食い
> ながらシーケンスを考えたこともありました。

必要ならさくっと考えることもある
ということですよね。そこだけ確認したかったのです。

> #普段はシーケンスはほとんど書きませんでしたし、上記の図を1日中かいてるなんて
>  ことはありませんでした。さっとかいて、さっとやるみたいな。

これも時間の無駄になることが多いので、TDDのスタイルの方が効率良いかもしれませんね。

私が問題にしたいのは、この時間の無駄を省略しても
自然な役割分担が出来る様に育つのかどうかという点だったりします。

# 私の場合は、道半ばですけど、この無駄な時間が貴重な体験だったりしています。

> 赤坂さんのおっしゃるとおり、コード(+頭の中)で考えているときに「あーあかん、
> まとまらん。」と思ったときにさっと書いている感じでした。また、一番最初は
> やはり概観をさっと裏紙に書くことがおおかったです。ケースバイケースでした。
> 普通の開発のフェーズの線の方向とXPのフェーズの線の方向は90度違いますが、
> それを表すように、分析⇔設計⇔実装⇔テストみたいなのをダイナミックに行き来
> する感じですね。

TDDを実践するときに、「木を見て森を見ず」に陥らなければ全然問題ないと思います。
後は、プログラマが時々は「もう少しきれいにならないかなぁ」という視点で評価していれば、
いずれ問題は小さな単位で片付いていくのでしょう。

# やっぱり、実践してみないと分からないことも多いのでしょうけど。

> めっちゃ適当な意見でもうしわけありませんが、以上です。

ありがとうございます。
牛尾さんの話を聞いて、実際にやってみたくなりました。(^o^)

ではでは。
# 他にもご意見をお待ちしております(^o^)

--
(株)オージス総研
赤坂 英彦 (Hidehiko AKASAKA)
akasaka@....jp