プログラムの結果がおかしいとき、最近は「AIにコードを貼って聞く」という選択肢があります。
でも実際のところ、AIはどこまでバグを見つけてくれるのでしょうか?そして、デバッグ機能とは、どう使い分ければいいのでしょうか?
この記事では、過去の記事でデバッガーを使って自力で見つけたバグを、今度はAI(Claude)に見つけてもらいます。「コードだけ渡した場合」と「症状も伝えた場合」で結果がどう変わるかも比較してみました。
- AIにバグ修正を依頼するときの伝え方と、実際どこまで精度が変わるか
- AIがバグを見つける過程と、デバッガーで探す過程の違い
- デバッガーとAI、それぞれの得意・不得意と使い分け
今回AIに見つけてもらうバグ(過去記事のおさらい)
過去の記事では、成績管理システムのcalc_average関数(平均点を計算する関数)に、わざと以下のバグを仕込みました。
修正前(正しいコード)

修正後(バグを仕込んだコード)

このように、ループの開始・終了の値が1つだけズレてしまうことで起きるバグを、オフバイワンエラー(off-by-one error)と呼びます。
「1つズレただけ」なので発生しやすく、しかも実行結果は「なんとなく数字がおかしい」程度にしか見えないため、非常に気づきにくいのが特徴です。配列やループの範囲を扱うときに、初心者からベテランまで誰もが一度はハマる定番のバグです。
今回のコードも、i = 0から始めるべきところをi = 1から始めてしまっているため、1人目(Satoさん、85点)の点数だけが合計に含まれず、平均点が本来の75.2から58.2にズレて表示されます。
前回はブレークポイントとウォッチウィンドウを使って、変数の値を1つずつ確認しながら原因にたどり着きました。今回は同じバグ入りコードを、そのままClaudeに渡してみます。
先に結論
- コードだけ渡しても、症状や期待値を伝えても、Claudeは同じ精度でバグを一発で特定しました。想定よりずっと優秀な結果でした
- どちらの回答も、影響範囲の数値計算(58.2になる理由)や、似たパターンの
find_max_index/find_min_indexが実は無事である理由まで、正確に見抜いていました - ただしAIは「実行中の変数の実際の値」は見えないので、デバッガーが不要になるわけではありません
今回使う環境
- Claude(AI)
- バグ入りコード:成績管理システム(第1回)の
calc_average関数にオフバイワンエラーを仕込んだもの
実演①コードだけを渡してみる
AI(Claude)への質問文
まずは意地悪に、何の説明もなしでコード全文だけを貼り付けて、こう聞いてみました。

AI(Claude)の回答

コードを渡しただけで、原因の特定・数値での裏付け・似たパターンとの見分けまで、一発で言い当てました。
実演②症状と期待値も一緒に伝えてみる
AI(Claude)への質問文
次に、実際にバグ報告をするときのように、状況を具体的に伝えてみます。

AI(Claude)の回答

実演①と実演②の比較
| 実演 | 渡した情報 | 結果 |
|---|---|---|
| ① | コードだけ | ・一発で特定 ・数値の裏付け、類似パターンとの見分けも正確 |
| ② | コード+症状+期待値 | ・実演①と同じく一発で特定 ・内容の正確さ、深さも実演①とほぼ同じ |
正直、ここまで差が出ないとは思っていませんでした。今回のバグは、コードを読めば筋道立てて追える種類のもの(構造がシンプルで、コメントも入っている)だったため、Claudeにとっては症状の情報がなくても十分だったのだと思います。
複雑に絡み合ったコードや、複数のファイルにまたがるバグであれば、症状や期待値を伝えることでもっと差が出る可能性はあります。
少なくとも今回のようなケースでは、「まずはコードだけ渡してみて、それでも埒が明かなければ症状を詳しく伝える」くらいの気軽さで十分そうです。
デバッガーとAIの使い分け
今回の実演と、前回のデバッガーでの体験を踏まえて、それぞれの得意・不得意を整理します。
| デバッガー(VS2026) | AI(Claude等) | |
|---|---|---|
| 得意なこと | ・実行中の変数の「実際の値」を確認できる ・タイミングや入力に依存する問題を追える | ・コードを読んで論理的な誤り(オフバイワン、条件式の間違い等)を素早く指摘できる ・修正案までセットで出してくれる |
| 苦手なこと | ・原因の見当がついていないと、どこにブレークポイントを置くべきか迷う | ・実行時の状態は見えない ・コードに現れない問題(環境設定、入力データ、ハードウェア起因)は推測になる |
| 向いている場面 | ・「コードは正しいはずなのに動かない」とき ・実行時の挙動を確かめたいとき | ・「コードのどこかが論理的に間違っていそう」なとき ・最初のあたりを付けたいとき |
私の場合は、まずAIに聞いてあたりを付けて、AIの指摘が本当に正しいかをデバッガーで確認する、という順番がしっくりきました。
AIの回答は常に正しいとは限らないので、「AIが言うことを鵜呑みにせず、実際の動作で裏を取る」流れにしておくと安心です。
まとめ
- オフバイワンエラーは、ループの範囲が1つズレるだけで起きる、気づきにくい定番のバグ
- 今回のケースでは、コードだけでも症状を添えても、Claudeは同じ精度でバグを特定した
- ただし実行時の状態は見えないので、デバッガーの代わりにはならない
- 「AIであたりを付けて、デバッガーで裏を取る」という使い分けがおすすめ
最後まで読んでいただき、ありがとうございました。




コメント