Slide 1

Slide 1 text

Chatwork Tech Talk #1 Chatwork株式会社 開発本部 モバイルアプリケーション開発部 Cha Jerome モバイルアプリケーションチームの リリースフロー改善 1

Slide 2

Slide 2 text

© Chatwork 自己紹介 - CHA Jerome (チャ・ジェローム) - フランス人 - 2015年に大学卒業 - 2016年8月日本に来ました - ChatworkのAndroidエンジニア - Android / iOS 両方出来ます 2 @yujiro45 JeromeCHA twitch.tv/yujiro45 (毎日21時半ぐらいに配信してる)

Slide 3

Slide 3 text

© Chatwork 今日のGoal - リリースの作業をもっと楽に なるようにする - リリースフローのペアオペ時間をなくす - fastlaneやスクリプトを利用して自動化することで、とても便利になる 3

Slide 4

Slide 4 text

© Chatwork アジェンダ - 改善する前のリリースフロー - 問題 - 改善した後のリリースフロー - 改善のときに効果と苦労したところ - まとめ 4

Slide 5

Slide 5 text

© Chatwork 今モバイルチームで使っているツール 5

Slide 6

Slide 6 text

© Chatwork fastlaneとは? - iOS及びAndroidアプリのビルドやリリースを自動化してくれる - CUIやCIツールなどから実行することで、様々な処理を自動化することができる - Laneと呼ばれるアクションをRubyで作れる - アクションの組み合わせはレーンでおこなう 6

Slide 7

Slide 7 text

© Chatwork iOS/Androidチームのやり方の違い 7 - fastlane - ペアオペ:リリース - git-flowコマンドを使ってい ます - Bash script - fastlaneを使ってない - ペアオペ:ストア申請+リ リース - Gitのツールを使っています (SourceTree、GitKraken) iOS Android

Slide 8

Slide 8 text

© Chatwork iOS / Androidチームの異なるリリースフロー 8 - AndroidとiOSチームはお互いのリリースフローを知らない iOS Android

Slide 9

Slide 9 text

© Chatwork モバイルチームのリリースフロー(改善する前) 9 リリースノート作 成 コードフリーズ ストア申請 リリース - 2週間に1回リリースしています

Slide 10

Slide 10 text

© Chatwork モバイルチームのリリースフロー(改善する前) 10 日本語のみリリースノート準 備 PdM*に確認お願いする 翻訳依頼 リリースブランチを作る 各言語のリリースノート PR 出す リリースブランチに マージする リリースブランチを作る GitHubのリリース ドラフトページを作る 社内配布 ワンコマンドで申請する Bash scriptでバイナリを アップロードして、ペアオペで申請す る リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する リリースノート作成 コードフリーズ リリース ストア 申請 *PdM:プロダクトマネジャー

Slide 11

Slide 11 text

© Chatwork 問題 - iOSとAndroidのリリースノートを作成するタイミングが違う - Androidチームはコードフリーズする前にやる - iOSチームはコードフリーズした後にやる - AndroidとiOSチームはお互いのやり方を知らない - 時間かかる - 各自のRubyのバージョンが違う - 手動で作業するとミスしそう - たまーにgit-flowがおかしくなっている - Windows環境でBash scriptが対応されていない - リリースする時に、たまに自信がない 11

Slide 12

Slide 12 text

© Chatwork 12 どうやって改善するの?

Slide 13

Slide 13 text

© Chatwork どうやって改善するの? 13 - Bash scriptをやめる - Windows環境では使えないため - ミスをなくすために、ワンコマンドにする - 出来れば、全部をfastlaneで自動化にする - iOSとAndroidのステップのタイミングを同じにする - git-flowをfastlaneに任せる - Bundlerでライブラリのバージョンを管理する

Slide 14

Slide 14 text

© 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のライブラリのバージョンを管理することが出来るツールです

Slide 15

Slide 15 text

© Chatwork モバイルチームのリリースフロー改善 15 コードフリーズ リリースノート作 成 ストア申請 リリース - ステップが変わらない、順番だけが変わる - iOSとAndroidのリリースノート作成するタイミングを合わせるため リリースノート作 成 コードフリーズ ストア申請 リリース 改善前 改善後

Slide 16

Slide 16 text

© Chatwork モバイルチームのリリースフロー改善 1. コードフリーズ 16 リリースブランチを作る GitHubのリリースドラフトペー ジを作る PdMに確認をお願いする 社内配布 日本語のみの リリースノート準備 自動化 リリースブランチを作る 各言語のリリースノート PR 出す リリースブランチにマージす る リリースブランチを作る GitHubのリリースドラフトペー ジを作る 社内配布 社内配布 翻訳依頼 *PdM:プロダクトマネジャー iOS Android

Slide 17

Slide 17 text

© Chatwork モバイルチームのリリースフロー改善 1. コードフリーズ 17 $ bundle exec fastlane code_freeze リリースブランチを作る GitHubのリリース ドラフトページを作る PdMに確認をお願いする 社内配布 日本語のみの リリースノート準備 自動化 翻訳依頼

Slide 18

Slide 18 text

© Chatwork カスタムレーン 18

Slide 19

Slide 19 text

© Chatwork 19 19 モバイルチームのリリースフロー改善 1. コードフリーズ - 翻訳依頼 - 6言語に対応している(日本語、英語、タイ語、スペイン語、中国語繁体字、ベトナム語) - Google Spreadsheetを使っている

Slide 20

Slide 20 text

© Chatwork モバイルチームのリリースフロー改善 2. リリースノート作成 20 Jiraの完了したチケット 日本語のみリリースノート PdMに確認お願いする 翻訳依頼 各言語のリリースノート作成 各言語のリリースノート作成 リリースブランチからブラン チを作る リリースノートレビュー依頼 自動化 iOS & Android iOS & Android

Slide 21

Slide 21 text

© Chatwork モバイルチームのリリースフロー改善 2. リリースノート作成 21 各言語のリリースノート作成 リリースブランチからブラン チを作る リリースノートレビュー依頼 自動化 $ bundle exec fastlane release_note iOS & Android

Slide 22

Slide 22 text

© Chatwork モバイルチームのリリースフロー改善 3. ストア申請 22 ワンコマンドで申請する Bash scriptでバイナリをアップ ロードして、ペアオペで申請する ワンコマンドで申請する iOS Android iOS & Android

Slide 23

Slide 23 text

© Chatwork モバイルチームのリリースフロー改善 3. ストア申請 23 $ bundle exec fastlane submit ワンコマンドで申請する iOS & Android

Slide 24

Slide 24 text

© Chatwork モバイルチームのリリースフロー改善 4. リリース 24 リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する 自動化 iOS & Android iOS & Android

Slide 25

Slide 25 text

© Chatwork モバイルチームのリリースフロー改善 4. リリース 25 リリースブランチ終了 JIRAでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する 自動化 $ bundle exec fastlane release iOS & Android

Slide 26

Slide 26 text

© Chatwork モバイルチームのリリースフロー(改善する前) 26 日本語のみリリースノート準 備 PdM*に確認お願いする 翻訳依頼 リリースブランチを作る 各言語のリリースノート PR 出す リリースブランチに マージする リリースブランチを作る GitHubのリリース ドラフトページを作る 社内配布 ワンコマンドで申請する Bash scriptでバイナリを アップロードして、ペアオペで申請す る リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する リリースノート作成 コードフリーズ リリース ストア 申請

Slide 27

Slide 27 text

© Chatwork モバイルチームのリリースフロー(改善した後) 27 日本語のみの リリースノート準備 翻訳依頼 リリースノート作成 コードフリーズ リリース ストア申請 $bundle exec fastlane release_note $bundle exec fastlane code_freeze $bundle exec fastlane submit $bundle exec fastlane code_freeze

Slide 28

Slide 28 text

© Chatwork 改善のときに苦労したところ - Rubyの経験がほぼない - 環境の設定が大変だった - GitHub APIからバイナリをアップロードするのは大変だった - Jira APIを確認するために、個人アカウント作らないといけない - 本番でテストするのは禁止! - PRをレビューするのが難しかった - やり方とコードを共有するために、全員にレビューしてもらった - iOS側で修正があったら、Android側でも修正しないといけない 28

Slide 29

Slide 29 text

© Chatwork - リリース作業の時間が短くなりました 改善した効果 (1/2) 29 ステップ Before (作業時間) After (作業時間) コードフリーズ+リリースノート 2.0h 0.3h ストア申請 0.5h 0.2h リリース 0.5h 0.2h トータル 3.0h 0.7h トータルほぼ70%短縮!

Slide 30

Slide 30 text

© Chatwork - ワンコマンドでめっちゃ楽になった - 入社した方がいたら、リリースするのは分かりやすくなった - 自動化したから、ミスがほとんどなくなった 改善した効果 (2/2) 30

Slide 31

Slide 31 text

© Chatwork まとめ - 環境の設定は大変でした - ワンコマンドだととても楽になりました - fastlaneはとても便利です - 改善の設計を考えるのは大変でした - メンバー皆が早くなって喜んでくれてる 31

Slide 32

Slide 32 text

© Chatwork ありがとうございました 32 質問はありますか?