はじめに
2019年、Docker創設者のSolomon Hykes氏がこんなツイートをしました。
"If WASM+WASI existed in 2008, we wouldn't have needed to created Docker. That's how important it is. Webassembly on the server is the future of computing."
(もしWASM+WASIが2008年に存在していたら、Dockerを作る必要はなかった。それほど重要なものだ。サーバー上のWebAssemblyはコンピューティングの未来だ。)
当時は「まさか」と思った人が多かったはずです。しかし2026年、この予言が驚くほど現実味を帯びてきています。
Dockerイメージ200MBがWasmなら10MB以下。コンテナ起動に数秒かかるところ、Wasmなら0.5ミリ秒。AkamaiがWasmランタイム企業のFermyonを買収し、Cloudflareは330拠点以上でWasmワーカーを本番運用している──。
この記事では、「DockerとWasmは何が違うのか」「本当にDockerは不要になるのか」を整理します。
そもそもWebAssembly(Wasm)とは
WebAssembly(ワズム、略称Wasm)は、もともと ブラウザ上で高速にコードを動かす ために設計されたバイナリフォーマットです。C、C++、Rust、Go などの言語で書いたコードをWasmにコンパイルすると、ブラウザ上でネイティブに近い速度で実行できます。
「ブラウザの技術でしょ? サーバーと何の関係が?」と思うかもしれません。話が変わったのは WASI(WebAssembly System Interface) の登場です。
WASIは、Wasmにファイルシステムやネットワークなど OS機能へのアクセスを標準化して提供する仕様 です。これによってWasmはブラウザの外──サーバー、エッジ、CLIツール──で動くようになりました。
【Wasmの進化】
2017年 ブラウザ4社がWasmサポート開始(Chrome, Firefox, Safari, Edge)
2019年 WASI発表。Wasmがブラウザの外へ
2024年 WASI 0.2.0 安定版リリース(コンポーネントモデル対応)
2026年 WASI 0.3.0 プレビュー(非同期処理対応)
WASI 1.0 を2026年後半〜2027年初頭に予定
DockerとWasmの違いを整理する
Dockerを使ったことがある方は多いと思います。では、Dockerコンテナの代わりにWasmを使うと何が変わるのでしょうか。
| 比較項目 | Docker コンテナ | Wasm モジュール |
|---|---|---|
| イメージサイズ | 数十MB〜数百MB | 数百KB〜数MB |
| 起動時間 | 数百ミリ秒〜数秒 | サブミリ秒(0.5ms程度) |
| 分離方式 | Linuxカーネルの名前空間・cgroups | Wasmランタイムのサンドボックス |
| OS依存 | Linuxカーネルが必要 | OS非依存(ランタイムがあればどこでも) |
| 言語サポート | ほぼすべての言語 | Rust, C/C++, Go, Python, JS 等(拡大中) |
| エコシステム | 非常に成熟 | 急成長中だが発展途上 |
最も衝撃的なのは 起動時間 です。ある開発者の検証では、Dockerベースのマイクロサービスを同じ機能のWasmモジュールに置き換えたところ、コールドスタートが100倍以上速くなったという報告もあります。
なぜWasmがサーバーサイドで注目されているのか
起動が速いだけなら話題にはなりません。Wasmがサーバーサイドで注目される理由は3つあります。
1. エッジコンピューティングとの相性が抜群
エッジ(ユーザーに近い場所にあるサーバー)で処理を行うには、軽量で即座に起動するランタイムが必要です。Dockerコンテナは重すぎてエッジには向きません。
Wasmなら、リクエストが来た瞬間にモジュールを起動し、処理して、即座に破棄できます。Cloudflare Workersは、まさにこの仕組みで330拠点以上でWasmベースのサーバーレス関数を本番運用しています。
2. セキュリティが「デフォルトで安全」
Dockerコンテナはホストのカーネルを共有するため、コンテナ脱出(container escape)と呼ばれる脆弱性のリスクが存在します。
一方、Wasmはサンドボックス内で実行され、明示的に許可しない限り ファイルシステムやネットワークにアクセスできません。これは「Capability-based Security」(能力ベースのセキュリティ)と呼ばれ、「デフォルトで何もできない → 必要な権限だけ渡す」という設計です。
3. 「一度ビルドすればどこでも動く」が本当に実現する
Dockerの「Build once, run anywhere」は実際にはLinux前提でした。Wasmは本当にOS・アーキテクチャに依存しません。同じWasmモジュールがブラウザでも、Linux/macOS/Windowsサーバーでも、エッジでも動きます。
2026年の実サービスでの採用状況
「理論はわかったけど、本番で使われてるの?」という疑問に答えます。
Akamai × Fermyon
2025年末、CDN大手のAkamaiがWasmランタイム企業 Fermyon を買収しました。Fermyonが開発するWasmフレームワーク Spin は、コールドスタート約0.5ミリ秒を実現しています。
買収後、Fermyon Wasm Functions on Akamai として4,000以上のエッジロケーションでWasmベースのサーバーレス関数が利用可能になりました。Fermyon CEOのMatt Butcher氏は「2026年は、平均的な開発者がこの技術の可能性に気づく年になる」と述べています。
Cloudflare Workers
Cloudflare Workersは2018年からWasmをサポートしており、現在は330拠点以上のグローバルネットワークで本番運用されています。Shopifyは Cloudflare Workers をベースとしたホスティングプラットフォーム「Oxygen」を構築しており、ストアフロントのトラフィックの70〜80%をエッジで処理しています。
Docker自身もWasmを採用
興味深いことに、Docker自身がWasmランタイムを統合しています。Docker Desktopでは、containerdのshim(仲介プロセス)を通じて WasmEdge、Wasmtime、Spin などのWasmランタイムを利用可能です。
# docker-compose.yml でWasmとLinuxコンテナを共存させる例
services:
# 従来のLinuxコンテナ
database:
image: postgres:16
ports:
- "5432:5432"
# Wasmモジュールとして実行
api:
image: my-api:latest
runtime: io.containerd.wasmtime.v1
ports:
- "8080:8080"
つまり、DockerとWasmは「対立」ではなく「共存」 の方向に進んでいます。
Wasmの弱点:まだDockerを置き換えられない理由
バラ色の話ばかり書きましたが、正直に言えば 2026年時点でDockerを完全に置き換えるのは無理 です。
言語サポートの制約
RustやC/C++はWasmとの相性が非常に良いですが、Python、Ruby、PHPなどのスクリプト言語のサポートはまだ限定的です。既存のWebアプリケーションをそのままWasmに移行するのは、言語によっては現実的ではありません。
エコシステムの成熟度
Docker Hubには数百万のコンテナイメージがあり、ほぼすべてのミドルウェアがDocker対応しています。Wasmはまだそこまでのエコシステムが整っていません。
WASI仕様がまだ安定していない
WASI 0.2.0が2024年1月にリリースされ安定版となりましたが、WASI 1.0(最終安定版)は2026年後半〜2027年初頭の予定です。仕様が固まりきっていない部分があり、本番環境への全面採用はリスクが伴います。
結論:「Dockerオワコン」ではなく「使い分け」の時代
Solomon Hykes氏の予言は、方向性としては正しかったと言えます。Wasmはサーバーサイドで本格的に使われ始めており、特にエッジコンピューティングではDockerコンテナを完全に上回る性能を示しています。
ただし、2026年の現実的な答えは 「Docker OR Wasm」ではなく「Docker AND Wasm」 です。
| ユースケース | 推奨 |
|---|---|
| エッジでの軽量処理 | Wasm(起動速度が圧倒的) |
| 既存のWebアプリ運用 | Docker(エコシステムが成熟) |
| マイクロサービスの新規開発(Rust/Go) | Wasmを検討する価値あり |
| データベースやミドルウェア | Docker(Wasmでは動かない) |
| ハイブリッド構成 | Docker + Wasm(docker-composeで共存) |
Wasmを今すぐ試してみたい方には、Fermyon Spin がおすすめです。数行のコマンドでWasmアプリケーションを作成・実行でき、Wasmの起動速度を体感できます。
# Spinのインストール
curl -fsSL https://developer.fermyon.com/downloads/install.sh | bash
# 新しいSpinアプリを作成(Rust)
spin new -t http-rust my-api
cd my-api
# ビルド & 実行
spin build
spin up
# → http://127.0.0.1:3000 でサーバーが起動(ミリ秒単位)
Dockerがコンテナ革命を起こしたように、Wasmはその次の革命を静かに進めています。完全な置き換えはまだ先ですが、「知らなかった」では済まない段階に来ているのは確かです。
参考: