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
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
弊社でのGoの取り組み〜どう広げたか、その後の人員戦略〜
これだけは伝えたい!Goのすごさとその将来性
https://increments.connpass.com/event/250648/
bikunbikun
February 16, 2023
More Decks by bikunbikun
See All by bikunbikun
技術書典6に参加してきた話
bikunbikun
0
1.4k
小さく始めるRedmine 第15回redmine.tokyo勉強会LT資料
bikunbikun
2
2.7k
Other Decks in Technology
See All in Technology
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
390
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
270
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
160
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
120
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
260
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
210
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
160
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
190
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
1.2k
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
130
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
110
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.2k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Abbi's Birthday
coloredviolet
3
9.8k
Designing for Performance
lara
611
70k
A Tale of Four Properties
chriscoyier
163
24k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Curse of the Amulet
leimatthew05
2
14k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
480
Bash Introduction
62gerente
615
220k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
200
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/