Wasmerは、Wasmer JS SDK「@wasmer/sdk」のアップデートを発表した。Webアプリケーションを簡単に作成することができるようになり、多くの機能が追加された。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Wasmerは2024年8月14日(米国時間)、Wasmer JS SDK「@wasmer/sdk」のアップデートを発表した。このアップデートにより、ユーザーはJavaScriptからパッケージの作成、Wasmerレジストリへの公開、サーバレスアプリケーションプラットフォーム「Wasmer Edge」へのデプロイができるようになるなど、多くの機能が追加された。
Wasmerは、追加された主な機能を以下のように説明している。
ライブラリをインストールするには、次のようにnpmコマンドを入力する。
プログラムでWebアプリを作成する最初のステップは、Wasmerレジストリからトークンを取得することだ。トークンを生成するには、Wasmer Access Tokensにアクセスして取得する。
トークンを取得したら、次のようにコード内でWasmer JS SDKをインポートして初期化する。
(※)Node.jsのバージョンが22より前の場合は、代わりに@wasmer/sdk/nodeをインポートする
シンプルなWebサイト、「static-website」テンプレートのコピーを作成する場合の手順を例に挙げる。通常のWasmerパッケージが持つマニフェストと同じ構造を、プレーンなJavaScriptの値として指定するだけでデプロイできるようになる。ライブラリが初期化されていることを前提に、まずパッケージのマニフェストを宣言する。
パッケージが準備できたので、次に進んでデプロイする。
これで「my-awesome-site.wasmer.app」のセットアップが完了し、コンテンツが提供できるようになった。
ユーザーがWasmer Edge上でデプロイできる、自己完結型のシンプルなPHPアプリケーションのコード例は次の通り。
これで、PHPアプリケーションをデプロイできるようになる。
新しい「@wasmer/sdk」でできることはパッケージのデプロイだけではない。次で示すように、パッケージを作成してブラウザで直接実行することもできる。
パッケージを作成、実行するコード例は次の通り。
パッケージを作成する際に、「fs」の下にリストされた使用したいファイルは、マニフェストそのものに直接埋め込まれている。
このアプローチは、CLIで使用される通常のパッケージマニフェストの定義とは異なる。CLIでは、パッケージに含めるディレクトリやファイルへのパスを指定するが、Webではファイルシステムノードに直接アクセスできないため、パッケージの内容を指定するための代替手段が必要となる。
Webユーザーは、以前のSDKバージョンで利用可能だったなじみのあるメカニズムを使ってパッケージを実行できる。しかし、Node.jsユーザーは、特定のワーカー関連APIコールが欠けているため、2024年8月現在はこの方法でパッケージを実行することができない。
JS SDKを使用すると、ユーザーは名前とバージョンを指定して作成されたパッケージを公開できる。
一度パッケージを作成しておけば、1回の呼び出しで公開できる。
パッケージは以下の形式のURLで公開される。
これまでに見た2つの例では、パッケージに埋め込むファイルが単純な文字列として表現されていたが、これが常に便利であるとは限らない。もう一つの方法として、ファイルに埋め込むバイトを保存するために「Uint8Array」を使用することが考えられる。
ユーザーは、次の方法で各ファイルのメタデータを指定できる。
README.mdやLicenseのようなパッケージのメタデータを以下のように提供する。
これらのアップデートをSDKに反映させるために、2つの大きな課題があった。第1に、Web上でWasmerのようなレジストリへの呼び出しを可能にすること。第2に、ファイルシステムに依存せずにパッケージを作成できるようにライブラリを適応させることだ。
2つの課題がともに解決できたため、Web上でwasmer-apiクレートを利用できるようになった。2024年8月現在、WasmerはEdgeでアプリケーションをコンテナ化するための新しい仕様「webc」に取り組んでいる。
Copyright © ITmedia, Inc. All Rights Reserved.