生成AIによるコーディングに対する今の自分の立場を整理
Published:
自分はコーディングにおいて生成AIを上手に使いこなせている自信がない。 最近はコーディングエージェントが相当強力になっているはずで、うまく使えば現実的な金銭的コストで研究を加速させることができるように思う。 一方でひたすら生成AIに頼ることに対する葛藤もまだ残っている。 そこで、生成AIに頼るべき場面とそうでない場面を区別する指針を自分の中で明確にすることを念頭に、生成AIに頼りたくない理由について今思いつくことを書き留めておく。
(1) 自身のコーディングスキルの不十分さ。 生成AIの実装は当然鵜呑みにしてはいけず、自分でレビューをする必要がある。 これはソフトウェアエンジニアの現場の仕事とパラレルに考えることができる。 すなわち、ジュニアエンジニアが書いた実装をシニアがレビューすることで、実装の質を担保することが不可欠である。 生成AIはジュニアエンジニアとしては優秀過ぎるが、それでもやはりシニアエンジニアの視点で見ると課題があるようだ。 実際、自分より明らかに実装能力の高い人たちから何度か話を聞いたところ、少なくとも現在の生成AIの実装は冗長過ぎたり、どこか癖があったりして、結局人手の介入がそれなりに入るとのことだ。 重要なのは、このような判断ができるためには、結局自分自身がシニアエンジニアでなくてはならないということである。 結局のところある程度自力でコードを書く経験を積んでおかないと、コードリーディングもとても遅いし、問題点を適切に察知することもできない。 自分は研究の上でそれなりにコーディングしてきたとは思うが、もっぱらモデル分析や評価に関わる研究が多く、特にモデリング周りは自力で実装したことがないため、十分に勘が働くとは言えない。 もちろんそれほど複雑なことをしていないのであればひとまず動いたからと放置してもある程度のことは出来てしまうだろう。 しかし、実験の結果に影響を与えるような大きなミスが紛れ込む可能性も否定は出来ない。 それは完全に生成AIを使った本人の責任である。
一方で、もはや生成AIは人間が達することのできる領域などとうに超えており、人間にとっての「正しさ」や「良さ」など担保する必要はない、という見方もあるかもしれない。 そうすると、人間に残された仕事はとにかくテストを充実させて入出力の正しさを担保すること、だろうか。 いや、それも生成AIである程度できるような気がする。 そうなると、人間の仕事は仕様を作ることだけになるだろうか? 結局のところ、自分はまだこの主張を正当に評価するだけの力量がない、ということに終始するようにも思われる。
(2) 自然言語で書くよりも自分で書いた方が速い、あるいは自然言語で書く意味が薄いようなタスクも存在する。 自明な例として、例えばコードに対して小さな変更を施したい場合にはわざわざ自然言語で表現するより自力で書き換えた方が速い。 これを実現するには結局人間が実装を把握している必要があるので、ここでも(1)の観点が重要になる。 また、コンフィグや実行パイプラインを定義したいような場合も、自然言語で書いても構造化された言語で書いてもやっていることはほぼ同じである。 ただしこれが成り立つためには、人間が python のクラス定義の方法や Makefile の書き方を知っている必要がある。 もはやこれらの知識などもう不要で、全部自然言語で済ませれば良いという見方もあるのかもしれない。 しかし、少なくともこれらに習熟した人たちに取ってみれば、そんな作業にわざわざ自然言語を介入させるのは馬鹿らしいことではないかと思う。
ということで、現時点の自分が最も納得できる生成AIとの関わり方は、く経験のない実装は出来る限り自分でも書いて最低限レビューできる能力を身につける(1)、そしてその結果として自力で高速にできる部分も増やしていく(2)、とまとめられる。 今のコーディングエージェントの能力を正確に理解できている人々からすれば馬鹿らしい戦略なのかもしれない。 だが、残念ながら今の自分にはコーディングエージェントの能力を正確に理解し評価するだけの力量が無いと思う。 この戦略が結果的に健全な自己改善に繋がることを信じている。
