Claude Code攻略#Claude Code#デバッグ#パフォーマンス
Claude Codeデバッグ上級編【複雑な問題の解決法】
Claude Codeを使った高度なデバッグテクニック。本番環境のみで発生する問題、パフォーマンス問題、間欠的なバグの解決法。
複雑なバグの特徴
上級デバッグが必要なケース:
- 本番環境でのみ発生
- 間欠的に発生(再現困難)
- パフォーマンス問題
- 複数コンポーネントにまたがる問題
- 原因が複合的
デバッグ手法1: 本番環境のみで発生する問題
調査開始
/plan
本番環境でのみ発生する問題を調査したい。
症状:
- ローカルでは正常動作
- 本番デプロイ後に特定のAPIがタイムアウト
- エラーログには "Connection refused" と出ている
本番とローカルの違いを洗い出して。
よくある原因
1. 環境変数の違い
本番環境で必要な環境変数を全てリストアップして。
.env.example と比較して、漏れがないか確認。
2. CORS設定
CORS関連の設定を調査して。
本番ドメインが許可されているか確認。
3. ネットワーク設定
本番環境のネットワーク構成を確認したい。
- DBへの接続経路
- 外部APIへのアクセス
- ファイアウォール設定
4. ビルド最適化の影響
本番ビルドで問題が起きる可能性を調査。
- Tree shaking で必要なコードが削除されていないか
- 環境による動作の違い
デバッグ手法2: 間欠的なバグ
再現が難しいバグの調査方法:
ログを強化
この処理の全ステップでログを出力するようにして。
- 入力値
- 中間状態
- 出力値
- 処理時間
本番でもログが残るように、loggerを使って。
状態の記録
この処理で問題が起きた時に、以下を記録するようにして:
- リクエスト全体
- ユーザーの状態
- 直前の操作履歴
再現条件の特定
このバグが起きる条件を推測して:
- 特定のユーザーだけ?
- 特定の時間帯?
- 特定のデータパターン?
- 同時アクセス時?
デバッグ手法3: パフォーマンス問題
問題の計測
このページのパフォーマンスを分析したい。
計測したい項目:
- 初期ロード時間
- API応答時間
- レンダリング時間
- メモリ使用量
計測コードを追加して。
ボトルネックの特定
このAPIが遅い原因を調査して。
考えられる原因:
- DBクエリが重い
- N+1問題
- 不要なデータの取得
- 同期処理のブロッキング
改善の実施
特定したボトルネックを改善して:
- クエリの最適化
- インデックスの追加
- キャッシュの導入
- 非同期処理への変更
デバッグ手法4: 複合的な問題
複数の原因が絡み合っている場合:
問題の分解
この問題を小さな単位に分解して調査したい。
症状: ユーザー登録後にメールが届かないことがある
分解:
1. 登録処理自体は成功しているか?
2. メール送信のトリガーは発火しているか?
3. メールサービスへのリクエストは送られているか?
4. メールサービスからのレスポンスは正常か?
5. 迷惑メールに入っていないか?
各ステップを個別に調査して。
仮説検証
以下の仮説を検証したい:
「同時に複数ユーザーが登録すると、メールキューが詰まる」
この仮説を検証するためのテストを書いて。
Subagentを使った調査
大規模な調査はSubagentに任せる:
Subagentを使って、以下を調査して:
1. このエラーが発生した時のスタックトレースを全て収集
2. 関連するログを時系列で整理
3. 同様のエラーが過去にも発生していないか確認
メインのコンテキストを汚さずに、深い調査ができます。
デバッグツールの活用
ログ分析
この期間のエラーログを分析して:
- エラーの種類別に集計
- 発生頻度の傾向
- 共通する条件
プロファイリング
このメソッドのプロファイリングを設定して。
CPU使用率とメモリ使用量を計測したい。
トレーシング
このリクエストの処理を追跡できるようにして。
分散トレーシング(OpenTelemetry)を導入。
難しいバグへのアプローチ
1. 仮説を立てる
このバグの原因として考えられる仮説を5つ挙げて。
それぞれの検証方法も教えて。
2. 切り分ける
問題を切り分けたい。
以下のどこで問題が起きているか特定して:
- フロントエンド
- APIサーバー
- データベース
- 外部サービス
3. 最小再現ケースを作る
このバグを再現する最小限のコードを作って。
本番環境の複雑さを排除して、核心部分だけ残して。
4. バイナリサーチ
git bisectを使って、バグが混入したコミットを特定して。
予防的デバッグ
問題が起きる前の対策:
エラー監視の設定
Sentryなどのエラー監視を設定して。
- 自動でエラーを収集
- スタックトレースを保存
- アラートを設定
ヘルスチェックの実装
各サービスのヘルスチェックエンドポイントを作って。
- DBへの接続確認
- 外部サービスへの疎通確認
- キューの状態確認
次のステップ
デバッグ上級編をマスターしました!
次は、Claude Codeの応用機能「Subagent」について学びましょう。
まとめ
- 本番のみの問題 → 環境差異を徹底調査
- 間欠的バグ → ログ強化で再現条件を特定
- パフォーマンス問題 → 計測→ボトルネック特定→改善
- 複合的問題 → 問題を分解して個別に調査
- Subagentで大規模調査
- 予防的に監視・ヘルスチェックを設定
参考文献・引用元
- [1]Claude Code Best Practices- Anthropic