デバッグとトラブルシューティング
ストーリー
「ちょうどいいタイミングだ。今、本番でエラーが出てるんだよ」
中島先輩がSlackの通知を見せた。エラーログが流れている。
「え、大丈夫ですか?」
「大丈夫。軽微なバグだ。でもせっかくだから、AIを使ってデバッグする実演をしてやるよ。 見ててくれ、AIに聞けば原因特定が圧倒的に速い」
AIデバッグの基本フロー
[1. エラー情報を収集]
- エラーメッセージ全文
- スタックトレース
- 関連するコード
- 再現手順
↓
[2. AIに分析を依頼]
- コンテキスト付きでプロンプトを投げる
↓
[3. AIの回答を検証]
- 提案された原因が妥当か確認
- 修正案を理解してから適用
↓
[4. 修正を実施・テスト]
- 修正後に必ずテストする
デバッグ用プロンプトテンプレート
テンプレート: エラー解決
以下のエラーの原因と修正方法を教えてください。
## 環境
- Node.js: 20.10
- TypeScript: 5.3
- フレームワーク: Express 4.18
- OS: Ubuntu 22.04
## エラーメッセージ
[エラーメッセージ全文を貼り付け]
## スタックトレース
[スタックトレースを貼り付け]
## 関連コード
[エラーが発生しているファイルのコードを貼り付け]
## 再現手順
1. [手順1]
2. [手順2]
3. [エラーが発生する操作]
## 既に試したこと
- [試した対策1]
- [試した対策2]
エラー種別ごとのデバッグ戦略
1. ランタイムエラー
プロンプト例:
以下のTypeScript/Node.jsコードで実行時にエラーが発生します。
ステップバイステップで原因を分析してください。
エラー:
TypeError: Cannot read properties of undefined (reading 'name')
at processUser (/app/src/services/user.ts:25:30)
at async /app/src/routes/users.ts:15:20
コード (user.ts):
[コードを貼り付け]
コード (users.ts):
[コードを貼り付け]
分析ステップ:
1. スタックトレースからエラー発生箇所を特定
2. その行で何がundefinedになり得るか推測
3. データフローを上流にたどって根本原因を特定
4. 修正案を提示
2. 型エラー
プロンプト例:
TypeScriptのコンパイルエラーが解決できません。
エラー:
Type 'string | undefined' is not assignable to type 'string'.
Type 'undefined' is not assignable to type 'string'.
コード:
[エラーが発生しているコードを貼り付け]
tsconfig.json の strict 関連設定:
- strict: true
- strictNullChecks: true
解決策を3パターン提案してください。
それぞれのメリット・デメリットも教えてください。
3. パフォーマンス問題
プロンプト例:
以下のAPIエンドポイントのレスポンスが遅い(平均5秒)です。
ボトルネックを特定し、改善案を提案してください。
分析観点:
1. N+1クエリの有無
2. 不要なデータの取得
3. インデックスの不足
4. 非効率なロジック
5. キャッシュ可能な処理
[コードを貼り付け]
4. 環境依存の問題
プロンプト例:
ローカルでは動くのに、本番環境で以下のエラーが発生します。
ローカル環境:
- Node.js 20.10
- macOS 14
- PostgreSQL 16 (Docker)
本番環境:
- Node.js 20.8
- Ubuntu 22.04
- PostgreSQL 15 (RDS)
エラー:
[エラーメッセージ]
環境の違いに起因する原因として何が考えられますか?
デバッグ時の注意点
AIに送る前の情報のサニタイズ
送信前チェックリスト:
□ APIキーやパスワードが含まれていないか
□ 顧客の個人情報が含まれていないか
□ データベースの接続文字列が含まれていないか
サニタイズ例:
NG: const db = connect("postgres://admin:P@ss@prod-db.company.com/myapp")
OK: const db = connect("postgres://USER:PASS@HOST/DB")
AIの回答を鵜呑みにしない
AIの修正案を受け取ったら:
1. 修正の意図を理解する(なぜこの修正で直るのか)
2. 副作用がないか確認する
3. テストで動作確認する
4. 根本原因が本当に解決されたか検証する
まとめ
| ポイント | 内容 |
|---|---|
| 基本フロー | 情報収集 → AI分析 → 検証 → 修正・テスト |
| 効果的な情報提供 | 環境、エラー全文、コード、再現手順をセットで |
| 注意点 | 機密情報のサニタイズ、AIの回答は必ず検証 |
| エラー種別 | ランタイム、型、パフォーマンス、環境依存で戦略が異なる |
チェックリスト
- デバッグ用プロンプトテンプレートを使える
- エラー種別ごとの分析アプローチを理解した
- AIに送る情報のサニタイズ方法を理解した
- 実際にエラーをAIに分析させてみた
次のステップへ
デバッグの次は、学習とリサーチの加速です。 新しい技術の習得やベストプラクティスの調査にAIを活用する方法を学びます。
推定読了時間: 30分