- "Vibe Engineering" は、AIコーディングツールを活用した専門的な開発手法の新しい呼び名であり、速いが無責任な「バイブコーディング」とは異なり、熟練したエンジニアがLLMを活用しつつ、コード品質と説明責任を維持するアプローチを意味する
- Claude Code、OpenAI Codex CLI、Gemini CLI のような コーディングエージェントの登場により、実務プロジェクトでの LLM 活用が急増しており、一部のエンジニアは複数のエージェントを 同時実行して並列作業を行っている
- LLM を効果的に活用するには、自動化テスト、事前計画、包括的なドキュメント化、バージョン管理、コードレビュー文化など、すでに確立された最高水準のソフトウェアエンジニアリング実践が必要
- AI ツールは 既存の専門性を増幅する性質を持ち、シニアエンジニアが持つスキルと経験が多いほど、LLM 活用時により速く、より良い結果を得られる
- この用語は、「バイブコーディング」との明確な区別を通じて、プロダクションソフトウェア開発のための、より難しく洗練された AI 活用手法であることを強調しており、エンジニアリングとバイブという矛盾した組み合わせが、むしろ覚えやすい利点をもたらしている(AI ツールの進化に伴う開発プロセスの変化と、専門性の重要さを浮き彫りにする)
バイブコーディングとバイブ・エンジニアリングの区別
- バイブコーディングとは、AI を使った高速で緩く無責任なソフトウェア開発手法であり、完全にプロンプト主導で、コードがどのように動作するかに注意を払わないアプローチである
- その対極には、熟練した専門家が LLM によって作業を加速しながらも、自分が生み出すソフトウェアに誇りを持ち、自信を持って責任を負うやり方があり、これを バイブ・エンジニアリングと呼ぶ
- おもちゃのようなプロジェクトではなく、実際のプロジェクトでソフトウェアエンジニアとして LLM と生産的に働くことは、難しいというあまり知られていない真実があり、ツールの使い方を理解するには深い知識が必要で、避けるべき落とし穴も多い
コーディングエージェントの登場と影響
- 2025年2月にリリースされた Claude Code、4月にリリースされた OpenAI の Codex CLI、6月にリリースされた Gemini CLI のような コーディングエージェントツールの登場により、実際のコーディング課題に対する LLM の有用性が劇的に高まった
- これらのツールは、指定された目標を達成するまでコードを反復的に修正し、積極的にテストしながら作業する
- 経験豊富で信頼できるソフトウェアエンジニアたちは、複数のエージェントを同時に実行して、複数の問題を並列に処理し、作業範囲を広げている
- 筆者は当初懐疑的だったが、自ら並列コーディングエージェントを実行してみた結果、精神的には疲れるが驚くほど効果的であることを確認した
- tools.simonwillison.net コレクションの大半は古典的なバイブコーディング方式で構築されたが、コーディングエージェントと反復的に作業して 将来的に保守可能なプロダクション品質のコードを生み出すことは、まったく別のプロセスのように感じられる
LLM が強化する既存のソフトウェアエンジニアリング実践
- 自動化テスト: 強力で包括的かつ安定したテストスイートがあれば、エージェント型コーディングツールは高速に動作できる。一方でテストがなければ、エージェントは実際にはテストしていないのに動作すると主張したり、新しい変更が無関係な機能を壊したりする可能性がある
- テストファースト開発は、ループ内で反復できるエージェントにとって特に効果的
- 事前計画: 何かを一緒にハックし始めるときに高レベルの計画から始めると、はるかにうまく進む。エージェントと作業するときは、これがさらに重要になる
- まず計画を反復的に詰めてから、それをエージェントに渡してコードを書かせることができる
- 包括的なドキュメント化: 人間のプログラマーと同様に、LLM も一度にコードベースの一部しかコンテキストに保持できない。関連ドキュメントを与えれば、コードを先に読まなくても別の領域の API を使える
- 良いドキュメントを先に書いておけば、モデルはその入力だけで一致する実装を構築できる
- 良いバージョン管理習慣: コーディングエージェントが変更を加えている可能性がある場合、ミスを取り消し、何がいつどのように変わったのかを理解することがいっそう重要になる
- LLM は Git に非常に強く、バグの起点を追跡するために履歴を自力で探索でき、多くの開発者よりも
git bisect をうまく使う
- 効果的な自動化: 継続的インテグレーション、自動フォーマットと lint、プレビュー環境への継続的デプロイなどは、エージェント型コーディングツールにも役立つ
- LLM は素早い自動化スクリプトの作成を容易にし、次回以降その作業を正確かつ一貫して繰り返せるように支援する
- コードレビュー文化: コードレビューを素早く生産的に行えるなら、LLM と作業するときの体験はずっと良くなる
- 自分でコードを書く方が好きで、他人(あるいは何か)が書いた同等のものをレビューするのが苦手なら、これは難しいだろう
- 非常に奇妙な形のマネジメント手法: コーディングエージェントから良い結果を引き出すことは、人間の協力者から良い結果を引き出すことと、不快なほど似ている
- 明確な指示を与え、必要なコンテキストを保証し、成果物に対して実行可能なフィードバックを返さなければならない
- 実際の人間と働くよりもはるかに簡単なのは、相手を侮辱したり落胆させたりする心配がないからだが、既存のマネジメント経験は驚くほど役に立つ
- 本当に優れた手動 QA(品質保証): 自動化テストに加え、エッジケースを予測して掘り下げることも含めて、ソフトウェアを手動でテストする能力に非常に長けている必要がある
- 強力な調査スキル: あるコーディング問題の解決法は数十通りあり、最良の選択肢を見極めてアプローチを裏づけることは、これまでも常に重要であり、エージェントを解き放って実際のコードを書かせるうえでも依然として障壁である
- プレビュー環境へデプロイする能力: エージェントが機能を構築したとき、それを安全に事前確認できる手段があれば(本番に直接デプロイせずに)、レビューははるかに生産的になり、壊れたものを出荷するリスクも大きく減る
- AI にアウトソースできることと手作業で扱うべきことに関する勘: モデルとツールがより効果的になるにつれて、これは今後も進化し続ける
- LLM と効果的に働くうえで大きな部分を占めるのは、それがいつ最も適切に適用できるかについて強い直感を保つことである
- 更新された見積もり感覚: プロジェクトにどれくらい時間がかかるかを見積もることは、常にシニアエンジニアであるうえで最も難しく、かつ最も重要な仕事の一つだった。特に予算や戦略の決定がその見積もりに基づく組織ではなおさらである
- AI 支援コーディングはこれをさらに難しくする。以前は長くかかっていたことがはるかに速くなる一方で、見積もりは今や私たち全員がまだ把握しようとしている新しい要素に依存している
バイブ・エンジニアリングの本質と意義
- こうした新しいツールの能力を本当に活用するには、ゲームの最高レベルで機能する必要があり、
- 単にコードを書くことだけに責任を持つのではなく
- アプローチの調査
- 高レベルのアーキテクチャ判断
- 仕様の作成
- 成功基準の定義
- エージェントループの設計
- QA 計画
- 隙があればごまかそうとする奇妙なデジタルインターンたちの、増え続ける部隊の管理
- そしてコードレビューに多くの時間を費やすことまで含まれる
- このほとんどすべてが、すでにシニアソフトウェアエンジニアの特性である
- AI ツールは 既存の専門性を増幅し、ソフトウェアエンジニアとしてより多くのスキルと経験を持つほど、LLM やコーディングエージェントと協働して、より速く、より良い結果を得られる
「Vibe engineering」、本当に? : 用語選択についての考察
- **「バイブ・エンジニアリング」**という名前はばかげているのか、という問いに対しては、おそらくそうだろう。AI における「バイブ」という概念は、この時点ではやや使い古されて見え、「バイブコーディング」自体も多くの開発者に軽蔑的な意味合いで使われている
- しかし筆者は、より建設的な何かのためにバイブを取り戻す準備ができている
- 筆者は「コーダー」と「エンジニア」の間にある人工的な区別を好んだことはなく、それはいつも少し参入障壁のように感じられていたが、この場合は 少しの参入障壁こそがまさに必要なもの
- バイブ・エンジニアリングはバイブコーディングとの明確な区別を確立し、これが プロダクションソフトウェアを構築するために AI ツールと協働する別の、より難しく、より洗練された方法であることを示す
- これが生意気で物議を醸す可能性がある点を筆者は気に入っており、この領域全体はいまだにさまざまな意味で不条理である
- こうした新しいツールを最も生産的に適用する方法を模索するあいだ、自分たちをあまり深刻に受け止めすぎるべきではない
- 過去には AI 支援プログラミングのような用語を定着させようと試みたが、成功はほぼゼロに近く、今回はバイブをこすってみて何が起こるかを見るのも悪くない
- 筆者は「バイブ」と「エンジニアリング」の間にある明確な不一致をとても気に入っており、この結合語を 遊び心があり、(願わくば)覚えやすい形で自己矛盾的なものにしている
4件のコメント
少し前にも「何とかコーディング?」のような名前を付けて失敗したと記憶していますが、AIペアプログラミングがいちばん適切な表現な気がします。
「その名前は自分が作った」と主張するためのネーミング
誰かがこれを増強コーディング(Augmented Coding)だと主張していましたが、すぐに消えましたね
Hacker Newsの意見
/yoloのようなスラッシュコマンドを作って、特にガイドもなくそのまま実行させることがある意味のない名称作り;