自動プログラミング
YouTubeチャンネルで、しばらく前からAIの支援を受けてソフトウェアを書くプロセスのことを――近いうちに単に「ソフトウェアを書くプロセス」になるのだろうと思いますが――「自動プログラミング」という言葉で呼ぶようにしています。
お気づきかもしれませんが、自動プログラミングでは、同じLLMを使っても、直感や設計、絶え間ない舵取り、そしてソフトウェアに対する思想を持ってプロセスを導く人間によって、出来上がるものは大きく異なります。
どうか「Claudeがこのソフトウェアをバイブコーディングしてくれた」と言うのはやめてください。バイブコーディングとは、プロセスにまったく関与せずにAIにソフトウェアを生成させることです。やりたいことをごく大まかに伝えるだけで、LLMは学習内容や、その実行でたまたま優勢になったサンプリングなどに応じて、思いついた最初のアイデアや設計やコードをそのまま出力します。バイブコーダーがやることといえば、せいぜい動かない箇所や期待と違う点を報告するくらいです。
中身を理解したうえでの本当のソフトウェア制作であるなら、思い出してください。それは*あなた*が生み出しているソフトウェアなのだということを。さらに、LLMが学ぶのは事前学習だけではありませんが(RLも大きな比重を占めています)、事前学習データは人間が生み出したものだということも忘れないでください。ですから私たちは何か他人のものを奪っているわけではありません。AIが生成したコードを「自分のもの」とみなしてよいのです。そうする権利が私たちにはあります。事前学習とは、実のところ私たち人類からの集合的な贈り物であり、そうでなければ決してできなかったことを多くの個人ができるようにしてくれるものなのです。ある意味で、私たちは今や集合的な知性でつながっているかのようです。
とはいえ、バイブコーディングが何が起きているかをあまり理解せずにソフトウェアを作るプロセスだとすれば(これにも存在意義はあり、ソフトウェア制作を民主化するものなので、私はまったく問題ないと思っています)、自動プログラミングはAIの支援を受けつつ、制作者のソフトウェアに対するビジョンに厳密に従い、高い品質を目指してソフトウェアを作るプロセスです(このビジョンは多層的で、高いレベルで何をどう実現するかということから、踏み込んでAIにある関数をどう書くかを指示するところまで及びます)。そしてもちろん、プロセスの根本的な部分は*何を*作るかということです。
私はプログラマーであり、自動プログラミングを使っています。こうして生成するコードは私のものです。私のコードであり、私の成果であり、私の作品です。私も、あなたも、誇りに思ってよいのです。
まだ完全には納得できないという方は、Redisのことを考えてみてください。Redisに技術的な新規性はそれほどありません。特に初期のRedisは、有能なシステムプログラマーなら誰でも書けるような、基本的なデータ構造とネットワークコードの寄せ集めに過ぎませんでした。では、なぜあれほど有用なソフトウェアになったのでしょうか。それは、そこに込められたアイデアとビジョンがあったからです。
プログラミングは今や自動化されましたが、ビジョンは(まだ)そうではありません。
記事をランダムに読む