WebAssemblyをやってみる

興味あったのでやってみる. Rustはわからんので, 書いたことのあるC/C++を使う.

公式ページのDeveloper’s Guide にはToolchain入れろって書いてあるけど, だるいのでDockerを使ってみる.

成果物はここに置いてある. mimikun/wasm-sample

mkdir -p $WORKDIR/wasm-sample
mkdir dist
touch hello.c
docker pull trzeci/emscripten
docker run --rm -v $(pwd):/src trzeci/emscripten emcc hello.c -s WASM=1 -o dist/hello.html
#include <stdio.h>
int main(int argc, char ** argv) {
  printf("Hello, world!\n");
}

そのままhtmlファイルを開くと, CORSで弾かれる.

なので, emrunコマンドで開く必要がある.

$ emrun --no_browser --port 8080 .

Dockerで実行する場合はこう (参考: https://puzzle.github.io/tws18-webassembly-slides)

$ docker run --rm -p 8080:8080 -v $(pwd):/src trzeci/emscripten emrun --no_browser --hostname 0.0.0.0 --port 8080 dist/

WebAssembly, うまく使えば便利だと思った.