バイブコーディングには致命的な弱点がある!
AIと人が共に開発する時代の“盲点”──セキュリティ、品質、そして誤解という罠
目次
安達 奨(Susumu Adachi)
ITコンサルタント/Knowledge marketing合同会社 代表
IT業界で15年以上の経験を持ち、システム開発の上流工程から下流工程に至るまで幅広く精通。(企画、要件定義、設計、プログラミング、テスト)
現在ではシステム開発のみならず、ツール選定、ベンダー選定など、大手~中小企業向けのIT支援を多数手がける。
本サービスでは、特に事業会社時代から "システム開発会社の見積"
に疑問を感じており、これを是正すべきと考え監修を行っている。
はじめに:AI開発の“熱狂”の裏側にある不安
前回の記事で、筆者は「バイブコーディング」という概念が、AIと人間の協働を新しいフェーズに引き上げたことを紹介した。 AIが人間の“意図”を理解し、同じ開発空間の中で共鳴しながらコードを書く──確かにそれは新しい時代の幕開けだった。
しかし、AIと共に開発を進める中で筆者が強く感じるのは、**「AI開発には致命的な弱点がある」**という事実である。 RedditやZennなどでも専門家の議論が増えており、同様の懸念が共有され始めている。
AIは驚異的なスピードでコードを生成するが、それは“正しいコード”とは限らない。 バイブコーディングは確かに有用だが、盲目的にAIを信じることは極めて危険だ。
この記事では、筆者の実体験を交えながら、その「弱点の正体」を徹底的に掘り下げたい。
AIの致命的な弱点①:AIはセキュリティを理解できない
最初に取り上げるべきは、セキュリティの問題だ。 AIが生成したコードを見たことがある人なら分かるだろうが、見た目は非常に整っている。 変数名はきれいで、構造も理解しやすく、一見すると“完璧”だ。 だが、その裏には重大な脆弱性が潜んでいることが多い。
筆者がCodexを試していた頃、Flaskベースの簡単なAPIを自動生成させたことがある。 AIは瞬時にエンドポイントを構築し、動作も一応は正しい。 しかし、生成されたコードにはCSRF対策がなく、認証ロジックも形だけ。 SQLのパラメータは文字列連結で処理されていた。 つまり、セキュリティの基本設計を完全に無視していたのだ。
Claudeを使っても状況は大きくは変わらない。 AIは学習データから“正しそうな構文”を再現しているに過ぎず、 脆弱性という概念を理屈ではなく統計的確率で回避しているだけである。
セキュリティ設計は「業務ロジック」「利用環境」「運用方針」の3つが絡み合う。 これはAIが苦手とする“文脈理解”そのものだ。 AIがセキュリティを「知識」として再現できても、「判断」として最適化することはできない。
そのため、バイブコーディングを実務で使う場合、セキュリティ設計は人間が主導すべき最優先領域である。
AIの致命的な弱点②:AIは業務を正確に理解できない
AIが出力するコードの多くは、表面的には動作している。 だが、「それが業務要件を正しく反映しているか」と問うと、答えはNoだ。
筆者は以前、AIに「在庫管理の自動更新ロジックを作って」と依頼したことがある。 生成結果は、確かに在庫を増減させる仕組みになっていた。 しかし、AIは“予約注文”という状態を考慮していなかった。 つまり、理論上は正しいが、業務上は誤りだったのだ。
AIは要件の文章を解析し、「それっぽい構造」を作る。 だが、業務というのは往々にして「例外」や「人間の運用癖」に支えられている。 AIはそれを知らない。したがって、**業務フローを理解していないAIの生成物は“危険な正解”**になる。
特に企業システムにおいては、ちょっとしたロジックミスが致命傷になりかねない。 受注処理、会計処理、請求締め──これらは「1桁のズレ」が会社全体の信用を揺るがす。 AIは“正しい数式”を出せても、“正しい運用結果”を出せるとは限らない。
バイブコーディングの本質は「共鳴」であり、「自動化」ではない。 AIはあくまでパートナーであり、責任を持つのは人間の側だ。
AIの致命的な弱点③:デグレード(品質劣化)問題
筆者が最も苦しんだのが、AIによるデグレード問題だ。 AIが生成したコードを人間が修正し、それを再びAIに渡して改善させる──このサイクルの中で、 **“良かれと思って壊す”**という現象が頻発する。
Zennの記事などでも同様の報告が増えており、筆者の体験もまさにそれだった。 とあるLaravelの管理画面で、AIに「バリデーションを統一したい」と依頼したところ、 AIは確かにルールを統一してくれた。 しかし、裏で使われていたカスタムリクエストクラスを丸ごと削除して再生成してしまった。 その結果、他のモジュールが参照していた共通バリデーションが全滅。 一見整然としているようで、全体の整合性が崩壊したのだ。
デグレは、AIが“全体の構造を理解していないまま変更を行う”ことから起こる。 AIは部分的には正しくても、アプリケーション全体の依存関係を把握していない。 そのため、**「正しい修正」ではなく「孤立した修正」**を行う。
Zennでの議論を参考にすると、これは言語モデルの性質に起因している。 AIはコードベース全体を「文脈」として保持し続けるのが苦手で、 結果として「良い意図での修正が副作用を生む」という構造的問題を抱えている。
AIが陥る“誤った自信”──もっともらしい誤りの恐怖
AIが生成するコードの最大の怖さは、**「間違っているのに、正しく見える」**ことだ。 ClaudeもChatGPTも、出力の精度は非常に高く、説明も論理的だ。 だが、その「論理」が人間の設計意図に沿っているとは限らない。
筆者が一度、AIに「既存の認証機構にワンタイムトークンを追加して」と依頼した際、 AIはそれっぽいコードを提示した。 実装上のエラーはなく、動作確認も通る。 だが、実際にはトークン生成のタイミングが不適切で、有効期限前に無効化されるケースがあった。
AIはコードの正しさを「動くこと」で判断する。 だが、エンジニアは「意図通りに動くか」で判断する。 この認識のギャップが、AI開発最大のリスクである。
なぜAIはミスをするのか──言語モデルの構造的限界
AIは「知っているように見える」が、実際には“推測”しているだけだ。 言語モデルは膨大なソースコードとテキストを学習し、 「ある指示に対して、過去に多く出力された形」を再現している。
つまり、AIが出しているのは最も確からしい平均解であって、 状況に最適化された設計解ではない。
この構造的限界がある限り、AIは“考える”ことができない。 それは「最も確率の高い選択肢を選ぶ確率機械」であり、 真の意味での“理解”はまだ遠い。
AI開発現場で起きている“誤解”
AI開発が話題になるたびに、経営層からこう言われる。 「AIに任せれば人件費もスピードも抑えられるのでは?」
一方でエンジニアは、「AIの出力をレビューすればいい」と考える。 だが、現実はもっと複雑だ。
AIが生成したコードには、曖昧な仕様や前提条件の欠落が多く、 人間のレビューにかかるコストはむしろ増えることがある。 また、AIの出力を修正しようとすると、 次の生成でその修正が“上書き”されることもある。
つまり、「AIがコードを書く=工数削減」ではない。 むしろ、「AIが書いたコードを正しく理解する工数」が新たに発生するのだ。
筆者の実体験:AIが“壊した”コードとその復旧
筆者が実際に遭遇したケースを紹介したい。 バックエンドAPIのテストカバレッジを上げるため、AIにテストコードの自動生成を依頼した。 最初は良かった。テストケースが増え、CIも通った。 だが後日、別の開発者がAIに「テストを最適化して」と依頼したところ、 AIはテストケースをまとめる過程で重要な例外テストを削除してしまった。
結果、想定外の入力でシステムが落ちる。 原因がわかるまで2日を費やし、結局手作業でテストを再構築した。
AIは決して「悪気」があったわけではない。 ただ、“最適化”の定義を理解していなかったのだ。
AIコーディングを安全に活用するための心得
バイブコーディングは危険だ。だが、正しく使えば圧倒的な武器になる。 筆者が現場で確立した「5つの心得」を紹介したい。
① AIを“開発者”ではなく“アシスタント”として扱う
AIは手を動かすが、考えない。 責任を持つのは常に人間の側だ。
② セキュリティ設計は人間が主導する
AIに任せると脆弱性の温床になる。 暗号化、認証、CSRF対策はすべて人間が明示するべきだ。
③ 業務ドメイン知識はAI任せにしない
AIは業務を知らない。 業務ロジックの翻訳者として人間が介在する必要がある。
④ 生成コードは必ずテスト・レビューで検証する
「動く」ことと「正しい」ことは別だ。 レビューと単体テストを怠ると、地雷を踏む。
⑤ 「AIに間違わせる」経験を積むことが上達への近道
AIの失敗を見抜ける人ほど、AIをうまく使う。 ミスを怖がらず、誤りのパターンを体感的に理解することが重要だ。
AIと人間、それぞれの限界を認めることから始まる
AIは完璧ではない。 だが、人間もまた限界を持つ。 重要なのは、お互いの得意・不得意を補い合う構造を作ることだ。
AIの得意:スピード・反復・パターン抽出 人間の得意:判断・文脈理解・品質保証
この二つを融合できる組織こそ、AI時代の開発チームと呼べる。 バイブコーディングとは、AIを“信じる”ことではなく、“使いこなす”ことである。
まとめ:バイブコーディングは「危険」と「希望」の両輪で動く
AIによる開発は確かに速い。 だが、それは「正しく管理できる人間」がいてこそ成り立つものだ。
セキュリティ、業務理解、デグレ──これらの問題を軽視すれば、AIは味方ではなく敵になる。 一方で、リスクを理解したうえで使いこなせば、これほど強力なパートナーもいない。
AI開発の本質は「代替」ではなく「共鳴」だ。 その理解を欠いたままAIを使えば、破滅を招く。 だが、AIと正しく向き合えば、人間の開発力は何倍にも拡張される。
次回(第3回)は、この続きとして── 「AI駆動開発による最前線と、これからのエンジニアに求められる必須スキル」 を取り上げる。
AIを“指導できる人間”こそ、次の時代のエンジニア像である。