AIコーディングとエージェント

[バイブコーダー #5] エラーメッセージの読み方と、AIがバグを直せず堂々巡りするときの脱出法

赤いエラーメッセージが画面を覆うと、心臓がドキッとします。英語がびっしり並び、見慣れない単語ばかりで、何を間違えたのかも教えてくれないように見えます。そこで多くのバイブコーダーはエラーメッセージを読まずに閉じて、AIに「動きません、直して」と伝えます。そしてAIは見当違いの場所を修正し始めます…

読了 6 分
[バイブコーダー #5] エラーメッセージの読み方と、AIがバグを直せず堂々巡りするときの脱出法のカバー画像

赤いエラーメッセージが画面を覆うと、心臓がドキッとします。英語がびっしり並び、見慣れない単語ばかりで、何を間違えたのかも教えてくれないように見えます。そこで多くのバイブコーダーはエラーメッセージを読まずに閉じて、AIに「動きません、直して」と伝えます。そしてAIは見当違いの場所を修正し始めます。

ここに落とし穴があります。エラーメッセージは実は犯人が残した自白書です。何が、どこで起きたのかはすでに書かれています。読み方のコツさえ分かれば半分は解決したも同然で、そのままAIに渡せば残り半分も早く進みます。今回はエラーメッセージの読み方、AIへの正しい伝え方、そしてAIが同じバグを直せず堂々巡りするときの脱出法まで扱います。

エラーメッセージの構造:3つだけ探せばいい

どんなエラーでも構造は同じです。3つの部分だけ探せば十分です。

  1. 何が起きたか(エラー名と説明):通常は1行目です。たとえばTypeError: Cannot read properties of undefinedのようなものです。直訳すると「空のものから何かを取り出そうとした」という意味です。宅配便が届いていないのに箱を開けようとするような状況です。
  2. どこで起きたか(ファイルと行番号)app/page.tsx:42のような表記があれば、app/page.tsxファイルの42行目という意味です。犯行現場です。
  3. どの経路で起きたか(スタックトレース):その下に並ぶ一覧は、事件に至るまでの呼び出し経路です。怖がる必要はありません。最初の数行が現場に最も近い記録だと覚えておけば十分です。

すべてを理解する必要はありません。「何が起きたか+どこで起きたか」だけ分かれば、エラーを読まない人よりすでに10倍有利です。

エラーが潜む場所は2つ

第1回の区分がここでも登場します。エラーが表示される場所は2つあり、症状によって見る場所が異なります。

  • ブラウザーコンソール(フロントエンドの悲鳴):画面が真っ白、ボタンが反応しない、画面の一部が崩れるときです。ブラウザーでF12(または右クリック → 検証)を押し、Consoleタブを開きます。
  • サーバーログ(バックエンドの悲鳴):保存、ログイン、決済、AI呼び出しが失敗するときです。開発中は開発プログラムを実行しているターミナルに、デプロイ後は第4回で見たデプロイサービスのダッシュボードにあるLogsメニューに表示されます。

画面には「問題が発生しました」としか出ないのに、サーバーログには本当の原因が書かれていることがよくあります。画面だけを見て「エラーメッセージがありません」と済ませず、両方を開く習慣をつけましょう。

症状に応じてブラウザーコンソールとサーバーログのどちらを開くか決め、エラー全文をAIに渡す判断ツリー図
画面の症状ならコンソール、保存やログインならサーバーログです

AIへの伝え方:全文を状況と一緒に

エラーを見つけたら、次のようにAIへ伝えます。

  • **全文をコピーします。**後半に手がかりがあることが多いので、最初の1行だけ切り取って送ってはいけません。スクリーンショットよりテキストのコピーがおすすめです。
  • 状況も一緒に書きます。「会員登録ボタンを押したら」のように何をしていて起きたのか、そして「本来はウェルカムページへ遷移するはず」のように期待する動作も伝えます。
  • どこで見つけたかを書きます。「ブラウザーコンソール」なのか「サーバーログ」なのか。この一言だけで、AIが調べる範囲は半分になります。

悪い質問と良い質問の差はこれほど大きいものです。「保存できません、直して」は、地図なしでAIに捜索させるようなものです。「保存ボタンを押しても画面は変わらず、サーバーログにこのエラーが出ています。(エラー全文を貼り付け)本来は一覧に新しい記事が表示されるはずです」なら、犯行現場と自白書を渡せます。

AIが堂々巡りするとき:4つの脱出法

同じバグをAIが3、4回続けて直せないなら、試行回数を増やすより盤面を変えるほうが早いです。

**1. 新しい会話を開きます。**失敗した試みが積み重なった会話では、AIは自分が作った誤った仮説に引きずられ続けます。新しい会話を開き、現在の症状とエラーだけを整理して伝え直すと、最初の試みで解決することも意外に多いです。

**2. ロールバックして、小さくやり直します。**第3回のセーブポイントがここで役立ちます。修正が修正を上書きしてコードがつぎはぎになったなら、最後のコミットに戻り、先ほど失敗した修正をより小さな単位で1つずつ実行させます。

3. まず原因を調査させます。「直して」ではなく、「まだ直さず、このエラーの原因候補を3つ挙げ、それぞれの確認方法を教えて」と指示します。AIは直せと言われると焦って修正し、調査せよと言われると意外なほど冷静に調べます。原因を絞り込んでから修正させると、命中率は大きく上がります。

**4. エラーの原文を検索します。**エラーの1行目をそのまま検索欄に入力します。世界のどこかですでに誰かが経験し、解決している可能性は高いです。検索結果のリンクをAIに渡し、「この解決策が自分の状況に合うか確認して」と頼む組み合わせも強力です。

STOP RETRYING CHANGE THE GAMEの文字とともに、エラートラックを堂々巡りするロボット、NEW CHAT ROLLBACK INVESTIGATE FIRST SEARCH THE ERRORと書かれた4つの脱出ドアのイラスト
3、4回失敗したら、5回目を試すのではなく脱出ドアを探す番です

まとめ

  • エラーメッセージは自白書です。「何が起きたか(1行目)+どこで起きたか(ファイル:行番号)」だけ見つけても、半分は解決します。
  • エラーはブラウザーコンソール(画面の問題)とサーバーログ(保存・ログイン・決済の問題)の2か所にあります。両方を開いてください。
  • AIには、エラー全文+何をしていて起きたか+どこで見つけたかの3つをセットで伝えます。
  • AIが堂々巡りしたら、試行回数を増やさず盤面を変えます。新しい会話、ロールバックして小さく、まず調査、原文検索です。

次回は、ミステリーのように見える古典的な問題を扱います。「昨日までは動いていたのに、今日は動きません」。コードに触れていないのに突然動かなくなる理由を、犯人候補ごとに順番に見ていきます。

あわせて読みたい