CursorでもClaudeCodeでも、AIに不具合の原因を調査してもらうことが多いです。
当然ながら一撃で回答をしてくれることもあれば、無限ループに陥ることもあります。
イライラさせられることも、歓喜させられることも多いですが、繰り返していくうちに、AIが精度の高い回答をしてくれるケースの共通パターンが見えました。
①不具合が発生しているソースファイルがわかっている
AIエージェントであればレポジトリ内を捜索してくれますが、該当のソースファイルが分かっているかどうかで精度は全く違います。
できればメソッド単位で指定をして、調べさせることができれば強いです。
ただこれはもろ刃の剣で、範囲を狭めれば狭めるほど、そこに原因がなかった場合に遠回りになるので、少し広めに指定するのもアリです。
無限ループに入ったと思ったらウィンドウを作り直して、範囲を切りなおすのもおすすめです。
②前提条件を含めて再現手順が明示できる
これは人間相手にバグの再現手順を伝えるときと同じです。
「~というエラー画面が表示されます。」
ではなく
「~というデータが登録された状態で、操作A,B,Cをすると~というエラー画面が発生します。」
と言えるとかなり強いです。
ただ一方で、再現手順が最初から分かるなら苦労しないという話でもあると思うので、調査をしながら膨らましていく部分かと思います。
③正常に動作するケースも言語化して提示することができる
不具合が発生するケースだけではなく、正常に動作するケースを見つけることができれば大分AIの精度が上がります。
AIは差分を見つけるのが得意なので、正常に行く場合と不具合が発生する場合で比較をさせると一気に解決に近づくことが多いです。そのとき、正常に動作するコードも渡せればかなり強力です。
④その機能(システム)の仕様を言語化できる
「そもそもなんのための機能なのか?」
というところが言語化できないと結構きついです。
正解の仕様をAIはそもそも知らないことも多いですから、ここは手を抜かないようにしたいです。
AIが迷走し始めたら、背景知識や期待する結果を整理してもう一度教えなおしましょう。
「AIが知らないことは何か?」という視点があるといいですね。
⑤発生時のログを提示できる
これも当然ではありますが、ログは重要です。
事前にログを仕込むのも重要ですが、AIに「どこにログを仕込めば原因わかりそう?」と聞くのが手っ取り早いです。
最近は賢いので、特に聞かなくても勝手にログを仕込みまくるんですが。。
⑥高速トライ&エラーできる環境がある
一撃でAIに答えさせようとするのは厳しいです(今やそんな期待をしてる人はいないかもですが)。
トライ&エラーが前提となるので、高速でFBサイクルを回せる状態をいかに作れるかがキーポイントになります。手元で試せる環境がない状態だと急激に解決が遠くなります。
⑦仮説があるが、執着はしないでいられる
不具合調査をする時は仮説が重要ですが、それが固定観念になることもあります。
AIと壁打ちしながら筋が悪そうだと感じたら躊躇なく捨てるのが良いと思います。
「ここまでわかるならAIに聞かなくても分かるよ。。」と思ったあなた
以上が7つの条件です。
「ここに書いてある条件を満たせるならそもそもAIに聞くまでもないのでは?」
「ここに書いてあることを発見することが難しいのであって~」
という指摘は当然あるかもしれません。
まあ、正直それはそうです。ここまでできるのであればAIの力を借りる前に原因が分かっていたり、ここに来るまでにとても長い時間を使うこともあるかもしれません。
ただ、漠然と不具合調査をするのではなく、ここに書いてあることを満たせるように計画的に不具合調査を進めるのが重要なんだと思います。
手当たり次第にソースをガチャガチャ触る状況が一番よくないです。
まとめ
書いてて思いましたが、AIというか不具合調査のハウツーみたいな記事になりました。
ただやはりデバッグに限らずよく思うのは、AIについて学べば学ぶほど、結局AIは人間と似ている思考回路をしているということです。
AIへの指示をブラッシュアップさせながら、それを人間の思考にもFBしたいですね。