バイブコーディング実践編 — Claude Code を中心に AIで安全に作る力要件→プロンプト→受入条件 — 仕様を固定する技術

反復ループ設計 — 3反復で収束させる

読了目安 6

学習のねらい

AI に一度で完璧なコードを生成してもらうのは困難です。人間が開発を進めるのと同じように、AI との対話も「小さな反復 (iteration、繰り返し) 」を重ねることで、徐々に理想のコードに近づけていくのが効果的です。 このレッスンでは、3反復でタスクを収束させるという考え方を学び、AI との対話において「失敗例の提示」「テスト→修正→テストの最小ループ」「停止判断」を適切に行う方法を身につけます。

3反復で収束させる考え方

AI との協調作業では、以下のような3段階の反復ループを意識すると、効率的に目標に到達しやすくなります。

  1. 第1反復: 骨格の作成 (7割完成)
    • 目的: まずは主要な機能の骨格や基本的な構造を AI に作ってもらう。
    • 指示: 大まかな要件と主要な Acceptance Criteria (AC) を伝え、全体像を把握した上で実装を開始してもらう。
    • 結果: 細かい部分が不足していても、動く最小限のコードが生成されればOK。
  2. 第2反復: 足りない部分の追加と修正 (9割完成)
    • 目的: 第1反復で生成されたコードに対し、不足している AC や、見つかったバグ、改善点を指摘し、修正・追加してもらう。
    • 指示: 具体的な失敗例 (例: 「この入力でエラーになる」「このテストが落ちる」) や、追加したい AC を明確に伝える。
    • 結果: ほとんどの AC を満たし、安定して動作する状態を目指す。
  3. 第3反復: 品質向上と最終調整 (10割完成)
    • 目的: コードレビューの観点 (可読性、保守性、規約準拠) や、エッジケースへの対応、リファクタリングなど、最終的な品質向上を行う。
    • 指示: 「この関数名をもっと分かりやすく」「この部分をもう少し汎用的に」「このケースのテストを追加して」といった具体的な指示を出す。
    • 結果: プロジェクトの品質基準を満たし、安心してデプロイできる状態にする。

失敗例提示の仕方

AI に修正を促す際、単に「バグがある」と伝えるだけでは不十分です。 具体的な失敗例 (再現手順) を提示することで、AI は問題を正確に理解し、効果的な修正を行うことができます。

  • 良い例:
    • python main.py --path non_existent_dir と実行すると、FileNotFoundError が発生します。存在しないディレクトリが指定された場合は、エラーメッセージを表示して終了するように修正してください。」
    • test_edge_case.pytest_empty_input が失敗しています。空の文字列が入力された場合の処理を追加してください。」
  • 悪い例:
    • 「バグがあるようです。直してください。」
    • 「テストが通りません。」

テスト→修正→テストの最小ループ

AI との反復作業では、以下のサイクルを高速で回すことが重要です。

  1. テスト実行: AI が生成したコードに対して、用意したテストや手動での動作確認を行う。
  2. 失敗の特定: テストが失敗した場合、どのテストが、どのような理由で失敗したかを特定する。
  3. AI への指示: 特定した失敗例と、期待する結果を明確に AI に伝え、修正を依頼する。
  4. 修正の確認: AI が提案した修正を適用し、再度テストを実行して問題が解決したかを確認する。

このループを繰り返すことで、AI は徐々に正確なコードを生成するようになります。

停止判断

「いつ反復を停止するか」を判断することも重要です。以下の基準で停止を検討しましょう。

  • すべての Acceptance Criteria (AC) を満たしているか
  • すべての自動テスト (ユニットテスト、結合テスト) がパスしているか
  • 主要なユースケース、エッジケースでの手動確認が問題なく動作するか
  • コードがプロジェクトの品質基準 (可読性、保守性、規約準拠) を満たしているか
  • これ以上の反復が、コスト (時間、API 利用料) に見合わないと感じるか

完璧を目指しすぎると無限ループに陥りがちです。「これで十分」というラインを見極めることが大切です。

まとめ

AI とのコーディングは、一発勝負ではなく、人間との共同作業と同じように反復が鍵です。 3反復で収束させる考え方を意識し、具体的な失敗例を提示しながら、テスト→修正→テストの最小ループを回すことで、効率的かつ高品質なコード生成を実現できます。

参考リンク


反復ループ設計 — 3反復で収束させる | バイブコーディング実践編 - AI研修