バイブコーディング
バイブコーディングとは、LLMに指示を与えてソフトウェアを構築する手法です。何を作りたいのかを伝え、試行錯誤しながら、修正指示を出しますが、LLMが生成したコードを確認することはありません。プログラミングの知識がない人でも活用できる技術です。ただし、生成されたソフトウェアには保守性、正確性、セキュリティの問題が頻繁に発生するため、限定的なユーザーを対象にした使い捨てソフトウェアとして使うのが最適です。
この用語は、経験豊富なプログラマーであるAndrej Karpathyが2025年2月のXの投稿で作ったものです。
「バイブコーディング」という新しい種類のコーディングがあるんです。完全にバイブに身を任せて、指数関数的な成長を受け入れ、コードそのものの存在すら忘れてしまうんです。LLM(例えばCursor Composer with Sonnet)があまりにも上手くなってきたからこそ可能なことですね。あと、SuperWhisperを使ってComposerとただ話しかけるだけなので、キーボードにほとんど触れません。「サイドバーのパディングを半分に減らして」みたいな馬鹿げたことを頼むんですよ、探すのが面倒だから。私はいつも「すべて受け入れる」を選び、diffを読むことすらしなくなりました。エラーメッセージが出たら、コメントなしでそのままコピーして貼り付けるだけです。通常それで直ります。コードは私の通常の理解を超えて成長してしまい、ちゃんと読むにはしばらく時間がかかります。時々LLMがバグを直せないので、回避するか、ランダムな変更を頼み続けてそれが消えるまでやります。使い捨ての週末プロジェクトにはそれほど悪くないですが、それでもかなり面白いです。私はプロジェクトやウェブアプリを作っていますが、本当の意味でのコーディングではありません。ただものを見て、言って、実行して、コピーして貼り付けて、それで大体動くんです。
– Andrej Karpathy
バイブコーディングの核心的な考え方は「コードそのものの存在すら忘れてしまう」ところです。これが有用性を示すと同時に、その限界も示しています。
11月の転換点以降、多くのプログラマーがLLMにコード生成を任せるようになり、「今後は自分でコードを書くことはないだろう」と発言しています。ただし、彼らは生成されたコードに関心があり、レビューして、内部構造に注意を払っています。このような場合、彼らはコードの存在を忘れていないので、別の概念になります。私はこれを「エージェントプログラミング」と呼びます。残念ながら「バイブコーディング」が広く普及してしまったため、多くの人がエージェントプログラミングのこともバイブコーディングと呼んでいます。急速な意味の希薄化が生じていますが、私は両者の概念を区別することが重要だと思います。使い方が異なるだけでなく、その結果も異なるからです。
バイブコーダーはコードを確認しないため、プログラミングスキルが不要です。したがって、プログラミング知識がない人が自分用のアプリケーションを構築するのに最適です。経験豊富なプログラマーであっても、使い捨てのソフトウェアやプロトタイプを迅速に開発する際に活用できるでしょう。
バイブコーディングはまだ新しい技術であり、その限界について調査が進められています。これからモデルの洗練やハーネスの変化によって、その限界も変わってくるでしょう。こうした限界は、バイブコーディングされたソフトウェアが広く使用される場合や、機密情報にアクセスする場合には、重要なリスクをもたらす可能性があります。
最も深刻なリスクはセキュリティです。LLMは本質的に脆弱であり、攻撃対象となりやすいものです。バイブコーディングされたアプリケーションは、機密情報を漏洩する可能性があります。場合によっては、組織のシステムに侵入できる認証情報まで漏洩する可能性もあります。プログラミングの知識がない人でも、三重の脅威を認識する必要があります。
コードを理解せずにバイブコーディングを使うと、低品質なコードが短時間で大量に生成されます。LLMでさえもこのようなコードの修正や拡張は難しいでしょう。これからLLMの機能が進化すれば、大規模で複雑なスパゲッティコードにも対応できるようになるでしょうが、適切に構造化されたソフトウェアのほうがLLMにとっても扱いやすいのは明らかです。
LLMは自信たっぷりに間違った事実を示す「ハルシネーション」で有名です。これがソフトウェア開発でも同様の問題を引き起こし、誤った動作をするソフトウェアを生成する可能性があります。しかもそのエラーはユーザーからは見えないことがあります。さらにLLMの非決定性を考慮すると、あるソフトウェアの機能拡張をLLMに依頼した場合、変更すべきではないコードにもエラーが混入する可能性があります。したがって、LLMが生成したソフトウェアには懐疑的な姿勢で臨む必要があります。便利なこともありますが、リスクは認識しておきましょう。
バイブコーディングで生成したソフトウェアは、リスクを理解して受け入れている本人や少人数の仲間だけが使用する、使い捨てのソフトウェアに最適です。複雑なコード、広く使用されるコード、リスクの影響が大きなコードについては、その存在を忘れてはいけません。