Scribble at 2026-02-20 18:22:33 Last modified: 2026-02-20 18:24:04
WebAssembly (Wasm) turns 10 this year, which, in software terms, just about brings it to the age of majority. It has been polished, prepared, explored, and deployed, but in the language of American speculative fiction author William Gibson, we are now as ever in the unevenly distributed future: WebAssembly has found a niche but not yet filled its habitable space. This article attempts to inventory the early Wasm wins and losses and identify winning (and losing!) patterns, and then goes further to extract commonalities between these patterns: What is it that makes for a successful Wasm deployment? These observations are then used to predict the future, suggesting new areas where Wasm will find purchase in the next two to three years.
WebAssembly は今年で誕生から10年を迎え、ソフトウェアの世界ではいわば「成人」と言える時期に差し掛かっている。この技術はもともと、C や C++ で書かれたデスクトップ・アプリケーションをブラウザへ移植する手段として、asm.js という技術から発展した経緯がある。実際に Adobe の Photoshop といった大規模なソフトウェアをウェブで動かすことに成功しており、これらは Wasm の大きな勝利と言える。しかし一方で、当初期待されたゲーム業界への大規模な普及には至っておらず、現在の Unreal Engine には Wasm バックエンドが含まれていないなど、その成果は「混迷」と評されている。
技術的な課題として長く指摘されてきたのが、メモリ管理の問題だ。以前の Wasm はメモリを巨大なバイト配列(Linear memory)としてしか扱えず、Python や Java のような自動メモリ管理を必要とする言語には不向きだった。しかし昨年、主要な全ブラウザが Wasm のランタイム自体に備わったガベージ・コレクションを利用可能にする「WasmGC」を実装したことで、この状況は一変した 。これにより、Google Sheets が Java からコンパイルされたコードを WasmGC 上で動かし始めるなど、新しい言語コミュニティがウェブをターゲットにするための技術的基盤が整いつつある。
さらに重要なのは、WebAssembly という名前に反して、この技術の本質がすでにウェブを超えている点にある。Wasm は今や、異なるプログラム部品を安全に隔離して実行するための「軽量な仮想化技術」として注目を集めている。例えば Firefox の内部では、脆弱性が懸念されるサードパーティ製のライブラリを Wasm にコンパイルして隔離することで、セキュリティリスクを抑え込む「RLBox」という手法が取られている。このような隔離は、クラウドやエッジ・コンピューティングの世界でも極めて重要であり、特に仮想マシンよりも圧倒的に速いコールドスタートの速さが Wasm の最大の武器となっている。
この技術が将来的にさらに普及するためには、低レイヤーな数値データしかやり取りできない現在の制約を克服し、文字列やレコードといった高レベルな概念を標準的に扱えるようにするコンポーネント・モデルの成功が鍵を握っている。著者の Andy Wingo は、この Wasm の特性を活かせる新しい領域として、OS のカーネル内でのドライバ隔離や、ユーザーの機密データを安全に処理する必要があるAI関連のタスクなどを挙げている。
総じて、Wasm は単なる JavaScript の代替ではなく、異なる開発者が書いたコードを安全かつ高速に連携させるための抽象化の境界として、その真の価値を見出しつつある。遠い昔に僕もアセンブリを MZ-80B というコンピュータへ打ち込んでいた一人なので興味深いんだけど、扱いがシビアであることも確かだろう。学ぶにしても、仕事で利用するならなおさら慎重にならないといけない。
別件だが、僕は弊社の規則だと、あと7年は在籍できることになっているのだが、プライバシーマークというか JIS のマネジメントシステムの運用を引き継いだりするだけではなく、エンジニアとしても当社で引き継げることは引き継いで役目を終えたいと思っている。つまり、当社を退職した後で別の会社へ就職するとしても、もうサーバ・エンジニアとかプログラマの仕事はしないつもりだ(というか、たぶんそういう建前で管掌としてはやらされるのかもしれないが)。僕はエンジニアとしてのアイデンティティがなくて、何度も言ってることだが暇潰しにプログラミングやサーバ構築をやって電通・博報堂の大企業案件を取り回してきたにすぎないので・・・さらっと書いてるが、無能や凡人にはできないことだよ? で、別に「死ぬまでコーディングしていたい」みたいな、かつてサイボウズ・ラボにいた人物のように崇高な・・・いや、当てつけになるからやめておくが(笑)、そういう気分はない。事務屋のおっさんとして、残りの人生を年収600万円程度で維持していけたら、それで十分だ。都内に億ションを買いたいとか、世界一周旅行とか、免許を取って Griffith の FR 車を運転したいとか(初代『グランツーリスモ』でゴールド・ライセンスを総なめにした「愛車」だ)、もうそういう望みはない。
よって、こういう新しいアプローチや技術・技巧についても、可能な限り取り入れたいし学びたいけれど、実装はたぶんしないと思う。いまから始めて、今年中にコーポレート・サイトのバックエンドに何か採用するとしても、その運用経験はこれから5年ていどになるわけで、そんなもん HAL の学生みたいなレベルで終わってしまう。誰かに経験として残すほどのものでもないわけだ。それよりも、これまで従事してきた数多くの案件で積み上げてきた設計とか、要件定義とか、テストとか、サーバ運用とか、セキュリティ対策とか、そういったことを更に磨いて何か残す方がよいだろうと思う。残すべき人がいればの話だがね。もちろん、当サイトで P&* とか任*堂とかの案件について何か書くわけもないし、具体的な内容を削って書ける案件が他のクライントであるとしても、その多くは・・・実はそれなりにヤバいことだったりするんだよね(笑)。