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
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.5k
Other Decks in Technology
See All in Technology
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
200
いま注目のAIエージェントを作ってみよう
supermarimobros
0
360
roppongirb_20250911
igaiga
1
250
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
260
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
260
AI時代を生き抜くエンジニアキャリアの築き方 (AI-Native 時代、エンジニアという道は 「最大の挑戦の場」となる) / Building an Engineering Career to Thrive in the Age of AI (In the AI-Native Era, the Path of Engineering Becomes the Ultimate Arena of Challenge)
jeongjaesoon
0
260
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
570
Rustから学ぶ 非同期処理の仕組み
skanehira
1
150
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
1
970
まずはマネコンでちゃちゃっと作ってから、それをCDKにしてみよか。
yamada_r
2
120
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
350
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Speed Design
sergeychernyshev
32
1.1k
Designing for Performance
lara
610
69k
How to train your dragon (web standard)
notwaldorf
96
6.2k
We Have a Design System, Now What?
morganepeng
53
7.8k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
It's Worth the Effort
3n
187
28k
Practical Orchestrator
shlominoach
190
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Embracing the Ebb and Flow
colly
87
4.8k
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/