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
#merpay_techtalk Feature branchを使わないFeature開発
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
@ku KUMAGAI
March 18, 2021
Technology
3
690
#merpay_techtalk Feature branchを使わないFeature開発
@ku KUMAGAI
March 18, 2021
Tweet
Share
More Decks by @ku KUMAGAI
See All by @ku KUMAGAI
GraphQLとスキーマファーストで切り開く ライドシェアの未来
ku0522a
1
1.9k
Other Decks in Technology
See All in Technology
社内レビューは機能しているのか
matsuba
0
170
Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話
risatube
0
200
AWSの資格って役に立つの?
tk3fftk
2
370
GCASアップデート(202601-202603)
techniczna
0
240
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
160
Claude Code のコード品質がばらつくので AI に品質保証させる仕組みを作った話 / A story about building a mechanism to have AI ensure quality, because the code quality from Claude Code was inconsistent
nrslib
13
8.7k
システム標準化PMOから ガバメントクラウドCoEへ
techniczna
1
150
わからなくて良いなら、わからなきゃだめなの?
kotaoue
1
370
【Λ(らむだ)】最近のアプデ情報 / RPALT20260318
lambda
0
120
めちゃくちゃ開発するQAエンジニアになって感じたメリットとこれからの課題感
ryuhei0000yamamoto
0
190
VPCエンドポイント意外とお金かかるなぁ。せや、共有したろ!
tommy0124
1
710
Windows ファイル共有(SMB)を再確認する
murachiakira
PRO
0
210
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
780
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
240
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Documentation Writing (for coders)
carmenintech
77
5.3k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
250
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
300
Test your architecture with Archunit
thirion
1
2.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.4k
The Pragmatic Product Professional
lauravandoore
37
7.2k
Transcript
1 Feature branchを使わないFeature開発 merpay Tech Talk 2021/03/18 Kentaro Kumagai @ku
2 • メルペイの開発手順のご紹介 • コンフリクトで困っていた • ブランチを作るのをやめてみた • 結果 本日の内容
3 1. Feature frameworkを生成する ./bin/init_framework.sh MerpayFooKit 2. Feature branchを作る git
checkout -b feature/foo 3. デイリーでmainブランチをマージしつつ開発 4. feature/foo ブランチでメルカリアプリをビルドしてQA メルペイでの新機能開発
4 Featureってなに? ひとつの機能のこと ひとつのFeature = ひとつのモジュール = ひとつのframework = ひとつのブランチで開発
5 Featureってなに? ひとつの機能のこと ひとつのFeature = ひとつのモジュール = ひとつのframework = ひとつのブランチで開発
6 各feature frameworkごとにそのfeatureのみ が動く単体のサンプルアプリFooKitSampleを用 意して開発 • 動作確認に必要最低限の依存framework をリンク • ビルド時間が短いので快適
FeatureごとのSampleアプリ
7
8 • コンフリクト ◦ なぜ起きるのか ▪ 共通のenumやLocalizable.stringsへの追加 ▪ 共通のコンポーネントへの機能追加 ◦
30分もかからないが毎日起きるとばかにならない (1日の5% * 開発期間) • リリース時のマージ ◦ Featureのリリースが重なるとコンフリクトの解決が大変 (になる可能性) ◦ 本来はすべてのコードがマージされている状態で QAすべき 問題
9 • 開発中featureのコードもmainのブランチにマージ • リリースビルドにはfeatureのコードを含めない ◦ バイナリサイズ ◦ 機密保持 理想
10 • コンパイル時のフラグ #if ◦ 各featureの #if がたくさんあるとコードが読めなくなりそう ◦ リリース後に取り除くのもめんどくさい
• 実行時のフラグ ◦ 上記の問題+ ◦ リリースの何ヶ月も前からバイナリに featureが含まれてしまう ◦ バイナリサイズ ブランチが嫌ならフラグを使えばいいじゃない
11 GUIのフロントエンドがありプロダクトマネージャー が管理 • Draft作成 → review → 反映 •
中身はgit
12 今回試してみた方法 リンクしなければよくないですか by yusuke0518 • Featureのコードもmainにマージしていく • リリースビルドではfeatureのframeworkをリンクしない ◦
開発はSampleアプリで進められるのでメルカリアプリにリンクしなくて も問題なし
13 1. Foo frameworkがないのを確認 2. strings Mercari 3. nm Mercari
バイナリの検証
14 バイナリ(Mach-O)の文字列定数部分にある文字列を表示 strings
15 バイナリ(Mach-O)のシンボルテーブルを表示 nm
16 Activityの定義上enumに新機能のcaseを追加する必要がある enum Activity { enum Foo { case signup
} case FooActivity } → raw valueがStringでなければ名前自体はバイナリに含まれない merpay固有の事情
17 共通のコンポーネントへの変更が必要にならない限り問題なし • 既存機能に影響が出ない拡張が大半 ◦ 影響がある変更だけこれまでどおりの branch運用 • 既存機能を意図せず変更しないようにスクリプトでチェック https://github.com/ku/warn-if-outside-of
運用してみて
18 ★ 新機能もmainのブランチにマージできてコンフリクトを最小化 ★ リリースビルドにはfeatureのコードは含まれない ◦ バイナリサイズも増えない ◦ 機密も漏れない Frameworkを分離していると可能なのでおすすめです
まとめ