数年前からMozillaが開発してきたasm.jsは、JavaScriptの高速で実行できるサブセットだ。これまでasm.jsによる最適化をサポートしていたのはFirefoxだけだったが、もうすぐ(Windows 10から)この技術をMicrosoftのJavaScriptエンジンChakraでも使えるようになる。
Microsoftは今日の発表の中で、asm.jsのサポートはかなり前からデベロッパの要望事項のトップテンに入っていた、と言っている。そこでChakraのチームは、その実装を決意した。これでasm.jsには大きな味方ができたことになり、これまでよりももっと多くのデベロッパがこの技術に着目するだろう。
Chakraのチームはこう言っている: “これまで数か月かけて、asm.jsの技術と、その関連技術、およびそれらがWebにもたらす意味について検証してきた。asm.jsを実際に人間の手で書いていくのは厳しいが、その主な利点はC/C++のコードを翻訳してWebプラットホーム上で動かすことにある。そしてその際、WebGLやWeb Audioなどの技術も利用する。asm.jsは明らかに、Webプラットホーム上でネイティブに近いパフォーマンスを可能にするための一歩だ。それをChakraの次のリリースに持ち込めることは、とても喜ばしい”。
asm.jsの基本的な考え方は、デベロッパが自分のC/C++コードをこのJavaScriptの最適化サブセットへコンパイルして(Emscriptenコンパイラを使用)、ブラウザがそれを動かす、という点にある。デベロッパがasm.jsのコードを手書きすることももちろんできるし、それも当然、このプロジェクトのねらいだ。asm.jsの現状では、コードの実行所要時間が、翻訳前のC/C++コードの1.5倍という遅さで動く。
モバイルやデスクトップのゲームは高速化のためにCで書かれることが多いから、asm.jsによりそれをブラウザ上で動かす可能性が生まれる。asm.jsがなければ、ブラウザ上での高速化は難しいだろう。しかしそのコードは完全にJavaScriptそのものだから、どんなブラウザでも動く…あまり速くはないが。
[原文へ]
(翻訳:iwatani(a.k.a. hiwa))