Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goでのチーム開発とコード管理の悩み/Team development and code ma...

Goでのチーム開発とコード管理の悩み/Team development and code management in Go

Goを初めて採用したプロジェクトでの、チーム開発、コード管理での悩み、試行錯誤についてまとめました。

Kentaro Kawano

January 25, 2016
Tweet

More Decks by Kentaro Kawano

Other Decks in Programming

Transcript

  1. Goྺ • ݸਓ – 1.2͔Β͞ΘΓॳΊͨ – CLIπʔϧͳͲͷ࡞੒͕த৺ – WebΞϓϦ͸࡞ͬͯͳ͔ͬͨ •

    ࢓ࣄ – σʔλ࡞੒ɺνϟοτ༻πʔϧͳͲ – 9݄͔Βຊ֨తʹϓϩδΣΫτʹಋೖ
  2. GoͷϨϕϧ্͛ • ֶश͕ඞਢ – ৮ͬͯΔਓগͳ͍ – Go Quiz Έ͍ͨͳڭࡐΛ΄΅೔Ͱఏڙ •

    ໰୊࡞Δͷ͠ΜͲ͔ͬͨ – ि1ճ30෼ͷ؆୯ͳษڧձ – ॻ੶
  3. ։ൃ؀ڥߏங • ϝϯόʔͷ؀ڥ – جຊ͓೚ͤ • Ҏલ͸VirtualBoxͷΠϝʔδΛ഑෍ – Α͘࢖͏πʔϧͷΠϯετʔϧεΫϦϓτΛ࡞ ੒

    • golang.org/x/tools/cmd/ʙ • golint,gocode ͳͲίʔυؔ࿈ͷπʔϧ • gom,fresh,gooseͳͲͷϓϩδΣΫτͰ࢖͏πʔϧ
  4. CI/CD؀ڥ • ৽͘͠ߏங – طଘ؀ڥͷྲྀ༻Ͱ͸্ख͍͔͘ͳ͍͜ͱ΋ • ίʔυԽΛ໨ࢦ͢ʢʙ as a Codeʣ

    – drone.io(Docker),Ansible,TerraformͳͲ • ੩తϑΝΠϧͷѻ͍͕ఆ·ͬͯͳ͍ – go-bindata? • ϗοτσϓϩΠ͕ະݕূ – ಈ࡞֬ೝͰ͖ͯͳ͍
  5. ϨϏϡʔ • gofmt,golintͳͲπʔϧͰࠣ຤ͳ෦෼͸ճආ – CIͰ΋νΣοΫͰ͖Δ • εΩϧ͕ίʔυʹݱΕ΍͍͢ؾ͕͢Δ – εΩϧࠩͰͲ͏ͯ͠΋ѱ͍ํ͕໨ཱͭ •

    جຊతͳ෦෼ͷهड़͕૿͑Δ͔Βʁ – ڭҭେࣄͰ͢ͶɺΈ͍ͨͳҙࣝͷߴ·Γ • Go Β͍͠ίʔυͱ͸Կ͔ʁ – ·ͩΑ͘Θ͔Βͳ͍ – มͳίʔυʹ͸ͳΓʹ͍͘
  6. Gom • master ʹ໰୊͕͋Δͱɺϒϥϯνͷ੾Γସ ͕͑Ͱ͖ͳ͍ – gin-gonic/contrib/sessions – aws/aws-sdk-go •

    ࠷ۙɺҰ࣌తʹmaster͕ϏϧυΤϥʔʹ • Ұ࣌తʹforkͯ͠मਖ਼ • मਖ਼ΛϓϧϦΫ͍͕ͨ͠ख͔ͭͣ…
  7. σʔλϕʔεؔ࿈ • database/sqlͱlib/pqͰؤுͬͯΔ • drone/sqlgenΛ࢖ͬͯΈͨ – JSONܕͰ࢖͍ํ͕߹Θͳ͔ͬͨ • Ϟσϧؔ࿈ͷίʔυδΣωϨʔλΛࣗ࡞ –

    ERਤ͔ΒϞσϧ࡞੒ • ݕࡧػೳͳͲͰSQLͷ૊Έཱͯʹۤ࿑ – ΫΤϦϏϧμ͸࠾༻ͯ͠΋ྑ͔͔ͬͨ΋…
  8. ໊લ෇͚໰୊ • ৑௕ͰࣅͨΑ͏ͳ໊લͷఆ͕ٛ૿͑Δ – ϦΫΤετύϥϝʔλอ࣋༻ͷstruct • HogeRequestParams • FugaRequestParams –

    ίʔυ஋؅ཧ༻ͷconst • ܕ໊Λઌʹ͚ͭͯճආ – ABSuccess – XYSuccess – ڞ௨Խ΋Ͱ͖ͳ͍… • ύοέʔδΛࡉ͔͘͢Δ͔͠ͳ͍ʁ
  9. ςετؔ࿈ • testifyΛ࢖ͬͯassertion͸؆୯ʹॻ͚ΔΑ͏ • go test – ./... Λ͚ͭͳ͍ͱμϝ •

    αϒύοέʔδͷςετ͕εϧʔ͞Ε͍ͯͨ – -race ΋͚ͭΔ • ඇಉظॲཧͰո͍͠ͱ͜Ζ͕ݕग़Ͱ͖Δ • ݁Ռ͕Θ͔Γʹ͍͘ͷͰͲ͏ʹ͔͍ͨ͠
  10. ։ൃޮ཰΋ѱ͘ͳ͍ • Railsͱൺֱͯ͠ – ίʔυΛॻ͘ྔ͸૿͑ͨͱࢥ͏ – มͳϋϚΓํ͠ͳ͍ – ͙͢ʹಈ͘Ϟϊ͸Ͱ͖ͳ͍ •

    ؀ڥ੔උʹ͕͔͔࣌ؒͬͨ – ࠷ॳͳͷͰ࢓ํͳ͍ – ͔࣍Β͸୹ॖͰ͖Δ࣌ؒ • ࠓ·Ͱͱൺ΂ͯḮ৭ͳ͍ޮ཰ͰਐΜͰ͍Δ – ࠷ॳͷํ͸௿໎͚ͯͨ͠Ͳ৐Γ੾ͬͨ