Wasmer: あらゆる環境でのWebAssemblyを実行する
Wasmerとは
Wasmerは、WebAssembly モジュールと Wasmer パッケージをどこでも実行できるようにするランタイムです。
WebAssemblyは、ブラウザで高速に動作するバイナリ形式のコードですが、wasmerを使えば、ブラウザ以外の環境でもWebAssemblyを実行できます。
Wasmerは導入の簡単さだけではなく、アプリをパッケージ化して配布するエコシステムを備えています。レジストリに公開されているパッケージは誰でもダウンロードして実行することができます。またアプリケーションをサーバーレスに実行するEdgeというプラットフォームも用意されています。
Edge:
Wasmer - Edge
インストール
さっそくインストールと実行を試してみましょう。
詳しくは公式ドキュメントを参照してください。
docs.wasmer.io
インストールは以下のようにスクリプトを実行します。(macOS, Linux向けの手順です。)
$ curl https://get.wasmer.io -sSfL | sh Welcome to the Wasmer bash installer! ww wwwww ww wwwwww w wwwww wwwwwwwww ww wwwwww w wwwwwww wwwww wwwwwwwwww wwwww wwwwww w wwwwwww wwwww wwwwwwwwwwwwww wwwww wwwww wwwwwwwwwwwwwww wwwww wwwww wwwwwwwwwwwwwww wwwww wwwww wwwwwwwwwwwwwww wwwww wwwww wwwwwwwwwwwwwww wwwww wwww wwwwwwwwwwwwwww wwwww wwwwwwwwwwww wwww wwwwwwww wwww $ source /home/rsakao/.wasmer/wasmer.sh
Windowsでは以下を実行します。
iwr https://win.wasmer.io -useb | iex
Hello World
インストールが完了したらhello worldを実行します。ここではcowsayというパッケージを使います。
$ wasmer run cowsay "Hello world" _____________ < Hello world > ------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
cowsayはlinuxのコマンドですが、wasmパッケージとして配布されています。引数としてHello world
という文字列を渡しています。
比較としてのcowsayコマンド:
$ cowsay "Hello world" _____________ < Hello world > ------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
また、pythonを実行してみましょう
$ wasmer run python/python -- -c "print(1+1)" 2
pythonが実行され、-c "print(1+1)"
の結果として2
が出力されます。
このように、簡単に導入・実行が可能です。