Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Wasm わからないけど Go で実装したいから入門する
Search
Kotaro Otaka
December 10, 2024
Programming
11k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Wasm わからないけど Go で実装したいから入門する
The Go gopher was designed by Renée French.
https://gotalk.connpass.com/event/336208/
Kotaro Otaka
December 10, 2024
More Decks by Kotaro Otaka
See All by Kotaro Otaka
Vendoring をやめたけどやめたのは正解だったのか
otakakot
0
22
t *testing.T は どこからやってくるの?
otakakot
1
1k
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
1.1k
Go で作った CLI ツールにバージョンを埋め込みたい
otakakot
0
230
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
590
組込みだけじゃない! TinyGo で始める無料クラウド開発入門
otakakot
1
150
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
1
3.8k
SQLBoiler がメンテナンスモードになりまして
otakakot
0
350
cmp.Or に感動した
otakakot
3
1.1k
Other Decks in Programming
See All in Programming
Agentic UI
manfredsteyer
PRO
0
130
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
170
Oxcを導入して開発体験が向上した話
yug1224
4
300
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
5
3.4k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
660
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
450
Contextとはなにか
chiroruxx
0
280
Lessons from Spec-Driven Development
simas
PRO
0
150
Claspは野良GASの夢をみるか
takter00
0
180
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.9k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
250
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Accessibility Awareness
sabderemane
1
130
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
So, you think you're a good person
axbom
PRO
2
2.1k
Optimizing for Happiness
mojombo
378
71k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Building AI with AI
inesmontani
PRO
1
1.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
Wasm わからないけど Go で実装したいから入門する おーたかこーたろー / @otakakot 2024.12.10 Go Connect
#4 The Go gopher was designed by Renée French. #goconnect
Wasm ( Web Assembly ) ってご存知ですか? こういうアイコン #goconnect
私はあんまりわかっていないです。 #goconnect
Wasm を知るといいことありそう! たぶん・・・! #goconnect #goconnect
INDEX 01 Wasm ( WebAssembly ) とは 02 Go ×
Wasm 03 なぜ Wasm に入門するのか 04 Go × WASI
01 Wasm ( WebAssembly ) とは 02 Go × Wasm
03 なぜ Wasm に入門するのか 04 Go × WASI INDEX #goconnect
WASM ( WebAssembly ) WebAssembly は現代のウェブブラウザーで実行できる新しい種類の コードです。ネイティブに近いパフォーマンスで動作する、コンパクト なバイナリー形式の低レベルなアセンブリー風言語です。さらに、 C/ C++、C#
や Rust などの言語のコンパイル先となり、それらの言語を ウェブ上で実行することができます。 https:/ /developer.mozilla.org/ja/docs/WebAssembly/Concepts より抜粋 #goconnect #goconnect
WASM ( WebAssembly ) JavaScript を補完、並行して動作するように設計されています。 WebAssembly JavaScript API を使用して、
WebAssembly モジュールを JavaScript アプリケーションに読み込み、2 つの間で機能を共有できま す。これにより、WebAssembly コードの記述方法を知らなくても、 WebAssembly のパフォーマンスとパワー、 JavaScript の表現力と柔軟 性を同じアプリケーションで活用できます。 https:/ /developer.mozilla.org/ja/docs/WebAssembly/Concepts より抜粋 #goconnect #goconnect
なるほど、わからん #goconnect #goconnect
JavaScript 以外で書いたコードを JavaScript から扱えるようにしようぜ! #goconnect #goconnect
INDEX 01 Wasm ( WebAssembly ) とは 02 Go ×
Wasm 03 なぜ Wasm に入門するのか 04 Go × WASI #goconnect
JavaScript 以外で書いたコードを JavaScript から扱えるようにしようぜ! Go #goconnect #goconnect
Go Wiki: WebAssembly Go を実装する Wasm としてビルドする JavaScript サポートファイルをコピーする JavaScript
を実装する https:/ /go.dev/wiki/WebAssembly より #goconnect #goconnect ※ Go のバージョンは 1.23
1. Go を実装する #goconnect #goconnect
2. Wasm としてビルドする #goconnect #goconnect
3. JavaScript サポートファイルをコピーする #goconnect #goconnect
4. JavaScript を実装する #goconnect #goconnect
JavaScriptの実装は何をしている? #goconnect #goconnect
JavaScript での実装 ← wasm_exec.js のクラスをインスタンス化 ← Wasm モジュールをコンパイル & インスタンス化
← Wasm モジュールを取得 & 指定 ← Wasm モジュールと JavaScript の橋渡し ← Wasm を実行 #goconnect #goconnect
JavaScript と Go の実装 #goconnect #goconnect
Go JavaScript #goconnect #goconnect
#goconnect #goconnect
Go JavaScript #goconnect #goconnect
Go JavaScript #goconnect #goconnect
Go JavaScript #goconnect #goconnect
Go JavaScript #goconnect #goconnect
WIT ってものがあるらしい。 #goconnect #goconnect
INDEX 01 Wasm ( WebAssembly ) とは 02 Go ×
Wasm 03 なぜ Wasm に入門するのか 04 Go × WASI #goconnect
Wasm ランタイム Supabase Edge Functions Deno Deploy Cloudflare Workers https://supabase.com/docs/guides/functions
https://deno.com/deploy https://developers.cloudflare.com/workers #goconnect #goconnect
Wasm ランタイム Supabase Edge Functions Deno Deploy Cloudflare Workers https://supabase.com/docs/guides/functions
https://deno.com/deploy https://developers.cloudflare.com/workers #goconnect #goconnect 無料でデプロイできる(Edge)サーバー
Wasm ランタイム Supabase Edge Functions Deno Deploy Cloudflare Workers https://supabase.com/docs/guides/functions
https://deno.com/deploy https://developers.cloudflare.com/workers #goconnect v v #goconnect 無料!
Wasm ランタイム Supabase Edge Functions Deno Deploy Cloudflare Workers https://supabase.com/docs/guides/functions
https://deno.com/deploy https://developers.cloudflare.com/workers #goconnect #goconnect 最高!
Wasm を知れば無料で開発できる Go サーバーの選択肢が増える! #goconnect #goconnect
ただしサーバーを実装するには JavaScript ↔︎ Go の変換が必要 #goconnect #goconnect
JavaScript ↔︎ Go Request: Response: #goconnect #goconnect JavaScript Go Go
JavaScript → →
JavaScript ↔︎ Go Request: Response: #goconnect #goconnect https://developer.mozilla.org/ja/docs/Web/API/ Request https://pkg.go.dev/net/http#Response
https://pkg.go.dev/net/http#Request https://developer.mozilla.org/ja/docs/Web/API/ Response → →
JavaScript ↔︎ Go #goconnect #goconnect Request: Response: https://developer.mozilla.org/ja/docs/Web/API/ Request https://pkg.go.dev/net/http#Response
https://pkg.go.dev/net/http#Request https://developer.mozilla.org/ja/docs/Web/API/ Response → → 結構めんどくさい & JavaScript の知識が必要
このツラミを感じず実装できる最高のライブラリ syumai/workers #goconnect #goconnect
#goconnect #goconnect
#goconnect #goconnect Cloudflare Workers で Go を動かせる 標準のhttp.Handler 形式で実装可能 JavaScriptの知識がな
くても実装可能
Request: JavaScript → Go https://github.com/syumai/workers/blob/main/internal/jshttp/request.go より抜粋 #goconnect #goconnect
Response: Go → JavaScript https://github.com/syumai/workers/blob/main/internal/jshttp/response.go より抜粋 #goconnect #goconnect
INDEX 01 Wasm ( WebAssembly ) とは 02 Go ×
Wasm 03 なぜ Wasm に入門するのか 04 Go × WASI #goconnect
Wasm のさらに向こうへ WASI Plus Ultra!! WASI ( WebAssembly System Interface
) の登場 Web 以外でも WebAssembly を使おうという動き ↓ これにともない WASI ランタイムが登場 wasmtime Lucet WasmEdge etc... Wasmer ↓ #goconnect #goconnect
Go × WASI #goconnect #goconnect
Hello World! はできるけど サーバーは WASI ランタイムによって 動かせなかったり... #goconnect #goconnect
無料デプロイのためにWASI への挑戦は続く... #goconnect #goconnect
Kotaro Otaka おーたかこーたろー / @otakakot Web Engineer 新卒入社 Hello Golang!
Web Engineer @株式会社ビットキー 2020.04 2021.04 2022.11 Go言語推し #goconnect
https://zenn.dev/otakakot/articles/9e9269a87aafeb https://speakerdeck.com/otakakot/free- go-server-development-recommendations #goconnect #goconnect
#goconnect #goconnect Go 静聴 ありがとうございました!