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
10k
1
Share
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
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
650
Go で作った CLI ツールにバージョンを埋め込みたい
otakakot
0
200
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
540
組込みだけじゃない! TinyGo で始める無料クラウド開発入門
otakakot
1
120
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
1
3.8k
SQLBoiler がメンテナンスモードになりまして
otakakot
0
320
cmp.Or に感動した
otakakot
3
1k
net/http/httptest が推しです♡
otakakot
3
390
無料で楽しむ Go サーバー開発のススメ
otakakot
11
4.2k
Other Decks in Programming
See All in Programming
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
560
Feature Toggle は捨てやすく使おう
gennei
0
430
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
Go_College_最終発表資料__外部公開用_.pdf
xe_pc23
0
130
KagglerがMixSeekを触ってみた
morim
0
370
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
Nuxt Server Components
wattanx
0
250
へんな働き方
yusukebe
6
2.9k
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.8k
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
3
440
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
540
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
My Coaching Mixtape
mlcsv
0
95
The Invisible Side of Design
smashingmag
302
51k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
93
The SEO identity crisis: Don't let AI make you average
varn
0
440
Context Engineering - Making Every Token Count
addyosmani
9
800
GitHub's CSS Performance
jonrohan
1032
470k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
250
Scaling GitHub
holman
464
140k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Mind Mapping
helmedeiros
PRO
1
140
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
170
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 静聴 ありがとうございました!