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
850
今更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
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
12
4.8k
ワンバイナリWebサービスのススメ
mackee
10
8k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
120
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
870
perl for shell, awk and sed programmers
mackee
3
2.5k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
720
マイクロサービス化を利用した Goへの移行事例
mackee
0
860
PerlでつくるフルスクラッチWebAuthn/パスキー認証 / Demonstration of full-scratch WebAuthn/Passkey Authentication written in Perl
mackee
3
5.2k
SRE定例やその辺の取り組みをアプリケーションエンジニア目線で語る / "Observe" about SRE Meeting by Application Engineer
mackee
0
2k
Other Decks in Programming
See All in Programming
Zendeskのチケットを Amazon Bedrockで 解析した
ryokosuge
3
310
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
230
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
24
12k
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
290
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
0
480
旅行プランAIエージェント開発の裏側
ippo012
2
920
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
230
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
870
rage against annotate_predecessor
junk0612
0
170
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
3.2k
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
120
デザイナーが Androidエンジニアに 挑戦してみた
874wokiite
0
540
Featured
See All Featured
Music & Morning Musume
bryan
46
6.8k
GitHub's CSS Performance
jonrohan
1032
460k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
KATA
mclloyd
32
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Fireside Chat
paigeccino
39
3.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Code Reviewing Like a Champion
maltzj
525
40k
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 } }