あなたはTDDのパターンを知っているか?〜テスト駆動開発をやめて、なお残すべき習慣とは(8)

テスト駆動開発は、Red、Green、Refactorだけじゃない!!生き生きとしたプログラミングを司るパターンを知る

Eiji Ienaga
時を超えたプログラミングの道

--

今回から書籍を数回に分けて辿りTDD再考を試みます。第1回は本の全体像を見てみます。TDDを既に知っている、実践しているという人にとっては、TDDについて新しい発見、ジャメヴ(未視感)が起きれば幸いです。たとえTDDが不要だったとしても、不要だと判断したものが一体何だったのか知ることは欠かせません。

書籍は3部+付録の構成

1〜2部はTDDを体験するチュートリアル

1部はJavaで多国通貨の計算、2部はPythonを使ってステップ・バイ・ステップでxUnitに近づいていくお題となっています。もしまだ1部、2部を利用してケント・ベックとペアプロするような感覚でTDDを追体験したことがないのであれば、一度ゆっくりと試してみることを強くお勧めします。1回と言わずプログラミング言語を変えて数回試して下さい。スポーツが練習を繰り返して本番に立つようにプログラミングも練習が欠かせません。TDDの練習の型としては本書以外にもBowling kata が有名です。こちらはインターネットで検索すれば多数ヒットするので参考にして下さい。

3部はTDDを構成するパターン集

パターンの名前をざっと眺めてみていどう感じましたか?皆さんの大好きなパターンはどれですか?

私は実装時に「仮実装を経て本実装へ」と「明白な実装」の2つの切り替えが大好きです。私にとって、前進するためのステップ幅の調整は、プログラミングに限らずカイゼンの基本の型として何度も参考させてもらっています。「差異をなくす」からの「メソッドの抽出」で重複が取り除けたときのスッキリしたあの感覚が好きです。スタート時の「TODOリスト」からの「はじめのテスト」を選んでRed・Green・Refactorのサイクルのエンジンがかかった時の感覚が好きです。テスト書き始めに迷った時に「アサートファースト」から期待結果を明らかにするが好きです。時々テストファーストをサボってしまいますが、不純物を切り出しユニットの境界を明確に描く設計の道具としての「テストファースト」&「Mock Object」の組み合わせ気に入っています。

3部には、普段のプログラミング・設計を生き生きとするためのコツ=パターンが記載されているのですが、パターン名の一覧を見た時に、知らない項目がいくつかあったのではないでしょうか?パターンの名前を見て自分の心に引っかかった項目は一度、目を通して試してみることをお勧めします。

日本語訳付録Cは日本語訳の特典として@t_wadaさんによる詳しい解説が知られています。こちらは新訳版ならではのユニークな箇所になっており必見です。和田さんとの対談を行った、次も参考にして下さい。

次回

次回以降は、3部や1部の見どころをもう少し詳しく触れることで、TDDについてあらためて深掘りしていきます。

--

--