Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】TDD and AI-enabled engineering

2025年09月11日に「Dev.to」が公開したITニュース「TDD and AI-enabled engineering」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

TDDが苦手だった筆者がAIを活用しテスト駆動開発に挑戦。AIがテストと実装を繰り返すことで、短時間で高カバレッジのWebアプリを開発できた。AIとの組み合わせでTDDは非常に強力で、UI開発にも有効だと実感した。

出典: TDD and AI-enabled engineering | Dev.to公開日:

ITニュース解説

テスト駆動開発(TDD)という言葉を聞いたことがあるだろうか。これは、ソフトウェア開発において、まず機能の要件を満たすテストコードを書き、そのテストが失敗することを確認する。次にそのテストが成功するように最小限のコードを実装し、最後にコードを改善するリファクタリングを行う開発手法である。今回紹介する記事の筆者は、これまでこのTDDに対して苦手意識を持っていたという。実装の詳細な振る舞いを定義するルールが不明瞭に感じられたり、十分な経験がないためにその利点を理解しきれていなかったりしたことが理由だ。従来の開発では、まずコードを書いてから後でテストするという「ナプキンに走り書きするような」手法に慣れていたため、TDDの順序が奇妙に映っていたのかもしれない。

しかし、筆者はこのTDDに対する考えを改める機会を得た。それが「ProjectSpecPilot」と名付けられたプロジェクトである。これは、AIを活用してTDDを実践するという試みだ。具体的には、AIコーディングアシスタントのCursorと、Googleの生成AIモデルであるGemini 2.5 Proを組み合わせて利用した。筆者はTDDの初心者であるため、プロジェクト開始前に準備を徹底した。GPT5-thinkingというAIを利用して、CursorエージェントがTDDプロセスを実行するための詳細なドキュメントやルール群を scaffold(足場を組むように準備)したのだ。

最初は、AIが赤いテスト(失敗するテスト)を作成し、それからそのテストが通るように実装を行い、緑になったらリファクタリングするという一連のサイクルを見ているのは、退屈で動きが遅く感じられた。しかし、約2時間後には驚くべき成果が目の前に現れた。グリッド上をローバー(探査機)が移動するFastAPIアプリケーションが完成したのである。さらに特筆すべきは、そのテストカバレッジの高さだ。主要な処理を記述するmain.pyファイルでさえ86%のテストカバレッジを達成し、それ以外の部分では100%のテストカバレッジを誇っていた。これは通常の手法では非常に困難な偉業であり、筆者自身もその結果に狂気じみた驚きを感じたという。

このローバーの移動システム開発が非常に楽しく、筆者はさらにTDDとAIの組み合わせを広範囲に試してみることにした。具体的には、ユーザーインターフェース(UI)開発への適用だ。以前にThree.jsという3Dグラフィックライブラリを学んだ経験を活かし、グリッドの端から端へのラップ(まるで惑星が球体であるかのように、片方の端から出ると反対の端から現れる動き)を実装するというアイデアに基づいてUI開発を進めた。その結果、UI開発においてもTDDが非常に有効であることが判明した。従来のUI開発における「開発してからテスト」というサイクルよりも、TDDを取り入れた方がはるかに良い結果が得られたと述べている。

この一連のAI活用TDD経験から、筆者はいくつかの重要な教訓を得た。まず、「自分の作業をきちんとコミットすること」の重要性である。多くの個人プロジェクトで、変更をコミットする手間を軽視しがちだが、これは後々自分自身を苦しめる原因となると反省している。次に、AIエージェントにフルスタックのアプリケーションを一度で構築させるのは非常に楽しい経験だったと語る。しかし、AIが生成したコードのテストをすべて行うことには、依然として大きな課題が残ることも実感した。自分でコードを一行ずつ手作業で書くよりはAIに任せた方がはるかに速いが、AIが生成したコードのテストに何日もかかってしまう非効率性も指摘している。ストーリー全体を一日で完成させても、そのテストに四日かかることもあるという。

それでも、TDDとAIの組み合わせは「絶対に素晴らしい」と結論付けている。特にAIのハルシネーション(誤った情報を生成すること)が以前よりもはるかに減少している点に驚きを示している。筆者はCursorのグローバルルールを通じてAIとのプロンプト(指示)のやり取りの回数を追跡しており、50回近くのプロンプトを交換してもAIが「酔っぱらって暴走する」ことがなかったという。この経験から、AIはTDDという厳格なフレームワークの中で、より正確で信頼性の高いコード生成を可能にするのかもしれないと示唆している。

関連コンテンツ