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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
株式会社ビットキー / Bitkey Inc.
PRO
November 13, 2021
Technology
1.2k
0
Share
GoConference_人生いろいろモノレポもいろいろ
株式会社ビットキー / Bitkey Inc.
PRO
November 13, 2021
More Decks by 株式会社ビットキー / Bitkey Inc.
See All by 株式会社ビットキー / Bitkey Inc.
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
2
150
人が担う「価値」とは?これからの「QA」とは / Human Value and the Future of Quality Assurance
bitkey
PRO
0
130
キャリア25年目にしてTypeScript に出会うまで - 「型」を通じて振り返るプログラミング言語遍歴 / Meeting TypeScript After 25 Years in Tech - Looking Back at My Programming Language Journey Through "Types"
bitkey
PRO
2
300
AIのために、AIを使った、Effect-TSからの脱却 〜テストを活用した安全なリファクタリングの進め方〜
bitkey
PRO
1
620
Flutter初心者が生成AIで大規模アプリ開発をキャッチアップした工夫 〜元ネイティブエンジニアが実践した、技術転換の高速道路〜 / Flutter with LLM: A Former Native Engineer's Fast Track to Large-Scale Apps
bitkey
PRO
0
210
〜備えあれば憂いなし〜とりあえず障害訓練やろ? デジタル/フィジカル横断プロダクトを24365で維持するための戦略 / Better Safe Than Sorry: Incident Drills for 24/365 Digital-Physical Products
bitkey
PRO
0
120
雑談は、センサーだった
bitkey
PRO
2
460
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
8
1.5k
生成AI時代のドキュメントに対する期待の整理と実践から得た学び / Rethinking Documentation for LLM: Lessons from Practice
bitkey
PRO
1
150
Other Decks in Technology
See All in Technology
JJUG CCC 2026 Spring AI時代の開発こそ標準化を武器に! ― 方式・プロセス・プラットフォームの標準化
s27watanabe
2
600
テストコードのないプロジェクトにテストを根付かせる
tttol
0
220
「使われるデータ基盤」を目指してデータアナリストとワークショップをやった話
jackojacko_
2
920
Amazon Bedrock 経由の Claude Cowork を試してみよう・MCP にも繋いでみよう
sugimomoto
0
250
Cloud Run のアップデート 触ってみる&紹介
gre212
0
220
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
GitHub Copilot CLI の Rubber Duck 機能を使ってコーディングの品質をあげよう #techbaton_findy
stefafafan
2
1.2k
個人AIからチームAIへ:開発における品質と生産性の再設計
moongift
PRO
0
290
組織の中で自分を経営する技術
shoota
0
220
Amazon CloudFrontにおけるAIボットアクセス制御のポイント
kizawa2020
5
300
layerx-fde-practices
cipepser
6
2.9k
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
170
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
Scaling GitHub
holman
464
140k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Skip the Path - Find Your Career Trail
mkilby
1
130
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Into the Great Unknown - MozCon
thekraken
41
2.5k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
380
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
350
ラッコキーワード サービス紹介資料
rakko
1
3.4M
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