最近、「vibe coding」という言葉をよく耳にするようになった。
AI に「こういうアプリを作りたい」と伝えると、それらしいコードが生成される。GitHub にあるサンプルを clone し、少し修正すれば実際に動いてしまう。以前なら専門知識が必要だったソフトウェア開発が、急速に一般化し始めている。
これは間違いなく大きな変化だ。
ソフトウェア開発は長い間、「理解している人だけが触るもの」だった。しかし生成AIによって、「とりあえず動かしてみる」が普通になりつつある。
ただ、その裏側で、あまり議論されていない本質的な問題がある。
それは、「コードを理解していない人が、他人のコードを大量に実行する時代」が始まったことだ。
これまでのソフトウェア文化は、“専門家しか触らない” 前提だった
従来の開発環境は、実は驚くほど危険な設計の上に成り立っている。
たとえば Node.js や Python では、npm install や pip install の時点で任意コードが実行できる。つまり、悪意ある package が混ざっていれば、
-
~/.ssh
-
.env
-
GitHub token
-
AWS credential
-
browser cookie
-
Slack session
などへアクセスすることも理論上は難しくない。
それでも大きな問題になりにくかったのは、「それを実行する人」が基本的にエンジニアだったからだ。少なくとも、「install 時にコードが動く」という感覚は持っていた。
しかし vibe coding の世界では、この前提が崩れる。
AI が生成したコードを、内容を理解せずにそのまま実行する。
GitHub の repository を、「動きそうだから clone する」という感覚で触る。
これは、ソフトウェア産業にとって、かなり大きな構造変化だと思う。
実は browser は、この問題を20年前に経験している
ここで面白いのは、Web browser の歴史が、この問題にかなり似ていることだ。
1990年代後半の browser は、今よりはるかに危険だった。
ActiveX を使えばローカルファイルへアクセスできたし、OS に近い権限でコードを実行できた。
当時は、「便利だからOK」という空気が強かった。しかし Web が一般化し、「知らないサイトへアクセスする」のが日常になると、それでは危険すぎることが分かった。
その結果、browser は:
-
sandbox
-
same-origin policy
-
tab isolation
-
permission model
を発展させていった。
現在では、カメラやマイク、位置情報へのアクセスには permission dialog が表示される。「どの情報にアクセスするのか」を、ユーザーに明示する設計へ変わっていった。
つまり browser は、「知らないコードを安全に実行するOS」へ進化したのである。
そして Docker は、“開発者向け sandbox” として進化した
一方、開発者の世界では、別の方向から同じ問題への対応が進んでいた。
それが Docker や container 技術だ。
本来 Docker は deployment や環境再現性のために広まったが、実際には「危険なコードを隔離して実行する」用途としても重要になっている。
最近の AI coding agent では特にそうだ。
Claude Code や各種 coding agent は、
-
shell 実行
-
package install
-
browser 操作
-
filesystem access
などを行う。
つまり本質的には、「かなり強い権限を持つ自律エージェント」である。
だから最近は、
-
Docker
-
Firecracker
-
gVisor
-
microVM
-
ephemeral container
のような技術が、AI runtime の文脈で急速に重要になっている。
browser が「一般ユーザー向け sandbox」として進化したのに対し、Docker は「開発者向け sandbox」として進化してきた。そして AI によって、その2つの世界が合流し始めている。
ただし、“安全に隔離する” のは、実際にはかなり難しい
ここで重要なのは、「Docker を使えば安全」というほど単純ではない、ということだ。
むしろ現実には、“安全に隔離する” のはかなり難しい。
たとえば Docker でも、
-
ホストのホームディレクトリを mount してしまう
-
—privileged を付ける
-
host network を共有する
-
SSH key や credential を container に渡す
といった設定をすると、隔離の意味がかなり薄れる。
実際、多くの開発環境では「便利さ」を優先して、ホスト側の .ssh や .gitconfig、browser profile などを共有している。つまり container の中で動いているコードが、ホスト側の重要情報へアクセスできるケースは珍しくない。
しかも、これは Docker 特有の問題ではない。
本当に安全な sandbox を作ろうとすると、
-
Linux namespace
-
seccomp
-
capability
-
VM isolation
-
filesystem permission
-
network policy
-
secret management
など、かなり深いインフラ知識が必要になる。
だから現状は、
「危険だから、自分で安全な隔離環境を構築してください」
という世界になっている。
これはエンジニアには成立しても、一般ユーザーには成立しない。
vibe coding の本質は、「プログラミングの民主化」だからだ。
つまり、本来はインフラ知識を持たない人たちが大量に入ってくる。
しかし現在の開発環境は、まだ“専門家が触る前提”のままなのである。
だから本当に必要なのは、“AI時代のOS”
おそらく次に重要になるのは、「より賢いモデル」だけではない。
むしろ、
「AI が生成したコードを、どう安全に実行するか」
のほうが巨大市場になる可能性が高い。
たとえば将来的には、
-
GitHub repo を直接 clone しない
-
AI app として package 化
-
capability-based permission
-
ephemeral VM
-
verified publisher
-
automatic sandboxing
のような方向へ進むかもしれない。
つまり、
npm + GitHub + Docker を、一般人向けOSとして再設計する
流れだ。
たとえば iPhone では、
-
写真アクセス
-
マイク
-
Contacts
-
Location
などに対して permission が表示される。
しかし現在のローカル開発環境では、知らない shell script を実行するだけで、ホームディレクトリ全体へアクセスできるケースすらある。
今振り返ると、かなり異常な状態だと思う。
「vibe coding」は、“実行権限の民主化”である
多くの人は、vibe coding を「コード生成革命」として捉えている。
もちろんそれも正しい。
しかし本質的には、もっと大きな変化が起きているように思う。
それは、「コードを書く能力」の民主化ではなく、「コードを実行する権限」の民主化だ。
これまでは、コードを実行するのは専門家だった。
しかしこれからは、コードを読めない人たちも、大量にコードを実行する。
だから次に来る大きな波は、
-
AI sandbox
-
secure runtime
-
permissioned agent
-
local AI OS
-
ephemeral development environment
のような領域になるのではないか。
そして将来的には、「どれだけ高度なコードを生成できるか」よりも、
「どれだけ安全に実行できるか」
のほうが、プラットフォーム競争の中心になっていくのかもしれない。