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
1
10k
Wasm わからないけど Go で実装したいから入門する
The Go gopher was designed by Renée French.
https://gotalk.connpass.com/event/336208/
Kotaro Otaka
December 10, 2024
Tweet
Share
More Decks by Kotaro Otaka
See All by Kotaro Otaka
Go で作った CLI ツールにバージョンを埋め込みたい
otakakot
0
81
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
430
組込みだけじゃない! TinyGo で始める無料クラウド開発入門
otakakot
1
29
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
1
3.6k
SQLBoiler がメンテナンスモードになりまして
otakakot
0
220
cmp.Or に感動した
otakakot
3
910
net/http/httptest が推しです♡
otakakot
3
310
無料で楽しむ Go サーバー開発のススメ
otakakot
11
4k
Go のテストで失敗をマークする
otakakot
1
250
Other Decks in Programming
See All in Programming
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
420
Cap'n Webについて
yusukebe
0
160
SwiftUIで本格音ゲー実装してみた
hypebeans
0
550
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
150
TestingOsaka6_Ozono
o3
0
230
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
320
Implementation Patterns
denyspoltorak
0
140
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
150
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
400
Side Projects
sachag
455
43k
Exploring anti-patterns in Rails
aemeredith
2
220
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
120
It's Worth the Effort
3n
187
29k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Mind Mapping
helmedeiros
PRO
0
43
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
380
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
260
Skip the Path - Find Your Career Trail
mkilby
0
28
Code Review Best Practice
trishagee
74
19k
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 静聴 ありがとうございました!