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
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.1k
Gunosy APIチームGo開発フロー
kyokomi
7
6.3k
Other Decks in Technology
See All in Technology
Databricks 月刊サービスアップデート 2026年05月号
tyosi1212
0
200
新規事業を牽引する技術選定 〜フルスタックTypeScript開発の実践事例〜
nullnull
2
300
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
880
Mastering Ruby Box
tagomoris
3
140
電子辞書Brainをネットに繋げてみた(自力編)
raspython3
0
430
そのPoC、何を検証したつもりでしたか? AIプロダクトの価値検証で陥った落とし穴
techtekt
PRO
0
110
もりもり新機能を一挙紹介! AgentCoreに入門して、AWS上にAIエージェントを構築しよう
minorun365
PRO
6
750
Unlocking the Apps
pimterry
0
190
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
230
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
740
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
noUncheckedIndexedAccess、3時間、1万円。 / noUncheckedIndexedAccess, 3 Hours, 10,000 JPY.
kaonavi
1
250
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.3k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Believing is Seeing
oripsolob
1
140
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
230
Facilitating Awesome Meetings
lara
57
6.9k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
380
RailsConf 2023
tenderlove
30
1.5k
First, design no harm
axbom
PRO
2
1.2k
The Cost Of JavaScript in 2023
addyosmani
55
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
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ઃܭʹڥґଘ͢ΔͷΛஔ͍ͯΔ ͷ͕ϚζΠઆʁ ɾͱΓ͋͑ͣ྆ํॻ͍͓ͯΛͨ͠
ྑ͍ରॲํ๏͋Γ·ͨ͠Β ͋ͱͰڭ͍͑ͯͩ͘͞%
͓ΘΓ