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