オープンソースのWebAssemblyサーバレス基盤「Wasm Workers Server 1.0」正式リリース。RubyとPythonのWASMランタイムに対応し、Ruby/Pythonでの記述が可能に
VMware Wasm Labsは、Node.jsやDenoのようにWebAssemblyやJavaScriptで記述したWorkerをサーバサイドでイベントドリブンに実行できる「Wasm Workers Server」のバージョン1.0をリリースしました。
Wasm Workers Server v1.0.0 is out. We are happy to announce the support for Python, Ruby and more languages in the future!
— Wasm Labs (@vmwwasm) February 23, 2023
From now on, you can create worker-based serverless apps using any of these languages and run them in #WebAssemblyhttps://t.co/oeceLzHQTO
Wasm Workers Serverは、WebAssemblyランタイムであるWasmtimeの上に構築されているのが特徴。
Wasm Workers Serverのディレクトリに保存されたWorkerとなるファイルが、WebブラウザなどからのHTTPリクエストによって起動、実行され、結果を返す、といった処理が可能です。
Wasm Workers Servece 1.0でRubyとPythonに対応
これまでWorkerとなるファイルは、Rustで記述されWebAssemblyにコンパイルされたWebAssemblyモジュールのファイルか、JavaScriptで記述されたファイルに限られていました。
WorkerとしてWebAssemblyに対応しているのは、Wasm Workers ServerがWebAssemblyランタイムのWasmtimeを基盤としていることから当然と言えます。
JavaScriptが実行可能なのは、Wasm Workers ServerにWebAssemblyによるJavaScriptランタイムであるQuickJSが組み込まれているからです。QuickJSがJavaScriptファイルを読み込んで実行します。
そして今回のWasm Services Worker 1.0では、この2つに加えてRubyとPythonで記述されたスクリプトもWorkerとして実行可能になりました。
これはRubyとPythonをそれぞれWebAssembly上で実行可能にするWebAssemblyランタイムを利用することで実現されました。現時点ではVMware Labsが独自にビルドしたランゲージランタイムが利用されます。
ファイルベースのルーティング機能を搭載
Wasm Workers Serviceの具体的な動きを見てみましょう。以下はデモ動画「Python and Ruby support in Wasm Workers Server v1.0.0」からの抜粋です。
Rubyで「Hello from Ruby」と返すシンプルなWorkerファイルを記述し、Wasm Workers Serverのディレクトリに「worker.rb」というファイル名で保存します。
Wasm Workers Serviceはファイルベースのルーティング機能を備えているため、ファイル名によって自動的にこのWorkerのエンドポイントが決まります。
ローカルでアクセスする場合、Webブラウザから「127.0.0.1:8080/worker」へアクセスすることで、このworker.rbにアクセスでき、実行されて「Hello from Ruby」が表示されるわけです。
Wasm Workers Service 1.0ではダイナミックルーティング機能も備わりました。今後はさらに新たなプログラミング言語への対応なども追加すると説明されています。
このようにWasm Workers Serviceは、WebAssemblyのおかげでWindows、Linux、macOSをはじめとする多くのOSに対応し、ローカルマシンやクラウド、コンテナ環境などを含むほどんな環境でも簡単にインストールして実行でき、マルチランゲージ対応に対応するシンプルなサーバレス基盤となっています。
あわせて読みたい
ローカル環境を汚さない構築ツール「Devbox」をクラウドですぐ使える「Devbox Cloud」β公開。ローカルでのファイル編集がクラウドに自動同期
≪前の記事
サーバレスアプリのビジュアル開発ツール「AWS Application Composer」が正式版に。簡単にAWSサービスの構成や連携、デプロイなどが可能に