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によるスキーマ駆動開発
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
atsushi-ishibashi
June 26, 2020
Technology
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goによるスキーマ駆動開発
atsushi-ishibashi
June 26, 2020
More Decks by atsushi-ishibashi
See All by atsushi-ishibashi
コンテナ運用におけるアプリケーション設定管理
atsushi51
0
520
モダンなアーキテクチャでゼロから作る証券基盤
atsushi51
1
2.8k
AWSにおけるクラウドネイティブでセキュアな証券システムの運用
atsushi51
0
150
独自ファイル形式にStructTagで立ち向かう
atsushi51
0
94
クラウドインフラの権限
atsushi51
0
79
AWSとGo言語とコンテナによる証券プラットフォーム
atsushi51
0
85
StepFunctionsフルコース
atsushi51
0
120
DevSecOps実践
atsushi51
0
150
Other Decks in Technology
See All in Technology
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
4
660
手塩にかけりゃいいってもんじゃない
ming_ayami
0
560
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
160
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
960
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
120
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
970
AIのReact習熟度を測る
uhyo
2
450
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
140
フロンティアAIのゲート化と地政学リスク
nagatsu
0
130
なぜ Platform Engineering の土台に Kubernetes を選ぶのか
r4ynode
2
640
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
650
入門!AWS Blocks
ysuzuki
1
110
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
A Soul's Torment
seathinner
6
2.9k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
The Spectacular Lies of Maps
axbom
PRO
1
800
A better future with KSS
kneath
240
18k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
The Curious Case for Waylosing
cassininazir
1
380
Transcript
GoʹΑΔεΩʔϚۦಈ։ൃʢԾʣ Finatext x ΤϒϦʔ ελʔτΞοϓ࠷લઢͷGoࣄྫ
ࣗݾհ - ੴڮ ३ࢤ • αʔόαΠυɺΠϯϑϥΛ୲ • ݩʑiOSͬͯͨ • εϚʔτϓϥεͷূ݊γεςϜΛ։ൃɺͦͷଞॾʑ
• terraform-provider-awsʹͦͦ͜͜ߩݙ • झຯαφ
εΩʔϚۦಈ։ൃͱ͍͑ • OpenAPIɺgRPCɺGraphQLͷ3ͭͰΑ͘ޠΒ ΕΔ • ࠓճGraphQLͷؚ·Ε·ͤΜ • gRPCͪΐͬͱ͚ͩ • OpenAPIΛϝΠϯͰ͠·͢
BaaSͰͷΤϯυϙΠϯτߏਤ ALB HTTP + JSON NLB gRPC ೝՄαʔϏε จܥ Ձ֨ܥ
ޱ࠲ܥ ػೳϨΠϠʔͱ͍͏ΑΓ͔ υϝΠϯͰ͚ͯΔ
gRPCʁ • ෦తͳೝՄαʔϏεͰར༻͍ͯ͠Δ • ͜ͷೝՄϏδωεϩδοΫدΓͷͷ • ଟͷαʔό͕ΫϥΠΞϯτͱͯ͠ར༻͢Δ • ΫϥΠΞϯτίʔυੜͰ͖Δͷخ͍͠ •
ϦΫΤετ͝ͱʹೝՄαʔϏεʹ͍߹ΘͤΔͷͰߴύϑΥʔϚϯεخ͠ ͍ خ͍͜͠ͱ ΊΜͲ͍͘͜͞ͱ • ΞΫηεϩάͷूܭϝτϦΫεͳͲʹϚωʔδυɾαʔϏε͑ͳ͍ • HTTP-JSONͷ߹ALB-TargetGroupͷΈ߹ΘͤͰHTTP StatusCode ͳͲΛCloudWatchMetricsͰूܭͯ͠Δ • gRPCͩͱinterceptorೖΕͯΞϓϦέʔγϣϯϩάʹग़ͯ͠ؤுͬͨΓɺ PrometheusͬͨΓʁ • ·ͩ֎ʹग़ͤΔAPIυΩϡϝϯτੜͰ͖ͳ͍ͱࢥ͏
OpenAPIͷ۩ମతͳར༻ํ๏ • ن֨Խ͞ΕͨAPIυΩϡϝϯτ͕࡞ΕΔ • mockੜͰ͖ͯϑϩϯτ͕ಉ࣌ਐߦͰ։ൃ ਐΊΕΔ • ίʔυੜՄೳ
ΤσΟλ Swagger Editor Stoplight Studio • ެࣜ • GUIΤσΟλ •
ෳϑΝΠϧฤूՄೳ • previewΆ͍(form)ͷ͔ΒฤूͰ ͖Δ
APIυΩϡϝϯτੜ Dockerfile ίϯςφ্ཱͪ͛
• ϩʔΧϧͰཱͯΕΔ͕ɺෳΤϯυϙΠϯτΛ ݟΔͷେมͳͷͰɺϒϥβͰURL͚ͯϗε ςΟϯά͞ΕͯΔͱศརͦ͏ • APIαʔόͱಉ͡gitϨϙδτϦʹswagger-ui༻ͷ DockerfileΛ࣋ͭ • ECSͰϗεςΟϯά •
AWS CodePipelineͰ։ൃڥʹϦϦʔε ։ൃڥʹϦϦʔε
Mockίϯςφͷੜ apisproutͷDockerfile Mock͔ΒͷϨεϙϯε
• ϩʔΧϧͰཱͯΕΔ͕ʢҎԼུ • APIαʔόͱಉ͡gitϨϙδτϦʹmock༻ ͷDockerfileΛ࣋ͭ • ECSͰϗεςΟϯά • AWS CodePipelineͰ։ൃڥʹϦϦʔε
UIͱಉ͘͡։ൃڥʹϦϦʔε
ίʔυੜ • routergorillaͰੜ͞ΕΔ • FinatextͰechoΛͬͯΔͨΊ modelͷΈநग़
ਖ਼͋Μ·Γخ͘͠ͳ͍… • APIͷϦΫΤετʹόϦσʔγϣϯ͍ͨ͠ • ͪΖΜopenapiύοέʔδʹॻ͚ͳ͍ • ؔ࡞ͬͯҾʁ • ໊લۭؒʹؾΛ͚ͭΔඞཁ͋Γ •
ผͷstructʹຒΊࠐΉʁ • ྑ͍͚ͲΊΜͲ͍͘͞
ଥڠతίʔυੜ • Swagger UI͔ΒJSONΛCtrl+C • ChimeraCoder/gojsonͰJSON͔ΒgoͷstructΛੜ • ͦΕΛ͋ͬͯ΄͍͠goϑΝΠϧʹషΔʂ
ͦͦεΩʔϚۦಈͷϞνϕͬͯʁ αʔόˠϑϩϯτͱ͍͏։ൃͷྲྀΕ ↓ ը໘͕ग़དྷ্͕ͬͯ͘ΔͱશํҐ͔ΒϑΟʔυόοΫ͕དྷΔ ↓ ϑϩϯτ͕UI͍ͯ͠Δ͏ͪʹαʔό৭ʑվम͢Δʢ߹ʹΑͬͯ APIมߋ… ↓ ϑϩϯτਵ͢Δ͕ɺUIζϨΔ… ͱϑϩϯτʹγϫدͤߦ͖͕ͪ
ͳͷͰϑϩϯτͱαʔό͕ಉ࣌ฒߦͰਐΊΕΔΑ͏ʹͱΓ͋͑ͣҰ୴API ༷ΛܾΊΔ͔͠ͳ͍ ͍ͭͰʹن֨Խ͞ΕͨAPIυΩϡϝϯτͱMock͕Ͱ͖Δͷศར
εΩʔϚΛܾΊͨ͘ͳ͍ཧ༝ Userͱ͍͏ߏମ͕͋Δͱ͢Δɻ ͦΕʹNameAgeͱ͍ͬͨଐੑΛՃ͍ͯ͘͠ɻ ຊͲ͕ͬͪઌʹ͋Δʁʁ
ଐੑ͕ઌͩͱࢥ͏ ଐੑΛʹྫ͑ΔͱɺߏମʢεΩʔϚʣ࠲ ։ൃதʹ֤ؔऀ͕ΛͲΜͲΜݟ͚ͭͯ͘Δ ͦͷࡍʹ࠲ΛΧνοͱܾΊ͗͢Δͱ৽͕͘͠ݟ͔ͭͬͨͱ͖ʹۙͷ ࠲ʹΈࠐΜͰ͠·͏
εΩʔϚʢԾʣۦಈ։ൃͷεεϝ • ͱΓ͋͑ͣલʹਐΉͨΊʹAPIεΩʔϚʢԾʣ Λ࡞Δ • ৽ن։ൃ࣌ޓੑΕͯΨϯΨϯഁյత มߋ͢͠ • ͍ͭͰʹAPIυΩϡϝϯτͱMockͰ͖Δͱศ རͩΑͶ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠