Emscriptenとは
Emscriptenは、
LLVM/
Clangをベースとした
コンパイラであり、
Cおよび
C++の
ソースコードを
WebAssembly(またはasm.js)にコンパイルすることを主な目的としています。これにより、
C/
C++で記述されたアプリケーションやライブラリを、ウェブブラウザ上で効率的に実行できます。
Emscriptenの利用
Emscriptenの登場により、
C/
C++で開発された既存のソフトウェア資産を、比較的容易にウェブ環境へ移植することが可能になりました。特に、グラフィックを多用するゲームや、計算負荷の高いアプリケーションにおいて、その効果を発揮します。
幅広い分野での応用
Emscriptenは、以下のような様々な分野で活用されています。
ゲームエンジン: Unity、Godot、Unreal Engineなどの主要なゲームエンジンは、HTML5へのエクスポート機能を提供しており、その内部でEmscriptenが利用されています。
フレームワークとツールキット: openFrameworksなどのフレームワークは、Emscriptenを通じてネイティブ
C++アプリケーションをHTML5にエクスポートできます。また、emscripten-qtは
Qtアプリケーションフレームワークで記述されたアプリケーションを
WebAssemblyにコンパイルすることを可能にします。
ソフトウェアアーカイブ: インターネットアーカイブは、EmscriptenでコンパイルされたDOSBoxエミュレータを公開し、ブラウザ上で多数のMS-DOSプログラムやPCプログラムへのアクセスを提供しています。
最新のWebAssembly System Interface(WASI)とNode.js、Wasmtime、WasmerなどのWebAssemblyランタイムを組み合わせることで、EmscriptenはWeb環境だけでなく、非Web環境で実行するためのWebAssemblyにコンパイルできます。
移植事例
Emscriptenは、以下のソフトウェアをWebAssemblyに移植するために利用されています。
Unreal Engine 3
SQLite
MeshLab
Bullet physics
Auto[[CAD]]
Qt アプリケーションフレームワークのサブセット
まとめ
Emscriptenは、C/C++で開発されたソフトウェアをWebAssemblyに変換し、ウェブブラウザ上で効率的に実行するための強力なツールです。ゲーム、アプリケーション、アーカイブなど、様々な分野で活用されており、その応用範囲はますます広がっています。
参考
asm.js
Client'>Google Native Client(PNaCl)
Haxe
WebAssembly'>WebAssembly
外部リンク
公式ウェブサイト
GitHubプロジェクトページ
Emscriptenドキュメント
移植のサンプルとデモ
WebAssemblyランタイムのリスト