バイブコーディング実践編 — Claude Code を中心に AIで安全に作る力テスト戦略とデバッグ — VibeContract

デバッグ — エラーログ → AI に渡す前に整える

読了目安 5

学習のねらい

AI がコードを生成しても、常に完璧なものができるわけではありません。 バグが発生したとき、AI に「このバグを直して」と丸投げするだけでは、期待通りの修正が得られないことが多いです。 効果的に AI の力を借りてデバッグを進めるためには、人間がエラーの状況を整理し、AI に適切な情報を渡すスキルが不可欠です。 本レッスンでは、バグをAIに渡す前に人間がやるべきこと、特に「最小再現ケースの作成」「スコープの限定」「スタックトレースの要約」といったデバッグの基本戦略を学びましょう。

最小再現ケース (Minimal Reproducer)

バグが発生したとき、最初にやるべきことは「そのバグを最もシンプルに再現できるコード」を見つけることです。 これを 最小再現ケース (Minimal Reproducer) と呼びます。

  • なぜ重要か:
    • 複雑なコードの中からバグの原因を特定しやすくなります。
    • AI に渡す情報が少なくて済むため、AI が誤解するリスクを減らせます。
    • AI の推論コスト(トークン消費)も抑えられます。
  • 作り方:
    • バグが発生したときの入力データや実行環境を可能な限り小さくします。
    • 関係ないコードやライブラリの依存を削除し、バグが再現する最小のコードスニペットを作成します。
    • 例えば、ウェブアプリケーションで発生したバグであれば、そのバグが再現するコントローラーの最小限のコードと、入力データだけを抽出します。

スコープの限定 (Scope Limitation)

バグの原因がどこにあるのか、その「スコープ (範囲)」を限定することも重要です。 AI は大量のコードを一度に読むことができますが、それでも「どこに注目すべきか」を人間が教えてあげることで、デバッグの効率が格段に上がります。

  • 具体例:
    • 「このファイルの中の calculate_price 関数にバグがあるようです」と伝える。
    • 「この10行のコードブロックのどこかに問題があります」と指摘する。
    • 関連性の低いファイルや関数は、AI に渡すプロンプトから除外するか、「ここは見なくていい」と明示します。

スコープを限定することで、AI はより焦点を絞って分析を行い、的確な修正案を提示しやすくなります。

スタックトレースの要約 (Stack Trace Summarization)

エラーが発生した際に表示される スタックトレース (Stack Trace) は、バグの原因を探る上で非常に重要な情報源です。 しかし、長いスタックトレースをそのまま AI に渡しても、AI はその全体像を把握しきれなかったり、不要な情報に惑わされたりすることがあります。

  • スタックトレースの読み方:

    • 下から上に読むのが基本です。一番下が最初に呼び出された関数、一番上がエラーが発生した場所です。
    • 自分のコードで呼び出している部分に注目します。フレームワークやライブラリ内部の呼び出しは、通常は直接の原因ではありません。
    • エラーメッセージ (ValueError, TypeError など) と、その直前の行に注目します。
  • AI に渡す前の要約:

    • 関連性の低いフレームワークやライブラリの内部スタックは省略します。
    • 自分のコードに関わる部分だけを抽出し、簡潔にまとめます。
    • 「このスタックトレースの、特に my_module.pymy_function の部分に問題がありそうです」のように、人間が注目点を加えるプロンプトが有効です。

まとめ

AI とのデバッグでは、人間が「バグの翻訳者」として機能することが重要です。 最小再現ケースの作成、スコープの限定、スタックトレースの要約といった前処理を行うことで、AI はより正確かつ効率的にバグを特定し、修正提案を出せるようになります。 これらのデバッグ戦略を身につけ、AI を強力なデバッグパートナーとして活用しましょう。


デバッグ — エラーログ → AI に渡す前に整える | バイブコーディング実践編 - AI研修