Googleが中心となってオープンソースで開発されているGo言語は、WindowsやmacOS、Linux、FreeBSD、iOS、Androidなど、さまざまなOSやCPUに対応したバイナリを生成できることが特長の1つとなっています。

そのGo言語のコンパイラが生成するバイナリにWebAssemblyが追加されました。WebAssemblyは、Webブラウザ上でネイティブコードに近い実行速度で高速に実行できるバイナリフォーマットです。

WebAssemblyのサポートは昨年2月から検討がはじまり、先月末に最初のコードがコミットされた状態で、現在も開発が進んでいます。

GOの今後のバージョンアップで正式にWebAssemblyがサポートされる見通しです。

Go言語はサポートするOSやCPUの種類をそれぞれ「GOOS」と「GOARCH」の値で示しています。例えばWindowsのGOOS値は「windows」、macOSおよびiOSは「darwin」、Linuxは「Linux」、CPUを示す「GOARCH」には32ビットx86を示す「386」や64ビットx86やAMD64を示す「amd64」、「arm」「arm64」「mips」などがあります。

今回のWebAssemblyでは、GOOSがJavaScriptの実行環境を表す「js」、GOARCHがWebAssemblyの正式な省略形である「wasm」となりました。

参考記事

W3CのWebAssemblyワーキンググループは、「WebAssembly」仕様に関する初めてのワーキングドラフトを公開しました。

WebブラウザやNode.js対応のアプリをGo言語で開発可能に

Go言語はGoogleがオープンソースで開発しているプログラミング言語です。シンプルにコードを記述できるため学習コストが小さく、タイプセーフかつメモリセーフにできているため安全なプログラムを記述しやすく、並列処理の記述も容易、コンパイルや実行が高速などの特長があります。

Go言語がWebAssemblyをサポートしたことで、WebブラウザやNode.jsで実行されるWebアプリケーションをGo言語でも開発できるようになる見通しです。

Mozillaが発表したばかりのWebAssembly対応の統合開発環境「WebAssembly Studio」でも、CやRust、TypeScriptのサブセットであるAssemblyScriptなど、JavaScript以外のプログラミング言語が用意されています。今後WebAssemblyが普及していくと、Webアプリケーションの開発言語は多様化の時代を迎えることになりそうです。

参考記事

GoogleのChromeブラウザで使われているJavaScriptエンジンの最新版「V8 release v6.5」のリリースが発表されました。V8 release v6.5の最大の特徴は、WebAssemblyの「Streaming Compilation」（ストリーミングコンパイレーション）を実現したことです。

Firefox 58では、WebAssemblyの実行高速化のためにマルチコアを活かし、通信とコンパイルの並列処理、高速コンパイラと最適化コンパイラを同時に用いるなどの高速化技術を組み込んでいます。

関連記事