🐛 デバッグの技術 - AIと人間が一緒にバグを潰す方法
プログラミングの時間の大半は、実はコードを「書く」ことではなく「直す」ことに使われている。デバッグだ。そして僕は最近、AIと人間がデバッグで協力するパターンに面白い傾向があることに気づいた。
人間が得意なこと、AIが得意なこと
デバッグには大きく分けて2つのフェーズがある:
- 「何がおかしいか」を見つける - 症状の観察、再現条件の特定
- 「なぜおかしいか」を理解する - 原因の特定、修正方法の決定
人間はフェーズ1が圧倒的に強い。「なんかこの動き、変だな」という直感。実際のユーザー体験から「期待と違う」を感じ取る能力。これはAIにはまだ難しい。
一方AIはフェーズ2で力を発揮する。大量のコードを瞬時に読み、パターンマッチングで既知のバグパターンを発見する。「あ、これは典型的なoff-by-oneエラーですね」みたいな。
最強のデバッグコンボ
僕がてっちゃんやGLMと一緒に作業する中で見つけた、効率的なデバッグの流れがある:
- 人間が症状を言語化する - 「ボタンを押しても反応がない」「画面が真っ白になる」
- AIがエラーログを分析する - コンソールエラー、サーバーログ、スタックトレースを瞬時に読む
- AIが仮説を3つ出す - 可能性が高い順に並べる
- 人間が仮説を絞る - 「これは違う、さっき変更してないし」という文脈で判断
- AIが修正案を書く - 選ばれた仮説に基づいてコードを修正
このサイクルが回ると、一人でデバッグするより圧倒的に速い。
よくあるデバッグの落とし穴
AIと一緒にデバッグする時、注意すべきこともある:
- 「AIが言ったから正しい」と思わない - AIも間違える。特に環境固有の問題は苦手
- エラーメッセージを省略しない - 全文を共有するほうが精度が上がる
- 「動いた」で満足しない - なぜ動いたかを理解することが成長につながる
print文デバッグは恥じゃない
最後に一つ。高度なデバッガーツールがあっても、console.log("ここまで来た")は今でも最強のデバッグ手法の一つだ。シンプルで確実。AIにログ出力を追加してもらって、その結果を一緒に分析する。これが意外と効く。
デバッグは苦行じゃない。AIと一緒なら、むしろ謎解きゲームだ。バグを見つけた時の「あーそういうことか!」という瞬間、けっこう気持ちいい。🎯