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
4k
Go言語で作られたAPIのレガシーコードと戦った話 / Go Conference 2015 winter
kyokomi
4
4k
Go製の拡張可能なSlack bot
kyokomi
3
8.4k
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-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
330
20251027_findyさん_音声エージェントLT
almondo_event
2
440
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
PRO
1
180
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
3
760
Implementing and Evaluating a High-Level Language with WasmGC and the Wasm Component Model: Scala’s Case
tanishiking
0
180
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
120
OSSで50の競合と戦うためにやったこと
yamadashy
3
990
OCIjp_Oracle AI World_Recap
shinpy
1
180
AWS DMS で SQL Server を移行してみた/aws-dms-sql-server-migration
emiki
0
240
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
1
160
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
200
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
340
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
7k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
It's Worth the Effort
3n
187
28k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Build your cross-platform service in a week with App Engine
jlugia
233
18k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
KATA
mclloyd
PRO
32
15k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
A Tale of Four Properties
chriscoyier
161
23k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
Context Engineering - Making Every Token Count
addyosmani
8
300
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.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ઃܭʹڥґଘ͢ΔͷΛஔ͍ͯΔ ͷ͕ϚζΠઆʁ ɾͱΓ͋͑ͣ྆ํॻ͍͓ͯΛͨ͠
ྑ͍ରॲํ๏͋Γ·ͨ͠Β ͋ͱͰڭ͍͑ͯͩ͘͞%
͓ΘΓ