Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
35
Introduction to 3D/AR with Sceneview on Android
jeromecha
1
240
Other Decks in Programming
See All in Programming
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
350
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
10
4.1k
ソフトウェアの振る舞いに着目し 複雑な要件の開発に立ち向かう
rickyban
0
610
Reckoner における Datadog Browser Test の活用事例 / Datadog Browser Test at Reckoner
nomadblacky
0
180
物流システムにおけるリファクタリングとアーキテクチャの再構築 〜依存関係とモジュール分割の重要性〜
deeprain
1
280
React CompilerとFine Grained Reactivityと宣言的UIのこれから / The next chapter of declarative UI
ssssota
7
3.1k
あれやってみてー駆動から成長を加速させる / areyattemite-driven
nashiusagi
0
100
CSC509 Lecture 13
javiergs
PRO
0
150
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
270
[KR] Open-Source Ecosystems
skydoves
0
110
N.E.X.T LEVEL
pluu
2
250
Missing parts when designing and implementing Android UI
ericksli
0
380
Featured
See All Featured
The Language of Interfaces
destraynor
154
24k
How to train your dragon (web standard)
notwaldorf
88
5.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Typedesign – Prime Four
hannesfritz
40
2.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
BBQ
matthewcrist
85
9.3k
A Philosophy of Restraint
colly
203
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Agile that works and the tools we love
rasmusluckow
327
21k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
How to Ace a Technical Interview
jacobian
276
23k
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 質問はありますか?