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.5k
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.8k
Go言語で作られたAPIのレガシーコードと戦った話 / Go Conference 2015 winter
kyokomi
4
3.9k
Go製の拡張可能なSlack bot
kyokomi
3
8.2k
go generate tips
kyokomi
4
3.3k
私がGo言語を選んだ理由
kyokomi
3
380
Gomaについて
kyokomi
4
3k
Gunosy APIチームGo開発フロー
kyokomi
7
6k
Other Decks in Technology
See All in Technology
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
500
Application Development WG Intro at AppDeveloperCon
salaboy
0
190
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
120
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
Featured
See All Featured
What's new in Ruby 2.0
geeforr
343
31k
Six Lessons from altMBA
skipperchong
27
3.5k
Statistics for Hackers
jakevdp
796
220k
How STYLIGHT went responsive
nonsquared
95
5.2k
Bash Introduction
62gerente
608
210k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Making Projects Easy
brettharned
115
5.9k
Side Projects
sachag
452
42k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Thoughts on Productivity
jonyablonski
67
4.3k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
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ઃܭʹڥґଘ͢ΔͷΛஔ͍ͯΔ ͷ͕ϚζΠઆʁ ɾͱΓ͋͑ͣ྆ํॻ͍͓ͯΛͨ͠
ྑ͍ରॲํ๏͋Γ·ͨ͠Β ͋ͱͰڭ͍͑ͯͩ͘͞%
͓ΘΓ