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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Masatoshi Kubode
January 20, 2026
Technology
240
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
150
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.3k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
730
技術を根付かせる / How to make technology take root
kubode
1
500
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
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
1
210
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
11
4.2k
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
300
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
640
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
270
AI Driven AI Governance
pict3
0
160
ゼロをイチにする仕事が終わったあと
smasato
0
310
どうして今サーバーサイドKotlinを選択したのか
nealle
0
210
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
520
CIで使うClaude
iwatatomoya
0
140
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
280
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
180
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
440
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
BBQ
matthewcrist
89
10k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
First, design no harm
axbom
PRO
2
1.2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
210
Mobile First: as difficult as doing things right
swwweet
225
10k
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の話はブログで まとめ モノレポ化の事例を紹介