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
520
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
630
Other Decks in Programming
See All in Programming
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
3.3k
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
210
Laravel Boost 超入門
fire_arlo
3
220
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
230
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
110
The Past, Present, and Future of Enterprise Java with ASF in the Middle
ivargrimstad
0
160
速いWebフレームワークを作る
yusukebe
5
1.7k
複雑なドメインに挑む.pdf
yukisakai1225
5
1.2k
デザイナーが Androidエンジニアに 挑戦してみた
874wokiite
0
550
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
710
rage against annotate_predecessor
junk0612
0
170
Featured
See All Featured
Six Lessons from altMBA
skipperchong
28
4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Navigating Team Friction
lara
189
15k
Building an army of robots
kneath
306
46k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Become a Pro
speakerdeck
PRO
29
5.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Balancing Empowerment & Direction
lara
3
620
What's in a price? How to price your products and services
michaelherold
246
12k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
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!