AIでエラー原因を調べる方法|ログの渡し方から整理

AIでエラー原因を調べる方法について、用途ごとの考え方と選び方のポイントを整理します。

AIものさし編集部

AIにエラー原因を調べてもらうときは、エラー文だけでなく「どの操作で起きたか」「動作環境」「直前の変更」を一緒に渡します。AIの最初の回答は結論ではなく仮説です。再現条件とログをそろえ、仮説ごとの確認方法を決めてから、一つずつ切り分けてください。ログに認証情報や個人情報が含まれる場合は、共有前に伏せます。

先に作るのは原因説明ではなく調査用の入力

ログは長いほどよいわけではありません。障害の直前から直後まで、問題を説明する範囲を残し、関係のない大量の出力を外します。最初の例外だけでなく、直前に出たwarning、HTTP status、request ID、時刻、処理対象の識別子(公開可能な範囲)を含めます。複数のエラーが並ぶ場合は、最初に発生したものと後続の派生エラーを分けます。画面に表示された文言だけでは、通信失敗なのかアプリケーション例外なのか分からないことがあります。

環境情報は再現に必要な範囲で具体的にします。OS、runtimeとversion、framework、主要package、browser、実行コマンド、localか本番か、発生時刻とtimezoneを書きます。「最新版」「いつもの環境」ではなく、lockfileや実行環境で確認できるversionを記録してください。個人PCとCIでだけ違う場合は、その差が原因候補になります。環境を特定できないなら不明と明記し、AIに埋めさせないでください。

再現条件を小さく固定する

「操作したら落ちる」では調査できません。初期状態、操作、入力、期待結果、実際の結果を順番に並べます。毎回起きるか、特定データだけか、権限やネットワークに依存するかも分けて記録します。可能であれば、失敗する最小の入力と成功する対照入力を一組用意します。個人データや本番データを含む再現例は、そのまま共有せず、構造を保った合成データへ置き換えます。

たとえば「保存ボタンを押すと失敗」ではなく、「ログイン済みの検証環境で、空の任意項目を含むフォームを送信すると、画面は保存中のままになり、NetworkではPOSTが422。必須項目を入れると保存できる」のように書きます。この例なら、UIのpending解除、validation、API responseのどこを調べるべきかを区別できます。実際の案件では、確認していないstatusや結果を例から転記しないでください。

AIに渡すログの整え方

Node.jsのErrorはmessageとstackを持ち、stackは通常エラー生成箇所と呼び出し経路の手掛かりです。ただしstackの表現やsource mapの有無はruntimeやbuild構成に依存します。AIにはstack全体と、該当する最初のアプリケーション側frameを渡し、ライブラリ内部の全行を無条件に貼る必要があるか判断させます。Node.js公式資料もErrorの性質を説明していますが、stackだけで根本原因が確定するわけではありません。

ログを共有する前に、Authorization header、Cookie、session ID、API key、access token、メールアドレス、電話番号、顧客ID、URL queryの個人情報を検索します。単純に文字列を置換すると、同じ値が別の意味で使われる場合があるため、値を一貫した仮名(USER_A、TOKEN_REDACTED)へ置き換えて文脈は保ちます。秘密の値をAIに見せずに、発生順序と項目名を残すのが目的です。公開前に、共有先の保存・学習・アクセス条件も所属組織の規定に従ってください。

仮説を検証可能な形で出させる

「原因は何?」と一問だけにすると、AIはもっともらしい説明を断定しがちです。次の表で、複数候補と確認手順を分けます。

表は横にスクロールできます

仮説ログ上の根拠反証・確認方法次の安全な操作
入力validationで停止responseがvalidation error同じ条件で必須値だけ変え再送検証環境で一項目ずつ確認
外部依存がtimeout接続待ち後にtimeout同時刻の依存先statusとrequest IDを照合retry回数と影響を確認
直前変更の回帰特定commit以降のみ発生変更差分と再現テストを比較rollback可能性を先に確認

この表は原因を三択に限定するものではありません。証拠のない候補は「不足情報」として残し、確度や確認順を言語化させます。AIに修正案を求める際は、変更箇所、想定する副作用、追加するtest、戻し方も併記させてください。広い変更を提案されたら、最小の変更で仮説を検証できるか問い直します。

一度に一つの変更を試す

調査中に複数の設定やコードを同時に変えると、どの変更が効いたか判別しにくくなります。変更前の状態、試した操作、結果を短く記録し、一つずつ比較します。再起動やcache削除など元に戻せる操作でも、影響範囲を確認してから行います。本番環境では、利用者への影響、監視、承認、rollback手順を先に確認し、AIの提案をそのまま実行しません。

修正後は、元の再現手順をそのまま実施し、期待結果だけでなく関連する正常系も確認します。例外が消えてもデータが保存されていない、別の画面が壊れた、ログが出なくなっただけということがあります。testがない場合は、再現手順を最小の回帰testにできるかを検討します。原因が再現しないなら「解決」とせず、観測できた範囲と残る不確実性を分けます。

調査を続けるか、担当者へ渡すか

個人情報漏えい、権限昇格、データ破損、広範な停止の可能性がある場合は、AIとの試行錯誤を続けず、組織のインシデント窓口へ引き継ぎます。ログを外部AIへ送れるか不明な場合も、機密データを伏せるだけで足りるとは限りません。サービスの契約・社内ポリシーを確認し、必要なら匿名化済みの最小再現例だけを使います。

AIに原因を決めてもらうのではなく、確認可能な仮説と次の観測を整理させるのが安全です。診断結果には、根拠となったログ行、未確認の前提、再現条件、実施した検証を残します。これで別の担当者も同じ情報から追試できます。

AIものさしの判断

エラー解析で価値があるのは、断定的な原因名より、再現条件・根拠・反証手順の対応が取れていることです。まず秘密を除いた最小ログを作り、環境と直前変更を添えます。次に仮説を一つずつ検証し、修正後は同じ手順と関連する正常系を再確認します。情報が足りなければ、答えを作らせず「次に観測すべきこと」を出させてください。

そのまま使える調査依頼の枠

依頼文は、AIが不足情報を事実のように補わない形にします。以下の項目を分け、確認できない欄は「不明」とします。

  • 目的:原因候補を切り分けたい。修正はまだ実行しない

  • 発生時刻:timezone込み。複数回なら各時刻

  • 環境:OS、runtime、framework、依存packageのversion

  • 再現:初期状態からの操作を番号付きで記載

  • 期待 / 実際:どうなる想定か、実際に何が起きたか

  • 証拠:error全文、関係するstack、request ID、前後のlog

  • 直前変更:commit、設定、依存更新など。分からなければ不明

  • 制約:本番変更不可、機密を送れない、再起動不可など

  • 欲しい出力:仮説、根拠、反証方法、追加で必要な情報

最後に「原因を断定せず、ログにない事実を補わない。仮説ごとに確認操作と、確認後に期待する観測を示す」と添えます。これにより、診断と変更の境界が明確になります。修正案が必要になった段階で、別の依頼として変更範囲とテスト計画を求めます。調査だけでよいときに、コード変更までまとめて依頼しないでください。

原因が分からないときの止め方

何度試しても再現しない場合、観測できた環境と観測できなかった条件を記録します。発生率、影響を受ける利用者、回避策、直前のdeployとの時間関係が分かると、次の観測を優先できます。AIが似たerror messageを根拠に別の案件の解決策を提案しても、versionやstackが異なるなら適用を保留します。

権限、データ消失、課金、顧客情報、セキュリティ事故が疑われるときは、自己判断で本番設定を変えず、担当者の承認と既定のincident responseへ進みます。AIへの入力に含めてはいけない情報の範囲が曖昧なら、社内のdata handling policyを確認します。ログを匿名化しても、時刻・route・IDの組合せで個人が特定できる場合があるため、必要最小限へ削ります。

切り分け結果を記録する

調査メモには、仮説の状態を「未確認」「支持」「反証」「保留」で記録します。支持とした理由は、再現したtestや観測値に結びつけます。AIが提示した候補でも、証拠が得られなければ未確認のままです。別の担当者へ引き継ぐ場合は、すでに試したこと、変えたもの、元に戻したものを分け、同じ操作の繰り返しや二重変更を防ぎます。

たとえば外部サービスのtimeoutが一度起きただけなら、恒久的な依存先障害とは結論できません。時刻、request ID、再試行の結果、依存先statusを突き合わせ、再発率や影響範囲を確認します。根拠が足りない状態でretryを増やすと、負荷や二重処理を招く場合もあります。安全な観測と復旧のどちらを優先するか、障害の影響に応じて担当者が決めます。

引用・データ出典

公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。

確認日:2026年10月8日

Node.js Docs:Error(新しいタブで開く)s

MDN:Error.prototype.stac(新しいタブで開く)k

MDN:JavaScript error referenc(新しいタブで開く)e