12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プラグイン実行エンジンとしてのWasm

Last updated at Posted at 2023-12-05

この文書は?

WebAssembly(Wasm)という名前を様々なところで目にしますが、まだあまり良く理解していないinajobが、プラグインシステムとしてWasmを利用することの利点について調査したものです。

プラグインとしてのWasm

Wasmの発祥はブラウザでの高速なロジックの実行だったが、今ではその範疇を超えて様々な利用方法が生まれています。

この調査では、そんなWasmの利用例の一つであるプラグイン実行エンジンとしてのWasmに着目しました。

調査の手法

プラグイン実行エンジンとしてWasmを採用している著名なプロジェクトを列挙し、どのような背景でWasmをプラグイン実行エンジンとして導入したかを調べ、それらを俯瞰することで、Wasmのプラグイン実行エンジンとしての特徴をまとめます。

事例一覧

  • Envoy
  • kube-scheduler
  • OPA

EnvoyにおけるWasmプラグイン

と、ここまで見たところで次の例に移ります

kube-schedulerにおけるWasmプラグイン

OPAにおけるWasm build

  • 参考: https://www.openpolicyagent.org/docs/latest/wasm/
  • Regoのポリシーを実行可能なWasmのモジュールにコンパイルする
    • opa buildでregoからwasmを出力できる
  • この仕組みを使うと様々な言語にOPA(というかRego)のポリシーエンジンを注入できる
    • 公式にはJavaScript SDKがある
    • コミュニティベースで様々な環境用のSDKが整備されている
  • OPAの組み込み方の比較
  • Wasmにビルドする、とは?

3つの例から見えてきたプラグイン実行エンジンとしてのWasmの特徴

プラグインとは

あらためて、プラグインとはとは以下のような特徴を持つ仕組みです

  • 利用者が簡単に拡張できる
  • 本体アプリとの連携が可能
    • 本体アプリの機能を呼び出す
    • 本体アプリのイベントをプラグイン側Listenできる
    • など

プラグインの様々な実現手法

ここまで見てきた例や、その他の世の中の例を踏まえると以下のような実現手法があります。

  • 実行環境を組み込む
    • Lua
    • JVM
    • (多分C# (.NET)とかもできる)
    • WASM
  • DLL
  • 外部サービスとの通信(RPC)
    • GRPC
    • REST API

プラグインに求められる要件

上で挙げた実現手法の中でわかりやすいものを✅,❌で記載しています

  • (ホスト,プラグインともに)様々な言語で実装できる
    • ❌Lua
    • △ JVM (JVM言語もあるにはありますが・・)
    • ✅Wasm
  • プラットフォーム非依存
    • ❌DLL
    • ✅Wasm
  • ネイティブ並みの速度で動作
    • ❌Lua (Lua JITを使えば結構早くなるらしいですが)
    • ✅DLL
    • (そこそこ)Wasm
  • 大容量のデータを高速で受け渡す
    • ❌RPC
    • ✅Wasm
  • プラグインを安全に実行したい
    • ❌DLL
    • ✅Wasm

→ これらを いい感じ に満たすのがWasm

まとめ

Wasmをプラグインの仕組みとして利用している事例について、なぜWasmを採用したのかを調べました。

プラグインに求められる要件をいい感じにサポートしているということがわかった。

雰囲気としては、なにか100点満点の特徴が突出しているというよりは、どの教科も80点程度の優等生的な特徴を持っている手法なのかなと感じました。

12
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?