この記事はHacks blogの記事、"Previewing the WebAssembly Explorer"の抄訳です。
WebAssemblyは、Webのためのクロスブラウザな、新しいプログラムのファイルフォーマットです。その性質についてはLin Clarkの連載、"A aartoon intro to WebAssembly"でお読みいただけます。JavaScriptと異なり、WebAssemblyはバイナリフォーマットです。つまり開発者がWebAssemblyについて学習する場合や、実験する場合は新しいツールが必要となります。そのようなツールの1つが、Mozillaの開発したWebAssemlby Explorerです。
このビデオは、CやC++のプログラムをコンパイルして、WebAssemblyを出力するというWebAssembly Explorerの基本機能を解説しています。
WebAssemblyとWebAssembly Explorerの長所の一つは、開発者がコードに対してなされた最適化処理の結果を見られることにあります。例えば、ビデオではWebAssemlbyコンパイラがC言語の型情報を利用して、除算とより効率的なビットシフトとを使い分けています。JavaScriptでは、ブラウザのJITコンパイラが偶然同じ最適化を行うことがあります。しかしそこには何の保証もありません。事前コンパイル(AOT)は同時に楽観的なJITコンパイラでは必要な観察とプロファイリングによるオーバヘッドを避けることもできます。
WebAssembly Explorerは学習ツールとしてはすばらしいのですが、まだ開発初期段階にあるため、複雑なプログラムには向いていません。製品レベルのコンパイラを必要とする方は、Emscriptenを検討した方がいいでしょう。元々asm.jsを出力するために作成されたコンパイラではありますが、拡張され、WebAssemblyも出力できるようになっています。
WebAssembly ExplorerのソースコードはGitHubで公開されています。また今週後半(訳注:元記事が公開されたのは2017年3月6日)公開されるFirefox 52ではWebAssemblyを標準で利用できるようになっています。そちらを使えばWebAssemblyについて実験が行えます。
Dan Callahanについて
Mozillaのディベロッパーリレーションチームのエンジニア。元Mozilla Personaの開発者
- Webサイト:dancallahan.info
- Twitter:@callahad