ニュース

Webブラウザーで「Debian」Linuxが動く! WebAssembly製のx86仮想マシン「WebVM」

バイナリそのまま・再コンパイルなし。完全にクライアント側だけで動作

Webブラウザーでx86仮想マシンを実行するソリューション「WebVM」が公開

 Webブラウザーでx86仮想マシンを実行するソリューション「WebVM」が、2月1日に公開された。Linuxディストリビューション「Debian」のバイナリをそのまま、WebAssemblyで動かしているという。

 「WebVM」を開発したのは欧州に拠点を置くLeaning Technologies社。WebAssemblyを活用してレガシーアプリケーションを延命させるソリューションを複数手掛けている。

  • 「Cheerp」:C/C++をWebAssemblyおよびJavaScriptへコンパイル
  • 「CheerpJ」:JavaクライアントアプリをHTML5/JavaScript/WebAssemblyへ変換
  • 「CheerpX」:x86アプリをWebAssemblyで仮想化する技術。WebAssemblyでFlashコンテンツをエミュレートすることも可能

 「WebVM」には「CheerpX」が用いられているが、これは3年以上前から開発が始められており、古い「Adobe Flash」コンテンツを実行するためのエンタープライズソリューション「CheerpX for Flash」の一部として、すでに多くの実績を積んでいるとのこと。

 「CheerpX」は、以下に例を挙げるような技術を組み合わせた複雑なソリューションだが、すでに高いレベルの安定性を実現しているという。

  • x86向けのインタープリター
  • インタープリターで検出されたホットコード(頻繁に呼び出されるコード)をWebAssembly化するJITコンパイラー
  • 未変換のx86バイナリと変換済みのWebAssemblyのギャップを埋めるLinuxシステムコールエミュレーション層

 「Debian 10」(buster)のディスクイメージはCDNで配信されているが、ユーザーデータはIndexedDBをベースにしたローカルストレージに永続化される仕組みとなっており、外部に送出されることはない。事実上、サーバーレスで動作するのが特徴だ。

「vim」が動作する様子

 「WebVM」と「CheerpX」は、デスクトップ(Google Chrome、Microsoft Edge、Firefox、Safari)とモバイル(Chrome、Safari)の両方で利用可能。デバイスに十分なメモリがあれば、あらゆるWebブラウザーと互換性があるとしている。