Slide 1

Slide 1 text

goaΛಋೖͨ͠࿩

Slide 2

Slide 2 text

1 ͸͡Ίʹ

Slide 3

Slide 3 text

@k_yokomiʢ͖ΐ͜Έʣ Ϋϥελʔגࣜձࣾ ɾ2ʙ3೥͘Β͍ͣͬͱGoॻ͍ͯ·͢ ɾͪΐͬͱAndroidΤϯδχΞ΍ͬͯ·ͨ͠ ɾ࠷ۙ͸ɺterraform + AWSͱ͔΋ ɾਓ͕଍Γͳ͍ͷͰϑϧελοΫԽ͕ਐΜͰΔ ɾUnityʢC#ʣ΋গʑॻ͍ͯ·͢ ɾܕ݄ਥ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ͪΐͬͱ͚ͩαʔϏε঺հ ɾ୭Ͱ΋खܰʹόʔνϟϧϧʔϜΛ࡞Δ͜ͱͷͰ͖Δ αʔϏεͰ͢ ɾΠϕϯτͱ͔ϛʔςΟϯάͱ͔ࠓ೔Έ͍ͨͳษڧձ ΋VR্Ͱ։࠵ͨ͠ΓͰ͖·͢ ɾҠಈ͕໘౗ͱ͔ɺձ৔ͷΩϟύͷ౎߹Ͱʙͱ͍͏໰ ୊͕ղܾͰ͖·͢

Slide 6

Slide 6 text

όοΫΤϯυͷAPI͸શͯgoaͰ͢ ओͳAPI͸ɺҎԼͷ3ͭʹͳΓ·͢ɻ͢΂ͯgoa੡Ͱ͢ ɾuserؔ࿈ͷAPI ɾroomؔ࿈ͷAPI ɾόον༻౳ͷinternalͷAPI

Slide 7

Slide 7 text

goaΛಋೖͨ͠ཧ༝ Έͳ͞ΜAPIυΩϡϝϯτॻ͍ ͯ·͔͢ʁ

Slide 8

Slide 8 text

APIυΩϡϝϯτखͰॻ͘ͷ໘౗ ͗͢Δʂʂʂʂʂʂ ࢓༷͕มΘΒͳ͍͸͕ͣແ͍ ΜͰ͢ʂʂʂʂʂ

Slide 9

Slide 9 text

goa࠾༻ཧ༝ ɾAPIυΩϡϝϯτͷ࡞੒ͱߋ৽͕ਏ͔ͬͨ ɾAPIυΩϡϝϯτແ͠΋ݕ౼͕ͨ͠ɺ͋ͬͨ΄͏͕ ѹ౗తʹΫϥΠΞϯτΤϯδχΞͷ࡞ۀޮ཰͕ྑ͍ ɾechoΛ࢖͍͕ͬͯͨಛʹechoʹ͢Δཧ༝΋ͳ͔ͬ ͨʢૉͷhttpͰ΋ྑ͔ͬͨʣ

Slide 10

Slide 10 text

goaಋೖޙʹࢥͬͨ͜ͱ ɾgoaͷdesignͷஈ֊ͰResponseͷMediaTypeͳͲͷ ڞ௨ԽΛߟ͑Δ͏ͪʹAPIઃܭ͕ચ࿅͞Ε͖ͯͨ ɾසൟʹ࢓༷͕มΘͬͨΓϦιʔε໊ͷมߋ࣌ʹվम ൣғ͕গͳ͘ࡁΜͰαΫαΫ։ൃͰ͖ͨ ɾಋೖ౰ॳͳ͔ͬͨ೔ຊޠυΩϡϝϯτ͕ἧͬͯͯɺ ѹ౗తײँ

Slide 11

Slide 11 text

2 ಋೖͷTips

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

genΛcommit͠ͳ͍ཧ༝ ɾ࠷ॳ͸commitͯͨ͠ΜͰ͕͢ɺgenerateͨ͠ίʔυ ͷࠩ෼ͷϨϏϡʔ͕ແବͩͬͨ ɾgoaͱgoagenͷversionΛͪΌΜͱݻఆ͢Ε͹ɺCI Ͱgenerateͯ͠΋໰୊ͳ͍͸ͣ ɾݱঢ়ಛʹ໰୊ͳ͠

Slide 14

Slide 14 text

swaggerͷ഑෍ ɾswagger.jsonͱHTMLΛஔ͘ઐ༻ͷS3Λ༻ҙ ɾCIʹ͸WerckerΛ࢖͍ͬͯͯɺϑΟʔνϟʔϒϥϯ νͷஈ֊Ͱ΋swagger.jsonΛϨϏϡʔͰ͖ΔΑ͏ʹS3 ʹPut͍ͯ͠·͢ ɾPutͨ͠swaggerͷURL͸githubͷPRʹίϝϯτ͢ Δܗʹ͍ͯ͠·͢

Slide 15

Slide 15 text

githubͷPRʹίϝϯτͯ͘͠ΕΔ ɾs3ʹ഑ஔͨ͠swagger-uiͷHTMLΛURLࢦఆͰฦ͠ ͯ͘ΕΔʢ͜ΕΛ։͘ͱઃܭϨϏϡʔ͕͙͢ग़དྷΔʣ

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

ಛఆͷprefix͕͍ͭͨϒϥϯνͷͱ͖͚ͩ

Slide 18

Slide 18 text

3 ͪΐͬͱࠔͬͨ఺ ʢ࢖͍ํ͕ѱ͍આ΋͋Δʣ

Slide 19

Slide 19 text

middlewareͰΤϥʔΛฦ͢ͱ໰୊͕ى͖ͨ ɾmiddlewareͱcontrollerͷڱؒʹ͋Δॲཧ͕ϋϯυ ϦϯάͰ͖ͳ͍ ɾͦͷͨΊɺResponseHeader΁ͷOriginͷઃఆ͕ߦ ΘΕͳ͍ ɾͱΓ͋͑ͣࣗલͰResponseHeaderʹOriginΛઃఆ ͢ΔmiddlewareΛॻ͍ͨ

Slide 20

Slide 20 text

dev؀ڥͷ৔߹͸ʙΈ͍ͨͳ͜ͱ͸Ͱ͖ͳ͍ ɾOriginͷઃఆΛdevelop؀ڥͱproduction؀ڥͰมߋ ͔ͨͬͨ͠ ɾͦ΋ͦ΋ɺAPIઃܭʹ؀ڥґଘ͢Δ΋ͷΛஔ͍ͯΔ ͷ͕ϚζΠઆʁ ɾͱΓ͋͑ͣ྆ํॻ͍͓ͯ஡Λ୙ͨ͠

Slide 21

Slide 21 text

ྑ͍ରॲํ๏౳͋Γ·ͨ͠Β ͋ͱͰڭ͍͑ͯͩ͘͞%

Slide 22

Slide 22 text

͓ΘΓ