Slide 1

Slide 1 text

ブラウザの外側でWasmを使おう

Slide 2

Slide 2 text

本日話すこと WebAssembly(Wasm)

Slide 3

Slide 3 text

WebAssembly “binary instruction format for stack-based virtual machine” 実行環境: (当初)Webブラウザ (現在) あらゆる環境 Safe: sandbox model import/export Efficient and fast: aim to executed at near-native speed Portable: language/platform independent Open and debuggable: WAT

Slide 4

Slide 4 text

WASI ● WebAssembly System Interface ● ファイルIOやネットワークIOなどのAPIセットを定めたもの ○ POSIX的なもの ● Webブラウザの外でもポータビリティを持たせることが可能に ○ ブラウザ内外問わず Wasmが使えるように https://github.com/bytecodealliance/wasmtime/blob/main/docs/W ASI-overview.md

Slide 5

Slide 5 text

Shopify function ● ShopifyのインフラでECサイト開発者が作成 したコードを呼び出せる機能 ○ Shopifyのインフラで動作 ● Wasmが実行される ○ Wasmにビルドできる言語ならなんでも使える ● Wasmが採用された理由 ○ Security ○ Flexibility ○ Performance https://shopify.engineering/shopify-webassembly

Slide 6

Slide 6 text

github.com/ncruces/go-sqlite3 ● Golang製SQLite3のドライバの1つ ● WasmにビルドしたSQLiteをラップし、 wazero(Go moduleとして使えるwasmラ ンタイム)から呼び出す ● 既存の資産を利用しつつドライバをCGO 非依存にできる ○ pure-goになって嬉しい ←sqlite3.wasm(1.4MB)

Slide 7

Slide 7 text

おわりに ● Wasm/WASIとブラウザ外で使われるWasm事例を紹介 向いてそうな例 ● プラットフォーム上で第三者にコードを実行させたい ● ↑この際多様な言語の選択肢を提供したい ● プラグインの仕組みを提供したい ○ Proxy-Wasmなど ● C/C++などの既存資産を利用したい

Slide 8

Slide 8 text

自己紹介 小野 輝也(@teru0x1) Software Engineer@Ubie We are hiring!