Claude Code でデバッグする方法|エラー解決を10倍速に
なぜClaude Codeでデバッグが速くなるのか
デバッグは開発時間の大部分を占める作業です。エラーメッセージの解読、原因箇所の特定、修正方法の検討、修正後の検証。これらのステップをClaude Codeは大幅に効率化します。
Claude Codeがデバッグに強い理由は3つあります。
- コードベース全体を把握できる - 関連するファイルを横断的に調査し、問題の根本原因を特定できる
- エラーメッセージの豊富な知識 - 膨大なエラーパターンの知識を持っており、解決策を即座に提案できる
- 修正と検証を一貫して行える - 問題の特定から修正、テスト実行まで一連の流れで対応できる
Claude Codeの基本操作を理解している前提で、デバッグテクニックを紹介します。
基本テクニック: エラーをそのまま渡す
最もシンプルで効果的な方法は、エラーメッセージをそのままClaude Codeに渡すことです。
パイプで直接渡す
npm run build 2>&1 | claude "このエラーを修正して"
npx vitest run 2>&1 | claude "テストの失敗原因を分析して修正して"
対話モードで渡す
> 以下のエラーが出ています。原因を調査して修正してください。
TypeError: Cannot read properties of undefined (reading 'map')
at TaskList (src/components/TaskList.tsx:15:23)
at renderWithHooks (node_modules/react-dom/...)
Claude Codeはスタックトレースを読み解き、該当ファイルを開いて原因を特定し、修正を提案します。
スタックトレースの分析
React/Next.js のエラー
React関連のエラーは、コンポーネントの階層を理解する必要があります。
> このスタックトレースを分析して、根本原因を特定してください。
関連するコンポーネントのコードも確認してください。
Unhandled Runtime Error
Error: Hydration failed because the initial UI does not match what was rendered on the server.
at throwOnHydrationMismatch (react-dom.development.js:12345)
at tryToClaimNextHydratableInstance (react-dom.development.js:12390)
Claude Codeはハイドレーションエラーの一般的な原因(Date.now()の使用、typeof windowの分岐漏れなど)を理解しており、該当箇所を特定します。
Node.js のエラー
> このNode.jsのエラーを修正してください。
Error: ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
型エラーのデバッグ
TypeScriptの型エラーは、Claude Codeが最も得意とする分野の一つです。
> 以下のTypeScriptエラーを修正してください。
Type 'string | undefined' is not assignable to type 'string'.
Type 'undefined' is not assignable to type 'string'.
at src/utils/parser.ts:42:5
効果的な指示の出し方
> src/utils/parser.ts の42行目の型エラーを修正して。
ただし、型アサーション(as)は使わないで、
適切な型ガードかnullチェックで対応して。
このように、修正方針も合わせて指示すると、より質の高い修正が得られます。
パフォーマンスの問題を特定する
React の再レンダリング問題
> このコンポーネントが頻繁に再レンダリングされています。
原因を調査して最適化してください。
React DevToolsのプロファイラーの結果:
- TaskList: 42回レンダリング(1秒間)
- TaskCard: 168回レンダリング(1秒間)
Claude Codeは useMemo、useCallback、React.memo の適切な使用箇所を特定し、最適化を提案します。
データベースクエリの最適化
> このAPIエンドポイントのレスポンスが遅い(3秒以上)。
Prismaのクエリを確認して最適化してください。
app/api/tasks/route.ts を確認して。
N+1クエリの検出と include / select による最適化をClaude Codeが行います。
デバッグのワークフロー
ステップ1: 問題の再現
> このバグを再現する手順を教えてください。
報告: 「タスクを作成した後、一覧に表示されない」
ステップ2: 原因の絞り込み
> タスク作成のフローを追跡してください。
1. フォーム送信
2. APIリクエスト
3. データベース保存
4. レスポンス
5. 画面更新
どの段階で問題が起きているか特定して。
ステップ3: 修正と検証
> 原因がわかったので修正してください。
修正後、関連するテストも追加してください。
デバッグ用のカスタムコマンド
チームでよく使うデバッグ手順をカスタムコマンドにしておくと便利です。
<!-- .claude/commands/debug.md -->
以下のエラーをデバッグしてください。
手順:
1. エラーメッセージとスタックトレースを分析
2. 関連するソースコードを確認
3. 根本原因を特定して説明
4. 修正を実施
5. 修正が正しいことを確認するテストを追加
6. 既存のテストが通ることを確認(npm run test)
エラー情報: $ARGUMENTS
ログベースのデバッグ
本番環境のバグ調査では、ログの分析が重要です。
# サーバーログをClaude Codeに分析させる
cat /var/log/app/error.log | tail -100 | claude "このログからエラーパターンを分析して、根本原因を特定して"
よくあるエラーパターンと対処法
1. モジュールが見つからない
Module not found: Can't resolve '@/components/Button'
パスエイリアスの設定(tsconfig.json)とファイルの存在確認をClaude Codeが行います。
2. 環境変数の未設定
Error: Missing required environment variable: DATABASE_URL
.env.example と .env の差分を確認し、不足している変数を特定します。
3. バージョン不整合
npm ERR! peer dep missing: react@^18.0.0, required by some-package@1.0.0
依存関係の整合性をチェックし、適切なバージョンを提案します。
CLAUDE.mdにデバッグ情報を記載する
プロジェクト固有のデバッグノウハウをCLAUDE.mdに記載しておくと、Claude Codeがそれを参考にデバッグを行います。
## よくある問題と対処法
- Prismaのマイグレーションエラー: `npx prisma migrate reset` で解決
- ポート3000が使用中: `lsof -i :3000` で確認して `kill` する
- HMRが効かない: `.next/` を削除して再起動
まとめ
Claude Codeを使ったデバッグは、エラーメッセージをそのまま渡すことから始めましょう。スタックトレースの分析、原因の特定、修正、検証までを一貫して行えるのがClaude Codeの強みです。リファクタリングと組み合わせることで、バグの修正と同時にコード品質の改善も行えます。