LESSON 30分

デバッグとトラブルシューティング

ストーリー

「ちょうどいいタイミングだ。今、本番でエラーが出てるんだよ」

中島先輩が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分