C言語のバグをAI(Claude)に直してもらった【デバッガーとの使い分けも解説】

プログラムの結果がおかしいとき、最近は「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は「実行中の変数の実際の値」は見えないので、デバッガーが不要になるわけではありません

今回使う環境

実演①コードだけを渡してみる

AI(Claude)への質問文

まずは意地悪に、何の説明もなしでコード全文だけを貼り付けて、こう聞いてみました。

AI(Claude)の回答

コードを渡しただけで、原因の特定・数値での裏付け・似たパターンとの見分けまで、一発で言い当てました。

実演②症状と期待値も一緒に伝えてみる

AI(Claude)への質問文

次に、実際にバグ報告をするときのように、状況を具体的に伝えてみます。

AI(Claude)の回答

実演①と実演②の比較

実演渡した情報結果
コードだけ・一発で特定
・数値の裏付け、類似パターンとの見分けも正確
コード+症状+期待値・実演①と同じく一発で特定
・内容の正確さ、深さも実演①とほぼ同じ

正直、ここまで差が出ないとは思っていませんでした。今回のバグは、コードを読めば筋道立てて追える種類のもの(構造がシンプルで、コメントも入っている)だったため、Claudeにとっては症状の情報がなくても十分だったのだと思います。

複雑に絡み合ったコードや、複数のファイルにまたがるバグであれば、症状や期待値を伝えることでもっと差が出る可能性はあります。

少なくとも今回のようなケースでは、「まずはコードだけ渡してみて、それでも埒が明かなければ症状を詳しく伝える」くらいの気軽さで十分そうです。

デバッガーとAIの使い分け

今回の実演と、前回のデバッガーでの体験を踏まえて、それぞれの得意・不得意を整理します。

デバッガー(VS2026)AI(Claude等)
得意なこと・実行中の変数の「実際の値」を確認できる
・タイミングや入力に依存する問題を追える
・コードを読んで論理的な誤り(オフバイワン、条件式の間違い等)を素早く指摘できる
・修正案までセットで出してくれる
苦手なこと・原因の見当がついていないと、どこにブレークポイントを置くべきか迷う・実行時の状態は見えない
・コードに現れない問題(環境設定、入力データ、ハードウェア起因)は推測になる
向いている場面・「コードは正しいはずなのに動かない」とき
・実行時の挙動を確かめたいとき
・「コードのどこかが論理的に間違っていそう」なとき
・最初のあたりを付けたいとき

私の場合は、まずAIに聞いてあたりを付けて、AIの指摘が本当に正しいかをデバッガーで確認する、という順番がしっくりきました。

AIの回答は常に正しいとは限らないので、「AIが言うことを鵜呑みにせず、実際の動作で裏を取る」流れにしておくと安心です。

まとめ

  • オフバイワンエラーは、ループの範囲が1つズレるだけで起きる、気づきにくい定番のバグ
  • 今回のケースでは、コードだけでも症状を添えても、Claudeは同じ精度でバグを特定した
  • ただし実行時の状態は見えないので、デバッガーの代わりにはならない
  • 「AIであたりを付けて、デバッガーで裏を取る」という使い分けがおすすめ

最後まで読んでいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次