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

AI時代のTDD / TDD in AI Era 202604 Edition

AI時代のTDD / TDD in AI Era 202604 Edition

株式会社リクルート新人研修
2026年4月20日

Avatar for Takuto Wada

Takuto Wada PRO

April 20, 2026

More Decks by Takuto Wada

Other Decks in Programming

Transcript

  1. 2025年に起こったこと • Vibe Coding(Andrej Karpathy) • The 70% problem(Addy Osmani)

    • The End of Programming as We Know It (Tim O'Reilly) • AI Slop: もっともらしい出力による、他者へのレビュー負担押しつけ • FOMO: Fear of Missing Out、乗り遅れる恐怖感にさいなまれる • November 2025 in ection: • コーディングエージェントの能力が11月に大きく向上 • The 80% Problem(Addy Osmani) • コーディングエージェントは使うか使わないかではなく、どう使うかの段階 fl に既に入った
  2. AI との協業の2つのモード • AI と伴走 • AI と対話しながら直列開発 • コードを書くスピードは(「AI

    に委託」に比べて)遅い • コントロールや状況把握の度合いが高い • traditional: "決定論的ではあるものの、人力であるためスケールしない" • AI に委託 • 自走する AI たちに任せて並列開発 • コードが生成されるスピードは圧倒的に速い • コントロールや状況把握の度合いが低く、レビューが課題となる • emerging: "非決定論的で結果が確率的ではあるものの、非常によくスケールする" https://buildersbox.corp-sansan.com/entry/2025/07/03/142500
  3. 典型的な「AI と伴走」のパターン • 対話: LLMとの議論、LLMからの質問から設計を生む • 生まれた設計をプレーンテキストのドキュメント(Design Doc, ADR)に保存 •

    設計書のレビューを行い、必要であれば議論に戻る • 設計書からタスクリスト(markdown)を生成し保存 • タスクのレビューを行い、必要であれば議論に戻る • タスクリストからタスクを1つ選び、サブタスクに分割 • サブタスクの順番を TDD のワークフローにあわせて調整 • タスク毎にコーディングエージェントのセッションを立ち上げて(あるいは /compact して)実装 • タスク毎に Git のブランチを作成(ダメだったらブランチを廃棄する) • TDD のワークフローを指定し、レビュー不能な量のコードが一度に生成されることを防ぐ • TDD のステップ毎に Conventional Commits のルールでコミットさせる • マージ前に全体レビュー。必要であれば人間が手直しし、ブランチをマージ • 学びを反映させるために再び LLM と議論する
  4. 典型的な「AI と伴走」のパターンと SDD(Spec Kit を例に) • 対話: LLMとの議論、LLMからの質問から設計を生む /speckit.constitution /speckit.specify

    プロンプト • 生まれた設計をプレーンテキストのドキュメント(Design Doc, ADR)に保存 • 設計書のレビューを行い、必要であれば議論に戻る /speckit.clarify /speckit.plan プロンプト • 設計書からタスクリスト(markdown)を生成し保存 • タスクのレビューを行い、必要であれば議論に戻る • タスクリストからタスクを1つ選び、サブタスクに分割 /speckit.tasks /speckit.analyze • サブタスクの順番を TDD のワークフローにあわせて調整 • タスク毎にコーディングエージェントのセッションを立ち上げて(あるいは /compact して)実装 • タスク毎に Git のブランチを作成(ダメだったらブランチを廃棄する) • TDD のワークフローを指定し、レビュー不能な量のコードが一度に生成されることを防ぐ • TDD のステップ毎に Conventional Commits のルールでコミットさせる • マージ前に全体レビュー。必要であれば人間が手直しし、ブランチをマージ • 学びを反映させるために再び LLM と議論する /speckit.implement
  5. AI/LLM とソフトウェアエンジニアリング • 〜2024年: プロンプトエンジニアリング • 2025年: コンテクストエンジニアリング • 人間はコードを書くのをやめた

    • 2026年: ハーネスエンジニアリング(NEW) • 人間はコードレビューをやめようとしている • "The Middle Loop" はどうなっていくか https://annievella.com/posts/the-middle-loop/
  6. 委託モードの拡大: ハーネスエンジニアリングとオーケストレーション • AI と伴走 • AI と対話しながら直列開発 • コードを書くスピードは(「AI

    に委託」に比べて)遅い • コントロールや状況把握の度合いが高い • traditional: "決定論的ではあるものの、人力であるためスケールしない" • AI に委託 • 自走する AI たちに任せて並列開発 • コードが生成されるスピードは圧倒的に速い • コントロールや状況把握の度合いが低く、レビューが課題となる • emerging: "非決定論的で結果が確率的ではあるものの、非常によくスケールする"
  7. レビューが担っていた厳密さ(Rigor)はどこへ移るのか • 上流の仕様レビュー (EARS、デシジョンテーブル) • 第一級の成果物としてのテストスイート (TDD) • 型システムと制約によるガードレール •

    ビジネスの影響度に基づくリスクマッピング • 継続的な理解 (ペアプロ、モブプロ) https://martinfowler.com/bliki/FutureOfSoftwareDevelopment.html
  8. レビューが担っていた厳密さ(Rigor)はどこへ移るのか • 上流の仕様レビュー (EARS、デシジョンテーブル) • 第一級の成果物としてのテストスイート (TDD) • 型システムと制約によるガードレール •

    ビジネスの影響度に基づくリスクマッピング • 継続的な理解 (ペアプロ、モブプロ) https://martinfowler.com/bliki/FutureOfSoftwareDevelopment.html
  9. TDD と Git と Conventional Commits 1. 押さえておきたいテストシナリオを洗い出し、リスト(テストリスト)にまとめる 2. テストリストの中から「ひとつだけ」選び出し、実際に、具体的で、実行可能なテスト

    コードに翻訳し、テストが失敗することを確認する • ここで test: プレフィクスをつけてコミット 3. プロダクトコードを変更し、いま書いたテスト(および、それまでに書いたすべてのテ スト)を成功させる(その過程で気づいたことはテストリストに追加する) • ここで feat: プレフィクスをつけてコミット 4. 必要に応じてリファクタリングを行い、実装の設計を改善する • ここで refactor: プレフィクスをつけて何回かコミット 5. テストリストが空になるまでステップ2に戻って繰り返す https://www.conventionalcommits.org/ja/v1.0.0/
  10. 伴走モードにおける TDD: 監督ループと流量制御 • AI と伴走 • AI と対話しながら直列開発 •

    コードを書くスピードは(「AI に委託」に比べて)遅い • コントロールや状況把握の度合いが高い • traditional: "決定論的ではあるものの、人力であるためスケールしない" • AI に委託 • 自走する AI たちに任せて並列開発 • コードが生成されるスピードは圧倒的に速い • コントロールや状況把握の度合いが低く、レビューが課題となる • emerging: "非決定論的で結果が確率的ではあるものの、非常によくスケールする"
  11. 委託モードにおける TDD: 自律ループと監査 • AI と伴走 • AI と対話しながら直列開発 •

    コードを書くスピードは(「AI に委託」に比べて)遅い • コントロールや状況把握の度合いが高い • traditional: "決定論的ではあるものの、人力であるためスケールしない" • AI に委託 • 自走する AI たちに任せて並列開発 • コードが生成されるスピードは圧倒的に速い • コントロールや状況把握の度合いが低く、レビューが課題となる • emerging: "非決定論的で結果が確率的ではあるものの、非常によくスケールする"