Slide 1

Slide 1 text

GoͰͷνʔϜ։ൃͱ
 ίʔυ؅ཧͷ೰Έ ୈ2ճ ؔ੢golangษڧձ Kentaro Kawano

Slide 2

Slide 2 text

About Me • Kentaro Kawano/@kawaken • γφδʔϚʔέςΟϯά, TechScore • Go, Python, Rails, swift

Slide 3

Slide 3 text

Goྺ • ݸਓ – 1.2͔Β͞ΘΓॳΊͨ – CLIπʔϧͳͲͷ࡞੒͕த৺ – WebΞϓϦ͸࡞ͬͯͳ͔ͬͨ • ࢓ࣄ – σʔλ࡞੒ɺνϟοτ༻πʔϧͳͲ – 9݄͔Βຊ֨తʹϓϩδΣΫτʹಋೖ

Slide 4

Slide 4 text

νʔϜ։ൃͷ೰Έ

Slide 5

Slide 5 text

GoͷϨϕϧ্͛ • ֶश͕ඞਢ – ৮ͬͯΔਓগͳ͍ – Go Quiz Έ͍ͨͳڭࡐΛ΄΅೔Ͱఏڙ • ໰୊࡞Δͷ͠ΜͲ͔ͬͨ – ि1ճ30෼ͷ؆୯ͳษڧձ – ॻ੶

Slide 6

Slide 6 text

৘ใऩू • Blog, GoCon, Advent Calendar ͳͲ • ଞࣾࣄྫ͸͋Γ͕͍ͨ – ࢀߟʹͳΔ͠ʮGo૿͑ͯΔײʯ͸େࣄ

Slide 7

Slide 7 text

։ൃ؀ڥߏங • ϝϯόʔͷ؀ڥ – جຊ͓೚ͤ • Ҏલ͸VirtualBoxͷΠϝʔδΛ഑෍ – Α͘࢖͏πʔϧͷΠϯετʔϧεΫϦϓτΛ࡞ ੒ • golang.org/x/tools/cmd/ʙ • golint,gocode ͳͲίʔυؔ࿈ͷπʔϧ • gom,fresh,gooseͳͲͷϓϩδΣΫτͰ࢖͏πʔϧ

Slide 8

Slide 8 text

CI/CD؀ڥ • ৽͘͠ߏங – طଘ؀ڥͷྲྀ༻Ͱ͸্ख͍͔͘ͳ͍͜ͱ΋ • ίʔυԽΛ໨ࢦ͢ʢʙ as a Codeʣ – drone.io(Docker),Ansible,TerraformͳͲ • ੩తϑΝΠϧͷѻ͍͕ఆ·ͬͯͳ͍ – go-bindata? • ϗοτσϓϩΠ͕ະݕূ – ಈ࡞֬ೝͰ͖ͯͳ͍

Slide 9

Slide 9 text

ϨϏϡʔ • gofmt,golintͳͲπʔϧͰࠣ຤ͳ෦෼͸ճආ – CIͰ΋νΣοΫͰ͖Δ • εΩϧ͕ίʔυʹݱΕ΍͍͢ؾ͕͢Δ – εΩϧࠩͰͲ͏ͯ͠΋ѱ͍ํ͕໨ཱͭ • جຊతͳ෦෼ͷهड़͕૿͑Δ͔Βʁ – ڭҭେࣄͰ͢ͶɺΈ͍ͨͳҙࣝͷߴ·Γ • Go Β͍͠ίʔυͱ͸Կ͔ʁ – ·ͩΑ͘Θ͔Βͳ͍ – มͳίʔυʹ͸ͳΓʹ͍͘

Slide 10

Slide 10 text

ίʔυ؅ཧͷ೰Έ

Slide 11

Slide 11 text

ϥΠϒϥϦͷબ୒ • ރΕͯΔɺϝϯς͞Εͯͳ͍ͷ൑அ͕೉͠ ͍ • ୯७ͳϕϯνϚʔΫ͚ͩͰ͸Θ͔Βͳ͍ – MiddlewareɺηΩϡϦςΟରࡦɺηογϣϯ ؅ཧͳͲ • ໎ͬͨΒඪ४ʹدͤΔʢϜϦʹ࠾༻͠ͳ ͍ʣ

Slide 12

Slide 12 text

Gin • Gin࠷଎ʂΈ͍ͨͳهࣄ΋͋Δ • ࠾༻ࣄྫ΋ݟ͔͚Δ • ϝϯς͞Ε͍ͯΔͷʁΈ͍ͨͳIssue΋͋ͬͨ • contribͷϓϧϦΫ͕์ஔ͞Ε͍ͯͨΓ… • ࢖͍ͬͯΔਓ͸ଟͦ͏͚ͩͲɺຊ౰ʹେৎ෉ ͔ʁ – ࠷ѱࣗ෼ͨͪͰϝϯς͢Δͱ͍͏֮ޛͰ࠾༻

Slide 13

Slide 13 text

ύοέʔδߏ੒ • SCMʹ͸GitLabΛ࢖༻ – αϒύοέʔδͷ go get ͕Ͱ͖ͳ͍ • ݸผͷϦϙδτϦΛ࡞ͬͯରԠ • ࣮૷্ͷෆ౎߹͸ͳ͍ • CIͷઃఆͳͲ͕खؒ

Slide 14

Slide 14 text

Gom • master ʹ໰୊͕͋Δͱɺϒϥϯνͷ੾Γସ ͕͑Ͱ͖ͳ͍ – gin-gonic/contrib/sessions – aws/aws-sdk-go • ࠷ۙɺҰ࣌తʹmaster͕ϏϧυΤϥʔʹ • Ұ࣌తʹforkͯ͠मਖ਼ • मਖ਼ΛϓϧϦΫ͍͕ͨ͠ख͔ͭͣ…

Slide 15

Slide 15 text

σʔλϕʔεؔ࿈ • database/sqlͱlib/pqͰؤுͬͯΔ • drone/sqlgenΛ࢖ͬͯΈͨ – JSONܕͰ࢖͍ํ͕߹Θͳ͔ͬͨ • Ϟσϧؔ࿈ͷίʔυδΣωϨʔλΛࣗ࡞ – ERਤ͔ΒϞσϧ࡞੒ • ݕࡧػೳͳͲͰSQLͷ૊Έཱͯʹۤ࿑ – ΫΤϦϏϧμ͸࠾༻ͯ͠΋ྑ͔͔ͬͨ΋…

Slide 16

Slide 16 text

໊લ෇͚໰୊ • ৑௕ͰࣅͨΑ͏ͳ໊લͷఆ͕ٛ૿͑Δ – ϦΫΤετύϥϝʔλอ࣋༻ͷstruct • HogeRequestParams • FugaRequestParams – ίʔυ஋؅ཧ༻ͷconst • ܕ໊Λઌʹ͚ͭͯճආ – ABSuccess – XYSuccess – ڞ௨Խ΋Ͱ͖ͳ͍… • ύοέʔδΛࡉ͔͘͢Δ͔͠ͳ͍ʁ

Slide 17

Slide 17 text

ςετؔ࿈ • testifyΛ࢖ͬͯassertion͸؆୯ʹॻ͚ΔΑ͏ • go test – ./... Λ͚ͭͳ͍ͱμϝ • αϒύοέʔδͷςετ͕εϧʔ͞Ε͍ͯͨ – -race ΋͚ͭΔ • ඇಉظॲཧͰո͍͠ͱ͜Ζ͕ݕग़Ͱ͖Δ • ݁Ռ͕Θ͔Γʹ͍͘ͷͰͲ͏ʹ͔͍ͨ͠

Slide 18

Slide 18 text

GOͷײ૝

Slide 19

Slide 19 text

ֶशίετߴ͘ͳ͍ • ߴ͘ͳ͍ͱݟࠐΜͰ͚ͨͲɺ࣮ࡍߴ͘ͳ͍ • ֮͑Δ͜ͱ͕ଟ͘ͳ͍ • goroutineपΓͰͪΐͬͱϋϚͬͨఔ౓ – ࢖͍ํͷ໰୊ – syncύοέʔδͰղܾͰ͖Δͱࢥ͏ • มͳ҉໧஌͕ͳ͍

Slide 20

Slide 20 text

։ൃޮ཰΋ѱ͘ͳ͍ • Railsͱൺֱͯ͠ – ίʔυΛॻ͘ྔ͸૿͑ͨͱࢥ͏ – มͳϋϚΓํ͠ͳ͍ – ͙͢ʹಈ͘Ϟϊ͸Ͱ͖ͳ͍ • ؀ڥ੔උʹ͕͔͔࣌ؒͬͨ – ࠷ॳͳͷͰ࢓ํͳ͍ – ͔࣍Β͸୹ॖͰ͖Δ࣌ؒ • ࠓ·Ͱͱൺ΂ͯḮ৭ͳ͍ޮ཰ͰਐΜͰ͍Δ – ࠷ॳͷํ͸௿໎͚ͯͨ͠Ͳ৐Γ੾ͬͨ

Slide 21

Slide 21 text

ӡ༻͸͜Ε͔Β • ࣮ࡍ΍ͬͯΈͳ͍ͱΘ͔Βͳ͍ • ίετ࡟ݮʹͭͳ͕ͬͨΒͱ͍͏ظ଴ – AWSͷΠϯελϯεΛখ͍͞Ϟϊʹม͑Δͱ͔ – ࠓޙͷόʔδϣϯΞοϓରԠͷෛՙ

Slide 22

Slide 22 text

͓ΘΓ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠