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でのチーム開発に途中参画した私が納得して実装を進めるためにやったこと ~ 命名編 ~
Search
m_t_tion1
June 09, 2024
Programming
0
440
Goでのチーム開発に途中参画した私が納得して実装を進めるためにやったこと ~ 命名編 ~
オンボーディング時に抱いた疑問から、Goの思想を再度振り返った上でチーム内で改めてコーディングルールのすり合わせを行った結果の一例の紹介です。
m_t_tion1
June 09, 2024
Tweet
Share
More Decks by m_t_tion1
See All by m_t_tion1
初めてOSSを作って公開した話
kaorumuta
0
570
Other Decks in Programming
See All in Programming
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
230
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
950
「個人開発マネタイズ大全」が教えてくれたこと
bani24884
1
270
Amazon Bedrockマルチエージェントコラボレーションを諦めてLangGraphに入門してみた
akihisaikeda
1
150
データの整合性を保つ非同期処理アーキテクチャパターン / Async Architecture Patterns
mokuo
55
19k
AIプログラミング雑キャッチアップ
yuheinakasaka
19
4.9k
Honoとフロントエンドの 型安全性について
yodaka
7
1.5k
生成AIで加速するテスト実装 - ロリポップ for Gamersの事例と 生成AIエディタの活用
kinosuke01
0
130
Unity Android XR入門
sakutama_11
0
180
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
140
ソフトウェアエンジニアの成長
masuda220
PRO
12
2.1k
Swift Testingのモチベを上げたい
stoticdev
2
140
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
GitHub's CSS Performance
jonrohan
1030
460k
The Cult of Friendly URLs
andyhume
78
6.2k
It's Worth the Effort
3n
184
28k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Raft: Consensus for Rubyists
vanstee
137
6.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Transcript
GoͰͷνʔϜ։ൃʹ్தࢀըͨ͠ࢲ͕ ೲಘ࣮ͯ͠ΛਐΊΔͨΊʹͬͨ͜ͱ ~ ໋໊ฤ ~ 2024/06/07@(Unofficial) Go Conference 2024 Pre
Party
ࣗݾհ 2 Kaoru Muta ໂా ܆ (ϝϯτε) ੜ·ΕҭͪେࡕͰࠓେࡕʹ͍·͢ 20242݄ʹגࣜձࣾBuySell Technologies
join. ങऔج൫/๚ങऔʹಛԽͨ͠αʔϏεͷ৽ن։ൃʹैࣄ ങऔɾࠪఆ ങऔछผʹԠͨ͡࠷దͳγεςϜߏங Visit -๚ങऔ- Store -ళฮങऔ- ങऔ ϦϢʔεϓϥοτϑΥʔϜCosmos ࣗࣾ։ൃͷϦϢʔεಛԽۀجװγεςϜͰ͋ΓαʔϏε܈ͷू߹ମ @m_t_tion1
ຊൃදͷཁͱϞνϕʔγϣϯ 3 ʮڷ (=Go)ʹೖΒڷʹै͑ʯΛνʔϜͰୡ͢ΔͨΊʹ ίʔσΟϯάʹؔ͢Δҙࢥ౷ҰΛνʔϜͰߦͬͨΒɺ ίʔυʹҰ؏ੑ͕ग़ͨ & ϨϏϡʔίετͱΈϙΠϯτ͕গͳ͘ ͳͬͨ ཁ
Ϟνϕ ҎԼͷΛօʹฉ͍ͯΧδϡΞϧʹσΟεΧογϣϯ͍ͨ͠ • ൃදͰऔΓ্͛Δࣄʹࣅͨૺ۰ͨ͜͠ͱ͕͋Δ͔ ◦ ૺ۰ͨ͠߹ɺͲ͏ରॲ͔ͨ͠ ◦ ͠ͳ͔ͬͨ߹ɺެࣜͷϧʔϧʹै͏ͷΈͰ ेͩͬͨͷ͔
ΦϯϘʔσΟϯά࣌ͷܦݧ 4 • ࠓ·ͰJavaϝΠϯͰॻ͍͍ͯͨΤϯδχΞ • GoͰ࡞͍ͬͯΔ0 → 1ͷ৽ن։ൃͷ్தͰJOIN • طଘίʔυΛ֬ೝ͠ΩϟονΞοϓ
ঢ়گ ײ • Goදݱੑ͕͘ɺॻ͖ํͷΒ͖ͭগͳ͍ͣ (গͳ͘ͱJavaΑΓ) ͔͠͠ɺҎԼͷͰΒ͖͕ͭɾɾ ◦ ม໊ͷলུͷํ ◦ ϙΠϯλͷ͍ॴ...etc ίʔυϨϏϡʔͷίετ૿Ճ, ॻ͖ํʹ໎͍͕ੜ͡ΔՄೳੑ
ΦϯϘʔσΟϯά࣌ͷܦݧ 5 • ࠓ·ͰJavaϝΠϯͰॻ͍͍ͯͨΤϯδχΞ • GoͰ࡞͍ͬͯΔ0 → 1ͷ৽ن։ൃͷ్தͰJOIN • طଘίʔυΛ֬ೝ͠ΩϟονΞοϓ
ঢ়گ ײ • Goදݱੑ͕͘ɺॻ͖ํͷΒ͖ͭগͳ͍ͣ (গͳ͘ͱJavaΑΓ) ͔͠͠ɺҎԼͷͰΒ͖͕ͭɾɾ ◦ ม໊ͷলུͷํ ◦ ϙΠϯλͷ͍ॴ...etc ίʔυϨϏϡʔͷίετ૿Ճ, ॻ͖ํʹ໎͍͕ੜ͡ΔՄೳੑ ຊൃදͷτϐοΫ
6 Έͳ͞Μಉ͡Α͏ͳײΛ ࣋ͬͨ͜ͱ͋Γ·͔͢ʁ
7 ࣌ͷࢲͷ߹
8 GoͷࢥΛΔͨΊʹ Ұ୴ެࣜdocͱؔ࿈ࢿྉΛړΖ͏
9 Effective GoͱGo styleguideͰͷߟ͑ํ ~ʮաෆͳ͍ʯ໋໊ʹ͍ͭͯ ~
Effective Go - #names • ͳ໋໊ආ͚Δ͖ 10 ref: https://go.dev/doc/effective_go#names Good
:+1: Bad :-1:
Go styleguide - #variable-names • ʮաෆͳ͍ʯ (= Clarity / Concision)
໋໊Λ͖͢ ◦ ม͕ࢀর͞ΕΔൣғ (= Scope)ʹԠͯ͡ҟͳΔ ◦ লུ͍ͯ͠είʔϓͰมͷׂ͕ࣗ໌ͳΒOK ◦ লུͨ͠มΛ͍είʔϓͰ͍ճ͢ͱՄಡੑ͕མͪΔͨΊNG 11 *ߦݫ֨ͳͷͰͳ͘ɺGo styleguideهࡌͷࢀߟͰհ͞Ε͍ͯΔࣈ ref: https://google.github.io/styleguide/go/decisions#variable-names ͍είʔϓͷྫ (*1~7ߦ) ͍είʔϓͷྫ (*25ߦ~)
ݸਓͷݟղ • େલఏͱͯ͠GoެࣜͰఏএ͍ͯ͠Δࢥʹै͏ • ݸਓ͓ΑͼνʔϜͰʮաෆͳ໋໊͍ʯͱΛࡲΓ߹Θͤͨํ͕ ࣮ऀɾϨϏϡϫʔͱʹͤʹͳΕΔͷͰʁ ◦ ͍είʔϓ ▪ Ұ࣌తͳม
▪ ؔͷ໊લฦΓ͔ΒΒ͏͕ࣗ໌ͳ߹ ◦ ͍είʔϓ ▪ ೝෛՙ্͕͕Γͦ͏ͳ߹লུ͠ͳ͍ ▪ (ͦͦ͗͢Δείʔϓϝιουͱͯ͠ͷׂΛ ݕ౼͢Δ߹͋Δ) 12
13 νʔϜͰࡲΓ߹ΘͤΔ
νʔϜͰͷ߹ҙܗ • ฐνʔϜͰͷʮաෆͳ͍ʯͬͯʁ ◦ جຊলུ͠ͳ͍ํͰɺܕείʔϓ͔Βࣗ໌ͩͱஅͨ͠Βলུ͢Δ ◦ Defined Type͏߹มͷׂ͕ࣗ໌Ͱ͋ΔͨΊলུͯ͠Α͍ (ল໊ུͨ͠લҰ؏ͯ͠͏͜ͱ) ▪
ex. salesContractID → scID bailmentReceiptID → brID ◦ ҆ͱͯ͠লུ࠷େ2୯ޠ·Ͱ ex. salesContractDocumentDetail → scdd ͱ͔ආ͚͍ͨ 14
ӡ༻ޙͷνʔϜ֎͔ΒͷϑΟʔυόοΫ 15 • νʔϜͰվΊͯGoͷࢥΛ৮ΕֶͯͿ͜ͱ͕Ͱ͖ͨ • ίʔυʹҰ؏ੑ͕ग़࣮ͯΛ͢Δ্Ͱ໎͍͕ͳ͘ͳͬͨ • (͜͜ݸਓͷײͰ͕͢) ίʔυϨϏϡʔͰGoͷࢥʹؔ࿈ ͢Δ໋໊ʹؔͯ͠ࢦఠ͢Δ͜ͱݮͬͨ
Good More • ৽نࢀೖऀ͕͖ͨ࣌ʹಉ༷ͷ͕ٞੜ·ΕΔՄೳੑ͕͋Δ ͦͷͨΊఆظతʹݟ͢͜ͱ͕ඞཁ͔ ◦ ຖม͑Δͷӡ༻ίετ͕ߴͦ͏ ◦ Goͷࢥʹै͏ͷม͑ͳ͍͍ͯ͘ ◦ ʮաෆͳ͍ʯΛೝෛՙɾՄಡੑͷ؍Ͱ ఆظతʹ͢ͷΑͦ͞͏
ຊൃදͷཁͱϞνϕʔγϣϯ 16 ʮڷ (=Go)ʹೖΒڷʹै͑ʯΛνʔϜͰୡ͢ΔͨΊʹ ίʔσΟϯάʹؔ͢Δҙࢥ౷ҰΛνʔϜͰߦͬͨΒɺ ίʔυʹҰ؏ੑ͕ग़ͨ & ϨϏϡʔίετͱΈϙΠϯτ͕গͳ͘ ͳͬͨ ཁ
Ϟνϕ ҎԼͷΛօʹฉ͍ͯΧδϡΞϧʹσΟεΧογϣϯ͍ͨ͠ • ൃදͰऔΓ্͛Δࣄʹࣅͨૺ۰ͨ͜͠ͱ͕͋Δ͔ ◦ ૺ۰ͨ͠߹ɺͲ͏ରॲ͔ͨ͠ ◦ ͠ͳ͔ͬͨ߹ɺެࣜͷϧʔϧʹै͏ͷΈͰ ेͩͬͨͷ͔
17 Έͳ͞ΜͲ͏ͯ͠·͔͢ʁ
Thank You!