Skip to content

型7: エラーへの対処法

クラス: 初心者
所要時間: 約30分
前提知識: 型1〜6 完了済み


1. 解説

よく遭遇するエラーの種類

① 認証エラー

Error: Authentication failed
Error: Invalid API key

対処: claude auth logoutclaude auth login で再認証せよ

② ネットワークエラー

Error: Network request failed
Error: ECONNREFUSED

対処: インターネット接続を確認せよ。プロキシ環境の場合は設定が必要だ

③ 権限エラー(パーミッション拒否)

Claude Code wants to: Edit src/app.js
[y/n]?

対処: AI がファイルを変更しようとするとき確認を求める。y で許可、n で拒否だ

④ レート制限エラー

Error: Rate limit exceeded. Please wait before retrying.

対処: しばらく待ってから再実行せよ。頻繁に発生する場合は API プランを確認せよ

⑤ コンテキストオーバーフロー

Warning: Conversation is getting long. Consider using /compact or /clear.

対処: /compact で圧縮するか /clear でリセットせよ

エラーメッセージを AI に渡すテクニック

エラーが出たとき、その内容を直接 Claude Code に叩きつけることで素早くデバッグできる。

bash
# エラーを AI に相談するパターン
node app.js 2>&1 | head -20  # エラーを20行取得
# → コピーして Claude Code に叩きつける

インタラクティブモードで:

以下のエラーが出ています。原因と修正方法を教えてください。

TypeError: Cannot read properties of undefined (reading 'name')
    at getUsers (src/app.js:15:20)
    at Object.<anonymous> (src/app.js:30:3)

AI が間違えたときの対処

AI も間違える。その場合の対処法:

# 間違いを指摘する
「先ほどの実装は正しくありません。divide(10,0) が例外ではなく
 Infinity を返してしまいます。修正してください。」

# やり直しを頼む
「直前の変更を取り消して、別の方法で実装してください。」

# 段階的に確認しながら進める
「まず変更内容を見せてください。問題がなければ適用します。」

2. 実践

Step 1: 意図的にエラーを起こして稽古

bash
mkdir -p ~/claude-practice/lesson7
cd ~/claude-practice/lesson7

cat > buggy.js << 'EOF'
const data = {
  users: [
    { id: 1, name: "Alice" },
    { id: 2, name: "Bob" }
  ]
};

function getUserName(id) {
  const user = data.users.find(u => u.id === id);
  return user.name;  // user が undefined のとき TypeError
}

console.log(getUserName(1));
console.log(getUserName(999));  // ← これでエラー
EOF
bash
node buggy.js

エラーメッセージを確認してから Claude Code へ:

bash
claude
以下のエラーが出ました。buggy.js を読んで修正してください。

TypeError: Cannot read properties of undefined (reading 'name')
    at getUserName (buggy.js:10:15)
    at Object.<anonymous> (buggy.js:14:13)

Step 2: パーミッション確認の流れを体験

Claude Code がファイルを編集しようとするとき、確認プロンプトが出る。

buggy.js に getUserName が undefined を返す場合のフォールバックを追加してください。

AI が ● Edit: buggy.js を実行しようとしたとき:

  • y → 変更を適用
  • n → 変更を拒否

Step 3: 変更後の動作確認

bash
node buggy.js
# エラーが出ないことを確認

Step 4: AI の間違いを指摘する稽古

getUserName 関数を、見つからない場合に "Unknown" の代わりに
エラーをスローするように変更してください。

変更後に動作を確認:

bash
node -e "const {getUserName} = require('./buggy'); getUserName(999);"

期待通りでなければ:

getUserName(999) を実行しましたが、エラーではなく undefined が返りました。
throw new Error('User not found') になるよう修正してください。

3. 確認課題(Assignment)

課題 7-1: エラーメッセージから修正する

以下のコードを作成し、エラーを AI に修正させよ。

bash
cat > ~/claude-practice/lesson7/error_test.js << 'EOF'
function parseJSON(str) {
  return JSON.parse(str);
}

console.log(parseJSON('{"name": "Alice"}'));
console.log(parseJSON('invalid json'));  // エラー発生
EOF

node ~/claude-practice/lesson7/error_test.js

エラーメッセージを Claude Code に渡して修正を依頼せよ。

達成条件: 不正なJSONを渡してもクラッシュしない実装になること

課題 7-2: /compact の体験

10回以上メッセージをやり取りした後、以下を実行せよ。

/compact

達成条件: 会話が圧縮されてもコンテキストが維持されていること(直前の話題を続けられること)

課題 7-3: 意図的な誤りを修正させる

bash
cat > ~/claude-practice/lesson7/wrong.js << 'EOF'
// この関数は配列の合計を返すはずだが、バグがある
function sum(arr) {
  let total = 0;
  for (let i = 0; i <= arr.length; i++) {  // バグ: <= は範囲外アクセスを引き起こす
    total += arr[i];
  }
  return total;
}

console.log(sum([1, 2, 3]));  // 6 ではなく NaN が返る
EOF

Claude Code にバグを見つけて修正させよ。

達成条件: sum([1,2,3]) が正しく 6 を返すこと


自己チェックリスト


次の型

型8: 会話履歴の管理 →

Claude Code Dojo