Google、Microsoft、Mozilla他が協力して、ウェブ用新バイナリーフォーマットWebAssemblyを公開

【出典】2015/6/17

http://techcrunch.com/2015/06/17/google-microsoft-mozilla-and-others-team-up-to-launch-webassembly-a-new-binary-format-for-the-web/

Untitled

GoogleMicrosoftMozilla、および WebKitプロジェクトのエンジニア達は、ウェブ用アプリケーションをコンパイルするためのバイナリーフォーマットWebAssemblyを共同開発したことを発表した。

ウェブはJavaScriptを中心に成長してきたが、これには限界があり、その限界をある程度回避できるようにと、他の言語からJavaScriptにコードを変換するコンパイラーを開発する取組みが数多くなされてきた。例えば、ある取り組みは言語に新たな機能を追加し(例えばMicrosoftのTypeScript)、またある取り組みはJavaScriptをスピードアップさせた(Mozillaのasm.jsプロジェクト)。今、そうした取り組みの多くがWebAssemblyという形でまた一つになろうとしている。

今回の新フォーマットの狙いは、プログラマーがブラウザ用のコード(現在はC/C++が対象、他言語も続く予定)をコンパイルし、JavaScriptエンジン上で動作できるようにすることだ。コード全体の解析(モバイル端末では特に時間がかかる)が必要なくなり、WebAssemblyははるかに速くデコードすることができる。

WebAssemblyをウェブ開発者に提供することで、全ブラウザで標準となることを目的としているのだ。

JavaScriptファイルはサーバーからダウンロードされる単純なテキストファイルであり、それをブラウザ内のJavaScriptエンジンが解析し実行する。WebAssemblyチームがバイナリー形式の採用を決めた理由は、標準のJavaScriptテキストファイル以上に圧縮が可能であり、エンジンがasm.jsコードを解析するよりバイナリー形式をデコードする方が圧倒的に速い(現在のプロトタイプで最大23倍)からだ。

Mozillaのasm.jsは、ウェブにより早いスピードをもたらすことを長年の目標としてきた。ブラウザでネイティブコードを使用するGoogleのNative Clientプロジェクトも、同様の目標を掲げていたが、ウェブに与えた影響は比較的小さかった。WebAssemblyは、このようなそれぞれの取り組みの良いところをブラウザにもたらすことができるかもしれない。

第一段階として、WebAssemblyチームはasm.jsとほぼ同じ機能を提供できるようにすることを目標としている(具体的には、ウェブ開発者が現在asm.jsコードのコンパイルに使用しているのと同じEmscriptenツールをWebAssemblyでも使うことができるようにすることである)。

この初期段階では、polyfill libraryと呼ばれる、WebAssemblyコードをJavaScriptに変換してどんなブラウザでも動くようにするツールも公開する予定だ。 WebAssemblyをサポートしていないブラウザでも作動するらしい(これは少々不合理だが、全ブラウザがWebAssemblyコードを動かすことができるようになれば不要になる)。また長期的には、その他のツール(コンパイラー、デバッガー等)も開発し、他言語(Rust、Go、C#等)のサポートも追加する予定だ。

JavaScriptの発明者(かつ短期間Mozilla CEOでもあった)であるBrendan Eich氏は 、主要なブラウザが新フォーマットを通常状態でサポートし始めた時点で、JavaScriptとWebAssemblyは再び分化できるようになるだろうと述べている。

開発チームは、今回の取り組みの狙いはJavaScriptを置き換えることではなく、あくまでもっと多くの言語をウェブ用にコンパイルできるようにすることだと強調する。実際、JavaScriptとWebAssemblyが共存し、アプリケーションの一部がWebAssemblyモジュールを使い(アニメーション、ビジュアル化、圧縮等)、ユーザーインターフェースの殆どはJavaScriptで書かれたままという状態は十分考えられるシナリオである。

主要ブラウザのメーカーが全社揃ってこのようなプロジェクトで協力することは珍しく、今後が大いに期待される。