Tech Knowledge

IT技術者の知識共有を目的とした記事を書いています

Wasmer: あらゆる環境でのWebAssemblyを実行する

Wasmerとは

Wasmerは、WebAssembly モジュールと Wasmer パッケージをどこでも実行できるようにするランタイムです。
WebAssemblyは、ブラウザで高速に動作するバイナリ形式のコードですが、wasmerを使えば、ブラウザ以外の環境でもWebAssemblyを実行できます。

wasmer.io

Wasmerは導入の簡単さだけではなく、アプリをパッケージ化して配布するエコシステムを備えています。レジストリに公開されているパッケージは誰でもダウンロードして実行することができます。またアプリケーションをサーバーレスに実行するEdgeというプラットフォームも用意されています。

レジストリ:
Wasmer - Registry

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が出力されます。

このように、簡単に導入・実行が可能です。