コード生成AIに任せきりにしない姿勢を大事にしたい

に公開

同僚が、「AIが作ったコードはレビュアーの負担が増えているような気がする」と話していました。その理由が何なのかまでは、私にははっきりとはわかりませんが、その言葉が自分の過去の経験を思い出すきっかけになりました。

最近、AIを使ってコードを書く場面が増えてきました。とても便利で、ちょっとした処理ならすぐにコードを出してくれます。

私自身も、以前AIにテストコードを作ってもらったことがあります。そのときは、ぱっと見てよさそうに思えたので、そのまま使いました。でもしばらく経ってから見返したときに、なぜそう書いたのか、自分でもよくわからなくなっていました。未来の自分がそうだったということは、当時そのコードを読んだレビュアーも、同じように理解しにくかったかもしれません。

今思えば、コードに対する責任感が少し足りなかったように感じます。そしてそれは、レビューしてくれる人への思いやりも、どこか欠けていたとも思います。自分さえ納得できればいいという無意識の甘えがあったように思います。

『プログラマが知るべき97のこと』の中に、こんな一節があります。

コードを書く間は、完全に没頭し、「禅の境地」のようになっているのかもしれません。そうすれば、コードの質は間違いなく上がるので、私自身もそういう状態で仕事をしていることはあります。しかし、その仕事の成果が本当に開発チームのためになっているのか、ということは常に意識していなくてはならないでしょう。
— 『プログラマが知るべき97のこと』より 他者への思いやりを意識したコーディング

AIを使うことで、コードの見た目の質は上がるかもしれません。でも、それはここでいう「禅の境地」とは違って、ただ機械的に生成されたものです。その上、思いやりまで失っていたのだとしたら、それは私にとってはとても不幸なことだったと思います。

将来的には、AIが常に人間よりも優れたコードを書けるようになり、人が完全に手を加えなくてもいいような時代が来る可能性は十分あると思います。でも、少なくとも今は、まだそこには至っていないはずです。

コードの背景には、プロダクトの状況やチームの事情、細かな設計の判断など、AIにはわからない情報がたくさんあります。それを踏まえて判断し責任を持つのは人間の役割です。

だからこそ、AIに任せきりにしないという姿勢を強く意識することが大事だと思います。提案してもらったコードをよく読んで、自分で考えて、必要があれば書き直す。そういうプロセスが、結果として他の人の理解を助けることにもつながります。

こうしたチームやプロダクトにとっての最適で最善なコードを作るために思考をめぐらし形にすることが、プログラマーとしての矜持であると私は思っています。そして、少なくとも、今の時点ではそれを手放すにはまだ早いと感じています。

AIはありがたい存在ですが、どこまでをAIに任せてよいのか、どこからは自分が責任を持つべきなのか。その境界を意識しながら向き合うことが、私には求められていることのように思います。

Discussion