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
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
Search
Kentaro Kawano
January 25, 2016
Programming
0
24
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
Goを初めて採用したプロジェクトでの、チーム開発、コード管理での悩み、試行錯誤についてまとめました。
Kentaro Kawano
January 25, 2016
Tweet
Share
More Decks by Kentaro Kawano
See All by Kentaro Kawano
Goでのレシーバーとnilの関係 / Receiver and nil relationship in Go
kawaken
0
330
Starting Python
kawaken
0
27
Goの時刻に関するテスト/Testing time in Go
kawaken
0
23
AWS Lambda + Go
kawaken
0
22
goaのdesignをラクに書く/Write goa design easily
kawaken
0
21
Pyvmomiとansibleのdynamic inventory
kawaken
0
27
Other Decks in Programming
See All in Programming
入社1ヶ月でここまでやった!Findy Toolsインフラ支援の最適化
rvirus0817
6
1.4k
はしめてのプログラミングとロボット制御
watawatavoltage
0
290
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.9k
DMMプラットフォームにおけるTiDBの導入から運用まで
pospome
7
3k
Terraformテスト入門
msato
0
540
CSC307 Lecture 05
javiergs
PRO
0
210
CSC307 Lecture 13
javiergs
PRO
0
150
社内 LT 会を発足し、アウトプット文化を醸成させるために考えたこと・やったこと / Starting internal LT meetings and fostering an output culture
mackey0225
3
120
わかりやすい正解を捨てて、コトに向き合う - スクラムフェス金沢2024 スポンサーセッション
yusukekokubo
0
170
feature環境をGitHub ActionsとCloudFormationでいい感じに管理する
nealle
2
310
Temporalを取り巻く仕様を整理する
sajikix
0
120
ドメイン駆動設計の実践
masuda220
PRO
19
5.2k
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
Testing 201, or: Great Expectations
jmmastey
33
6.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
149
45k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
19k
In The Pink: A Labor of Love
frogandcode
139
22k
Statistics for Hackers
jakevdp
792
220k
Into the Great Unknown - MozCon
thekraken
20
1.3k
Learning to Love Humans: Emotional Interface Design
aarron
269
39k
Designing with Data
zakiwarfel
96
5k
Music & Morning Musume
bryan
43
5.9k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Principles of Awesome APIs and How to Build Them.
keavy
124
16k
Transcript
GoͰͷνʔϜ։ൃͱ ίʔυཧͷΈ ୈ2ճ ؔgolangษڧձ Kentaro Kawano
About Me • Kentaro Kawano/@kawaken • γφδʔϚʔέςΟϯά, TechScore • Go,
Python, Rails, swift
Goྺ • ݸਓ – 1.2͔Β͞ΘΓॳΊͨ – CLIπʔϧͳͲͷ࡞͕த৺ – WebΞϓϦ࡞ͬͯͳ͔ͬͨ •
ࣄ – σʔλ࡞ɺνϟοτ༻πʔϧͳͲ – 9݄͔Βຊ֨తʹϓϩδΣΫτʹಋೖ
νʔϜ։ൃͷΈ
GoͷϨϕϧ্͛ • ֶश͕ඞਢ – ৮ͬͯΔਓগͳ͍ – Go Quiz Έ͍ͨͳڭࡐΛ΄΅Ͱఏڙ •
࡞Δͷ͠ΜͲ͔ͬͨ – ि1ճ30ͷ؆୯ͳษڧձ – ॻ੶
ใऩू • Blog, GoCon, Advent Calendar ͳͲ • ଞࣾࣄྫ͋Γ͕͍ͨ –
ࢀߟʹͳΔ͠ʮGo૿͑ͯΔײʯେࣄ
։ൃڥߏங • ϝϯόʔͷڥ – جຊ͓ͤ • ҎલVirtualBoxͷΠϝʔδΛ – Α͘͏πʔϧͷΠϯετʔϧεΫϦϓτΛ࡞
• golang.org/x/tools/cmd/ʙ • golint,gocode ͳͲίʔυؔ࿈ͷπʔϧ • gom,fresh,gooseͳͲͷϓϩδΣΫτͰ͏πʔϧ
CI/CDڥ • ৽͘͠ߏங – طଘڥͷྲྀ༻Ͱ্ख͍͔͘ͳ͍͜ͱ • ίʔυԽΛࢦ͢ʢʙ as a Codeʣ
– drone.io(Docker),Ansible,TerraformͳͲ • ੩తϑΝΠϧͷѻ͍͕ఆ·ͬͯͳ͍ – go-bindata? • ϗοτσϓϩΠ͕ະݕূ – ಈ࡞֬ೝͰ͖ͯͳ͍
ϨϏϡʔ • gofmt,golintͳͲπʔϧͰࠣͳ෦ճආ – CIͰνΣοΫͰ͖Δ • εΩϧ͕ίʔυʹݱΕ͍͢ؾ͕͢Δ – εΩϧࠩͰͲ͏ͯ͠ѱ͍ํཱ͕ͭ •
جຊతͳ෦ͷهड़͕૿͑Δ͔Βʁ – ڭҭେࣄͰ͢ͶɺΈ͍ͨͳҙࣝͷߴ·Γ • Go Β͍͠ίʔυͱԿ͔ʁ – ·ͩΑ͘Θ͔Βͳ͍ – มͳίʔυʹͳΓʹ͍͘
ίʔυཧͷΈ
ϥΠϒϥϦͷબ • ރΕͯΔɺϝϯς͞Εͯͳ͍ͷஅ͕͠ ͍ • ୯७ͳϕϯνϚʔΫ͚ͩͰΘ͔Βͳ͍ – MiddlewareɺηΩϡϦςΟରࡦɺηογϣϯ ཧͳͲ •
໎ͬͨΒඪ४ʹدͤΔʢϜϦʹ࠾༻͠ͳ ͍ʣ
Gin • Gin࠷ʂΈ͍ͨͳهࣄ͋Δ • ࠾༻ࣄྫݟ͔͚Δ • ϝϯς͞Ε͍ͯΔͷʁΈ͍ͨͳIssue͋ͬͨ • contribͷϓϧϦΫ͕์ஔ͞Ε͍ͯͨΓ… •
͍ͬͯΔਓଟͦ͏͚ͩͲɺຊʹେৎ ͔ʁ – ࠷ѱࣗͨͪͰϝϯς͢Δͱ͍͏֮ޛͰ࠾༻
ύοέʔδߏ • SCMʹGitLabΛ༻ – αϒύοέʔδͷ go get ͕Ͱ͖ͳ͍ • ݸผͷϦϙδτϦΛ࡞ͬͯରԠ
• ্࣮ͷෆ߹ͳ͍ • CIͷઃఆͳͲ͕खؒ
Gom • master ʹ͕͋ΔͱɺϒϥϯνͷΓସ ͕͑Ͱ͖ͳ͍ – gin-gonic/contrib/sessions – aws/aws-sdk-go •
࠷ۙɺҰ࣌తʹmaster͕ϏϧυΤϥʔʹ • Ұ࣌తʹforkͯ͠मਖ਼ • मਖ਼ΛϓϧϦΫ͍͕ͨ͠ख͔ͭͣ…
σʔλϕʔεؔ࿈ • database/sqlͱlib/pqͰؤுͬͯΔ • drone/sqlgenΛͬͯΈͨ – JSONܕͰ͍ํ͕߹Θͳ͔ͬͨ • Ϟσϧؔ࿈ͷίʔυδΣωϨʔλΛࣗ࡞ –
ERਤ͔ΒϞσϧ࡞ • ݕࡧػೳͳͲͰSQLͷΈཱͯʹۤ࿑ – ΫΤϦϏϧμ࠾༻ͯ͠ྑ͔͔ͬͨ…
໊લ͚ • ͰࣅͨΑ͏ͳ໊લͷఆ͕ٛ૿͑Δ – ϦΫΤετύϥϝʔλอ࣋༻ͷstruct • HogeRequestParams • FugaRequestParams –
ίʔυཧ༻ͷconst • ܕ໊Λઌʹ͚ͭͯճආ – ABSuccess – XYSuccess – ڞ௨ԽͰ͖ͳ͍… • ύοέʔδΛࡉ͔͘͢Δ͔͠ͳ͍ʁ
ςετؔ࿈ • testifyΛͬͯassertion؆୯ʹॻ͚ΔΑ͏ • go test – ./... Λ͚ͭͳ͍ͱμϝ •
αϒύοέʔδͷςετ͕εϧʔ͞Ε͍ͯͨ – -race ͚ͭΔ • ඇಉظॲཧͰո͍͠ͱ͜Ζ͕ݕग़Ͱ͖Δ • ݁Ռ͕Θ͔Γʹ͍͘ͷͰͲ͏ʹ͔͍ͨ͠
GOͷײ
ֶशίετߴ͘ͳ͍ • ߴ͘ͳ͍ͱݟࠐΜͰ͚ͨͲɺ࣮ࡍߴ͘ͳ͍ • ֮͑Δ͜ͱ͕ଟ͘ͳ͍ • goroutineपΓͰͪΐͬͱϋϚͬͨఔ – ͍ํͷ –
syncύοέʔδͰղܾͰ͖Δͱࢥ͏ • มͳ҉͕ͳ͍
։ൃޮѱ͘ͳ͍ • Railsͱൺֱͯ͠ – ίʔυΛॻ͘ྔ૿͑ͨͱࢥ͏ – มͳϋϚΓํ͠ͳ͍ – ͙͢ʹಈ͘ϞϊͰ͖ͳ͍ •
ڥඋʹ͕͔͔࣌ؒͬͨ – ࠷ॳͳͷͰํͳ͍ – ͔࣍ΒॖͰ͖Δ࣌ؒ • ࠓ·ͰͱൺͯḮ৭ͳ͍ޮͰਐΜͰ͍Δ – ࠷ॳͷํ໎͚ͯͨ͠ͲΓͬͨ
ӡ༻͜Ε͔Β • ࣮ࡍͬͯΈͳ͍ͱΘ͔Βͳ͍ • ίετݮʹͭͳ͕ͬͨΒͱ͍͏ظ – AWSͷΠϯελϯεΛখ͍͞Ϟϊʹม͑Δͱ͔ – ࠓޙͷόʔδϣϯΞοϓରԠͷෛՙ
͓ΘΓ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠