サーバサイドWebAssemblyに、かつてのCGIの仕組みを取り込んだ「WCGI」をWasmerが発表。すぐ起動し安全に分離されるWebAssemblyの特長が活きる

2023年4月11日

スタンドアロンのWebAssemblyランタイム「Wasmer」の開発元であるWasmer.ioは、サーバサイドのWebAssemblyフレームワークとして、かつて動的なWebサイトを構築する技術として主流だったCGI(Common Gateway Interface」の仕組みを取り込んだ「WCGI」を発表しました。

WCGIは、既存のPHPやPythonのCGIアプリケーションをWebAssemblyにコンパイルするだけで簡単にサーバサイドのWebAssemblyアプリケーションになるのが大きな特長の1つです。

実際にWasmer.ioはWordPressをWebAssembly化し、ローカル環境でWCGIとして簡単に起動するデモ動画を公開。上記のツイート内の動画がその様子です。

以下の手順で実際に試すことも出来ます。具体的には、Wasmerをインストールして、データベース用のディレクトリを作成、WebAssembly化済みのWordPressデモアプリを起動するだけです。

# Install wasmer beta 2
curl https://get.wasmer.io -sSfL | sh -s "v3.2.0-beta.2"

# Execute Wordpress
mkdir db
wasmer run-unstable wasmer/wcgi-wordpress-demo --mapdir=/db:db

WindowsのWSL環境で試しましたが、下記の手順で簡単にローカルPC上でデモが起動しました。

この「wcgi-wordpress-demo」では、PHPをCGIで実行可能にするPHP-CGIがWebAssembly化され、そのアプリケーションとなるPHPで作られたWordPressのコードがパッケージングされているようです。

コンパクトかつサンドボックスによる安全性も

WCGIの2つ目の特長は、Dockerコンテナなどに比べると、アプリケーションを非常にコンパクトにパッケージングできるということです。

パッケージングに必要なのは、コンパイル済みのバイナリとなったWebAssembly化されたアプリケーションと関連ファイルであること、そして迅速に起動することも、(かつてのCGIの遅いイメージと比べても)利点といえるでしょう。

3つ目はWebAssemblyの特徴でもあるサンドボックス化された実行による安全性です。HTTPリクエスト毎に実行されるインスタンスはWebAssemblyのサンドボックス内で実行されるため、そこから外部に対して不正にアクセスされるといった可能性は非常に低くなります。

Wasmer.ioではPHP用のWCGIテンプレートやRustでWCGIを開発する手法について解説しています

CGIはかつて動的なWebサイトを構築する手法としてよく使われていましたが、HTTPリクエスト毎にプロセスが起動され、結果をWebサーバに返すという仕組みのために処理速度やスケーラビリティに課題を抱えており、現在ではあまり使われなくなりました。

このCGIの課題を軽量で迅速に起動し実行されるWebAssemblyによって再構築しようというWCGIの取り組みは、WebAssemblyの特長を活かしたサーバサイドWebAssemblyの実装手段として興味深いのではないでしょうか。

あわせて読みたい

WebAssembly プログラミング言語




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本