たった一言、自然言語で「こんなアプリを作って」と囁けば、画面上に瞬時にコードが踊り出す。
そんな甘美な魅力に、私も何度となく浸る。
しかし魔法には、必ず残酷な代償が伴うものだ。


カリフォルニア大学サンディエゴ校などの研究が示す通り、プロの開発者ですら「途中までAIに任せ、あとは完成まで自分で」という使い方に陥りやすい。
自動化の力を盲信しすぎると、「オートメーション・バイアス」という心理的なワナが待ち受けている。
AIは、制約の中で構造化された情報を与えれば、驚異的なパフォーマンスを発揮する。
だが、複雑なアーキテクチャ全体を俯瞰したり抽象化したりする能力は、途端に精度が落ちてしまう。
「AIの作った高度な機能のコードは、体系的なアーキテクチャ判断がごっそり抜けている」という調査結果もある。
プログラミングの初心者が「とにかく動けばいい」と細かい積み木を積み上げているうちに、全体像を見失いやすいあの状況に近い。
SNSには「人間が手で書いたコードw」という冷笑さえ散見されるが、本質的な問題はもっと別の次元にある。
実際、ある分析によればAI導入以降、同じようなコードの重複が4倍も増えたという。
「割れ窓理論」のように、一度無秩序なAI生成コードが混じると、以降、開発者の気持ちも技術的なハードルも下がり、技術的負債が指数関数的に積み上がる。
私自身、AIの助けで速度感は上がったものの、後で膨れあがったコードベースの「掃除」に、最初の5倍〜10倍の時間がかかって頭を抱えたことがある。
もうひとつ深刻なのは、セキュリティやバグの問題だ。
AIが生成したコードの45%近くに欠陥があるというレポートもある。
AIは「ちゃんと動く」ことを最優先にするため、セキュリティや安全性は二の次になりがちだ。
過去には自動取引システムのバグ一つで、数億ドルが一瞬で吹き飛び組織が崩壊した例もある。
エンジニアの目が離れた隙、その優秀そうな「ジュニア開発者(AI)」のひと手間が、大惨事を招くリスクも孕んでいる。
また、一部の経営層はAIを「コスト削減の切り札」として過大評価しがちだ。
実際には、AIが書いたコードのクリーンアップ・保守に、時に初期構築の数倍の労力がかかることもある。
そして経験の浅いAIが雑に投げ込んだソースコードを、高給のシニアが深夜に直すという、何とも皮肉めいた逆転現象さえ起こる。
今まさに私は、「AIによるソフトウェアの死」に直面している。
だが、未来を悲観はしていない。
創造的なフェーズではAIによる高速化は歓迎できるし、本番にデプロイする段階では人間の厳格な品質チェックが不可欠だ。
AIに支配されるのでなく、協働をどう設計するかが新たな課題だと思う。


個人的に最も健全だと感じる使い方は、AIを「ラバーダッキング」、つまり自分の考えを整理したり仮説をぶつけるための超高性能な相棒=壁打ちとして使う方法だ。
最終的に「マージ」ボタンを押すかどうかは自分の責任で、そこは譲らない。
そのほうがプログラマーの醍醐味を味わえる。
バイブコーディングを実践してみて痛感したのは、AIは「最高の筆箱」ではあり得ても、「作家」ではないということだ。
本質的な苦しみは「書く」ことではなく、その「後で読む」ことにある。
AIの生成コードは、ほとんど読まれることを想定されていない「独り言」が多い。
自分の書いたコードを3カ月後に読んで「誰だこのクソコードを書いたのは!」と叫びたくなることもあるが、AIの書いた大量のブラックボックスコードは、その比ではない。
そんな聖域が積み上がれば、もはや誰も手を出せなくなる。
コードを書く本質は「判断する」こと、その一行一行に理由や意図が宿ること、そこに尽きると考えている。
AIを使うときは、出力を鵜呑みにせず、構造を与え、制御する側でありたい。
どんな時代でも、エンジニアリングの面白さと恐ろしさは、手でコードを書き、悩み、判断し続けることの中にある。

