Emscripten は LLVM のバイトコードの JavaScript へのコンパイラです。LLVM バイトコードは、例えば C/C++ を Clang でコンパイルすることで出力できます。バイトコードを JavaScript に変換することで、それらを Web ブラウザ上で動作させられます。
重要:このページには Emscripten の簡単な概要のみが記載されています。詳しく知るには, Emscripten の公式 WiKi をご覧ください。
Emscripten を利用することで以下のことが可能となります。
- C や C++ のコードを JavaScript へコンパイルできます
- LLVM バイトコードに出力された他の言語のコードを、JavaScript へコンパイルできます。
- C/C++ で記述された他の言語の処理系を JavaScript へ変換することで、その言語のコードを間接的に実行できます。既に Python や Lua の処理系が変換されています。
Emscripten を利用することで、ネイティブコードを即座に Web 向けにできます。いくつもの独立した実装をもつ標準化されたプラットフォームを利用することで、PC から iPad まで様々な環境で動作させられます。
つまり Emscripten を利用することで、手動で JavaScript への移植をする必要はなくなります。また JavaScript を学ぶ必要もなくなります。また既存のネイティブユーティリティやライブラリを利用できるため、 Web 開発者にとっても有益です。
実際にポータブルな C/C++ コードベースは Emscripten を用いて JavaScript へコンパイル可能です。その範囲は、グラフィックスや音声の再生、ファイルの読み込みと処理を必要とするハイパフォーマンスなゲームから、Qt のようなアプリケーションフレームワークまでに及びます。
Emscripten は高速なコードを生成します。標準の出力フォーマットは、高度な最適化を可能とする asm.js となっています。
付記:興味をお持ちの方は 他の Emscripten に関する記事を読み、デモをご覧ください。その後、利用をはじめる と良いでしょう。
MDN 上の他の記事
- ゲーム開発において Emscripten はよく利用されています。 Games zone には、ゲーム開発に関する記事がまとまっています。
- Emscripten techniques には Emscripten WiKi にはない、Emscripten に関する有用なアイディアがまとまっています。