LoginSignup
0
0

More than 3 years have passed since last update.

WASMでhello world

Last updated at Posted at 2019-06-30

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0