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
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.9k
AWSにおけるクラウドネイティブでセキュアな証券システムの運用
atsushi51
0
160
独自ファイル形式にStructTagで立ち向かう
atsushi51
0
99
クラウドインフラの権限
atsushi51
0
86
AWSとGo言語とコンテナによる証券プラットフォーム
atsushi51
0
86
StepFunctionsフルコース
atsushi51
0
120
DevSecOps実践
atsushi51
0
160
Other Decks in Technology
See All in Technology
金融の未来を考える / Thinking About the Future of Finance
ks91
PRO
0
180
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
2.4k
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
560
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
150
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
150
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
160
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
Claude Code 珍プレー好プレー
shinyasaita
0
280
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
120
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
12
4.9k
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
430
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
1
520
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
460
Navigating Weather and Climate Data
rabernat
0
280
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Agile that works and the tools we love
rasmusluckow
331
22k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
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Ͱ͖Δͱศ རͩΑͶ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠