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
GoConference_人生いろいろモノレポもいろいろ
Search
株式会社ビットキー / Bitkey Inc.
November 13, 2021
Technology
0
1.1k
GoConference_人生いろいろモノレポもいろいろ
株式会社ビットキー / Bitkey Inc.
November 13, 2021
Tweet
Share
More Decks by 株式会社ビットキー / Bitkey Inc.
See All by 株式会社ビットキー / Bitkey Inc.
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
1
13k
遠隔で同時に4人教育!? 〜リモート新人の「孤立」を防ぐオンボーディング事例〜/Educating 4 people at the same time remotely!〜Onboarding Case Studies to Prevent “Isolation” of Remote Newcomers〜
bitkey
0
47
ファームウェアは土管になるべきか 翻訳機になるべきか/Should firmware be a clay pipe or a translator?
bitkey
0
46
テストは合意形成をすべし!/Testing should be consensus building!
bitkey
0
62
Agentic Coding と 山登り と TypeScript〜体系的に考えてみよう!〜/Agentic Coding, Mountain Climbing and TypeScript~Let's think systematically!~
bitkey
0
250
"発信文化"をどうやって計測する?技術広報のKPI探索記/How do we measure communication culture?
bitkey
4
630
MCP でモノが動くとおもしろい/It is interesting when things move with MCP
bitkey
3
760
カオスに立ち向かう小規模チームの装備の選択〜フルスタックTSという装備の強み _ 弱み〜/Choosing equipment for a small team facing chaos ~ Strengths and weaknesses of full-stack TS~
bitkey
1
210
型化からはじめる時間づくり/Creating Time Starting with Modeling
bitkey
1
110
Other Decks in Technology
See All in Technology
「良さそう」と「とても良い」の間には 「良さそうだがホンマか」がたくさんある / 2025.07.01 LLM品質Night
smiyawaki0820
1
490
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.7k
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
6
4k
論文紹介:LLMDet (CVPR2025 Highlight)
tattaka
0
300
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
220
本が全く読めなかった過去の自分へ
genshun9
0
760
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
220
生まれ変わった AWS Security Hub (Preview) を紹介 #reInforce_osaka / reInforce New Security Hub
masahirokawahara
0
410
PO初心者が考えた ”POらしさ”
nb_rady
0
190
LangSmith×Webhook連携で実現するプロンプトドリブンCI/CD
sergicalsix
1
200
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
310
Southwest airlines®️ USA Contact Numbers: Complete 2025 Support Guide
oliversmith12
0
110
Featured
See All Featured
For a Future-Friendly Web
brad_frost
179
9.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Embracing the Ebb and Flow
colly
86
4.7k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
GitHub's CSS Performance
jonrohan
1031
460k
Balancing Empowerment & Direction
lara
1
410
Automating Front-end Workflow
addyosmani
1370
200k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Language of Interfaces
destraynor
158
25k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Transcript
Bitkey Inc. Connect Product Noriki Takahashi ਓੜ͍Ζ͍ΖϞϊϨϙ͍Ζ͍Ζ♪
Outline 1. ࣗݾհ 2. എܠͱͯ͠ͷ͘͠͡Γ 3. Go ϞϊϨϙͷྨ 4. ϞϊϨϙҠߦͱࠓޙ
5. ·ͱΊ 2 2
1. ࣗݾհ 3 • ∁ڮయੜ(Noriki Takahashi) ◦ Twitter: @norinoriki0 ◦
GitHub: nrnrk • גࣜձࣾBitkey ◦ bitkey platform ͱ͍͏”ΧΪ”ͷϓϥοτϑΥʔϜͷ։ൃ • 2 Go Ͱ։ൃ͍ͯ͠·͢ • झຯ: ֶɾཧֶ ◦ zk-SNARKs ͷֶతͳଆ໘ΛטΈࡅ͘هࣄΛॻ͍ͨΓͯ͠·͢
• Bitkey ͷ3ͭͷࣄۀυϝΠϯ ◦ HomeʢΒ͠ʣ ◦ Workspaceʢಇ͘ʣ ◦ Experienceʢඇৗͷମݧʣ •
bitkey platform ◦ 3ͭͷ hub ΞϓϦέʔγϣϯͷج൫ 1. ࣗݾհ 4
എܠͱͯ͠ͷ͘͠͡Γ 5 5
ϞϊϨϙԽ͕ඞཁʹͳͬͨഎܠ 6 6 2. എܠͱͯ͠ͷ͘͠͡Γ
গ͠લʹࢥ͍ͬͯͨ͜ͱ͕͋Δ 7 7 2. എܠͱͯ͠ͷ͘͠͡Γ
ͳΜ͔։ൃͰ໘ͳ͜ͱ͕ଟ͍ͧ... 8 8 2. എܠͱͯ͠ͷ͘͠͡Γ
ͳΜ͔ϦϙδτϦଟ͍͠ Ϛʔδͷॱ൪ͱ͔ؾʹ͠ͳ͖Ό ͍͚ͳ͍෦͕͋Δ... 9 9 2. എܠͱͯ͠ͷ͘͠͡Γ
ࢥ͍ग़͢ͱ... 10 10 2. എܠͱͯ͠ͷ͘͠͡Γ
<2લͷαʔϏεϩʔϯνͷ͜Ζ> 11 11 2. എܠͱͯ͠ͷ͘͠͡Γ
“Αͬ͠ΌɺϚΠΫϩαʔϏεͰΔͥ” 12 12 2. എܠͱͯ͠ͷ͘͠͡Γ
“Αͬ͠ΌɺϚΠΫϩαʔϏεͰΔͥ” ͷ͍Ͱ... ϦϙδτϦͨ͘͞Μ࡞ͬͪΌͬͨ ※ ܦҢҰ෦؆ུԽ͍ͯ͠·͢ 13 13 2. എܠͱͯ͠ͷ͘͠͡Γ
ϦϙδτϦΒΒൃੜ 14 14 2. എܠͱͯ͠ͷ͘͠͡Γ
15 15 2. എܠͱͯ͠ͷ͘͠͡Γ
ͦͷ݁Ռ... 16 16 2. എܠͱͯ͠ͷ͘͠͡Γ
։ൃ્ཁҼ͕ͨ͘͞Μੜ·Εͨ... 17 17 2. എܠͱͯ͠ͷ͘͠͡Γ
ϦϙδτϦΒΒ ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ 18 18 2. എܠͱͯ͠ͷ͘͠͡Γ
2. എܠͱͯ͠ͷ͘͠͡Γ 19 ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ◦ ֤ϦϙδτϦͰಉ͡Α͏ͳϩδοΫ͕ग़ͯ͘Δ ▪ → ϘΠϥʔϓϨʔτԽ
2. എܠͱͯ͠ͷ͘͠͡Γ 20 ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ◦ ֤ϦϙδτϦͰಉ͡Α͏ͳϩδοΫ͕ग़ͯ͘Δ ▪ → ϘΠϥʔϓϨʔτԽ
◦ ղܾ͠Α͏ͱɺڞ௨ϥΠϒϥϦԽ͢Δ
2. എܠͱͯ͠ͷ͘͠͡Γ 21 ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ◦ ֤ϦϙδτϦͰಉ͡Α͏ͳϩδοΫ͕ग़ͯ͘Δ ▪ → ϘΠϥʔϓϨʔτԽ
◦ ղܾ͠Α͏ͱɺڞ௨ϥΠϒϥϦԽ͢Δ ▪ → ڞ௨ϥΠϒϥϦΛઌʹमਖ਼ͯ͠Ϛʔδ͠ͳ͍ͱ͑ͳ͍... ▪ → ʮ͜Εमਖ਼ͨ͠ΒଞʹӨڹ͋ΔΜ͡Ό...ʯ ◦ → ڞ௨ϥΠϒϥϦ͕ൃల͠ͳ͍ & ϘΠϥʔϓϨʔτੜ·Ε͍͢
ϦϙδτϦΒΒ ᶄ Go ͷόʔδϣϯϥΠϒϥϦͷߋ৽͕େม 22 22 2. എܠͱͯ͠ͷ͘͠͡Γ
ᶄ Go ͷόʔδϣϯϥΠϒϥϦͷߋ৽͕େม ◦ ʮ͋ɺ͜ͷϥΠϒϥϦ service A Ͱ v2 ͚ͩͲɺ
service B v1 ͳΜͩʯ ▪ service A Λ্͛ͨλΠϛϯάͰ্͓͚͛ͯΕ... ◦ ʮ͊͞ɺGo 1.17 ͕ϦϦʔε͞Εͨͧʯ ▪ → ֤ϦϙδτϦͰͪΐͪ͜ΐ͜PRΛग़͢͜ͱʹ... ◦ Dependabot PR ϙνϙν... 2. എܠͱͯ͠ͷ͘͠͡Γ 23
ϦϙδτϦΒΒ ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ 24 24 2. എܠͱͯ͠ͷ͘͠͡Γ
ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ ◦ ͜ͷ։ൃ service A ͱ service B ͷमਖ਼͕ඞཁͩ
▪ → ͋ɺͰ service A service B ʹґଘ͍ͯ͠Δ͔Βɺservice B Λઌ ʹϚʔδ͠ͳ͍ͱ service A ͷ CI ͕ࣦഊ͢Δͧ... ◦ ͞ΒʹɺgRPC ͷͨΊͷ proto ϑΝΠϧΛαʔόʔଆ ஔ͍ͨ͜ͱͰෳࡶԽ ▪ ΫϥΠΞϯτଆͰίʔυੜ͢Δࡍʹ proto ϑΝΠϧΛμϯϩʔυ͢ Δߏʹͳͬͯ͠·ͬͨ... 2. എܠͱͯ͠ͷ͘͠͡Γ 25
ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ᶄ Go ͷόʔδϣϯϥΠϒϥϦͷߋ৽͕େม ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ 26 26 2.
എܠͱͯ͠ͷ͘͠͡Γ ͜ΕΒΛͳΜͱ͔ղফ͍ͨ͠...!
ΒΒͷϦϙδτϦΛ·ͱΊΑ͏ʂ 27 27 2. എܠͱͯ͠ͷ͘͠͡Γ
ϞϊϨϙԽΔͧʂ 28 28 2. എܠͱͯ͠ͷ͘͠͡Γ
ϞϊϨϙԽΔͧʂ 29 29 2. എܠͱͯ͠ͷ͘͠͡Γ
Go ϞϊϨϙͷྨ 30 30
ϞϊϨϙͱ 31 31 3. Go ϞϊϨϙͷྨ
• ϞϊϨϙ(Mono Repository) ◦ ෳͷύοέʔδ(Ϟδϡʔϧ)ΛҰͭͷϦϙδτϦͰཧ͢Δ͜ͱ ◦ ϝϦοτ ▪ Ұׅཧ͕͍͢͠ ◦
σϝϦοτ ▪ ಛఆͷύοέʔδ͔Β͢Δͱແؔͳͷ͕ଟ͍(ιʔεɺίϛοτ) ◦ ࠓճͷࣄྫ ▪ 1νʔϜ͕ཧ͍ͯͨ͠10ఔͷϦϙδτϦͷ౷߹(খن) 3. Go ϞϊϨϙͷྨ 32
ϞϊϨϙԽͰͷղফΠϝʔδ 33 33 2. platform ͱͯ͠ٻΊΒΕͨͷ
3. Go ϞϊϨϙͷྨ 34 • ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ
3. Go ϞϊϨϙͷྨ 35 • ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ ▪ Ϛʔδॱ൪ͳͲؾʹ͠ͳͯ͘ྑ͍
▪ ؾܰʹڞ௨ϥΠϒϥϦΛΓग़ͤͯɺϝϯςφϯε͍͢͠ ▪ CI Ͱύοέʔδؒͷςετ͕Ͱ͖Δ
• ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ ▪ Ϛʔδॱ൪ͳͲؾʹ͠ͳͯ͘ྑ͍ ▪ ؾܰʹڞ௨ϥΠϒϥϦΛΓग़ͤͯɺϝϯςφϯε͍͢͠ ▪ CI
Ͱύοέʔδؒͷςετ͕Ͱ͖Δ ◦ ґଘͷڞ௨Խͤ͞Δ͜ͱ͕Ͱ͖Δ 3. Go ϞϊϨϙͷྨ 36
3. Go ϞϊϨϙͷྨ 37 • ϞϊϨϙͰͷղফΠϝʔδ ◦ ෳͷύοέʔδͷίϛοτɾϚʔδΛΞτϛοΫʹͰ͖Δ ▪ Ϛʔδॱ൪ͳͲؾʹ͠ͳͯ͘ྑ͍
▪ ؾܰʹڞ௨ϥΠϒϥϦΛΓग़ͤͯɺϝϯςφϯε͍͢͠ ▪ CI Ͱύοέʔδؒͷςετ͕Ͱ͖Δ ◦ ґଘͷڞ௨Խͤ͞Δ͜ͱ͕Ͱ͖Δ ▪ Ұׅͯ͠ɺGoϥΠϒϥϦͷߋ৽ɾཧ͕Ͱ͖Δ
Α͠ɺϞϊϨϙΛࢼͯ͠ΈΑ͏ 38 38 3. Go ϞϊϨϙͷྨ
Ͳ͏ͬͨΒྑ͍Μ͚ͩͬʁ 1ͭʹ·ͱΊΔʹ৭ʑ͋Γͦ͏... 39 39 3. Go ϞϊϨϙͷྨ
গ͠ཧͯ͠ྨͯ͠Έͨ 40 40 3. Go ϞϊϨϙͷྨ
3. Go ϞϊϨϙͷྨ 41 • Go module ʹͨ͠ྨ ◦ go.mod
Ұ͚ͭͩ: Mono Module ▪ root ʹ go.mod Λ͓͍ͯɺશମΛҰͭͷ Go Module ͱͯ͠ѻ͏ํ๏ ▪ → ಠཱੑ͕͍(go.mod ʹॻ͔ͣʹґଘͰ͖Δ) ◦ go.mod ͨ͘͞Μ: Multi Module ▪ ֤σΟϨΫτϦʹ go.mod Λஔ͖ɺͦΕͧΕΛ Go Module ͱͯ͠ѻ͏ ▪ → ಠཱੑ͕ߴ͍(go.mod ʹॻ͔ͳ͍ͱґଘͰ͖ͳ͍)
• Mono Module ◦ ಠཱੑ͍ 3. Go ϞϊϨϙͷྨ 42 •
Multi Module ◦ ಠཱੑߴ͍
Monorepo / Multirepo ߹Θͤͯཧ͢Δͱ... 43 43 3. Go ϞϊϨϙͷྨ
3. Go ϞϊϨϙͷྨ 44
3. Go ϞϊϨϙͷྨ 45 ɾύοέʔδΛލ͍ͰґଘΛ࣋ͯΔ ɾґଘΛ੍ޚ͍ͨ͠ͳΒ੩తղੳඞཁ ɾґଘͷڞ௨Խ͕͍͢͠
3. Go ϞϊϨϙͷྨ 46 ɾϞδϡʔϧؒͷґଘΛ੍ޚ͍͢͠ ɾϞϊϨϙҠߦ͕ൺֱత͍͢͠ ɾґଘͷڞ௨Λ͠ͳͯ͘ྑ͍
3. Go ϞϊϨϙͷྨ 47 ɾBazel ͳͲͷϏϧυπʔϧɺ͜ͷߏ ͷҧ্͍͕͋ͬͨʹՃͰಋೖ͢ΔΠ ϝʔδΛ࣋ͭͱྑ͍
ࠓճɺͲͷܗΛࢦ͖͔͢ 48 48 3. Go ϞϊϨϙͷྨ
3. Go ϞϊϨϙͷྨ 49
3. Go ϞϊϨϙͷྨ 50
3. Go ϞϊϨϙͷྨ 51
• Mono Module બΜͩཧ༝: ֤՝ͷղফ ◦ ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ▪ ͜Ε͔Β
Go package ͱͯ͠ڞ௨ϥΠϒϥϦΛ࡞ΕOK ▪ ୯ମςετΛॻ͘͜ͱͰڞ௨ϥΠϒϥϦͷमਖ਼͘͢͠ 3. Go ϞϊϨϙͷྨ 52
• Mono Module બΜͩཧ༝: ֤՝ͷղফ ◦ ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ▪ ͜Ε͔Β
Go package ͱͯ͠ڞ௨ϥΠϒϥϦΛ࡞ΕOK ▪ ୯ମςετΛॻ͘͜ͱͰڞ௨ϥΠϒϥϦͷमਖ਼͘͢͠ ◦ ᶄ Go ͷόʔδϣϯϥΠϒϥϦͷߋ৽͕େม ▪ ϧʔτͷ go.mod ͱ .go-version ͷॻ͖͑ͰOK 3. Go ϞϊϨϙͷྨ 53
• Mono Module બΜͩཧ༝: ֤՝ͷղফ ◦ ᶃ ڞ௨ϥΠϒϥϦͷѻ͍͕͏·͍͔͘ͳ͍ ▪ ͜Ε͔Β
Go package ͱͯ͠ڞ௨ϥΠϒϥϦΛ࡞ΕOK ▪ ୯ମςετΛॻ͘͜ͱͰڞ௨ϥΠϒϥϦͷमਖ਼͘͢͠ ◦ ᶄ Go ͷόʔδϣϯϥΠϒϥϦͷߋ৽͕େม ▪ ϧʔτͷ go.mod ͱ .go-version ͷॻ͖͑ͰOK ◦ ᶅ ϚʔδͷλΠϛϯάΛ͋Θͤͳ͍ͱ͍͚ͳ͍ ▪ શ෦ҰॹʹͳΔͷͰOK 3. Go ϞϊϨϙͷྨ 54
• Ҡߦͷํ ◦ Mono Module Monorepo ͰҠߦ͢Δ ◦ εϞʔϧελʔτͱͯ͠ɺGoͷϦϙδτϦͷΈͰ࣮ࢪ ◦
Mono Module + গ͠ Bazel ▪ ڞ௨ͯ͠͏ϥΠϒϥϦ͕ଟ͘ɺύοέʔδͷಠཱੑ͕ඞཁͳ͍ ▪ ϏϧυͷύϑΥʔϚϯεͷ্ࠓޙϞϊϨϙͷൣғΛ͛Δͱ͖ʹ ར༻Ͱ͖ΔΑ͏ʹɺඞཁʹԠͯ͡গͣͭ͠ Bazel ΛೖΕ͍ͯ͘ 3. Go ϞϊϨϙͷྨ 55
ϞϊϨϙҠߦͱࠓޙ 56 56
• ϞϊϨϙҠߦͷεςοϓ ◦ ίʔυͷमਖ਼ ◦ ࣗಈੜπʔϧͷରԠ ◦ CI ରԠ 4.
ϞϊϨϙҠߦͱࠓޙ 57
• ίʔυͷमਖ਼ ◦ git clone ͰϦϙδτϦͷऩू 4. ϞϊϨϙҠߦͱࠓޙ 58
• ίʔυͷमਖ਼ ◦ git clone ͰϦϙδτϦͷऩू ◦ import จͷमਖ਼ ▪
`github.com/organization/serviceA` → `github.com/organization/ XXXservice/serviceA` 4. ϞϊϨϙҠߦͱࠓޙ 59
• ίʔυͷमਖ਼ ◦ git clone ͰϦϙδτϦͷऩू ◦ import จͷमਖ਼ ▪
`github.com/organization/serviceA` → `github.com/organization/ XXXservice/serviceA` ◦ go.mod ͷ౷߹ ▪ ؆୯ʹίϐϖͰҰͭʹ·ͱΊΕOK ▪ ϥΠϒϥϦͷόʔδϣϯͱ͔ἧ͍͑ͨͳΒదٓमਖ਼ 4. ϞϊϨϙҠߦͱࠓޙ 60
• ࣗಈੜπʔϧͷରԠ ◦ πʔϧࣗମͦͷ··ಈ͘ͷ͕ଟ͍ ▪ ࠓճͷզʑͷέʔεͰ proto पΓվम͕ඞཁ ◦ ύοέʔδΛԣஅ࣮ͯ͠ߦͰ͖Δ
Makefile εΫϦϓτΛՃ 4. ϞϊϨϙҠߦͱࠓޙ 61
• ࣗಈੜπʔϧͷରԠ ◦ πʔϧࣗମͦͷ··ಈ͘ͷ͕ଟ͍ ▪ ࠓճͷզʑͷέʔεͰ proto पΓվम͕ඞཁ ◦ ύοέʔδΛԣஅ࣮ͯ͠ߦͰ͖Δ
Makefile εΫϦϓτΛՃ 4. ϞϊϨϙҠߦͱࠓޙ 62
• ࣗಈੜπʔϧͷରԠ ◦ πʔϧࣗମͦͷ··ಈ͘ͷ͕ଟ͍ ▪ ࠓճͷզʑͷέʔεͰ proto पΓվम͕ඞཁ ◦ ύοέʔδΛԣஅ࣮ͯ͠ߦͰ͖Δ
Makefile εΫϦϓτΛՃ 4. ϞϊϨϙҠߦͱࠓޙ 63
• CI ରԠ ◦ ҎԼΛຬͨ͢Α͏ʹमਖ਼ 4. ϞϊϨϙҠߦͱࠓޙ 64
• CI ରԠ ◦ ҎԼΛຬͨ͢Α͏ʹमਖ਼ ▪ ෆཁͳϏϧυΛճ͞ͳ͍Α͏ʹ͍ͨ͠ ▪ मਖ਼ͨ͠ൣғʹґଘ͍ͯ͠Δͱ͜ΖͷϏϧυճ͍ͨ͠ ◦
CI ʹΑͬͯɺpath filtering ͱ͍͏ػೳΛ࣮ͬͯݱͰ͖Δ͜ͱ͕ଟ͍ 4. ϞϊϨϙҠߦͱࠓޙ 65
• CI ରԠ ◦ Circle CI ͷྫ (GitHub Actions ʹྨࣅͷplugin͕͋Δ༷)
4. ϞϊϨϙҠߦͱࠓޙ 66
4. ϞϊϨϙҠߦͱࠓޙ • Ҡߦʹؔͯ͠ؾ͍ͮͨ͜ͱ ◦ νʔϜ͔ͭಉҰݴޠͰ·ͱΊΔͷͦ͜·Ͱେม͡Όͳ͔ͬͨ ▪ νʔϜϝϯόʔͰগͣͭ͠ΩϟονΞοϓ͍ͯ͘͜͠ͱ͕Ͱ͖Δ 67
4. ϞϊϨϙҠߦͱࠓޙ • Ҡߦʹؔͯ͠ؾ͍ͮͨ͜ͱ ◦ νʔϜ͔ͭಉҰݴޠͰ·ͱΊΔͷͦ͜·Ͱେม͡Όͳ͔ͬͨ ▪ νʔϜϝϯόʔͰগͣͭ͠ΩϟονΞοϓ͍ͯ͘͜͠ͱ͕Ͱ͖Δ ◦ ίʔυੜܥΛ
Bazel Ͱ͍ͬͯ͘ͷେม ▪ mockgen ࣗલͷ rule Λ࡞͕ͨ͠ɺͳΕΔ·Ͱ͔ͳΓݫ͍͠ 68
4. ϞϊϨϙҠߦͱࠓޙ • Ҡߦʹؔͯ͠ؾ͍ͮͨ͜ͱ ◦ νʔϜ͔ͭಉҰݴޠͰ·ͱΊΔͷͦ͜·Ͱେม͡Όͳ͔ͬͨ ▪ νʔϜϝϯόʔͰগͣͭ͠ΩϟονΞοϓ͍ͯ͘͜͠ͱ͕Ͱ͖Δ ◦ ίʔυੜܥΛ
Bazel Ͱ͍ͬͯ͘ͷେม ▪ mockgen ࣗલͷ rule Λ࡞͕ͨ͠ɺͳΕΔ·Ͱ͔ͳΓݫ͍͠ ◦ ࣄલʹϥΠϒϥϦͷߋ৽Λ࣮ࢪ͓͔ͯ͠ͳ͍ͱେม ▪ 3ͭҎ্ͷόʔδϣϯ͕͔ͪ߹͏͜ͱ... 69
• ࠓޙͷల ◦ ࠓճεϞʔϧελʔτͱͯ͠ɺνʔϜͷGo ϨϙδτϦ͚ͩͰ։࢝ ◦ ࠓޙɺଞͷϨϙδτϦΛগͣͭ͠Ճ༧ఆ ▪ ϝϦοτ͕͋Γͦ͏ͳΒଞνʔϜͷαʔϏεՃ༧ఆ 4.
ϞϊϨϙҠߦͱࠓޙ 70
·ͱΊ 71 71
• ·ͱΊ ◦ Mono Module Monorepo ͱ Multi Module Monorepo
▪ ಠཱੑ͕ͲΕ͚ͩඞཁ͔Ͱબ͢Δ ◦ Go ϞϊϨϙϏϧυπʔϧΛؤுΓ͗ͣ࢝͢ΊΔͷ͕͓͢͢Ί ▪ Bazel ͰશʹΖ͏ͱ͢Δͱେม ▪ → ඞཁʹԠͯ͡গͣͭ͠ೖΕ͍ͯ͘ ◦ ϞϊϨϙԽʹΑͬͯDX(։ൃମݧ)͕վળͰ͖ͨ ▪ 1νʔϜͷϚΠΫϩαʔϏεͳΒσϝϦοτগͳ͓͘͢͢Ί 5. ·ͱΊ 72