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.
遠隔で同時に4人教育!? 〜リモート新人の「孤立」を防ぐオンボーディング事例〜/Educating 4 people at the same time remotely!〜Onboarding Case Studies to Prevent “Isolation” of Remote Newcomers〜
bitkey
0
20
ファームウェアは土管になるべきか 翻訳機になるべきか/Should firmware be a clay pipe or a translator?
bitkey
0
40
テストは合意形成をすべし!/Testing should be consensus building!
bitkey
0
62
Agentic Coding と 山登り と TypeScript〜体系的に考えてみよう!〜/Agentic Coding, Mountain Climbing and TypeScript~Let's think systematically!~
bitkey
0
240
"発信文化"をどうやって計測する?技術広報のKPI探索記/How do we measure communication culture?
bitkey
4
610
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
200
型化からはじめる時間づくり/Creating Time Starting with Modeling
bitkey
1
110
職種に名前が付く、ということ/The fact that a job title has a name
bitkey
1
340
Other Decks in Technology
See All in Technology
Node-REDのFunctionノードでMCPサーバーの実装を試してみた / Node-RED × MCP 勉強会 vol.1
you
PRO
0
120
GitHub Copilot の概要
tomokusaba
1
140
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
190
Tech-Verse 2025 Global CTO Session
lycorptech_jp
PRO
0
300
AWS Summit Japan 2025 Community Stage - App workflow automation by AWS Step Functions
matsuihidetoshi
1
290
「良さそう」と「とても良い」の間には 「良さそうだがホンマか」がたくさんある / 2025.07.01 LLM品質Night
smiyawaki0820
1
280
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
5
530
5min GuardDuty Extended Threat Detection EKS
takakuni
0
160
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
240
Witchcraft for Memory
pocke
1
470
Prox Industries株式会社 会社紹介資料
proxindustries
0
330
Fabric + Databricks 2025.6 の最新情報ピックアップ
ryomaru0825
1
140
Featured
See All Featured
Making Projects Easy
brettharned
116
6.3k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
A Tale of Four Properties
chriscoyier
160
23k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Code Reviewing Like a Champion
maltzj
524
40k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
124
52k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
KATA
mclloyd
30
14k
A Modern Web Designer's Workflow
chriscoyier
694
190k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Thoughts on Productivity
jonyablonski
69
4.7k
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