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

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

Jerome
October 21, 2020

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

Chatwork Tech Talk #1

Jerome

October 21, 2020
Tweet

More Decks by Jerome

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. © Chatwork
    モバイルチームのリリースフロー(改善する前)
    9
    リリースノート作

    コードフリーズ ストア申請 リリース
    - 2週間に1回リリースしています

    View full-size slide

  10. © Chatwork
    モバイルチームのリリースフロー(改善する前)
    10
    日本語のみリリースノート準

    PdM*に確認お願いする
    翻訳依頼
    リリースブランチを作る
    各言語のリリースノート PR
    出す
    リリースブランチに
    マージする
    リリースブランチを作る
    GitHubのリリース
    ドラフトページを作る
    社内配布
    ワンコマンドで申請する
    Bash scriptでバイナリを
    アップロードして、ペアオペで申請す

    リリースブランチ終了
    Jiraでリリースをおこなう
    GitHubでリリースをおこなう
    PdMに連絡する
    リリースノート作成 コードフリーズ
    リリース
    ストア
    申請
    *PdM:プロダクトマネジャー

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. © Chatwork
    モバイルチームのリリースフロー改善
    15
    コードフリーズ
    リリースノート作

    ストア申請 リリース
    - ステップが変わらない、順番だけが変わる
    - iOSとAndroidのリリースノート作成するタイミングを合わせるため
    リリースノート作

    コードフリーズ ストア申請 リリース
    改善前
    改善後

    View full-size slide

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

    リリースブランチを作る
    GitHubのリリースドラフトペー
    ジを作る
    社内配布
    社内配布
    翻訳依頼
    *PdM:プロダクトマネジャー
    iOS Android

    View full-size slide

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

    View full-size slide

  18. © Chatwork
    カスタムレーン
    18

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  26. © Chatwork
    モバイルチームのリリースフロー(改善する前)
    26
    日本語のみリリースノート準

    PdM*に確認お願いする
    翻訳依頼
    リリースブランチを作る
    各言語のリリースノート PR
    出す
    リリースブランチに
    マージする
    リリースブランチを作る
    GitHubのリリース
    ドラフトページを作る
    社内配布
    ワンコマンドで申請する
    Bash scriptでバイナリを
    アップロードして、ペアオペで申請す

    リリースブランチ終了
    Jiraでリリースをおこなう
    GitHubでリリースをおこなう
    PdMに連絡する
    リリースノート作成 コードフリーズ
    リリース
    ストア
    申請

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide