こんにちは、ひがしです。
今回はGo言語とWebAssemblyを使ってみたいと思います。

WebAssemblyとは

ブラウザ上で動く低水準言語で、wasmとも称される。
Go言語では1.11から公式によってサポートされている。

JSと比較して早いらしい(筆者はJSに詳しくないのでここら辺はよくわからない)

Go言語でやろうぜ

環境

筆者は以下の環境で作業を行う

  • OS
    • manjaro Linux
  • Editor
    • Vim
  • Go言語
    • go1.13.5
  • shell
    • fish
    • bash

作業はじめ

Go言語でWebAssemblyをやりましょう
ということで以下のサイトを参考にHello Worldをやってみた

https://github.com/golang/go/wiki/WebAssembly

まずはフォルダを作成し、移動する。

$ mkdir hello_wasm
$ cd hello_wasm

その後、好きな文字列を出力するコードを書く

公式のWikiには

$ GOOS=js GOARCH=wasm go build -o main.wasm

でコンパイルすると書いているが筆者の環境だと通らなかったので以下のコマンドでコンパイルした

$ env GOOS=js GOARCH=wasm go build -o main.wasm hello_wasm.go

2020/1/21 追記
go mod initしてないだけでした。
ごめんなさい

次にindex.htmlとwasm_exec.jsをとってくるのだが、筆者環境では公式Wikiで紹介してくれている方法で出来なかったのでここからbashに切り替え作業した

$ cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" .

その後、以下ようなindex.htmlを作成する

作成後、以下のコマンドを実行して
localhost:8080/index.html
にアクセスする。

※goexecをインストールしていない場合は
go get -u github.com/shurcooL/goexec
でインストールを行う

$ goexec 'http.ListenAndServe(`:8080`, http.FileServer(http.Dir(`.`)))'

アクセスすると、以下のようなボタンが表示されると思う

表示されていることを確認したあとにF12キーを押してconsoleを開き、
ボタンを押し、consoleで
Hello WebAssembly!!
と表示されれば成功。

まとめ

簡単にWebAssemblyを試すことができた。

今後、WebAssemblyを使って何か作りたいと思う。

カテゴリー: Go言語

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です