検索
ニュース

Wasmer JS SDK「@wasmer/sdk」アップデート Node.jsやブラウザからWebアプリを簡単に作成可能にWebアプリケーションのデプロイ、実行が手軽に

Wasmerは、Wasmer JS SDK「@wasmer/sdk」のアップデートを発表した。Webアプリケーションを簡単に作成することができるようになり、多くの機能が追加された。

Share
Tweet
LINE
Hatena

 Wasmerは2024年8月14日(米国時間)、Wasmer JS SDK「@wasmer/sdk」のアップデートを発表した。このアップデートにより、ユーザーはJavaScriptからパッケージの作成、Wasmerレジストリへの公開、サーバレスアプリケーションプラットフォーム「Wasmer Edge」へのデプロイができるようになるなど、多くの機能が追加された。

 Wasmerは、追加された主な機能を以下のように説明している。

ライブラリの初期化

 ライブラリをインストールするには、次のようにnpmコマンドを入力する。


(提供:Wasmer)

 プログラムでWebアプリを作成する最初のステップは、Wasmerレジストリからトークンを取得することだ。トークンを生成するには、Wasmer Access Tokensにアクセスして取得する。

 トークンを取得したら、次のようにコード内でWasmer JS SDKをインポートして初期化する。


(提供:Wasmer)

(※)Node.jsのバージョンが22より前の場合は、代わりに@wasmer/sdk/nodeをインポートする

プログラムによる静的サイトのデプロイ

 シンプルなWebサイト、「static-website」テンプレートのコピーを作成する場合の手順を例に挙げる。通常のWasmerパッケージが持つマニフェストと同じ構造を、プレーンなJavaScriptの値として指定するだけでデプロイできるようになる。ライブラリが初期化されていることを前提に、まずパッケージのマニフェストを宣言する。


(提供:Wasmer)

 パッケージが準備できたので、次に進んでデプロイする。


(提供:Wasmer)

 これで「my-awesome-site.wasmer.app」のセットアップが完了し、コンテンツが提供できるようになった。


(提供:Wasmer)

自己完結型PHPアプリケーションのデプロイ

 ユーザーがWasmer Edge上でデプロイできる、自己完結型のシンプルなPHPアプリケーションのコード例は次の通り。


(提供:Wasmer)

 これで、PHPアプリケーションをデプロイできるようになる。

 新しい「@wasmer/sdk」でできることはパッケージのデプロイだけではない。次で示すように、パッケージを作成してブラウザで直接実行することもできる。

パッケージの作成と実行

 パッケージを作成、実行するコード例は次の通り。


(提供:Wasmer)

 パッケージを作成する際に、「fs」の下にリストされた使用したいファイルは、マニフェストそのものに直接埋め込まれている。

 このアプローチは、CLIで使用される通常のパッケージマニフェストの定義とは異なる。CLIでは、パッケージに含めるディレクトリやファイルへのパスを指定するが、Webではファイルシステムノードに直接アクセスできないため、パッケージの内容を指定するための代替手段が必要となる。

 Webユーザーは、以前のSDKバージョンで利用可能だったなじみのあるメカニズムを使ってパッケージを実行できる。しかし、Node.jsユーザーは、特定のワーカー関連APIコールが欠けているため、2024年8月現在はこの方法でパッケージを実行することができない。


(提供:Wasmer)

パッケージの公開

 JS SDKを使用すると、ユーザーは名前とバージョンを指定して作成されたパッケージを公開できる。


(提供:Wasmer)

 一度パッケージを作成しておけば、1回の呼び出しで公開できる。


(提供:Wasmer)

 パッケージは以下の形式のURLで公開される。


(提供:Wasmer)

大きなファイル

 これまでに見た2つの例では、パッケージに埋め込むファイルが単純な文字列として表現されていたが、これが常に便利であるとは限らない。もう一つの方法として、ファイルに埋め込むバイトを保存するために「Uint8Array」を使用することが考えられる。


(提供:Wasmer)

ファイルのメタデータ

 ユーザーは、次の方法で各ファイルのメタデータを指定できる。


(提供:Wasmer)

パッケージのメタデータ

 README.mdやLicenseのようなパッケージのメタデータを以下のように提供する。


(提供:Wasmer)

技術的な課題

 これらのアップデートをSDKに反映させるために、2つの大きな課題があった。第1に、Web上でWasmerのようなレジストリへの呼び出しを可能にすること。第2に、ファイルシステムに依存せずにパッケージを作成できるようにライブラリを適応させることだ。

 2つの課題がともに解決できたため、Web上でwasmer-apiクレートを利用できるようになった。2024年8月現在、WasmerはEdgeでアプリケーションをコンテナ化するための新しい仕様「webc」に取り組んでいる。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る