【感想】テスト駆動開発(TDD)を読みました。このすみエンジニアブログスマートフォン用の表示で見るこのすみエンジニアブログ2018-04-29【感想】テスト駆動開発(TDD)を読みました。名著として有名な「テスト駆動開発」を読みました。元々は古い本だったのですが、和田卓人さんによる新訳版が2017年に出版されましたので、読んでみようと思い手に取りました。見る本記事に書く感想は、厳密なテスト駆動開発(TDD)の話というよりは、自分なりの感想であり解釈です。その点、ご了承願います。テストを通じてプログラム(コード)を育てるまず、私が最も感動したのは「レッド・グリーン・リファクタリング」という方法です。動作しない、おそらく最初のうちはコンパイルも通らないテストを1つ書く。そのテストを迅速に動作させる。このステップでは罪を犯してもよい。テストを通すために発生した重複をすべて除去する。私の解釈としては、以下のようになります。レッド:テストを1つ追加します。対応するコードを書かないとエラーになります。グリーン:まずはエラーを解消します。リファクタリング:エラーを解消するために暫定で書いたコードを、綺麗にしていきます。感覚的には、これはテストを通じてコードを育てているのではないかと思いました。タスク管理では、タスクは細かく区切ることで、進捗の可視化を高めたり、一歩ずつ着実に前進しようといった取り組みが紹介されますが、本書で紹介されている「レッド・グリーン・リファクタリング」は、まさにそれのプログラミング版です。重要なのは、一度にたくさんのテストを書かないことです。一度にたくさんのことを実現しようとすると、普通の人であれば、脳がオーバーフローを起こします。一歩ずつ着実に進むのです。訳者解説:テスト駆動開発の現在」で、ビヘイビア駆動開発・振る舞い駆動開発(BDD)が紹介されています。私は、このBDDという考え方がとてもしっくり来ました。TDDは、まさにテストによってコードの振る舞いを表現しているのです。Dollar(10))プログラム(コード)を育てるという、前項の話にも通じるのですが、テストコードを通じて振る舞いを足していくことで、プログラムが少しずつ豊かになっていき、目的とする仕様へと近づいていきます。ここでも大事なことは、一つずつ振る舞いを足して行くことです。千里の道も一歩からというわけです。テストを足していった結果、振る舞いが保証されたコードが出来上がるTDDで行っていることは、テストであり、設計であり、分析です。プログラムに求める仕様(条件)を、テストを通じてプログラムに伝えます。要求に応えるコードを書きます。上記を繰り返す事で、プログラムの振る舞いを仕様に近づけていきながら、尚且つ、テストによって振る舞いが保証されたコードが出来上がっていきます。常に品質を維持しながら、プログラミングを繰り返して行くという意味では、アジャイルの考え方と似ています。アジャイルでは、プロダクトレベルで「動くソフトウェアを短い時間間隔でリリース」することをポリシーとしていますが、それをコードレベルに落とし込むとTDDでありBDDになります。常にテストによって動きが保証されたコードこそ、TDDの真髄なのです。さいごに読んでみて分かった事は、テスト駆動開発(TDD)は、非常にシンプルであると言うことです。高度な開発手法だと思っていた時期もあったのですが、全くもってそんなことはありませんでした。