AIDDと自動テストで自動テストの重要性を書いたが、さらに、TDD(テスト駆動開発)の重要性も同様に増していると感じる。その理由としては以下のような点が挙げられる。
- Cursorなどのエディタを使ってTDDサイクルを通じてAIエージェントがコードを生成する場合、単純に機能が増えていくだけの場合よりも並走しながら開発状況を把握しやすい。
- TDDでは常にテストがある状態でインクリメンタルにプロセスが進むので、適宜AIによる知見を使ってリファクタが行え、相乗効果で品質が上がる。
- ゆくゆくは、AIエージェント自身がテストを軸に開発サイクルを回し、自律的にコードを保証しながら発展させられる可能性もあると思う。
一方で、AIにTDDサイクルを回させると、かなり上手く適切な指示や制約を与えないと、テストや実装が過剰になりがちなため、バランスの良い適切なラインを探っているところである。
個人的には、実験的にclaud-3.7-sonnet-thinkingにKent BeckのCanon TDDのドキュメントを食わせた上でTDDサイクルを回させると、それなりにワークする可能性を感じた。