
2025.02.18
「売上をスケールする」AIの使い道とは アルペンが挑む、kintone×生成AIの接客データ活用法
リンクをコピー
記事をブックマーク
佐伯学哉氏(以下、佐伯):そういう特徴があると、かなりうれしいことがわかったんですが、具体的に何に使われているのか特にWASI(WebAssembly System Interface)とProxy-Wasm(Web Assembly for Proxies)について話したいと思います。
WASIはWebAssembly System Interfaceの略で、OSの上でWasm executableを動かすためのPortableなAPI、またはABIです。API/ABIという書き方をしているんですが、WebAssemblyでは関数呼び出しとかのABIが最初から決まっているので、APIを決めたらABIも決まってしまいます。なので、API/ABIと書いています。だいたいPOSIXと同じか、少し下くらいのレイヤーです。
WASIはWebAssemblyがSafeであって、Portableであることを利用しているフォーマットです。パソコンの上で直接WebAssemblyを動かすインターフェイスになるのでかなり直感的で、名前を聞いたことがある方も多いんじゃないかと思っています。
これはBytecode Allianceというコミュニティによって仕様がメンテナンスされていて、Bytecode AllianceにはMozillaとか、LucetのFastlyとか、Intelとか、Redhatとかが入っています。
WASI APIの例です。例をドドーンと出しても仕方がないので、本当にちょっとだけ紹介します。ファイルシステムやプロセスなど、およそOSの上でなにかを動かすために必要そうなものはWASIで決まっています。
左の図に書いてあるのは、いわゆるライブラリのオープン関数をどうやってWASIで実装するかという話です。中身はwasi_path_openというAPIとして決まっているという話ですね。GitHubに全関数がドドーンとあるので見ることができます。
WASIのセキュリティについてですが、WASIはWasmに加えて独自のセキュリティ機構をもつ、もしくはもつ予定です。WASIは策定中なので、いろいろと未熟だったりstableじゃなかったりします。
先ほどWasmはSafeでIsolatedでうれしいみたいな話をしたんですが、本当か? という話なんですね。これは実は語弊があって、Wasmが全部のLinuxのシステムコールを呼べれば、自由に変なことができたり、いろいろな副作用があったりするので、ぜんぜん安全ではありません。
Wasmの安全性は、ホストが提供するAPIの安全性に依存します。なので、本当にセキュアなランタイムインターフェイスを定義しようと思ったら、そこをケアする必要があります。
具体的にWASIがどうしようとしているかという話になるのですが、策定中の仕様ではCapability Baseのセキュリティ機構を導入することが決まっています。例えばファイルシステムのアクセスは、ディレクトリごとにcapabilityを取得する必要があって、POSIXとかよりもかなり粒度が細かいです。このcapcabilityの話は、microkernelとかを想起する機構、最近だとFuchsiaがそうらしいです。
いずれスマホアプリのような、セキュリティモデルがネイティブデスクトップで実現できるようになるかもというイメージです。ネイティブバイナリみたいに、Seccompでガチガチに固めなくていいのでうれしいですね。
Proxy-Wasmというのがもう1個の例なんですが、これはPortable、Safe、Openさを利用して、プロキシにやってきたL4/L7のリクエストやレスポンスを、WebAssemblyのロジックでこねくり回すためのインターフェイスです。Envoy周りの人たちがコミュニティ主導でメンテナンスしています。
どういうことかというと、パケットやHTTP通信が来た時に呼ばれる関数をWasm側からexportして、Envoyなどのプロキシは通信が発生した際にその関数を呼びます。呼ばれた側のWasmは、さらにプロキシ側が定義したAPIを呼び出して、ログを書くなり、レスポンスを返すなりします。
これはWasmのオブジェクトファイルで決まっている双方向のImport/Exportができることで実現されている機能です。
そんなことをして何がうれしいのかという話ですが、Envoyは以前は同じ仕組みを前からC++で書いたstatic libraryを差し込むことで実現していました。
それと比較した時のWasmの利点は、まずSafeであることです。Untrustedなコードを実行できます。C++はただのプログラムなので、なんでも悪いことができてしまうんですよね。しかも、Portableです。
また、Language-independentなのでC++だけではなくて、RustやGoでもEnvoyのプロキシを実現できるようになります。これはかなり便利な一般化ができるという話で、現在だとLuaくらいしかやっていないフィールドです。
Proxy-Wasmのモチベーションを一般化するといろいろなことがわかって、双方向のAPIが欲しくて、SafeでPortable、Fastに動いてほしい場所があるならば、実はそこはWasmの適任の場所であるという話があります。
In-kernel executableとかEthereumとか、一般のプラグイン機構とかもうまくWasmを利用できるかもという話があるんですね。みなさんも「これをWasmでもっとうまくやれるんじゃない?」というケースがあったら考えてみましょう。特定の言語を使っているとか、APIが言語決め打ちとか、Vimとか、Vimのエディタプラグイン機構とか、ETLとか、いろいろなものがユースケースとしてあり得ると思っています。
Proxy-WasmはFastlyのCDNなどかなり似た事例が存在します。
これはちょっと余談なのですが、実はProxy-WasmをメンテナンスしているTetrateに最近転職しました。Proxy-Wasmの開発にかかわっています。Enterprise Service Meshをやっている会社で、サンフランシスコにリモート勤務しているので最近はドル円の動きに一喜一憂しています。
WASI的なモチベーションも同じように一般化できて、SafeでPortableな場所が欲しいところにはWasmが使えるという話です。
エコシステムは羅列をするだけなので、サラッと流していきたいと思います。ランタイムはWasmtime、Wasmer、Lucet、WAVM、Wasm3、V8などいっぱいあります。しかもこれで全部ではないので、興味があればみなさんも自分だけのランタイムを探してみてください。
Toolchainは、最初に言ったように言語ネイティブのToolchainがバックエンドとしてサポートすることが多いので、かなり多くの言語がWasmをサポートしています。
一方で、Wasmはまだまだ未熟なので整備中ものがたくさんあります。例えばDynamic linkや、デバッグのDwarf/Debugger仕様や、Inter-Language Type Procedureなどが今策定し直されていて、今の時代に低レイヤーの仕様が開発されるのを見るのは楽しいなと思います。
まとめです。Wasmは複合的なアツさをもっています。Javaが目指したもの、CLIが目指したもの、NaClが目指したもの、あとLuaがやっていることなど、いろいろなことをカバーしていて、アツいよという話が伝わっていればうれしいです。
特にOpenさが多様な応用先を生む源泉になっています。これからもいろいろな分野で応用されていくはずなので、「みなさんも君だけのWasm Embedding Interfaceを考えよう」というまとめをさせてもらいたいなと思います。以上です。
司会者:ありがとうございました。質問が来ています。「Proxy-Wasmという存在と、EnvoyのプラグインをWasmで書くというのはどう違うのでしょうか? それとも同じでしょうか?」
佐伯:絶妙な質問ですね。僕も同じと言い切っていいのかちょっと自信がないんですが、ほぼ同じです。Proxy-Wasmはプロキシがプラグインを書きたかったらどういうAPIをImportして、どういうAPIをExportすればいいかという仕様が決まっていて、Envoyはそれに準拠したProxy-Wasmの実装をもっています。
しかも現状Envoyは、一切Proxy-Wasmを拡張していないので、今は同じだと言っていいと思います。Proxy-Wasmが仕様で、Envoyはそれを実装しているという話になりますね。
司会者:ありがとうございました。
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
第20回エクゼクティブメンターイベント「今、「ひと」と組織が共創する〜働き方の未来へ」
2024.12.07 - 2024.12.07