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 ma...
Search
Kentaro Kawano
January 25, 2016
Programming
0
47
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
400
Starting Python
kawaken
0
46
Goの時刻に関するテスト/Testing time in Go
kawaken
0
53
AWS Lambda + Go
kawaken
0
45
goaのdesignをラクに書く/Write goa design easily
kawaken
0
43
Pyvmomiとansibleのdynamic inventory
kawaken
0
55
Other Decks in Programming
See All in Programming
rails newと同時に型を書く
aki19035vc
6
750
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
300
Spring gRPC について / About Spring gRPC
mackey0225
0
180
WebDriver BiDiとは何なのか
yotahada3
1
100
Immutable ActiveRecord
megane42
0
120
Amazon Bedrock Multi Agentsを試してきた
tm2
1
240
Scaling your build logic
antalmonori
1
150
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
28
6.1k
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
500
ゼロからの、レトロゲームエンジンの作り方
tokujiros
3
1.2k
振り返れば奴(Cline)がいる
keiyagi
0
130
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Building an army of robots
kneath
302
45k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How to Ace a Technical Interview
jacobian
276
23k
It's Worth the Effort
3n
184
28k
GitHub's CSS Performance
jonrohan
1030
460k
How GitHub (no longer) Works
holman
312
140k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
990
A better future with KSS
kneath
238
17k
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ͷΠϯελϯεΛখ͍͞Ϟϊʹม͑Δͱ͔ – ࠓޙͷόʔδϣϯΞοϓରԠͷෛՙ
͓ΘΓ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠