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
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to...
Search
mackee
September 13, 2024
Programming
1
560
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
Asakusa.go #3
https://asakusago.connpass.com/event/327677/
mackee
September 13, 2024
Tweet
Share
More Decks by mackee
See All by mackee
ワンバイナリWebサービスのススメ
mackee
10
7.4k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
97
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
610
perl for shell, awk and sed programmers
mackee
2
2.2k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
470
マイクロサービス化を利用した Goへの移行事例
mackee
0
590
PerlでつくるフルスクラッチWebAuthn/パスキー認証 / Demonstration of full-scratch WebAuthn/Passkey Authentication written in Perl
mackee
3
4.4k
SRE定例やその辺の取り組みをアプリケーションエンジニア目線で語る / "Observe" about SRE Meeting by Application Engineer
mackee
0
1.9k
TinyGoで使えるORM sqllaの 紹介とTinyGoで使えるようにするための工夫
mackee
0
1.5k
Other Decks in Programming
See All in Programming
生成AI時代のフルスタック開発
kenn
10
2.7k
抽象データ型について学んだ
ryounasso
0
210
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
1
250
コンポーネントライブラリで実現する、アクセシビリティの正しい実装パターン
schktjm
1
660
インターフェース設計のコツとツボ
togishima
2
480
Design Pressure
hynek
0
1.4k
Reactive Thinking with Signals, Resource API, and httpResource @Devm.io Angular 20 Launch Party
manfredsteyer
PRO
0
130
メモリリークが発生した時にpprofを使用して原因特定した話
zono33lhd
0
100
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
710
鯛変だったRubyKaigi 2025 ── それでも楽しかった!
pndcat
0
130
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
7
380
Proxmoxをまとめて管理できるコンソール作ってみました
karugamo
1
410
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Producing Creativity
orderedlist
PRO
346
40k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building Applications with DynamoDB
mza
95
6.4k
Designing for Performance
lara
608
69k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
Transcript
ࠓߋGoͷWebϑϨʔϜϫʔ ΫΛ࡞Ζ͏ͱ͍ͯ͠Δϫέ @macopy Asakusa.go 2024-09-13
https://github.com/mackee/tanukirpc
ಛ1: ܕ҆શϋϯυϥʔ
ಛ2: ϦΫΤετείʔϓDI
ಛ3: ΫϥΠΞϯτίʔυੜ
ಛ3: ΫϥΠΞϯτίʔυੜ
GoͷWebΞϓϦέʔγϣϯ ϑϨʔϜϫʔΫ ଞʹͨ͘͞Μ͋Δ ͳͥ࡞ͬͨͷ͔ʁ
1. Easy͔ͭఆ൪͕ͳ͍ • GoͷϑϨʔϜϫʔΫ͍͍ͨͯsimpleدΓ • ϑϨʔϜϫʔΫͱ͍͏ΑΓϥΠϒϥϦ(ϧʔλʔͳͲ) • Ұͭͷ͜ͱΛ͏·͘ΔύʔπΛબΜͰ͏ܗʹͳΔ • બͿࣗ༝͕͋ͬͯྑ͍…͕ԿճΔͱϥΠϒϥϦಉ࢜Λͭͳ͙άϧʔ
ίʔυΛຖճॻ͍͍ͯΔ͜ͱʹؾ͕͍ͭͨ • ͍͜͜ΒͰԶͷߟ͑ͨ࠷ڧͷϥΠϒϥϦͷΈ߹ΘͤΛ࡞ͬͨΒͲ͏͔ʁ
2. ৽ͨʹϥΠϒϥϦΛಋೖ͢ΔΘ͠͞Λݮ ͢Δ • tanukirpcgo-playground/validator͕࠷ॳ͔Βೖ͍ͬͯΔ • structλάʹॻ͚ͩ͘Ͱػೳ͢Δ • ͜͏͍͏ͷͬͯόϥόϥʹೖΕΔͱޙճ͠ʹͳΓ͕ͪ •
ʮೖΕΔͷʹࠊ͕ॏ͍ͳΒ࠷ॳ͔ΒϑϨʔϜϫʔΫʹΈࠐΉʯͱ͍ ͏ࢥ
3. ΧελϚΠζੑ • ࠷ॳσϑΥϧτڍಈͰྑ͍͕ɺ࡞͍ͬͯ͘ͱཁ݅ʹΑͬͯΧελϜ ͍ͨ͜͠ͱ͕͋Δ • ࠷ۙͩͱΤϥʔ࣌ͷϨεϙϯε • ͦ͏͍͏ͷશ෦ΧελϜͰ͖ΔΑ͏ʹ࡞ͬͯ͋Δ •
ϩΨʔ࠷ॳ͔Β͍ʹͳΔʢΞΫηεϩάʂʣ͕ɺΧελϜͰ ͖ΔΑ͏ʹͳ͍ͬͯΔ
࠷ۙ࡞ͬͨػೳ • tanukiupίϚϯυ͕HTTPϦΫΤετΛ·ͣड͚Δػೳ • tanukiup: ϑΝΠϧΛࢹͯ͠Ϗϧυͱαʔόʔϓϩηε࠶ىಈΛ͢ Δ։ൃ༻ίϚϯυ • tanukiup͕αʔόʔͱͳΓɺUnixυϝΠϯιέοτͰ։ൃதͷαʔ όʔʹϓϩΩγ͢ΔػೳΛ࡞ͬͨ
࠷ۙ࡞ͬͨػೳ UBOVLJVQ TCP 8080 BQQ UDS ϑΝΠϧ͕ߋ ৽͞ΕΔͨͼʹϏ ϧυɾ࠶ىಈ
ͳ͍ͥͬͨΜtanukiup͕ड͚Δʁ • ΞϓϦαʔόʔʹੜ͍͑ͯΔAPIύεҎ֎ΛϑϩϯτΤϯυ։ൃαʔ όʔʹ͚ΔͨΊ • tanukiup੩తղੳΛͯ͠ͲͷύεΛrouterʹొ͍ͯ͠Δ͔Λ ͍ͬͯΔ • routerʹొ͞Ε͍ͯΔύεҎ֎Λvite dev
serverͳͲʹྲྀ͢͜ͱ ͰɺϑϩϯτΤϯυΛؚΊͨ։ൃαʔόʔΛ·Δͬͱಉ͡ϙʔτͰ ड͚ΒΕΔ
tanukiupͰviteproxy UBOVLJVQ TCP 8080 BQQ UDS tanukirpcͰੜͨ͠ύεͷΈ WJUFEFW TFSWFS TCP
5173
Web։ൃ͓ࠔΓ͝ͱΛશ෦͍ͬͯͬͯΈΔ • ͍ͬͨΜΓ͗͢ͱ͍͏ͱ͜Ζ·Ͱͬͯྑ͍ͷͰͳ͍͔ • Ώ͘Ώ͘ORMDBϚΠάϨʔγϣϯɺϑϩϯτΤϯυελοΫؚ Ίͨscaffolding͘Μ࡞Δ༧ఆͰ͢ • ͪΖΜORMࣗ࡞ͷsqlla • ͋ͱೝূηογϣϯपΓΈࠐΉ༧ఆͰ͢
for { select { case <-question: answer() case <-feedback: listen()
case <-ctx.Done(): break } }