WebAssembly が書ける言語まとめ
Webブラウザ上でコンパイルされたコードが動作するWebAssembly。モダンなブラウザではほぼ実装されており、実用段階に入ってきています。現在の仕様ではDOM操作ができませんので、主にCanvasやWebGLを使う場合であったり、重たい計算処理を行う際に使われるでしょう。
そんなWebAssemblyの魅力の一つがJavaScript以外のプログラミング言語でWebブラウザ上で動くプログラムが書けるということです。今回はWebAssemblyを作ることができるプログラミング言語を紹介します。
C/C++
C言語やC++はEmscriptenを使ってWebAssemblyに変換できます。
asm.js
JavaScriptを高速にした(WebAssemblyの一世代前とも言えるかも知れません)asm.jsはWebAssembly/binaryen: Compiler infrastructure and toolchain library for WebAssembly, in C++でWebAssemblyに変換できます。
Rust
Mozillaの開発するプログラミング言語、Rustは元々Emscriptenが必要でしたが、開発版においてrustcだけでWebAssemblyにコンパイルできるようになっています。
C\
.NETのC#はlrz/mono-wasmを使ってWebAssemblyを生成します。また、UnityであればWebGLとして出力することでWebAssemblyを生成することも可能です。ただしランタイム全体が含まれていますのでC#の特定の機能だけをコンパイルできるという訳ではありません。
Swift/Objective-C
こちらは未検証なのでご注意ください Emscriptenを使った場合、LLVMであればWebAssemblyにできるそうです。そのためLLVMに対応した言語であればWebAssemblyに変換できるということになります。
現在、すべての言語においてすべてのライブラリが問題なく動作するという訳ではありません。サードパーティー製のライブラリはもちろん、言語標準の機能であっても動かないケースがあります。情報もまだ多くはないので、試行錯誤しながら実装していくことになるでしょう。
今後Webアプリケーションが大型化したり、リッチ化していく中でWebAssemblyは欠かせない技術になります。公開できないコード(秘密鍵など)を扱う場合にも有効な技術になります。ぜひお試しください。
コメントは受け付けていません。