and Network Engineer • Canon • Develop Wireless LAN Module Simulator with SystemC • Develop TCP/IP protocol stack on RTOS • Go in my free time • Mercari/Souzoh • Google App Engine Go Engineer • Mercari Atte • Next Currency • Google App Engine Go Engineer
w ։ൃڥ w σϓϩΠڥ w $*ڥ w ςετ ϑϨʔϜϫʔΫɺॻ͖ํ w ϑϨʔϜϫʔΫϥΠϒϥϦͷબఆ w ηΩϡϦςΟ w ΞϓϦέʔγϣϯͷΞʔΩςΫνϟݕ౼ w %#ͷઃܭ w "1*ͷઃܭ w ϏδωεϩδοΫͷίʔσΟϯά w ϏδωεϩδοΫΛ༻͍ͯΞϓϦέʔγϣϯΛߏங͢Δίʔυ w ΫϥΠΞϯτνʔϜ͚ͷυΩϡϝϯτ w ϩάղੳ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
w ػೳʹ߹Θͤͨదͳٕज़બఆ͕Մೳ w "*ج൫ͳΒ1ZUIPOɺ"1*ͳΒ(P w ෳͷαʔϏε͔Βڞ௨ج൫Λར༻Ͱ͖ΔΑ͏ʹͳΔ w ೝূɺϩά w .JDSPTFSWJDFTΛ࠾༻͢Δฐ w ݕ౼ཁૉ͕૿͑Δ w ίʔυϦϙδτϦΛαʔϏε͝ͱʹׂ͢Δ͖͔ w ׂͨ͠߹ɺڞ௨υϝΠϯͷมߋΛͲͷΑ͏ʹཧ͢Δ͔ w ֤αʔϏεͷϩάͷཧͲ͏͢Δ͔
w େنͳมߋࢪࡦΛଧͭͨΊʹɺ৫Λԣஅ͢Δඞཁ͕Ͱͯ͘Δ w ෦࠷దʹ͍ؕΔՄೳੑ w ΠϊϕʔγϣϯͷδϨϯϚͰϦεΫͱͯ͠հ͞Ε͍ͯΔ w ͷઃܭ͕৫ਤͦͷͷ w ՄೳͳݶΓগਓͰɺγϯϓϧͰϞϊϦγοΫͳγεςϜΛӡ༻͍͖͍ͯͨ͠ w .JDSPTFWJDFTࢦ͢ͷͰͳ͘ඞཁʹഭΒΕͨΒऔΔ͖બࢶͷͭ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
w FDIPHJOඪ४ͷOFUIUUQͱ4FSWF)UUQϝιουͷΠϯλʔϑΣʔε͕ҟͳΔ w NJEEMFXBSFΛڬΉ߹ʹେنͳมߋ͕ඞཁʹͳΔ r := chi.NewRouter() r.Use(func(w http.ResponseWriter, r *http.Request) { // ϩά }) r.Get("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(“welcome")) }) http.ListenAndServe(“:80", r)
w TFMFDU GSPNUBCMFΛॻ͘ඞཁ͕ͳ͍ type Product struct { Id int64 `db:"product_id, primarykey, autoincrement”` Price int64 `db:”unit_price"` } var p Product err := dbmap.SelectOne(&p, "select * from table WHERE id=? , id) p := &Product{1,2} err := dbmap.Insert(p)
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
W&YDIBOHF#BMBODF w 31$ͳΒɺϝιου1PTUݻఆɻ63-ίʔυ্ͷϝιουʹରԠɻ w W&YDOBIHF#VZ w +40/31$ͱൺֱ w ྑ͍1SPUPDPM#V⒎FSTʹΑΓɺΫϥΠΞϯτ"1*ͷมߋΛίϯύΠϧ࣌ʹݕग़ w ѱ͍ඪ४Ͱͳ͍ͷͰɺଞࣾެ։"1*ʹ͔ͳ͍ w (31$ͱൺֱ w ྑ͍)551ͳͷͰैདྷͷڥͰɺैདྷͷίʔυ͕ಈ͘ɻ w (31$ɺ(31$ͷίʔυΛॻ͘ඞཁ͕͋Δɻ w ѱ͍(31$ͷػೳ͕͑ͳ͍ TUSFBN
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
var res = JSON.parse(responseBody); postman.setEnvironmentVariable("ACCESS_TOKEN", res.token); { "token": “accesstokennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" }
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
w ("&ͰBQQZBNMͷڥมʹઃఆ͢Δͷ͕ηΦϦʔ w DPOpHͷΓସ͑ํ๏ w DPOpHZBNMΛڥ͝ͱʹ࡞ͯ͠ɺBQQZBNM͔ΒJODMVEF͢Δ w σϓϩΠ࣌ʹDPOpHZBNMΛγϯϘϦοΫϦϯΫͰΓସ͑Δ env_variables: MYSQL_CONNECTION : user:[email protected](project:asia-northeast1:xxxxx)/yyy includes: - config.yaml
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
EBUBTUPSFͷσʔλ͕ྲྀग़ͯ͠҉߸Խ͞Ε͍ͯΔͨΊى͖ͳ͍ɻ w 伴ͷϩʔςʔτΛఆظతʹ͢Δ͜ͱͰɺྲྀग़ͨ͠ࡍͷϦεΫΛݮɻ w 伴ͷϩʔςʔτͷ࠶҉߸ԽͳͲՄೳɻ w ΦʔφʔݖݶΛ࣋ͬͨ(PPHMFΞΧϯτͱύεϫʔυ͕ྲྀग़ͨ͠߹ͷΈͱͳΔɻ w $MPVE,.4ࣗମͷೝূ("&ͷαʔϏεΞΧϯτͰߦ͏ɻ w ݖݶΛ࣋ͬͨαʔϏεΞΧϯτͷΩʔΛੜ͍ͯ͠ͳ͚Εɺ֎෦͔Β$MPVE,.4Λୟ ͘͜ͱͰ͖ͳ͍ɻ w ͠αʔϏεଆͷϢʔβͷΞΧϯτͱύεϫʔυ͕࿙Εͨ߹ʹɺରϢʔβͷݸਓใ ͔͠ྲྀग़͠ͳ͍ɻ w ৄࡉެࣜυΩϡϝϯτͱHDQVHOPVIBVΛࢀর w IUUQTHJUIVCDPNHDQVHOPVIBVUSFFNBTUFSDMPVELNTQPFNJOUSPEVDUJPO w
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
w *OGSBTUSVDUVSFBTDPEFɺίϚϯυΛௐΕԿΛ͍ͬͯΔ͔Θ͔Δ w 8JLJͳͲʹखॱΛ·ͱΊΔඞཁͳ͍ w ($1ίϯιʔϧʑߋ৽͞ΕΔͨΊυΩϡϝϯτͷै͕͍͠ w ڥߏங࣌ʹ͚ͩॱ൪ʹίϚϯυΛୟ͚ͩ͘ͳͷͰTIFMMTDSJQUͰ࣮ݱ w 04ͷঢ়ଶཧ͢ΔΘ͚Ͱͳ͍ͨΊEPDLFS BOTJCMF DIFGར༻͠ͳ͍
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
w HPBQQUFTUHDMPVEʹΑΔσϓϩΠ͕Մೳ w ෆ͍ͯ͠ΔπʔϧNFSDBSJBQQFOHJOFHPΛϕʔεΠϝʔδͱͯ͠ಠࣗΠϝʔδΛ࡞ w $JSDMF$*্ͰπʔϧͷΠϯετʔϧ͠ͳ͍ w ςετ͕͘ͳΔ w ͘ͳΒͳ͍ͨΊʹΩϟογϡ͢ΔॲཧΛॻ͘ͱDJSDMFDJDPOpHZBNM͕େ͖͘ͳΔ w $*πʔϧͷґଘ͕େ͖͘ͳΔ
w ϦϙδτϦͷDMPOF w $*ͷࢦࣔ w $JFDMF$*ϩʔΧϧͰ࣮ߦՄೳ w DJFDMFDJCVJME w $*ڥͷσόοάʹศར version: 2 jobs: build: working_directory: /go/src/github.com/org/proj docker: - image: sonatard/appengine-go steps: - checkout - run: command: make ci
w 伴 w $JSDMF$*ͷڥมʹઃఆ w ιʔείʔυ w (JUIVCϦϙδτϦʹஔ w ެ։ՄೳͳΠϝʔδʹ͢Δ w ೝূɺηΩϡϦςΟͷۤ࿑͕ͳ͘ͳΔ w FROM mercari/appengine-go:1.8-slim ←ϕʔεΠϝʔδʹ͢Δ ARG PROTOC_VERSION=3.4.0 RUN curl -fo protoc.zip -sSL “https://github.com/protobuf/releases/protoc-${PROTOC_VERSION}-linux-x86_64.zip" // ུ
w $*Ͱ࣮ߦ͢ΔίϚϯυͱ։ൃͰ࣮ߦ͢ΔίϚϯυՄೳͳݶΓಉʹ͢Δ w dep: dep ensure -vendor-only -v test: gen test.sh $(GOLIST) ci: ci.sh deploy_qa: gen deploy.sh qa $(ALL_SERVICES) deploy_prod: gen deploy.sh qa $(ALL_SERVICES)
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
• ϓ ϩ δ Σ Ϋ τ ߏ • α ʔ Ϗ ε ߏ • σ ϓ ϩ Π • Ξ ʔ Ω ς Ϋ ν ϟ • ϑ Ϩ ʔ Ϝ ϫ ʔ Ϋ ɺ ϥ Π ϒ ϥ Ϧ • A P I ϓ ϩ τ ί ϧ • A P I ։ ൃ ํ • A P I Ϋ ϥ Π Ξ ϯ τ ͱ υ Ω ϡ ϝ ϯ τ • c o n f i g • η Ω ϡ Ϧ ς Ο • ։ ൃ ڥ • C I ڥ • ς ε τ • ϩ ά ղ ੳ • d a t a s t o r e ͷ ό ο Ϋ Ξ ο ϓ
ϧʔςΟϯάͱϛυϧΣΞ w ߏମͱ%#ςʔϒϧͷόΠϯυHPSQ w ϨΠϠʔυΞʔΩςΫνϟ )BOEMFS "QQMJDBUJPO %PNBJO *OGSBTUSVDUVSF w (31$ޓͷಠࣗ)551ϕʔεͷ31$ w DPOpHFOWDPOpH w $JSDMF$* NFSDBSJEPDLFSBQQFOHJOFHP QSPUPDΛՃ͑ͨΠϝʔδ w 5FTUඪ४ͷUFTUJOHύοέʔδ HPDNQ w σόοά༻"1*ΫϥΠΞϯτ1PTUNBO w ػີใͷཧ$MPVE,.4 w ղੳ#JH2VFSZ w 4UBDL%SJWFS͔ΒΠϯϙʔτ w EBUBTUPSF͔ΒΠϯϙʔτ GBWDMJQETCR