やっぱりTDDが好き!! 〜テスト駆動開発をやめて、なお残すべき習慣とは(11)

みんなのPython勉強会#37で テスト駆動開発についてお話しました

みんなのPython勉強会#37で『「テスト駆動開発」を通じて​プログラマが​コードと向き合う活動を​改めて学び直す』のタイトルで講演させていただきました。

テスト駆動開発では「動作するきれいなコード」がよく出てくる言葉です。動作するきれいなコードで実現したいことは次です。


よく起こりがちな問題は、手と目のテストが手間で、後でまとめてテストすると欠陥が多数発覚してしまい、慌てて直すのに四苦八苦するです。


この他に、自動テストがなくてリファクタリングが怖くてできず、技術的負債がだんだん増大し、後からの追加要望への対応や、エラー解析に苦慮が挙げられます。


ではどうやって、Kent Beckはこの悪循環から抜け出そうとしたのでしょうか?レバレッジポイント(介入ポイント)をテストの実施頻度の少なさと見定めます。(XPやScrumの文脈では、計画ゲームや昨日の天気、フィーチャバッファ、完成の定義の活用などで更に外側から働きかけます。)

手と目の作業をコード化し、自動テストを利用して1日に100回200回と頻繁に実行できるようになれば、早期に欠陥混入に気づいて修正し、また自信をもってリファクタリングできるようになります。

プログラマは多くの時間をコードと共に過ごしますが、手間のかかる手と目のテストで壊れていないかを確認するや不吉な臭いを読むコードといった苦痛の時間を減らし、技術的負債に悩まず軽やかに健やかにプログラミングするHappyな時間を増やすようにしていく活動が肝要です。

「動作するきれいなコード」があればリリースを継続して続けることが可能になります。早い段階からリリースを繰り返し、ユーザに価値を届けることが大事です。リポジトリーに眠ったままでは、顧客やユーザが本当に欲しかったものが何かを学ぶことができません。

テスト駆動開発をやめてもなお、プログラマがコードと向き合うアクティビティを見直し、プログラマが軽やかに健やかにプログラミングし続けられるように工夫を続けることは欠かせません。TDDにはその工夫がたくさん含まれています。発表して感じましたが、私はやっぱりTDDは思い入れのある開発アクティビティで大好きです。

発表では途中に簡単なデモを交えつつ、後半は、書籍の1章2章の様子を紹介しました。詳しくはスライドを御覧ください。

これで、「テスト駆動開発をやめて、なお残すべき習慣とは」の連載は終了です。お読みいただきありがとうございました。