1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

image.png

🧠 AI Codingとテスト

AIコーディングにおいて、AIはテストをちゃんと書いてくれるのか。まだ正直よく分かっていない。頼めば書いてくれる雰囲気はあるが、テストが存在しないプロジェクトでは、自発的に書くことは少ない気がする。一方で、テストが充実しているプロジェクトだと、特に指示しなくても書いてくれることもある。「テストを書いてほしい」という前提条件を明示すれば対応率は上がるが、その前提すらスルーされることもある(最近は t_wata というキーワードを入れると、書いてくれる確率が上がるという話もあるw)。「そもそもテストを書くべきか?」という問いには、「書くべき」だとは思っている(本当に書けているかは強く言えないw)。ただ、ここで考えたいのは、「AIコーディングにおいてもテストを書くべきか?」という新しい問い。そしてこれについては、そうあるべきだと感じた体験がある。

🤖 AIコーディングでテストを書くべき理由

AIにテストを書かせるべきだと思ったきっかけは、AIコーディングを始めた初期の体験だ。Agentモードも使っていなかった頃、AIにコードを質問して、出力されたコードをコピペして動かすという開発スタイルだった。その中で、特定の実装をAIに頼んだが、うまくいかなかった。人間がやれば「数日くらいかかるかも。うまくいけば1日でできるかも」くらいのタスクだった。UI自体はすぐにできた。ボタンを押すと動作もする。しかし、挙動が明らかにおかしい。5回ほどやり取りしても状況は改善せず、コードをすべて捨てて再構築しても結果は同じ。それを3回くらい繰り返して、「このやり方では無理だ」と判断した。

🧪 テストを書いたら一発で通った

そこで方針を変更。自分で書こうと決めたが、その準備として、ロジック部分を切り出してテストを書いてくれとAIに依頼した。すると、UIと分離されたモデル部分に対して、テストコードをしっかり書いてくれた。実行してみると、一発ですべてのテストが通った。そのままUIと統合して再実行してみたところ、なんと今まで何度も失敗していた処理が、完璧に動作した。つまり、UIベースでは何度やってもうまくいかなかったことが、テストベースに切り替えた途端、あっさり成功したのだ。

🎯 なぜうまくいったのか?

UIありきでアルゴリズムを考えるのは、人間でも難しい。つまり、AIにとっても難しい可能性が高い。UIはエラーがないように見えても、期待通りかどうかは人間の主観的判断に依存する。仕様書が完璧に定義されていない限り、エラーは「期待外れ」という結果でしか判断できない。一方で、テストは成功条件が明確。成功か失敗かが即座に分かる。明確なゴールがある状態は、AIにとっても扱いやすい。さらに、ロジックを切り出してテスト可能にすることで、コード構造自体も整理される。UIを含めたあいまいな状態でAIに設計させても失敗する可能性は高いが、テストという明確な評価軸があるだけで、コードの質は上がる。これは人間も同じ。

✅ AIにもテストを書いてもらった方が良い。

それ以降、AIコーディングでも意識的にテストを書いてもらうようにしている。最近では、こちらから明示しなくてもAIがテストを書いてくれることもある。ただ、ミスが完全に減ったというほどの変化はまだ体感していない。失敗するケースは今でも多い。とはいえ、人間と同じで、AIも構造化された環境のほうが力を発揮する。だからこそ、AIにも積極的にテストを書かせるべきだと思っている。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?