Vibe codingとは、LLMにプロンプトを与え、何を構築するかを指示し、試してみて、変更を促すことでソフトウェアアプリケーションを構築するが、LLMが生成したコードを一切見ない方法です。この手法はプログラミングの知識がない人でも利用できます。ただし、生成されたソフトウェアは保守性・正確性・セキュリティの問題を抱えやすいため、限られた利用者を対象とした使い捨てのソフトウェアに最適です。

この用語は2025年2月に、経験豊富なプログラマーであるAndrej Karpathy氏がXに投稿した内容で考案されました:

There's a new kind of coding I call “vibe coding”, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like “decrease the padding on the sidebar by half” because I'm too lazy to find it. I “Accept All” always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I'd have to really read through it for a while. Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. I'm building a project or webapp, but it's not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.

-- Andrej Karpathy

Vibe codingの核心は“forget that the code even exists”という点にあります。これがVibe codingの有用性と限界の両方を生み出しています。

November Inflection以降、多くのプログラマーがLLMにコードのすべてを書かせ、「もう自分でコードを書くことはないかもしれない」と語っています。しかし彼らはそのコードに関心を持ち、レビューを行い、内部構造にも注意を払っています。その場合はコードの存在を忘れていないため、私はこれをAgentic Programmingと呼んで区別しています。残念ながら「vibe coding」という用語が急速に広まったため、多くの人がこれをagentic programmingの意味で使っています。しかし、Semantic Diffusionが進んでいる今でも、vibe codingとagentic programmingの概念を分けておく価値があると考えています。なぜなら、使い方や結果が異なるからです。

Vibe coderはコードを見ないため、プログラミングスキルは必要ありません。プログラミングの知識がない人が自分の用途に合わせたアプリケーションを構築するのに最適です。経験豊富なプログラマーにとっても、使い捨てのソフトウェアやプロトタイプを迅速に開発するのに役立ちます。

Vibe coding はまだ新しい手法であり、その限界は現在も探求されています。また、モデルの高度化やharnessesの進化によって限界も変化しています。これらの限界は、特にvibedソフトウェアが広く利用されたり、機密情報にアクセスしたりする場合に、大きなリスクをもたらします。

最も深刻なリスクはセキュリティです。LLMは本質的に攻撃対象領域が大きく、捕食者にとって脆弱です。Vibe codedアプリケーションは、機密情報や場合によっては組織のシステム深部への攻撃を可能にする認証情報を露出することがあります。プログラマーでない人でも、Lethal Trifectaについて認識しておく必要があります。

コードへの注意が少ないため、vibedソフトウェアは短時間で大量の低品質なコードを生成しがちです。このようなコードは、将来的にLLMであってもソフトウェアの修正や拡張を困難にします。LLMの能力向上により、たとえ巨大なスパゲッティコードでも扱えるようになる可能性はありますが、現時点では、構造化されたソフトウェアの方がLLMにとっても扱いやすいことが明らかです。

LLMは事実を幻覚し、自信たっぷりに提示する性質で知られています。この性質は、誤った動作をするソフトウェアを生み出すことにもつながり、その誤りはユーザーには気づかれない場合があります。さらに、LLMの非決定性により、ソフトウェアの拡張を依頼した際に、変更を求めていない部分にもエラーが混入する可能性があります。したがって、LLMが生成したソフトウェアは懐疑的に扱うべきです。役立つことはありますが、リスクを認識する必要があります。

全体として、vibe codingソフトウェアは、作成者自身またはリスクを理解・受容する少数の共同作業者のみが使用する使い捨てソフトウェアに最適です。より複雑で、広く利用され、リスクの影響が大きいコードについては、忘れ去るべきではありません。