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
モバイルアプリケーションチームのリリースフロー改善
Search
Jerome
October 21, 2020
Programming
1
390
モバイルアプリケーションチームのリリースフロー改善
Chatwork Tech Talk #1
Jerome
October 21, 2020
Tweet
Share
More Decks by Jerome
See All by Jerome
Mobile Dev Japan #3 - Safie Viewer Android & Sceneview
jeromecha
0
33
Introduction to 3D/AR with Sceneview on Android
jeromecha
1
210
Other Decks in Programming
See All in Programming
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Contemporary Test Cases
maaretp
0
140
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
170
cmp.Or に感動した
otakakot
3
220
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
300
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
1k
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
270
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.2k
Creating a Free Video Ad Network on the Edge
mizoguchicoji
0
120
Featured
See All Featured
Gamification - CAS2011
davidbonilla
80
5k
Designing the Hi-DPI Web
ddemaree
280
34k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
900
Unsuck your backbone
ammeep
668
57k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Code Review Best Practice
trishagee
64
17k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Transcript
Chatwork Tech Talk #1 Chatwork株式会社 開発本部 モバイルアプリケーション開発部 Cha Jerome モバイルアプリケーションチームの リリースフロー改善
1
© Chatwork 自己紹介 - CHA Jerome (チャ・ジェローム) - フランス人 -
2015年に大学卒業 - 2016年8月日本に来ました - ChatworkのAndroidエンジニア - Android / iOS 両方出来ます 2 @yujiro45 JeromeCHA twitch.tv/yujiro45 (毎日21時半ぐらいに配信してる)
© Chatwork 今日のGoal - リリースの作業をもっと楽に なるようにする - リリースフローのペアオペ時間をなくす - fastlaneやスクリプトを利用して自動化することで、とても便利になる
3
© Chatwork アジェンダ - 改善する前のリリースフロー - 問題 - 改善した後のリリースフロー -
改善のときに効果と苦労したところ - まとめ 4
© Chatwork 今モバイルチームで使っているツール 5
© Chatwork fastlaneとは? - iOS及びAndroidアプリのビルドやリリースを自動化してくれる - CUIやCIツールなどから実行することで、様々な処理を自動化することができる - Laneと呼ばれるアクションをRubyで作れる -
アクションの組み合わせはレーンでおこなう 6
© Chatwork iOS/Androidチームのやり方の違い 7 - fastlane - ペアオペ:リリース - git-flowコマンドを使ってい
ます - Bash script - fastlaneを使ってない - ペアオペ:ストア申請+リ リース - Gitのツールを使っています (SourceTree、GitKraken) iOS Android
© Chatwork iOS / Androidチームの異なるリリースフロー 8 - AndroidとiOSチームはお互いのリリースフローを知らない iOS Android
© Chatwork モバイルチームのリリースフロー(改善する前) 9 リリースノート作 成 コードフリーズ ストア申請 リリース -
2週間に1回リリースしています
© Chatwork モバイルチームのリリースフロー(改善する前) 10 日本語のみリリースノート準 備 PdM*に確認お願いする 翻訳依頼 リリースブランチを作る 各言語のリリースノート
PR 出す リリースブランチに マージする リリースブランチを作る GitHubのリリース ドラフトページを作る 社内配布 ワンコマンドで申請する Bash scriptでバイナリを アップロードして、ペアオペで申請す る リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する リリースノート作成 コードフリーズ リリース ストア 申請 *PdM:プロダクトマネジャー
© Chatwork 問題 - iOSとAndroidのリリースノートを作成するタイミングが違う - Androidチームはコードフリーズする前にやる - iOSチームはコードフリーズした後にやる -
AndroidとiOSチームはお互いのやり方を知らない - 時間かかる - 各自のRubyのバージョンが違う - 手動で作業するとミスしそう - たまーにgit-flowがおかしくなっている - Windows環境でBash scriptが対応されていない - リリースする時に、たまに自信がない 11
© Chatwork 12 どうやって改善するの?
© Chatwork どうやって改善するの? 13 - Bash scriptをやめる - Windows環境では使えないため -
ミスをなくすために、ワンコマンドにする - 出来れば、全部をfastlaneで自動化にする - iOSとAndroidのステップのタイミングを同じにする - git-flowをfastlaneに任せる - Bundlerでライブラリのバージョンを管理する
© Chatwork Bundlerとは? 14 source "https://rubygems.org" ruby "2.6.6" git_source(:github) {|repo_name|
"https://github.com/#{repo_name}" } gem "fastlane", '2.147.0' gem 'json', '2.3.0' ... - BundlerがGemfileをみて、Rubyのライブラリのバージョンを管理することが出来るツールです
© Chatwork モバイルチームのリリースフロー改善 15 コードフリーズ リリースノート作 成 ストア申請 リリース -
ステップが変わらない、順番だけが変わる - iOSとAndroidのリリースノート作成するタイミングを合わせるため リリースノート作 成 コードフリーズ ストア申請 リリース 改善前 改善後
© Chatwork モバイルチームのリリースフロー改善 1. コードフリーズ 16 リリースブランチを作る GitHubのリリースドラフトペー ジを作る PdMに確認をお願いする
社内配布 日本語のみの リリースノート準備 自動化 リリースブランチを作る 各言語のリリースノート PR 出す リリースブランチにマージす る リリースブランチを作る GitHubのリリースドラフトペー ジを作る 社内配布 社内配布 翻訳依頼 *PdM:プロダクトマネジャー iOS Android
© Chatwork モバイルチームのリリースフロー改善 1. コードフリーズ 17 $ bundle exec fastlane
code_freeze リリースブランチを作る GitHubのリリース ドラフトページを作る PdMに確認をお願いする 社内配布 日本語のみの リリースノート準備 自動化 翻訳依頼
© Chatwork カスタムレーン 18
© Chatwork 19 19 モバイルチームのリリースフロー改善 1. コードフリーズ - 翻訳依頼 -
6言語に対応している(日本語、英語、タイ語、スペイン語、中国語繁体字、ベトナム語) - Google Spreadsheetを使っている
© Chatwork モバイルチームのリリースフロー改善 2. リリースノート作成 20 Jiraの完了したチケット 日本語のみリリースノート PdMに確認お願いする 翻訳依頼
各言語のリリースノート作成 各言語のリリースノート作成 リリースブランチからブラン チを作る リリースノートレビュー依頼 自動化 iOS & Android iOS & Android
© Chatwork モバイルチームのリリースフロー改善 2. リリースノート作成 21 各言語のリリースノート作成 リリースブランチからブラン チを作る リリースノートレビュー依頼
自動化 $ bundle exec fastlane release_note iOS & Android
© Chatwork モバイルチームのリリースフロー改善 3. ストア申請 22 ワンコマンドで申請する Bash scriptでバイナリをアップ ロードして、ペアオペで申請する
ワンコマンドで申請する iOS Android iOS & Android
© Chatwork モバイルチームのリリースフロー改善 3. ストア申請 23 $ bundle exec fastlane
submit ワンコマンドで申請する iOS & Android
© Chatwork モバイルチームのリリースフロー改善 4. リリース 24 リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する
リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する 自動化 iOS & Android iOS & Android
© Chatwork モバイルチームのリリースフロー改善 4. リリース 25 リリースブランチ終了 JIRAでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する
自動化 $ bundle exec fastlane release iOS & Android
© Chatwork モバイルチームのリリースフロー(改善する前) 26 日本語のみリリースノート準 備 PdM*に確認お願いする 翻訳依頼 リリースブランチを作る 各言語のリリースノート
PR 出す リリースブランチに マージする リリースブランチを作る GitHubのリリース ドラフトページを作る 社内配布 ワンコマンドで申請する Bash scriptでバイナリを アップロードして、ペアオペで申請す る リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する リリースノート作成 コードフリーズ リリース ストア 申請
© Chatwork モバイルチームのリリースフロー(改善した後) 27 日本語のみの リリースノート準備 翻訳依頼 リリースノート作成 コードフリーズ リリース
ストア申請 $bundle exec fastlane release_note $bundle exec fastlane code_freeze $bundle exec fastlane submit $bundle exec fastlane code_freeze
© Chatwork 改善のときに苦労したところ - Rubyの経験がほぼない - 環境の設定が大変だった - GitHub APIからバイナリをアップロードするのは大変だった
- Jira APIを確認するために、個人アカウント作らないといけない - 本番でテストするのは禁止! - PRをレビューするのが難しかった - やり方とコードを共有するために、全員にレビューしてもらった - iOS側で修正があったら、Android側でも修正しないといけない 28
© Chatwork - リリース作業の時間が短くなりました 改善した効果 (1/2) 29 ステップ Before (作業時間)
After (作業時間) コードフリーズ+リリースノート 2.0h 0.3h ストア申請 0.5h 0.2h リリース 0.5h 0.2h トータル 3.0h 0.7h トータルほぼ70%短縮!
© Chatwork - ワンコマンドでめっちゃ楽になった - 入社した方がいたら、リリースするのは分かりやすくなった - 自動化したから、ミスがほとんどなくなった 改善した効果 (2/2)
30
© Chatwork まとめ - 環境の設定は大変でした - ワンコマンドだととても楽になりました - fastlaneはとても便利です -
改善の設計を考えるのは大変でした - メンバー皆が早くなって喜んでくれてる 31
© Chatwork ありがとうございました 32 質問はありますか?