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
2.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
goaを導入した話
クラスター株式会社のバックエンドWebAPI開発時にgoaを導入した話。Tipsなどを
kyokomi
June 16, 2017
More Decks by kyokomi
See All by kyokomi
さくっとGAE/GoでAPIを作って本番環境にリリースする / gaego-api-init-release
kyokomi
0
4.1k
Go言語で作られたAPIのレガシーコードと戦った話 / Go Conference 2015 winter
kyokomi
4
4k
Go製の拡張可能なSlack bot
kyokomi
3
8.5k
go generate tips
kyokomi
4
3.5k
私がGo言語を選んだ理由
kyokomi
3
420
Gomaについて
kyokomi
4
3.2k
Gunosy APIチームGo開発フロー
kyokomi
7
6.3k
Other Decks in Technology
See All in Technology
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
250
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
SmartHR Engineering Team Deck
smarthr
1
1.5k
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
190
Invisible to AI? Making TYPO3 Sites Quotable by AI Search Systems
wolfgangwagner
0
170
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
670
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.2k
20分でわかるセキュアAPI
nwiizo
1
200
関東Kaggler会発表資料
takoi
1
200
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
個人OSSが、机の上から世界に広がるまでの話
shinyasaita
1
370
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
120
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
370
Exploring anti-patterns in Rails
aemeredith
3
460
First, design no harm
axbom
PRO
2
1.2k
Side Projects
sachag
455
43k
Abbi's Birthday
coloredviolet
3
9.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
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ઃܭʹڥґଘ͢ΔͷΛஔ͍ͯΔ ͷ͕ϚζΠઆʁ ɾͱΓ͋͑ͣ྆ํॻ͍͓ͯΛͨ͠
ྑ͍ରॲํ๏͋Γ·ͨ͠Β ͋ͱͰڭ͍͑ͯͩ͘͞%
͓ΘΓ