型7: エラーへの対処法
クラス: 初心者
所要時間: 約30分
前提知識: 型1〜6 完了済み
1. 解説
よく遭遇するエラーの種類
① 認証エラー
Error: Authentication failed
Error: Invalid API key対処: claude auth logout → claude 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)); // ← これでエラー
EOFbash
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 が返る
EOFClaude Code にバグを見つけて修正させよ。
達成条件: sum([1,2,3]) が正しく 6 を返すこと
