Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モバイルアプリケーションチームのリリースフロー改善

B28f12cca37651f7d689ea90e165fad8?s=47 Jerome
October 21, 2020

 モバイルアプリケーションチームのリリースフロー改善

Chatwork Tech Talk #1

B28f12cca37651f7d689ea90e165fad8?s=128

Jerome

October 21, 2020
Tweet

Transcript

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

    1
  2. © Chatwork 自己紹介 - CHA Jerome (チャ・ジェローム) - フランス人 -

    2015年に大学卒業 - 2016年8月日本に来ました - ChatworkのAndroidエンジニア - Android / iOS 両方出来ます 2 @yujiro45 JeromeCHA twitch.tv/yujiro45 (毎日21時半ぐらいに配信してる)
  3. © Chatwork 今日のGoal - リリースの作業をもっと楽に なるようにする - リリースフローのペアオペ時間をなくす - fastlaneやスクリプトを利用して自動化することで、とても便利になる

    3
  4. © Chatwork アジェンダ - 改善する前のリリースフロー - 問題 - 改善した後のリリースフロー -

    改善のときに効果と苦労したところ - まとめ 4
  5. © Chatwork 今モバイルチームで使っているツール 5

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

    アクションの組み合わせはレーンでおこなう 6
  7. © Chatwork iOS/Androidチームのやり方の違い 7 - fastlane - ペアオペ:リリース - git-flowコマンドを使ってい

    ます - Bash script - fastlaneを使ってない - ペアオペ:ストア申請+リ リース - Gitのツールを使っています (SourceTree、GitKraken) iOS Android
  8. © Chatwork iOS / Androidチームの異なるリリースフロー 8 - AndroidとiOSチームはお互いのリリースフローを知らない iOS Android

  9. © Chatwork モバイルチームのリリースフロー(改善する前) 9 リリースノート作 成 コードフリーズ ストア申請 リリース -

    2週間に1回リリースしています
  10. © Chatwork モバイルチームのリリースフロー(改善する前) 10 日本語のみリリースノート準 備 PdM*に確認お願いする 翻訳依頼 リリースブランチを作る 各言語のリリースノート

    PR 出す リリースブランチに マージする リリースブランチを作る GitHubのリリース ドラフトページを作る 社内配布 ワンコマンドで申請する Bash scriptでバイナリを アップロードして、ペアオペで申請す る リリースブランチ終了 Jiraでリリースをおこなう GitHubでリリースをおこなう PdMに連絡する リリースノート作成 コードフリーズ リリース ストア 申請 *PdM:プロダクトマネジャー
  11. © Chatwork 問題 - iOSとAndroidのリリースノートを作成するタイミングが違う - Androidチームはコードフリーズする前にやる - iOSチームはコードフリーズした後にやる -

    AndroidとiOSチームはお互いのやり方を知らない - 時間かかる - 各自のRubyのバージョンが違う - 手動で作業するとミスしそう - たまーにgit-flowがおかしくなっている - Windows環境でBash scriptが対応されていない - リリースする時に、たまに自信がない 11
  12. © Chatwork 12 どうやって改善するの?

  13. © Chatwork どうやって改善するの? 13 - Bash scriptをやめる - Windows環境では使えないため -

    ミスをなくすために、ワンコマンドにする - 出来れば、全部をfastlaneで自動化にする - iOSとAndroidのステップのタイミングを同じにする - git-flowをfastlaneに任せる - Bundlerでライブラリのバージョンを管理する
  14. © 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のライブラリのバージョンを管理することが出来るツールです
  15. © Chatwork モバイルチームのリリースフロー改善 15 コードフリーズ リリースノート作 成 ストア申請 リリース -

    ステップが変わらない、順番だけが変わる - iOSとAndroidのリリースノート作成するタイミングを合わせるため リリースノート作 成 コードフリーズ ストア申請 リリース 改善前 改善後
  16. © Chatwork モバイルチームのリリースフロー改善 1. コードフリーズ 16 リリースブランチを作る GitHubのリリースドラフトペー ジを作る PdMに確認をお願いする

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

    code_freeze リリースブランチを作る GitHubのリリース ドラフトページを作る PdMに確認をお願いする 社内配布 日本語のみの リリースノート準備 自動化 翻訳依頼
  18. © Chatwork カスタムレーン 18

  19. © Chatwork 19 19 モバイルチームのリリースフロー改善 1. コードフリーズ - 翻訳依頼 -

    6言語に対応している(日本語、英語、タイ語、スペイン語、中国語繁体字、ベトナム語) - Google Spreadsheetを使っている
  20. © Chatwork モバイルチームのリリースフロー改善 2. リリースノート作成 20 Jiraの完了したチケット 日本語のみリリースノート PdMに確認お願いする 翻訳依頼

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

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

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

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

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

    自動化 $ bundle exec fastlane release iOS & Android
  26. © Chatwork モバイルチームのリリースフロー(改善する前) 26 日本語のみリリースノート準 備 PdM*に確認お願いする 翻訳依頼 リリースブランチを作る 各言語のリリースノート

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

    ストア申請 $bundle exec fastlane release_note $bundle exec fastlane code_freeze $bundle exec fastlane submit $bundle exec fastlane code_freeze
  28. © Chatwork 改善のときに苦労したところ - Rubyの経験がほぼない - 環境の設定が大変だった - GitHub APIからバイナリをアップロードするのは大変だった

    - Jira APIを確認するために、個人アカウント作らないといけない - 本番でテストするのは禁止! - PRをレビューするのが難しかった - やり方とコードを共有するために、全員にレビューしてもらった - iOS側で修正があったら、Android側でも修正しないといけない 28
  29. © Chatwork - リリース作業の時間が短くなりました 改善した効果 (1/2) 29 ステップ Before (作業時間)

    After (作業時間) コードフリーズ+リリースノート 2.0h 0.3h ストア申請 0.5h 0.2h リリース 0.5h 0.2h トータル 3.0h 0.7h トータルほぼ70%短縮!
  30. © Chatwork - ワンコマンドでめっちゃ楽になった - 入社した方がいたら、リリースするのは分かりやすくなった - 自動化したから、ミスがほとんどなくなった 改善した効果 (2/2)

    30
  31. © Chatwork まとめ - 環境の設定は大変でした - ワンコマンドだととても楽になりました - fastlaneはとても便利です -

    改善の設計を考えるのは大変でした - メンバー皆が早くなって喜んでくれてる 31
  32. © Chatwork ありがとうございました 32 質問はありますか?