エラー対応とデバッグ
概要
エラーが発生したとき、AIを活用することで効率的に解決できます。ただし、エラーメッセージをAIに丸投げするのは危険なアプローチです。原因を理解しながらAIと協調してデバッグする技法を解説します。
避けるべきアプローチ
❌ エラー丸投げ(アンチパターン)
エラーが出ました。直してください。
TypeError: Cannot read property 'map' of undefined
問題点:
- 原因を理解しないまま「修正」されるため、同じ問題が再発する
- AIの修正が別の問題を引き起こす可能性がある
- 学習機会を逃す
- 根本原因ではなく表面的な対処になりがち
推奨アプローチ
ステップ1: 自分でエラーを分析する
AIに依頼する前に、まず自分でエラーを分析します。
- エラーメッセージを読む(何が起きているか)
- スタックトレースを確認(どこで起きているか)
- 関連するコードを確認
- 仮説を立てる(なぜ起きているか)
ステップ2: 具体的な質問をAIにする
丸投げではなく、具体的な質問をします。
✓ 良い質問の例
以下のエラーについて質問です。
【エラー】
TypeError: Cannot read property 'map' of undefined
at UserList (UserList.jsx:15)
【関連コード】
function UserList({ users }) {
return users.map(user =>
{user.name}
);
}
【私の分析】
- usersがundefinedの状態でmapが呼ばれている
- 親コンポーネントからの props 渡しに問題がある可能性
【質問】
1. この分析は正しいですか?
2. デフォルト値を設定する方法と、
条件付きレンダリングの方法、
どちらが適切ですか?ステップ3: 原因を理解してから修正する
AIの説明を理解した上で、修正を適用します。
- なぜそのエラーが起きたか理解する
- 修正の内容を理解する
- 同様の問題を今後防ぐ方法を学ぶ
効果的なエラー報告テンプレート
【エラーメッセージ】
[完全なエラーメッセージを貼り付け]
【発生箇所】
[ファイル名、行番号、関数名]
【関連コード】
```
[問題が発生しているコード]
```
【再現手順】
1. [手順1]
2. [手順2]
3. エラー発生
【環境】
- 言語/ランタイム: [バージョン]
- フレームワーク: [バージョン]
- OS: [OS名]
【私の分析・仮説】
[自分なりの原因の予想]
【試したこと】
- [試したこと1]
- [試したこと2]
【質問】
[具体的に知りたいこと]
よくあるエラーと対応パターン
Null/Undefined エラー
典型例: Cannot read property 'x' of undefined
確認ポイント:
- 変数が初期化されているか
- 非同期処理の完了前にアクセスしていないか
- オプショナルチェーン(?.)を使うべきか
型エラー
典型例: TypeError: x is not a function
確認ポイント:
- importが正しいか
- 変数の型が期待通りか
- オブジェクトとモジュールの混同がないか
非同期関連エラー
典型例: Unhandled Promise rejection
確認ポイント:
- await/asyncが正しく使われているか
- try-catchでエラーハンドリングしているか
- Promiseチェーンが正しいか
デバッグの際の注意点
- 修正後は必ずテスト:AIの修正が正しいとは限らない
- 1つずつ修正:複数の修正を同時に適用すると、何が効いたかわからなくなる
- 根本原因を追求:表面的な対処ではなく、なぜそのエラーが起きたかを理解する
- 学習を意識:同じエラーを繰り返さないよう、原因と対策を記憶する
参考文献
- Simon Willison blog posts on AI-assisted debugging (2025)
- Stack Overflow Developer Survey 2025
次へ
→ 検証と責任