$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
弊社でのGoの取り組み〜どう広げたか、その後の人員戦略〜
Search
bikunbikun
February 16, 2023
Technology
0
120
弊社でのGoの取り組み〜どう広げたか、その後の人員戦略〜
これだけは伝えたい!Goのすごさとその将来性
https://increments.connpass.com/event/250648/
bikunbikun
February 16, 2023
Tweet
Share
More Decks by bikunbikun
See All by bikunbikun
技術書典6に参加してきた話
bikunbikun
0
1.3k
小さく始めるRedmine 第15回redmine.tokyo勉強会LT資料
bikunbikun
2
2.6k
Other Decks in Technology
See All in Technology
2025 DORA Reportから読み解く!AIが映し出す、成果を出し続ける組織の共通点 #開発生産性_findy
takabow
2
1k
生成AIシステムとAIエージェントに関する性能や安全性の評価
shibuiwilliam
2
310
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
16k
あなたの知らないDateのひみつ / The Secret of "Date" You Haven't known #tqrk16
expajp
0
110
Data Hubグループ 紹介資料
sansan33
PRO
0
2.3k
"なるべくスケジューリングしない" を実現する "PreferNoSchedule" taint
superbrothers
0
130
ブラウザ拡張のセキュリティの話 / Browser Extension Security
flatt_security
0
250
Active Directory 勉強会 第 6 回目 Active Directory セキュリティについて学ぶ回
eurekaberry
16
5.8k
ページの可視領域を算出する方法について整理する
yamatai1212
0
150
Agents IA : la nouvelle frontière des LLMs (Tech.Rocks Summit 2025)
glaforge
0
330
Kill the Vibe?Architecture in the age of AI
stoth
1
160
TROCCO 2025年の進化をデモで振り返る
__allllllllez__
0
320
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
The Pragmatic Product Professional
lauravandoore
37
7k
The Cult of Friendly URLs
andyhume
79
6.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Site-Speed That Sticks
csswizardry
13
980
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
GraphQLとの向き合い方2022年版
quramy
49
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Transcript
ฐࣾͰͷGOͷऔΓΈ ~Ͳ͏͔͛ͨɺͦͷޙͷਓһઓུ~
ࣗݾհ ➤ Qiitaɿ@bikun_bikun ➤ Twitterɿ@bikun_bikun ➤ ࢯ໊ɿੴ େ༞ ➤ ॴଐɿσΟοϓגࣜձࣾʢ20185݄JOINʣ
➤ Goྺɿ ɹɹݱ৬ʹೖ͔ͬͯΒ৮Γ࢝ΊΔɻ ɹɹΨοπϦΰϦΰϦ͍ͬͯΔΘ͚Ͱͳ͍͕ɺGoͰ࡞ΒΕͨ ϓϩμΫτͷνʔϜϏϧυϦʔυΛߦ͍ͬͯΔɻ 2
ΞδΣϯμ ➤ ฐࣾͷGoͷ͕Γ ➤ ਓһઓུ ➤ Goͷັྗ
ฐࣾͷGOͷ͕Γ ➤ ࢝·Γ2018ͷgolang.tokyo#14ͷεϥΠυ ➤ ͦͷޙɻɻɻ
ฐࣾͷGOͷ͕Γʢ࣌ͷৼΓฦΓʣ ➤ ՝.1 ΈΜͳॳ৺ऀ ΈΜͳॳ৺ऀͳͷͰҰา͍ͣͭͬͯ͜͏ ➤ ՝.2 “ਖ਼͍͠”ॻ͖ํ͕Θ͔Βͳ͍
ΈΜͳͰίʔυϨϏϡʔͯ͠ϨϕϧײΛ߹͍ͤͯ͘ɺςετΛॻ͍ͯΑΓྑ͍ํ๏͕ݟ͔ͭͬͨΒϦϑΝΫλ ➤ ՝.3 “ϦϦʔεͯ͠ऴΘΓ”͡Όͳ͍ ੍͕͋ΔதɺCI/CDΛΜͰղܾ ➤ ՝.4 ϦϦʔε࣌ʹόΠφϦ࠶ىಈ͕ඞཁ ΦϯϓϨڥͩͬͨͨΊɺ1ͣͭLB outͯ͠ରԠ ࣌࣌ͰͦΕͧΕͷղܾࡦΛݟग़ͯ͠ղܾ͍ͯͨ͠ɻ
ฐࣾͷGOͷ͕Γ εϚʔτϑΥϯΞϓϦͷೝূػೳαʔϏεΛ GoͰ࣮ ৽نϓϩμΫτͷίΞ෦ʹGoΛ࠾༻ ※͍ͭʹίΞγεςϜͰGo͕࠾༻ 🎉 2018Լ० αϒγεςϜपΓͰGoΛར༻͢Δಈ͖͕׆ൃԽ 2019 2021
ฐࣾͷGOͷ͕Γʢ࣌ͷ՝Ͳ͏ͳͬͨʁʣ ➤ ՝.1 ΈΜͳॳ৺ऀ ➤ ΈΜͳॳ৺ऀ͠ΐ͏͕ͳ͍ɺOSSͷίʔυΛಡΜͰΈͨΓษڧձʹࢀՃͨ͠Γ Ͱݟ͕ཷ·͖ͬͯͨɻ ➤ ͝ԑ͕͋ΓɺGoʹ໌Δ͍ํ͕ࢀը͍͚ͯͨͩ͠ɺ͔ͦ͜ΒߋʹνʔϜʹφϨοδ ͕ཷ·ͬͨɻ
➤ ࣗͨͪͰͭ·͖ͮͦ͏ͳ෦Λൈ͖ग़ͨ͠νϡʔτϦΞϧΛ࡞Γ৽نJOINऀʹ ղ͍ͯΒ͏Α͏ͳମ੍ʹ͠ɺιϑτϥϯσΟϯάͨ͘͢͠͠ɻ
ฐࣾͷGOͷ͕Γʢ࣌ͷ՝Ͳ͏ͳͬͨʁʣ ➤ ՝.2 “ਖ਼͍͠”ॻ͖ํ͕Θ͔Βͳ͍ ➤ OSSͷίʔυΛಡΜͩΓͯ͠ϒϥογϡΞοϓ ➤ ߦ͖ண͍ͨઌʮਖ਼ਖ਼ղͳ͍Μ͡Όͳ͍͔ʁʯͱ͍͏͜ͱɻ Ͱ͋Εɺྑ͍ͱ͜ΖΛऔΓೖΕͳ͕ΒࣗͨͪͷελΠϧΛ࡞͍ͬͯ͜͏
➤ ͱ͍͑1͔Βਏ͍ɺσΟϨΫτϦߏͳͲ ʮgolang-standards/project-layoutʯʹدͤΔͳͲͰରԠɻ
ฐࣾͷGOͷ͕Γʢ࣌ͷ՝Ͳ͏ͳͬͨʁʣ ➤ ՝.3 “ϦϦʔεͯ͠ऴΘΓ”͡Όͳ͍ ➤ 2019ࠒ͔Βӡ༻͕Ͱ͖ΔνʔϜΛϏϧυ͍ͯ͘͠ϑΣʔζʹೖ͖ͬͯͨɻ ➤ CI/CDʹ͍ͭͯΦϯϓϨத৺͔ΒPublicCloudʢAWSʣத৺ʹͳ͖ͬͯͨͨΊ Jenkinsdrone.io͔ΒCodeBuild, CodePipeline,
CodeDeployͳͲͰࣗಈԽՃ ➤ ՝.4 ϦϦʔε࣌ʹόΠφϦ࠶ىಈ͕ඞཁ ➤ ίϯςφϕʔεͷΈΛར༻͢Δ͜ͱͰ՝ͱͯ͠ͳ͘ͳ͖ͬͯͨɻ
ฐࣾͷGOͷ͕ΓΛৼΓฦͬͯ ➤ όονAPIαʔόɺൺֱతೖΕ͍͢αϒγεςϜͳͲʹϑΥʔΧεͯ͠ಋೖ͠ ͨ͜ͱ͕͡Θ͡Θͱ͕͍ͬͯͬͨͱײ͡·͢ɻ ➤ PublicCloudʢAWSʣͷҠߦͰΑΓGoͱͷੑ͕૿͖ͯͨ͠ɻ ➤ Goͷܕͷߗ͕͞ฐࣾͷγεςϜͷٲʹͳͬͨ͜ͱɾɾɾ ➤ ϑΝδʔͳσʔλ͕͍͔͕ͭ͋ͬͨ͘ൃݟ͕ΕɺϦϦʔεલʹͯΜΘΜ
➤ Json parserͷࣗ࡞ͳͲͰରԠɻ ➤ ࠓޙGoͷར༻૿͍͑ͯ͘ͱࢥ͍·͢ɻ
ΞδΣϯμ ➤ ฐࣾͷGoͷ͕Γ ➤ ਓһઓུ ➤ Goͷັྗ
ฐࣾͷਓһઓུ ➤ Goͷ࠾༻͕͕Δʹ࿈Εɺطଘͷϝϯόʔ͚ͩͰ৽ن։ൃͱӡ༻Ͱख͕ճΒͳ͘ ͳ͖ͬͯͨɻ ➤ ਓ͕ΒͣͲ͏ͨ͠ͷ͔ɾɾɾͱ͍͏ঢ়گ
ฐࣾͷਓһઓུ Ҋ1. ࣾͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ ➤ ଞͷνʔϜଞͷνʔϜͰΔ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰͳ͍
ฐࣾͷਓһઓུ Ҋ1. ࣾͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ ➤ ଞͷνʔϜଞͷνʔϜͰΔ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰͳ͍ ٫Լ
ฐࣾͷਓһઓུ Ҋ1. ࣾͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ ➤ ଞͷνʔϜଞͷνʔϜͰΔ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰͳ͍ Ҋ2. ৽نͰਓΛ૿͢ ➤ ਖ਼߈๏ ➤
͜ΕͰؤு͍ͬͯ͘ํʹ͍͕ͨ͠͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ ٫Լ
ฐࣾͷਓһઓུ Ҋ1. ࣾͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ ➤ ଞͷνʔϜଞͷνʔϜͰΔ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰͳ͍ Ҋ2. ৽نͰਓΛ૿͢ ➤ ਖ਼߈๏ ➤
͜ΕͰؤு͍ͬͯ͘ํʹ͍͕ͨ͠͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ ٫Լ ࠾༻ʂʂ
ฐࣾͷਓһઓུ Ҋ1. ࣾͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ ➤ ଞͷνʔϜଞͷνʔϜͰΔ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰͳ͍ Ҋ2. ৽نͰਓΛ૿͢ ➤ ਖ਼߈๏ ➤
͜ΕͰؤு͍ͬͯ͘ํʹ͍͕ͨ͠͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ ٫Լ ࠾༻ʂʂ Ҋ3. ύʔτφʔ͞ΜʹཔΔ ➤ ͱ͍͑Go͕Ͱ͖Δਓࣗମ͕গͳ͍ɻ ➤ ҰॹʹGoΓ͍ͨΑʂֶͼ͍ͨΑʂͱ͍͏ํʹདྷ͍͖ͯͨͩɺҰॹʹߴ·Δɻ
ฐࣾͷਓһઓུ Ҋ1. ࣾͷଞͷνʔϜ͔Β࣋ͬͯ͘Δ ➤ ଞͷνʔϜଞͷνʔϜͰΔ͜ͱ͕ͨ͘͞Μ͋Γɺݱ࣮తͰͳ͍ Ҋ2. ৽نͰਓΛ૿͢ ➤ ਖ਼߈๏ ➤
͜ΕͰؤு͍ͬͯ͘ํʹ͍͕ͨ͠͏গ͠ૣ͘Ͳ͏ʹ͔͍ͨ͠ɻ ٫Լ ࠾༻ʂʂ Ҋ3. ύʔτφʔ͞ΜʹཔΔ ➤ ͱ͍͑Go͕Ͱ͖Δਓࣗମ͕গͳ͍ɻ ➤ ҰॹʹGoΓ͍ͨΑʂֶͼ͍ͨΑʂͱ͍͏ํʹདྷ͍͖ͯͨͩɺҰॹʹߴ·Δɻ ࠾༻ʂʂ
ฐࣾͷਓһઓུ ݁Ռ ➤ ࠾༻ΛڧԽͭͭ͠ύʔτφʔ͞ΜͰ͍͖͍ͬͯͨਓʹJOINͯ͠Βͬͨɻ ➤ ύʔτφʔ͞ΜͱҰॹʹνϡʔτϦΞϧΛ࡞ͬͨΓɺ ৽͍͜͠ͱʹऔΓΈͭͭࣾһͷJOIN૿͖͑ͯͨɻ ➤ νϡʔτϦΞϧ࡞ΓͰʮΈΜͳͰߴ·Δʯҙ͕ࣝ૿͑ɺྑ͍αΠΫϧʹͳͬͨɻ
➤ ΈΜͳॳ৺ऀͳ͕ΒɺݟΛͨΊɺΈΜͳͰߴ·ΔνʔϜ͕ॏཁ
ΞδΣϯμ ➤ ฐࣾͷGoͷ͕Γ ➤ ਓһઓུ ➤ Goͷັྗ
GOͷັྗ ඪ४Ͱ༻ҙ͞Ε͍ͯΔπʔϧ܈ ➤ FormatterɺςετɺύοέʔδཧͳͲ༷ʑͳͷ͕ඪ४Ͱ༻ҙ͞Ε͍ͯΔ ➤ gofmt, goimportsಛʹόϥόϥʹͳΓ͕ͪͳͷΛ౷Ұͯ͘͠ΕΔɻ γϯϓϧͳݴޠͰ͋Δʢnot Easyʣ ➤
৮Γ࢝ΊͰཧղ͘͢͠ॻ͖͍͢ɻ ➤ throw-catch͕ͳ͍ͷͰجຊ্͔ΒಡΜͰ͍͚Δɻ ➤ ྫ֎Ͱδϟϯϓ͢ΔͷͰͳ͘ΤϥʔॲཧΛߦ͏ɻ
GOͷັྗ ฒߦॲཧͷॻ͖͢͞ ➤ ෳࡶͳ͜ͱΛ͠Α͏ͱ͢Δͱ৭ʑߟ͑Δ͜ͱग़ͯ͘Δ͕ɺγϯϓϧͳฒߦॲཧͷॻ͖ ͕͋͢͞Δͱࢥ͍·͢ɻ ➤ ్தͰ͚ͩ͜͜ฒߦॲཧʹͦ͏Έ͍ͨͳ͜ͱ͕͍͢͠ɻ ϫϯόΠφϦ ➤ ϙʔλϒϧੑ͕ൈ܈ɻ
➤ Ϗϧυͷ͓͔͛ͰࣄલʹΘ͔Δόά͕༗Δɻ
GOͷັྗʢݴޠҎ֎ʣ GoϢʔβͷѪਂ͞ ➤ Tour of GoΛ࢝ΊɺνϡʔτϦΞϧͷຊޠࢿྉͷॆ࣮ ➤ Gopherಓͷօ༷ɺࢿྉެ։͋Γ͕ͱ͏͍͟͝·͢ɻ
࠷ޙʹ GoʹؔΘΔօ༷ײँͱɺ͜Ε͔ΒͷGoͷൃలΛظ͠·͢ɻ
࠷ޙʹʢ͓·͚ʣ ฐࣾʢσΟοϓגࣜձࣾʣͰϝϯόʔΛืूதͰ͢ɻ - GoͬͯΈ͍ͨʢߴ·Γ͍ͨʣ - ϓϩμΫτ։ൃ͍ͨ͠ ͓͍ͪͯ͠·͢ɻ https://dippeople.dip-net.jp/engineer-recruit/