← Reports へ戻る

ChatGPTでエラー原因を整理してClaude Codeで修正する流れ

エラーログをChatGPTで整理し、修正方針を作ってからClaude Codeに実装させる安全なデバッグ手順。エラー対応を効率化します。

ChatGPTでエラー原因を整理してClaude Codeで修正する流れ

はじめに

本番環境でエラーが発生したとき、エラーログは複雑で、原因を特定するのが困難です。ChatGPT でエラーログを分析して修正方針を立てた後、Claude Code で修正する という手順により、デバッグが格段に効率化されます。

本記事では、実際のエラーから修正までの流れを解説します。

ステップ1:エラーログをChatGPT に分析させる

実際のエラー例

2026-06-22 14:23:45 ERROR: TypeError: Cannot read property 'user' of undefined
  at getUserProfile (src/services/user.ts:45:12)
  at async handleProfileRequest (src/routes/profile.ts:23:8)
  at processRequest (src/middleware/request.ts:118:5)
  
Stack: Error: Cannot read property 'user' of undefined
    at getUserProfile (src/services/user.ts:45)
    at handleProfileRequest (src/routes/profile.ts:23)

エラーログだけではどこが問題かわかりません。

ChatGPT への分析依頼

「以下のエラーログが本番で発生しました。
原因を分析し、修正方針を提案してください。

エラーログ:
(エラー全体をコピー)

関連コード:

src/services/user.ts:45
--
const getUserProfile = (userId) => {
  const user = userCache[userId];  // Line 45
  return {
    name: user.name,
    email: user.email,
  };
};
--

src/routes/profile.ts:23
--
app.get('/profile/:id', async (req, res) => {
  const profile = getUserProfile(req.params.id);
  res.json(profile);
});
--

このエラーの原因と、修正方針を教えてください。

ChatGPT の分析結果例

【原因分析】

✓ 原因:userCache に存在しないユーザーID を渡している
  - Line 45: const user = userCache[userId]
  - ユーザーが存在しない場合、user は undefined
  - その後 user.name を参照 → TypeError

【なぜこれが起きたのか】
1. 要求者が削除したユーザーのプロフィールをリクエスト
2. キャッシュに存在しない
3. undefined チェックがない

【修正方針】

【案1】キャッシュに存在しない場合、DB から取得
- リスク:DB 負荷増加
- メリット:常に最新データを返す

【案2】キャッシュに存在しない場合、エラーを返す
- リスク:404 が多発
- メリット:実装が シンプル、高速

【案3】キャッシュ自動更新
- リスク:複雑な実装
- メリット:常に最新、キャッシュ効果

【推奨】案2(エラーを返す)理由:
- 削除済みユーザーへのアクセスは通常仕様
- 404 を返すのが正しい
- 実装がシンプル

【修正内容】
if (!userCache[userId]) {
  throw new NotFoundError('User not found');
}
const user = userCache[userId];

ステップ2:修正方針をClaude Code に渡す

ChatGPT の分析を基に、Claude Code に修正を指示:

「以下のエラーを修正してください。

エラー:
Cannot read property 'user' of undefined
src/services/user.ts:45

原因(ChatGPT 分析):
userCache に存在しないユーザーID を渡す場合、undefined チェックがない

修正方針:
存在しない場合、NotFoundError を throw する

修正ファイル:src/services/user.ts の getUserProfile()

実装内容:
- if (!userCache[userId]) { throw new NotFoundError(...) }
- エラーメッセージ:『User not found』
- 既存テスト tests/services/user.test.ts で確認

実装前に計画を出してください。

ステップ3:Claude Code が修正を実装

Claude Code は明確な指示を受けて、修正を実装します:

// Before
const getUserProfile = (userId) => {
  const user = userCache[userId];  // undefined の可能性
  return {
    name: user.name,
    email: user.email,
  };
};

// After
const getUserProfile = (userId) => {
  if (!userCache[userId]) {
    throw new NotFoundError(`User ${userId} not found`);
  }
  const user = userCache[userId];  // ここは安全
  return {
    name: user.name,
    email: user.email,
  };
};

ステップ4:修正をテストして本番適用

修正が完了したら:

npm test を実行
→ 既存テスト全 pass ✓

git diff で確認
→ 変更が小さく明確 ✓

本番環境にデプロイ
→ 同じエラーが発生しない ✓

エラーに関する ChatGPT の活用パターン

パターン1:複数のエラーが連鎖している

エラーログ:
1. API timeout → 2. Connection refused → 3. Database crashed

ChatGPT に依頼:
「以下の 3 つのエラーが連鎖しています。
根本原因を分析してください。」

ChatGPT:
「根本原因:DB のメモリ不足
  → クエリが遅延
  → 接続池が満杯
  → API が timeout」

修正方針が一本筋で通る

パターン2:本番環境でのみ発生するエラー

エラーログ:
「NaN が計算結果に含まれている」
「ローカル環境では再現しない」

ChatGPT に依頼:
「以下の条件の差を考えて、原因を推測してください:
- ローカル:小規模データ、タイムゾーン JST
- 本番:大規模データ、タイムゾーン UTC

原因推測と修正方針を教えてください。」

ChatGPT:
「原因:大規模データ処理時の浮動小数点演算
タイムゾーン差は関係ない
修正:parseInt ではなく Math.floor() を使う」

パターン3:仕様不明確なエラー

エラー:「Validation error: data is invalid」

ChatGPT に依頼:
「この validation エラーの原因を分析してください。
要件:
- ユーザーが送信するデータは任意形式
- バリデーション厳しすぎ?甘すぎ?

実装コードと仕様を確認して、
修正方針を提案してください。」

ChatGPT:
「バリデーション基準が不明確
修正方針:
1. 仕様を明確化(何を許可・拒否するのか)
2. テストケースを追加
3. エラーメッセージを詳細化」

ChatGPT でのエラー分析の注意点

❌ 落とし穴1:エラーログが不完全

「エラーが出ます」
→ どんなエラー?→ スタックトレース不明確
→ ChatGPT も分析できない

対策:フルのエラーログとスタックトレースを提供

❌ 落とし穴2:関連コードを見ていない

ChatGPT:「このコード、user が undefined の可能性」
実際:user は常に定義済み(別の関数で保証)

対策:関連するコード、特に user の初期化部分も提示

❌ 落とし穴3:ChatGPT の提案を鵜呑み

ChatGPT:「DB から再取得すればいい」
実装者:その通りにする
実際:本来は 404 を返すべき仕様

対策:修正方針を複数提示させ、人間が最適なものを選ぶ

まとめ

エラー対応の効率化フロー:

本番エラー発生

【ChatGPT】エラーログを分析
  - 原因の特定
  - 修正方針を複数提案

【人間】修正方針を判定
  - ビジネス影響を考慮
  - 最適な方針を選択

【Claude Code】修正を実装
  - 明確な指示で確実に実装

テスト & デプロイ

ChatGPT と Claude Code の役割分担:

ChatGPT

Claude Code

人間

Claude Codeで変更計画だけ出させることで、エラー修正もより安全で追跡可能になります。

ChatGPTClaude Codeデバッグエラー対応