tl;dr
go言語で書いたコンソール出力をwasmにコンパイルし、動作を確認します。
WASMとは
WebASseMbly。Webブラウザで実行できるバイナリ。javascriptよりも高速に動作する。
主要ブラウザにて対応済み。各ブラウザの実装状況
go言語のインストール
linuxなら、パッケージマネージャからインストールします。
それ以外なら、公式サイトよりダウンロードし、インストールします。
インストールが終わったら、コンソールで確認します。
$ go version
goexec のインストール
別になくてもいいんですが、easyにローカルhttpサーバを建てたいのでインストールしておきます。
※goexecをインストールするには、事前にgitのインストールが必要です。
$ go get -u github.com/shurcooL/goexec
プロジェクト用フォルダの作成
今回のプロジェクト用に適当なフォルダを準備します。私の場合、「play_wasm」にしました。
$ mkdir play_wasm
$ cd play_wasm
ここから先は全て、play_wasmフォルダ内での作業になります。
goのコードを書く
play_wasmフォルダ内に、「main.go」ファイルを作成します。
ファイルの中身は以下の通りです。
package main
func main() {
println("Hello, WebAssembly!")
}
コンパイル
goからwasmにコンパイルします。
$ GOOS=js GOARCH=wasm go build -o test.wasm main.go
※wasm_exec.htmlでファイル名を指定してあるため、必ず「test.wasm」にしてください。もし変更したい場合は、wasm_exec.htmlの修正が必要です。
動作確認
ヘルパーファイルをダウンロードします。play_wasmフォルダ内で以下のコマンドを実行します。
$ curl -sO https://raw.githubusercontent.com/golang/go/master/misc/wasm/wasm_exec.html
$ curl -sO https://raw.githubusercontent.com/golang/go/master/misc/wasm/wasm_exec.js
ローカルhttpサーバの起動
goexec 'http.ListenAndServe(":8080", http.FileServer(http.Dir(".")))'
ブラウザより以下のアドレスにアクセスし、「run」ボタンを押すとconsoleにhelloが出力されます。
http://localhost:8080/wasm_exec.html