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
Masatoshi Kubode
January 20, 2026
Technology
220
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
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.3k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
720
技術を根付かせる / How to make technology take root
kubode
1
500
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
640
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
230
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
1.1k
Mobile Chapterが目指すところと技術 / Vision and Technology of Mobile Chapter at Wantedly
kubode
0
440
Other Decks in Technology
See All in Technology
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
9.8k
Android の公式 Skill / Android skills
yanzm
0
120
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
3.9k
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
400
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.1k
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
580
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
520
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
710
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
0
160
Microsoft Build Keynoteふりかえり
tomokusaba
0
120
地球に⽣きるAI —GeoAIと「中間領域」— / AI Living on Earth — GeoAI and the “Intermediate Layer” —
ykiyota
0
260
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7k
Why Our Code Smells
bkeepers
PRO
340
58k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Chasing Engaging Ingredients in Design
codingconduct
0
220
Evolving SEO for Evolving Search Engines
ryanjones
0
210
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Into the Great Unknown - MozCon
thekraken
41
2.6k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Ruling the World: When Life Gets Gamed
codingconduct
0
250
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の話はブログで まとめ モノレポ化の事例を紹介