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
goaを導入した話
Search
kyokomi
June 16, 2017
Technology
0
2.6k
goaを導入した話
クラスター株式会社のバックエンドWebAPI開発時にgoaを導入した話。Tipsなどを
kyokomi
June 16, 2017
Tweet
Share
More Decks by kyokomi
See All by kyokomi
さくっとGAE/GoでAPIを作って本番環境にリリースする / gaego-api-init-release
kyokomi
0
3.9k
Go言語で作られたAPIのレガシーコードと戦った話 / Go Conference 2015 winter
kyokomi
4
3.9k
Go製の拡張可能なSlack bot
kyokomi
3
8.3k
go generate tips
kyokomi
4
3.4k
私がGo言語を選んだ理由
kyokomi
3
410
Gomaについて
kyokomi
4
3.1k
Gunosy APIチームGo開発フロー
kyokomi
7
6.2k
Other Decks in Technology
See All in Technology
AI時代の経営、Bet AI Vision #BetAIDay
layerx
PRO
1
2.1k
はじめての転職講座/The Guide of First Career Change
kwappa
5
4.1k
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
130
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
6.3k
生成AI時代におけるAI・機械学習技術を用いたプロダクト開発の深化と進化 #BetAIDay
layerx
PRO
1
1.2k
Agent Development Kitで始める生成 AI エージェント実践開発
danishi
0
150
Findy Freelance 利用シーン別AI活用例
ness
0
510
データモデリング通り #2オンライン勉強会 ~方法論の話をしよう~
datayokocho
0
170
人に寄り添うAIエージェントとアーキテクチャ #BetAIDay
layerx
PRO
9
2.3k
テストを実行してSorbetのsigを書こう!
sansantech
PRO
1
110
Delegate authentication and a lot more to Keycloak with OpenID Connect
ahus1
0
220
生成AIによるデータサイエンスの変革
taka_aki
0
3k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Statistics for Hackers
jakevdp
799
220k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
880
GraphQLとの向き合い方2022年版
quramy
49
14k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
800
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Writing Fast Ruby
sferik
628
62k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Making Projects Easy
brettharned
117
6.3k
Transcript
goaΛಋೖͨ͠
1 ͡Ίʹ
@k_yokomiʢ͖ΐ͜Έʣ Ϋϥελʔגࣜձࣾ ɾ2ʙ3͘Β͍ͣͬͱGoॻ͍ͯ·͢ ɾͪΐͬͱAndroidΤϯδχΞͬͯ·ͨ͠ ɾ࠷ۙɺterraform + AWSͱ͔ ɾਓ͕Γͳ͍ͷͰϑϧελοΫԽ͕ਐΜͰΔ ɾUnityʢC#ʣগʑॻ͍ͯ·͢ ɾܕ݄ਥ
None
ͪΐͬͱ͚ͩαʔϏεհ ɾ୭ͰखܰʹόʔνϟϧϧʔϜΛ࡞Δ͜ͱͷͰ͖Δ αʔϏεͰ͢ ɾΠϕϯτͱ͔ϛʔςΟϯάͱ͔ࠓΈ͍ͨͳษڧձ VR্Ͱ։࠵ͨ͠ΓͰ͖·͢ ɾҠಈ͕໘ͱ͔ɺձͷΩϟύͷ߹Ͱʙͱ͍͏ ͕ղܾͰ͖·͢
όοΫΤϯυͷAPIશͯgoaͰ͢ ओͳAPIɺҎԼͷ3ͭʹͳΓ·͢ɻͯ͢goaͰ͢ ɾuserؔ࿈ͷAPI ɾroomؔ࿈ͷAPI ɾόον༻ͷinternalͷAPI
goaΛಋೖͨ͠ཧ༝ Έͳ͞ΜAPIυΩϡϝϯτॻ͍ ͯ·͔͢ʁ
APIυΩϡϝϯτखͰॻ͘ͷ໘ ͗͢Δʂʂʂʂʂʂ ༷͕มΘΒͳ͍͕ͣແ͍ ΜͰ͢ʂʂʂʂʂ
goa࠾༻ཧ༝ ɾAPIυΩϡϝϯτͷ࡞ͱߋ৽͕ਏ͔ͬͨ ɾAPIυΩϡϝϯτແ͠ݕ౼͕ͨ͠ɺ͋ͬͨ΄͏͕ ѹతʹΫϥΠΞϯτΤϯδχΞͷ࡞ۀޮ͕ྑ͍ ɾechoΛ͍͕ͬͯͨಛʹechoʹ͢Δཧ༝ͳ͔ͬ ͨʢૉͷhttpͰྑ͔ͬͨʣ
goaಋೖޙʹࢥͬͨ͜ͱ ɾgoaͷdesignͷஈ֊ͰResponseͷMediaTypeͳͲͷ ڞ௨ԽΛߟ͑Δ͏ͪʹAPIઃܭ͕ચ࿅͞Ε͖ͯͨ ɾසൟʹ༷͕มΘͬͨΓϦιʔε໊ͷมߋ࣌ʹվम ൣғ͕গͳ͘ࡁΜͰαΫαΫ։ൃͰ͖ͨ ɾಋೖॳͳ͔ͬͨຊޠυΩϡϝϯτ͕ἧͬͯͯɺ ѹతײँ
2 ಋೖͷTips
generate͢Δखॱ ɾdoc.goʹgo generate༻ͷίϝϯτΛهࡌ ɾgenͱ͍͏σΟϨΫτϦʹ_designԼͷมߋ࣌ʹຖճ ্ॻ͖Ͱੜ͠ɺඞཁͳίʔυΛίϐϖ͢Δ ɾ͜ͷgenσΟϨΫτϦ.gitignoreͰcommit͠ͳ͍Α͏ ʹ͠ɺCIͰgenerate͢ΔΑ͏ʹͨ͠ //go:generate goagen -o
gen main --force -d github.com/Xxxxx/xxxxxxx_room_api/_design //go:generate goagen -o gen app -d github.com/Xxxxx/xxxxxxx_room_api/_design //go:generate goagen -o gen swagger -d github.com/Xxxxx/xxxxxxx_room_api/_design
genΛcommit͠ͳ͍ཧ༝ ɾ࠷ॳcommitͯͨ͠ΜͰ͕͢ɺgenerateͨ͠ίʔυ ͷࠩͷϨϏϡʔ͕ແବͩͬͨ ɾgoaͱgoagenͷversionΛͪΌΜͱݻఆ͢ΕɺCI Ͱgenerateͯ͠ͳ͍ͣ ɾݱঢ়ಛʹͳ͠
swaggerͷ ɾswagger.jsonͱHTMLΛஔ͘ઐ༻ͷS3Λ༻ҙ ɾCIʹWerckerΛ͍ͬͯͯɺϑΟʔνϟʔϒϥϯ νͷஈ֊Ͱswagger.jsonΛϨϏϡʔͰ͖ΔΑ͏ʹS3 ʹPut͍ͯ͠·͢ ɾPutͨ͠swaggerͷURLgithubͷPRʹίϝϯτ͢ Δܗʹ͍ͯ͠·͢
githubͷPRʹίϝϯτͯ͘͠ΕΔ ɾs3ʹஔͨ͠swagger-uiͷHTMLΛURLࢦఆͰฦ͠ ͯ͘ΕΔʢ͜ΕΛ։͘ͱઃܭϨϏϡʔ͕͙͢ग़དྷΔʣ
None
ಛఆͷprefix͕͍ͭͨϒϥϯνͷͱ͖͚ͩ
3 ͪΐͬͱࠔͬͨ ʢ͍ํ͕ѱ͍આ͋Δʣ
middlewareͰΤϥʔΛฦ͢ͱ͕ى͖ͨ ɾmiddlewareͱcontrollerͷڱؒʹ͋Δॲཧ͕ϋϯυ ϦϯάͰ͖ͳ͍ ɾͦͷͨΊɺResponseHeaderͷOriginͷઃఆ͕ߦ ΘΕͳ͍ ɾͱΓ͋͑ͣࣗલͰResponseHeaderʹOriginΛઃఆ ͢ΔmiddlewareΛॻ͍ͨ
devڥͷ߹ʙΈ͍ͨͳ͜ͱͰ͖ͳ͍ ɾOriginͷઃఆΛdevelopڥͱproductionڥͰมߋ ͔ͨͬͨ͠ ɾͦͦɺAPIઃܭʹڥґଘ͢ΔͷΛஔ͍ͯΔ ͷ͕ϚζΠઆʁ ɾͱΓ͋͑ͣ྆ํॻ͍͓ͯΛͨ͠
ྑ͍ରॲํ๏͋Γ·ͨ͠Β ͋ͱͰڭ͍͑ͯͩ͘͞%
͓ΘΓ