AIが書いたコードに、自分は何を問えるか

· Updated:

6月に「実装が速くなるほど、理解の価値は上がる」という記事を書いた。そのあと「AIに何を教えるべきか」で、AIに渡すのは知識と問いなんじゃないか、と考えていた。 最近になって、この二つが自分の中で少しつながってきた。

AIに細かいルールをたくさん与えるより、その背景にある知識を渡したほうがいい。「indexをkeyに使わない」みたいなルールだけではなくて、なぜそうするのかを伝える。さらに、知識を渡すだけではなく、「この要素のidentityは何だろう?」「この責務はここでいいんだろうか?」みたいな「問い」も大事なんじゃないか、と。 ルールは品質を安定させる。知識は判断を支える。問いは、その知識を引き出す。当時はそんなふうに考えていた。

それから3か月くらい、かなりAIと一緒にコードを書いた。設計を相談して、そのまま実装してもらって、レビューして、また直してもらう。便利だし、速い。 ただ、AIが書いたコードを見て「なるほど、これでよさそう」と思っているけど、本当に自分はこのコードを理解しているんだろうか、と思うことが増えた。AIに良いコードを書いてもらうことと、自分がそのコードを理解することは、たぶん別なんだと思う。

最近、Rustを勉強しながら小さなツールを書いている。 たとえば、ある関数が「入力はソート済み」という前提で動いていた。コードとしては正しく動いている。でも、なぜソート済みである必要があるんだろう。誰がそれを保証するんだろう。前提が崩れたらどうなるんだろう。コメントだけでいいのか。debug_assert! くらい入れたほうがいいのか。それとも型で表現するのか。

こうやって一度立ち止まると、AIが書いたコードが少しずつ自分の言葉になっていく感じがする。 以前の記事では「AIに何を問わせれば、より良いコードを書けるか」を考えていた。今は「AIが書いたコードに、自分は何を問えるか」を考えている。 前に書いたことが間違っていたとは思っていない。ただ、それだけでは足りなかった。

最近は、要件や設計をAIと一緒に考えて、実装は一度自分で軽く書き、AIにレビューしてもらうくらいが自分には合っているのかもしれない。もちろん、AIに実装してもらうこともある。どちらが書いたかは、そんなに重要じゃない。 最終的に「なんでこうなっているの?」と聞かれたときに、自分の言葉で答えられるか。 書いてみると、ずいぶん当たり前の話をしている気もする。でも、AIがかなりのところまでコードを書いてくれるようになって、この当たり前を意識することが以前より難しくなった。

AIに何を教えるかを考えていたら、いつの間にか、自分が何を問えるかを考えるようになっていた。

← Back to posts