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
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositor...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Masatoshi Kubode
January 20, 2026
Technology
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
https://wantedly.connpass.com/event/377759/
Masatoshi Kubode
January 20, 2026
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
160
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
740
技術を根付かせる / How to make technology take root
kubode
1
510
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
650
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
240
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
1.1k
Other Decks in Technology
See All in Technology
AI時代の強いチームの作り方
yuukiyo
26
16k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
670
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
300
ガバメントクラウドでのランサムウェア対策
techniczna
2
1k
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
0
110
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
200
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
3
1.2k
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
2
450
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
120
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
20分でわかるセキュアAPI
nwiizo
1
190
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.7k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The Language of Interfaces
destraynor
162
27k
So, you think you're a good person
axbom
PRO
2
2.1k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Everyday Curiosity
cassininazir
0
270
Designing Experiences People Love
moore
143
24k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
We Are The Robots
honzajavorek
0
290
Done Done
chrislema
186
16k
The agentic SEO stack - context over prompts
schlessera
0
860
Discover your Explorer Soul
emna__ayadi
2
1.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Transcript
© 2026 Wantedly, Inc. KMP/iOS/Androidを 2ヶ月でモノレポ化した話 モバイル勉強会 #23 2026/01/20 -
久保出雅俊
© 2026 Wantedly, Inc. wantedly.com/id/kubode @swiz_ard @kubode
© 2026 Wantedly, Inc. 01 なぜ移行したか 02 どうやって移行したか 03 まとめ
CONTENTS
© 2026 Wantedly, Inc. なぜ移行したか 01
© 2026 Wantedly, Inc. 従来の構成
© 2026 Wantedly, Inc. 課題 詳細 リードタイム KMP変更のたびに 最低20分 待ち(Publish
→ CI → 反映) 破壊的変更 意図しない破壊的変更に 気づけない(別リポジトリでCIが走る) iOS開発体験 コードジャンプ不可、ブレークポイント不可(バイナリ配布のため) Xcodeキャッシュ KMPアップデート時に Clean Build必須(Xcode 16の問題) チーム分割 複数チーム間でKMP配布タイミングが 衝突 担当者固定化 KMPメンテナーが固定化、リソースの流動性低下 従来の課題
© 2026 Wantedly, Inc. 移行後の構成 visit-app/ ├── shared/ # KMP
├── iosApp/ # iOS └── androidApp/ # Android
© 2026 Wantedly, Inc. どうやって移行したか 02
© 2026 Wantedly, Inc. • 要件定義 ◦ Git履歴を保持する(`git blame` で過去の変更を追跡可能に)
◦ 移行前後で新旧リポジトリでの並行開発ができる • PoC ◦ git-filter-repo: 履歴を保持したままリポジトリを統合できるツール ▪ リポジトリの全履歴をサブディレクトリに移動できる ◦ CI/CDの移行が可能か 計画 要件定義とPoC
© 2026 Wantedly, Inc. 統合スクリプトの作成 AIでスクリプトを作成 あなたはgitや周辺ツールに詳しいシニアエンジニアとなって、以下の指示に従います。 ## 背景・現状 現在のディレクトリには、次の3つのサブディレクトリが存在します。
* app-android/ (default branch: develop) * visit-ios/ (default branch: develop) * visit-app-shared/ (default branch: master) これらはそれぞれ独立したGitリポジトリとして管理されています。 各リポジトリの全履歴(commit履歴)を保ったまま、新しい統合ディレクトリを構築したいで す。 目的・ゴール 新たに visit-app/ ディレクトリを作成し、3つのリポジトリを以下のようにサブディレクトリと して統合したいです。 * app-android/ → visit-app/androidApp/ * visit-ios/ → visit-app/iosApp/ * visit-app-shared/ → visit-app/shared/ 各サブディレクトリに元リポジトリの履歴が完全に残る形にしたいです。 ## 要望事項 * 統合対応に最適なGitコマンドやツール(例:git-filter-repo)を利用した、具体的な1つの シェルスクリプト(shファイル)を作成してください。 * スクリプトはgit-filter-repo公式ドキュメント(git-filter-repo.html)の推奨に従った内容とし てください。 * visit-app/ のdefault branchはdevelopにしてください。 * visit-app/ 及びそのサブディレクトリがすでに存在する場合もあります。削除して作り直 さず、各サブディレクトリのgitの差分を反映するようにしてください。 * 履歴の統合後、最終的なvisit-app/ディレクトリが以下の構造になることを保証してくださ い。 visit-app/ ├── androidApp/ # app-androidの内容(履歴付き) ├── iosApp/ # visit-iosの内容(履歴付き) └── shared/ # visit-app-sharedの内容(履歴付き) * 実行前後の注意点や検証ポイント(例:git-filter-repoのインストール確認、統合後の履 歴確認など)があれば付記してください。 * 不確実なことがあれば質問し返して質を向上させてください。
© 2026 Wantedly, Inc. • List Item 1 ◦ List
Item 1-1 • List Item 2 ◦ List Item 2-1 • List Item 3 ◦ List Item 3-1 iOSのローカルビルド KMP標準機能で簡単移行
© 2026 Wantedly, Inc. • List Item 1 ◦ List
Item 1-1 • List Item 2 ◦ List Item 2-1 • List Item 3 ◦ List Item 3-1 Androidのローカルビルド Composite Buildで簡単に結合
© 2026 Wantedly, Inc. • gradlewがXcode上でハング ◦ Xcode pre-actions で
gradlew を実行するとプロセスがハングする ◦ https://github.com/gradle/gradle/issues/15941 ◦ 👉 ./gradlew … < /dev/null • OSS licenses plugin の問題 ◦ AndroidのOSS一覧のプラグイン ◦ モノレポ構成との相性問題 ◦ 👉 別のプラグインに置き換え 発生した課題 ハマったポイント
© 2026 Wantedly, Inc. まとめ 03
© 2026 Wantedly, Inc. • 事前準備がすべて • KMPのツールが充実していて、簡単に移行できた • チーム内のフィードバックもポジティブ
◦ KMPの変更がアトミックになり、破壊的変更に気づきやすく、対処しやすくなった ◦ CI/CDの待ち時間が減り、開発パフォーマンスが向上した • 細かい課題やCI/CDの話はブログで まとめ モノレポ化の事例を紹介