誰もが、バイブ・コーディングをプログラミングの終わりだとして祝っているか、あるいはコードが書けない人のためのものだとして片づけているように見えます。正直に言うと、どちらのグループもポイントを外しています。
まずはこれを片づけましょう。バイブ・コーディングとは、平易な英語で説明を打ち込んで、AIにそれをコードへ変換させるやり方ですが、実際かなり強力です。過去1週間、私はポートフォリオサイトをこの方法で作り、あわせて小さなCLIツールも組み立てました。ですが、AIが混乱したメチャクチャなコードを吐き出すのを見たこともあります。そうしたのを整理するなら、最初から作り直した方がよほど早かったはずです。
本当の違いは? AIではありません。プロンプトを打ち込む人間側です。
Where it actually works
バイブ・コーディングが本領を発揮するのは、主に3つの場面です。
まずはプロトタイピングです。アイデアを素早く試したいときで、コードが長く保たれることを目的としていない場合。
次にボイラープレートです。あの退屈な部分——CRUDルート、設定ファイル、テストのスタブみたいなやつです。必ずやらなければいけないのに、誰も書きたくないもの。
そして3つ目は不慣れな領域です。新しい言語やフレームワークで、自分の居場所の外に放り出されているときは、読んで適用できるスニペットが、迷子の状態でゼロから始めるよりずっと良い。
これらをつなぐものは何でしょう? どの場合も、あなたはすでに「良い状態」がどんなものか分かっています。AIは思考を代替するものではなく、スピードを上げるブースターです。
// 良いプロンプト。具体的で制約があり、確認しやすい。
"vanilla JSでデバウンス関数を書いてください。依存関係なし。
fnとms単位のdelayを受け取ります。デバウンスされたバージョンを返してください。"
// 悪いプロンプト。曖昧すぎます。正しく動くかどうかわかりません。
"ユーザー入力を扱うアプリを作ってください"
得られる品質のほとんどは、あなたが投入したものに他なりません。AIはその方程式を変えません。変えるのは、悪いプロンプトがあなたに噛みついてくる速度を速めるだけです。
Where it falls apart
建築(アーキテクチャ)上の判断が必要になると、すべてが崩れます。データの流れをどうするか、状態をどう構造化するか、モジュールをどう分割するかといった大局的な決定です。AIは自信ありげな答えを吐き出しますが、自信があることは正しさではありませんし、文脈が重要です。
技術的には動くのに、あまりにひどく整理されていて、将来の機能追加のたびに毎回コードと戦う羽目になる生成コードを見たことがあります。レビューでそういう問題を見抜けないなら、時間は節約できていません。あなたはそれを未来の自分から借りているだけで、そんな契約はしていなかったはずです。
バイブ・コーディングはオートコンプリートみたいなものですが、規模が10倍です。コードの書き方を理解することを置き換えはしません。ただ、目指す方向をすでに分かっている場合に限って、より速くコードを書けるようにしてくれるだけです。
The part nobody says out loud
バイブ・コーディングでいちばん被害を受けやすいのは、シニア開発者ではありません。ジュニアです。基礎を学ぶのをスキップするために、AIを近道として使う人たちです。AIに全部やらせてしまうと、なぜあなたのコードが動いているのかを理解することがありません。プロダクションで何かが壊れるときが来ます——必ず来ます——そのとき頼るものが何もない状態になります。
これらのツールの恩恵を受ける人たちは、戻ってきたものを判断するのに十分な力が最初からあります。出力が正しくないときは直せます。そして、AIを止めて自分でやるべきタイミングがいつか分かっています。かなり高いハードルです。
So where does vibe coding land as a practice?
バイブ・コーディングは、これまでよりずっと速く、アイデアから動くプロトタイプへ飛び越えるようにするでしょう。ある種の開発は、ほとんど摩擦のないものに感じられるはずです。正直、それはかなりワクワクする話です。
とはいえ、その下にあるのはクラフト(職人技)です。他人が読める、しっかりしたシステムを作り、それを半年後に崩壊させないように保つのには、本当に作っているものを理解している誰かが必要です。モヤっとした思考を直すプロンプトなんてありません。
これらのツールを使ってください。ただし、打ち込むのと一緒に、あなたの判断まで手渡してはいけません。
返却形式: {"translated": "翻訳されたHTML"}