ヴァイブコーディング(Vibe Coding):AI にコードを任せる瞬間、未来の保守権も譲り渡す——ゆっくり学ぶAI162
翻訳者の言葉
- 「ヴァイブコーディング」の本質は、AIのスピードで技術的債務を無尽蔵に積み上げることです。
- AIプログラミングは二刀流の剣です:プロトタイプを作成するのには神のような力ですが、長期的にメンテナンスが必要なコアプロジェクトでは、災難の始まりです。
- 技術を知らない人にAIを使わせてコア製品を開発させるのは、子供に無限のクレジットカードを渡すようなものです——一時の輝かしさの代償として、後に終わらない負債を背負うことになります。
- AIを操る鍵は、考えることを捨てるのではなく「理論構築」能力を高めることです。人間は、手綱を握る者でなければならず、AIに引きずられてはいけません。
ヴァイブコーディングは技術債を生み出している
スティーブ・クラウス (Steve Krouse)
多くの人は理解に苦しんでいますが、アンドレイ・カーパシーが「ヴァイブコーディング」(Vibe Coding)という言葉を作ったのは、AIが補助するプログラミングの一形態を指しています。このモデルでは、あなたは 「コードの存在すら感じない」 のです。
レガシーコード/技術債
誰もが理解できないコードに対して、私たちはすでに「レガシーコード/技術債」という言葉を使っています。
レガシーコードは皆に嫌われますが、それは偶然ではありません。しかし、問題はコードがそこに存在するのではないでしょうか?直接コードを見れば理解できるはずでは?
大間違いです。誰もが理解できないコードこそが真の技術債です。知らないコードを理解しデバッグするには多くの時間がかかり、新しいバグを出さずに新機能を追加するのはさらに難しい——その難しさは言うまでもありません。
プログラミングの本質は 理論を構築すること であり、コードを積み重ねることではありません。このことはみんなが理解しているはずです。だから私たちは、単にコードの行数でプログラマーの成果を評価しようとするビジネス部門に対して不満を持つのです。
「ヴァイブコーディング」を使うとき、あなたが技術債を積み上げるスピードはAIがコードを生成するスピードと同じくらい早いのです。だからこそ、「ヴァイブコーディング」はプロトタイプ開発や一回限りのプロジェクトにとって 完璧な選択 となるのです。結局、長期的なメンテナンスが必要なコードだけがレガシーコードに堕するのです!
プロトタイプと一時的なコード
私自身も「ヴァイブコーディング」を使っていくつかの小アプリを楽しく開発しました。例えば:
これらのアプリを継続的に改善するつもりはなかったので、それらのコードを理解できなくても問題ありませんでした。また、これらのアプリは規模が小さいため、将来的にコードを振り返る必要があったとしても、突きつけられる技術債は限られています。この方法を使うことで、私はアプリを開発する速度が従来の方法を大きく上回り、そのプロセスはまさに快適そのものでした。
ヴァイブコーディングは程度の問題
「ヴァイブコーディング」は程度の問題であり、コーディングに対する理解の深さに依存しています。理解が深まるほど、「感覚」に頼ることは少なくなります。
同じ要求でも、あるエンジニアが「持続的なデータベースを持つWebアプリを開発してほしい」と依頼するのと、技術を理解していない人が「アプリを作って」とだけ言うのでは、前者は「感覚」の程度が遥かに低いです。
子供にクレジットカードを渡すこと
最悪のシナリオは、非プログラマーに「ヴァイブコーディング」の方法で、長期的なメンテナンスが必要な大規模なプロジェクトを開発させることです。これは、子供にクレジットカードを渡し、「債務」とは何かを説明しないのと同じです。
初期段階はどれほど楽しいか想像してみてください:「なんて素晴らしいんだ!この小さなカードを店で使うだけで、欲しいものが手に入る!」
これは現在の流行りの意見と非常に似ています:「AIは何でもできる!誰もがプログラマーだ!ほら、AIが作ってくれたこのアプリを見て!」
しかし、1カ月後、クレジットカードの請求書が届くでしょう:「本当にそれらのものが必要だったの?これからこのめちゃくちゃの状態をどうする?」
「ヴァイブコーディング」を利用している開発者も同じ状況になります:「私のコードが壊れた!こんなに多くのファイルやフォルダーは何のため?どう修正すればいい?AIに生成してもらった400ドルは返金してもらえる?」
コードをまったく理解していない場合、唯一の解決策はAIに修正を続けさせることです。これは「クレジットでクレジットを返済する」ようなものであり、新しいクレジットカードの限度額で別の債務を返済することにほかなりません。
2025年、AIとの真剣なペアプログラミングの方法
2025年に長期的な保守が必要な真剣なプロジェクトを構築するつもりなら、アンドレイのアドバイスは的確です:
AIを新しいインターンとして扱い、非常に短い紐で彼を繋いでおくべきです。このインターンは奇才で、ソフトウェアの知識に精通しており、生きた百科事典のようです。しかし同時に、過剰に熱心で常に無駄話をし、良いコードとは何かを理解していません。だからこそ、あなたは必ず強調しなければなりません:スピードを落とし、防御を保ち、慎重になり、時には少し偏執的になることが重要です。実践を通じて学びの機会を逃さず、全ての仕事を彼に任せてはいけません。
—— アンドレイ・カーパシー, twitter
AIを活用して構築する方法
Val Townでは、数十種類の方法でAIを製品に統合しています。当社のAIアシスタント「タウニー」は、コードを読み書きし、プログラムを実行し、ログを確認し、タスクが完了するまで繰り返し改善を行います。
タウニーは「感覚的プログラミング」に最適なツールです。私は、その利点と欠点を理解している友人に強くお勧めします。時折、私はそれを使って素早く「ヴァイブコーディング」を行います。一方で、非常に重要なプロジェクトを扱う際には、手綱をきつく締め、「メスのように」精密な修正だけを許可します。この2つのモードは、どちらも楽しく効率的です。
AIプログラミングの分野は進化し続けており、未来は予測できません。しかし、私は 「理論構築」 が複雑なソフトウェアを構築する上で依然として核心であると確信しています。これは人間の技術専門知識が不可欠であることを意味します!同時に、AIがプログラミングという仕事を予想もしない形でより良くするだろうと楽観的に考えています。
しかし、もしあなたの周りに非技術的な友人がいて、「感覚的プログラミング」の手法でその「10億ドルのアプリ」の夢を追いかけているなら、ぜひこの文章を彼らに転送してください。「感覚的プログラミング」では彼らを成功に導くことはできません。彼らはいつか、自分自身の目でコードを理解しなければならなくなるでしょう 😱、そして最終的には厳しい現実を知ることになるでしょう:誰もが理解できないレガシーシステムを修正するよりも、一から始めて構造が明確な新しいコードベースを構築する方が良い。
この記事は先月の私の講演の要約版で、講演テーマは プログラミングにおける人間の役割 でした。私の婚約者エミリーには、数ヶ月間、これらのテーマについて聞いてもらい、私の講演の映像を撮影してくれたことに感謝します。また、この講演を主催してくれたマルテとリップリングに感謝します。
ジョフリー・リット、ジミー・コッペル、マックス・マクドネル、トム・マックライト、シャーメイン・リー、ブレント・ジャクソン、そしてダン・シッパーには、この文章へのフィードバックをいただき感謝します。AIに関する熱狂的な称賛と悲観的な見方の中で、シモン・ウィリソンとアンドレイ・カーパシーが理性的な声を上げてくれたことにも感謝します。