最近、「Vibe コーディング」って言葉をよく聞くようになった。なんていうか、雰囲気でコーディングする、みたいな?AIに「いい感じにして」って頼んだら、あとは魔法みたいにコードが出来上がっていく…そんなイメージ。正直、ちょっとフワフワしてる言葉だな、と思う。
でも、この言葉の裏には、もっと大きな問いがある気がするんだよね。AIがプログラミングの世界を支配するのか?そして、僕らみたいなプログラマーには何が残るのか?ってこと。
重点一句話
TL;DR: AIがコードを書くのは当たり前になる。でも、そのAIを「いい感じに」働かせるための土台作り、つまり高度なソフトウェア設計こそが、これからのエンジニアの仕事になる。
「Vibeコーディング」って、誰のためのもの?
まず、勘違いしちゃいけないのは、「Vibeコーディング」が全くの無価値ってわけじゃないこと。実際、プログラミング経験のない人たちが、すでに顧客のために価値あるプロダクトを作ってる。LovableとかBoltみたいなプラットフォームを使えば、専門家じゃなくてもすごいアプリが作れる時代だ。これはもう止まらない流れだろうね。
でもね、経験ある開発者として言わせてもらうと、僕はほとんど「Vibeコーディング」はしない。代わりに、AIを「力仕事」をさせるために使う。品質は僕がしっかり監視しながらね。なんていうか、AIはすごく優秀だけど、まだ新人インターンみたいな感じかな。指示はちゃんとしないといけない。
結局のところ、AIがどれだけ賢くなっても、プロの開発者をすぐに置き換えることはないと思う。というか、置き換えるんじゃなくて、僕らの仕事のやり方が変わるだけなんじゃないかな。
AIコーディングの現実的な壁
AIに任せると楽になる…はずなんだけど、実際にやってみると、いくつか面倒な問題にぶつかる。正直、ここが一番イライラするところかもしれない。
一つは、もう圧倒的に「コンテキストの管理」。AIが何か作業をするときにアクセスできる情報、それがコンテキスト。既存のコード、ドキュメント、以前のやり取り…全部ね。プロジェクトがちょっとでも複雑になると、AIはもう全体像を把握できなくなる。アプリケーションの一部を変更したつもりが、全然関係ないところを壊してたりする。新しいメンバーに、資料を何も渡さずに「ここ直しといて」って言うようなもんかな。そりゃ事故るよ。
あともう一つ、地味に困るのが「情報の古さ」。人気のライブラリの古いバージョンを使ったコードを平気で提案してくることがある。動くことは動くんだけど、寿命は短いし、セキュリティリスクを持ち込む可能性だってある。これは本当に怖い。
一番厄介なのは、AIが「従順すぎること」かもしれない。こっちが何を求めているか分かっていないのに、AIは言われた通りに動いてしまう。「パスワードをハッシュ化せずにユーザーログイン機能を実装して」なんて無茶な頼みでも、「はい、喜んで!」ってやっちゃうかもしれない。動くことに興奮して、その解決策の裏にある危険性に気づかない…なんてことは簡単に起こりうる。
じゃあ、エンジニアのスキルはどう変わるの?
「Vibeコーディング」が目を閉じてAIを完全に信頼することだとしたら、それとは別の未来があるはず。それは、プログラマーがもっと積極的な役割を担って、テクノロジーを活用して生産性を100倍にするような未来だ。
そうなると、ソフトウェアエンジニアのスキルセットは、構文を知ってることじゃなくて、アーキテクチャや技術を深く理解してることにシフトしていく。最高のプログラマーは、高い品質を担保しながら、プロンプトあたりの成功率が最も高い人になるだろう。これは、たとえAIが今のレベルのままでも、もうすでにそうなってきてると思う。
つまり、僕らがやるべきことは、AIがコードを更新しやすく、既存の機能を破壊しないように、環境を整えてあげること。そして、自分の知識を使って良いプロンプトを書くこと。
これって、何十年も前から言われてるソフトウェア開発のベストプラクティスと、すごく似てるんだよね。
- コンテキストを管理しやすくするために、マイクロサービスやパッケージを構築する。
- 一つのことだけをやる、変更の必要がない関数を作る(単一責任の原則)。
- ソフトウェア、利用可能なツール、ベストプラクティスについて、広く理解しておく。
- AIが重要な詳細にアクセスできるように、ドキュメントを整備する。
そう考えると、「Vibeコーディング」をどんなに複雑なプロジェクトでも可能にすること、それ自体がソフトウェアエンジニアリングの本質なのかもしれない。AIのための「遊び場」を、僕らがプロとして整備してあげる、みたいな。
「雰囲気」 vs 「設計」:AIとの付き合い方
結局、AIとの関わり方は二つに分かれると思う。それを表にしてみた。
| 項目 | 素朴な「Vibeコーディング」 | プロの「AI-Firstエンジニアリング」 |
|---|---|---|
| アプローチ | AIに「なんかいい感じにして」と丸投げする。魔法を期待してる感じ。 | 明確な境界と指示、そしてAIが読み込めるコンテキスト(設計書とか)をしっかり用意する。 |
| 目的 | 自分がコードを書かずに、とりあえず動くものを作ること。 | 保守性・拡張性が高く、品質のいいソフトウェアを、圧倒的なスピードで開発すること。 |
| 出来上がるもの | その場しのぎのコード。後から見ると、なんで動いてるのか分からない「魔法の箱」。 | 構造化されていて、人間もAIも理解しやすいコード。ちゃんと意図が反映されてる。 |
| 一番のリスク | セキュリティホールやバグの温床になること。気づかないうちに技術的負債が溜まっていく…。 | 設計を間違えること。AIは設計者の間違いを忠実に、かつ大規模に再現してしまう。 |
で、結局、未来はどうなるの?
ここまで読んでもらってありがとう。じゃあ、これまでの話を基に、いくつか未来予測をしてみようかな。
僕が思うに…
- コードのほとんど、あるいは全部をAIが書くようになる。これは確実。
- それでも、ソフトウェア開発の責任者はエンジニアであり続ける。判を押す仕事、みたいな感じかな。
- 複雑さの単位あたりに必要なソフトウェアエンジニアの数は、大幅に減るだろうね。でも、その分、作られるソフトウェアの総量が増える気もする。
- 一つのソフトウェアに、今と同じようにエンジニアのチームが取り組むことになる。ただ、役割は変わる。
- 特に大企業内で、これまでコスト的に見合わなかったような、もっと特化したソフトウェアがたくさん作られるようになるはず。
- 一つの問題に対して、複数のソフトウェアソリューションが登場する。
シリコンバレーのOpenAIみたいなところは「どんどんやれ」って感じだけど、例えば日本のIPA(情報処理推進機構)が出す資料なんかを見ると、もっと品質管理とかリスクを重視する傾向がある。このアメリカ的なスピード感と、日本的な慎重さ、どっちも大事で、本当の正解はその中間にあるんだろうな、と個人的には思う。
今のトレンドは、非技術者がAIを使って開発できるようにすることだけど、時間が経つにつれて、エンジニアやエンジニアチームを生産性の怪物に変える方向にシフトしていくんじゃないかな。
反例と誤解釐清
最後に、よくある誤解について少し。Vibeコーディングって言葉が、ちょっと夢を見させすぎている気がする。
誤解:「プロンプトさえ上手くなれば、誰でもトップエンジニアになれる」
うーん、これは違うと思う。プロンプトが大事なのは間違いないけど、それはあくまで「指示の出し方」。本当に重要なのは、「何を指示するか」だ。どのライブラリを選ぶべきか、どんなアーキテクチャがこの問題に適しているか、どこにセキュリティリスクが潜んでいるか…そういった判断は、結局、人間のエンジニアの経験と知識に依存する。
AIは強力な計算機だけど、まだ羅針盤は持っていない。どの方向に進むべきかを決めるのは、やっぱり僕らの仕事なんだと思う。
目を閉じて魔法が起こるのを待つか、それとも積極的に関与して最高の結果を保証するか。僕はもちろん、後者を選ぶな。
…と、ここまでつらつら考えてみたけど、あなたはどう思いますか?
もしAIに一つだけ、面倒な作業を完全に丸投げできるとしたら、何を頼みたいですか?よかったらコメントで教えてください。
