Googleは昨年、PNaCL/NaClチームを解散し、今年の3月にChromeへのWebAssemblyデフォルトサポートを追加したが、公式にWebAssemblyを支持してPNaClをリタイアさせることを発表した。
PNaClはGoogle I/O 2013で発表された、ブラウザでネイティブコードを実行するためのGoogleによるソリューションだ。必要なのは全プラットフォーム用のLLVMビットコードだけで、Chromeが動いているプラットフォーム用のコードにブラウザが翻訳して実行する。PNaClはネイティブコードに近い実行性能を約束し、新旧のC/C++コードをブラウザでセキュアに実行することを可能にした。この技術は約束を守ったのだが、PNaClは他のブラウザベンダーに採用されることなく、開発者にもあまり受け入れられなかった。Google自身の言葉でいうと、PNaClの利用は「非推奨とするに十分なくらい低かった」。2018年Q1より、Chromeアプリおよび拡張機能を除き、ChromeはもはやPNaClをサポートしない。
その代わり、いまやGoogleはWebAssemblyをプッシュしている。WebAssemblyは成功する可能性が高まっている。Apple、Microsoft、Mozillaを含む主要なブラウザベンダーが受け入れているためだ。WebAssemblyというのは、ブラウザのためにネイティブアプリケーションをコンパイルするツールが対象とする、標準化されたバイナリフォーマットだ。CとC++をサポートし、Rustの初期サポートもある。まだガベージコレクタがなく、JavaやC#のような言語はサポートされていないが、それらは将来サポートされる可能性がある。
WebAssemblyの成功例として、Googleはブラウザ内ビデオエディタと、ブラウザ内のUnityエンジンで動くゲームを挙げた。
現在、ChromeとFirefoxはWebAssemblyをデフォルトでサポートしているが、EdgeとSafariは今のところプレビューモードだ。Chromeのロードマップには、非同期コンパイル、asm.js、IndexedDB、スレッド、SIMDなどのサポート追加が含まれている。WebAssembly Migration Guideでは、PNaCl機能が非推奨になって、代わりに何をどう使うべきかが紹介されている。
Rate this Article
- Editor Review
- Chief Editor Action