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
9.4k
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 コードを生成 AI の力で手にいれる
otakakot
1
3.2k
SQLBoiler がメンテナンスモードになりまして
otakakot
0
120
cmp.Or に感動した
otakakot
3
720
net/http/httptest が推しです♡
otakakot
3
240
無料で楽しむ Go サーバー開発のススメ
otakakot
10
3.4k
Go のテストで失敗をマークする
otakakot
1
190
Other Decks in Programming
See All in Programming
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
21k
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
1k
効率的な開発手段として VRTを活用する
ishkawa
0
160
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
15k
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
0
340
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
170
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
9
3k
ふつうの技術スタックでアート作品を作ってみる
akira888
1
1.3k
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
660
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
3
960
オンコール⼊⾨〜ページャーが鳴る前に、あなたが備えられること〜 / Before The Pager Rings
yktakaha4
2
990
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
13k
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
How GitHub (no longer) Works
holman
314
140k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Faster Mobile Websites
deanohume
308
31k
Bash Introduction
62gerente
613
210k
Side Projects
sachag
455
42k
The Language of Interfaces
destraynor
158
25k
A designer walks into a library…
pauljervisheath
207
24k
What's in a price? How to price your products and services
michaelherold
246
12k
Transcript
Wasm わからないけど Go で実装したいから入門する おーたかこーたろー / @otakakot 2024.12.10 GoConnect #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 5T Go を実装すQ CT Wasm としてビルドすQ "T
JavaScript サポートファイルをコピーすQ T 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 ランタイムが登場 l wasmtimj l Luce l l WasmEdge etc... Wasmem ↓ #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 静聴 ありがとうございました!