AI開発は全部AIにやらせる方がよさそう
- #Product Development
- #Generative AI
AIを使って開発をする流れが、本格的に馴染んできたなと最近よく思います。
私は、ソフトウェア開発をするようになって10年くらいになります(学生時代を含めて)。
もちろん手でコードを書いていた時代の方が圧倒的に長いわけですが、ここ半年くらいはほとんど手作業でのコーディングをしていないと思います。
自然言語でAIに指示を与えて、AIによりよくコーディングしてもらうために奔走している、というわけです。
おそらく、Web界隈は多くの開発現場でこのような感じになっているのではないかと思います。
AIを利用して開発をどんどん進めていくことに、私は大賛成の立場です。 おそらくあと数ヶ月もすれば、自分の手でコードを書くこともできなくなってくるかもしれないなと思うこともあります。 それでも私の賛成の立場は揺るぎないです。
AIで開発を進めていくときに、多くの人が考えるのは人間とAIの境界だと思います。 例えば、レビューはどこまですれば良いのかということは誰しも一度は考えていることでしょう。
変数名レベルまでチェックするのか、アーキテクチャレベルくらいなのか、それともノーレビューでブラックボックス的なテストだけを実施するのか。 はたまたAIにレビューさせてOKとするのか、などです。AIと人間の責任や作業の境界をどこで線引きするのが良いかは、昨今の課題の中でもとりわけ重要なものだと感じます。
参考までに私がどのような感じで捉えているか書いてみましょう。
AIと一緒にコーディングをし始めたときは、変数名レベルまで厳しくチェックしていました。 アーキテクチャは自分で考えていましたし、それを自然言語にしてAIには「本当の意味での実装」のみを委任していました。
しかし、この方法はとても効率が悪いです。そして見違えるほどにAIの性能が高くなってきています。 AIを利用するための環境整備も進んできたこともあって、変数名レベルでのチェックは最近は全くしていません。
実装方法もあまりAIに対して口出しすることはなくなってきたなと感じます。 (まあ、アーキテクチャをしっかり決めてしまうと、自由度はそこまで生まれないということもあると思いますが。)
では、最近はどれくらいレビューをしているのかというと、感覚的には自然言語を読むようにレビューしているなと感じます。
考えてみると、日本語の文章を読むとき、一字一句を意識して読んでいるわけではないのでは、と思うことがあります。 感覚的には、「文章の形」を読んでいるという感覚です。 プログラムも、そんな感覚でレビューを行っています。
複雑な関数はしっかり読み解くことはありますが、多くのシステムにおいて大多数は定型的なプログラムの記述なのではないかと思います。 なので、「プログラムの形」を読むと大体の処理がなんとなくわかって、「ここでこういう処理をしているから問題なさそうだな」と判断する感じです。 最近のレビューはこんな感じになってきました。
そして、このような感じで進めていくとコードの全体像は輪郭だけが見えて、詳細が見えなくなってきます。
過去に手でプログラムを書いていたときは、頭の中に自分が書いたコードのキャッシュが残っているので、いざバグを見たときに「ピンと来る」ことがありました。 しかし、AIに書かせていると詳細は全く頭の中にありません。なので、いざバグがあるとわかったときにどのあたりにあるか「あたり」をつけることも難しくなってきます。
結果として、AIに症状を伝えて、バグを直してもらうことになります。 そして、やっぱりこの方法はとてもスピーディーに解決できて、正確であることがこれまでの経験からもわかってきました。
結論として、このままAIを使った開発体験は突き進むしかないのだと思います。 やっぱり手で書くより圧倒的に早いですし、正確です。 そして、この開発手法のコツは「すべてをAIでやる」ということだろうと感じています。