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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mackee
September 13, 2024
Programming
1
1k
今更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
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
390
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
5
4.6k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
6.1k
ワンバイナリWebサービスのススメ
mackee
10
8.3k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
310
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.1k
perl for shell, awk and sed programmers
mackee
3
2.6k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
930
マイクロサービス化を利用した Goへの移行事例
mackee
0
1.1k
Other Decks in Programming
See All in Programming
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
1.4k
Architectural Extensions
denyspoltorak
0
260
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.4k
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
200
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
830
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.9k
CSC307 Lecture 04
javiergs
PRO
0
650
SourceGeneratorのススメ
htkym
0
170
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
820
Vibe codingでおすすめの言語と開発手法
uyuki234
0
210
Package Management Learnings from Homebrew
mikemcquaid
0
170
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
77
We Have a Design System, Now What?
morganepeng
54
8k
Are puppies a ranking factor?
jonoalderson
1
2.7k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
The World Runs on Bad Software
bkeepers
PRO
72
12k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Agile that works and the tools we love
rasmusluckow
331
21k
Why Our Code Smells
bkeepers
PRO
340
58k
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 } }