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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Masatoshi Kubode
January 20, 2026
Technology
260
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
170
ウォンテッドリーの「ココロオドル」モバイル開発 / 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
660
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
250
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
1.2k
Other Decks in Technology
See All in Technology
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.6k
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.5k
2027年のMetricKit
kantacky
0
150
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.6k
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
コーチングの奥義 何もしないテクニック
jinwatanabe
0
140
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
350
トークンマネジメントでAIにとって働きやすい環境を実現する
hikaruegashira
0
130
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
870
:syncing_time:
sksat
2
320
Adding Right-to-Left support to your web application with CSS logical properties — Lessons from Redmine
vividtone
0
170
医療の現場を変革に挑戦した半年間の軌跡 - PythonとAIで現場を変える / From Code to Care
soudai
PRO
0
520
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
A Tale of Four Properties
chriscoyier
163
24k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
370
Code Reviewing Like a Champion
maltzj
528
40k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
The Language of Interfaces
destraynor
162
27k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
My Coaching Mixtape
mlcsv
0
260
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Making Projects Easy
brettharned
120
6.7k
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の話はブログで まとめ モノレポ化の事例を紹介