Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AIにE2E-TDDを委ねる Webアプリ開発

AIにE2E-TDDを委ねる Webアプリ開発

・claudecodeで自律的にwebアプリの開発・テスト・デバッグができるか
(E2EレイヤーでのTDDを目標に)
・Webアプリケーションにおいて、もはや人間の手でコーディングとテストをしてる場合ではない。
 実装から結合テストまではAIの仕事になる…はず(なれば嬉しい)

対象:「TDDって何?」 という人向けの記事

Avatar for nagano

nagano

July 06, 2025

Other Decks in Programming

Transcript

  1. 開発者 動作確認 AIが実装 AIが修正 AIが修正 エラー、修正依頼 ソースコード提出 従来のAI開発フロー 人間がチェックする工程が 減らない(むしろ増える?)

    (開発全体として、そこまで工数 削減は期待できない) 開発者 チャットで開発依頼 開発者 動作確認 ソースコード提出 エラー、修正依頼 開発者 動作確認 ソースコード提出
  2. とりあえず導入してみた 一般的なAI自立駆動開発フロー(非TDD) AI(claudecode) 開発者 画面開発依頼 Web画面実装 ・Playwright(ブラウザmcp) ・puppeteer(ブラウザmcp) ・スクレイピングツールを自作 自動テスト作成 ・Playwright

    (E2Eテスト自動化 フレームワーク)  ブラウザで 動作確認(AIが) 開発者 完了報告 AIに開発→デバッグのルーチンをやらせる 一応ちゃんと動く画面が作成される。 …が、精度としては物足りない。TDDが役立ちそう (作らない場合も) 修正
  3. 要件定義& 基本設計 自動テスト作成 (開発のためのテスト) 実装 結論から:AI駆動開発とTDDはすごく相性がいい 動作確認&テスト 自動テスト実行 すべての自動テストが 通るまで実装修正

    自動テスト作成 (リグレッションテスト) 実装完了後はリファクタして リグレッションテストとして 転用できる テスト実行のコマンドを叩くだけで テストができる TDD(テスト駆動開発)
  4. AIが実装 AIが修正 レビューOK、マージ AIが修正 テスト実行 開発者 動作確認 テストが通るまで繰り返し 実装修正をするため 精度の高いものが

    提出される エラー検知 テスト実行 エラー検知 テスト実行 TDD用自動テスト AI・TDDフロー テストグリーン AIがTDD用テスト作成 開発者 開発依頼 ここまでAIが 自律的にタスク を行う
  5. 複数の検証手法をAIに与え、 問題解決能力を向上させ 実装タスクを完遂させる 開発者 開発依頼 AI AI-TDD開発 ・TDD ・ブラウザから操作 ・アプリのログを解析

    開発者 完了報告 実装→デバッグのループ 事前に実装の完了状態を定義できるTDDは (AIの)検証手段の中でもかなり効果的な開発道具
  6. 開発者 AI 開発者 ソースから実装確認 テストから仕様確認 AI-TDD開発 要件定義 タスクの確認 開発の 依頼

    できあがるまで 放置 完了報告 AI-TDD自動開発フロー 開発者 AIが変な手順で開発していないか監視 想定外の手順を踏んでいる場合は、 中断させ手順書を更新 タスク開始 フィードバック
  7. 開発者 GeminiCLI 開発者 ソースから実装確認 テストから仕様確認 AI-TDD開 発 要件定義 親タスクの確認 開発の

    依頼 AI-TDD自動開発フロー(geminiタスク管理型) claudecode AI同士の話し合い GeminiCLI 親タスク管理 claudecode 小タスク レビュー依頼 親タスクから 小タスクを切り出し、 claudeに依頼 完了報告 コンテキスト量がでかいgeminiに タスク管理とレビューを行わせる手法 横展開が多いタスク、 リファクタタスクと 相性がよかった。 寝る前に依頼して6時間自走して完了。 逆に、技術的難易度の高いタスクは geminiを挟まず claudeと1on1がよい
  8. TDD 生きた 仕様書 バグが 拾える 実装工数 保守工数 自動テストの利益 = 自動テストが生むメリット ー 負債(保守コスト) この価値収支の天秤は、関数ごと機能ごとで大きく揺れる

    自動テストが多大な利益となるモジュール (※1)もあれば メリットを得られず書くだけ負債が増えるようなモジュール (※2)も存在する ※1:外部依存のない閉じたアルゴリズム ※2:API疎通処理(外部依存が多すぎる) 結合・統合テスト以降で巻き取るべき課題を 単体テストコードで巻き取ろうとするとしんどいという意味 自動テスト価値戦略の話
  9. TDD 生きた 仕様書 バグが 拾える 実装工数 保守工数 自動テスト戦略 割と拮抗しがち… 手動テストの工数を1としたとき

    自動テストの工数は (体感)3~10 (4回以上、手動テストをやり直すだろうという見積もりがあれば、 先に自動テスト化するべきという方法論も存在する) 自動テストの作成自体が割に合 わず作られないことも多い
  10. 一切コーディングしていない。 そもそもフロントエンド実装は一切見ていない。その代わり AIが生成し たplaywrightテストコードに関しては以下の観点から注意深く観察した。 良いテストを構成する4本の柱理論 (単体テストの考え方-使い方:第4章96ページ) ・バグが拾えるか ・リファクタリング耐性はあるか ・フィードバックは迅速か(E2Eテストのフィードバックが迅速なわけがないのだが、一応 )

    ・保守はしやすいか フロントエンドがjsだろうがpythonだろうがphpだろうが、E2Eテストコードの書き方はそこまで変化し ないと思うので、E2E自動テストの学習は今後腐ることはないのではと考えた。 リファクタリングされたE2Eテストコードはブラウザの操作手順書を見る感覚と同じなので、保守に関 してもそこまで難易度は高くないように思える。 (というより、何やってるかわからない E2Eテストを残す価値はない) どれくらい人間がコーディングした?