こんにちは、森脇です。
今回は、弊社でのモバイルアプリのリリースフローと、リリース時に利用しているチェックリストについて、可能な範囲でご紹介したいと思います。
リリースサイクル
決まった期間でのイテレーションを回しているわけではなく、次のリリースに入れたい機能などを決めて、それを元にしてリリース目標日を決めるという方法でやっています。
現時点ではモバイルアプリ開発に専従できるリソースがないため、Webサイト側の改善などとのバランスを見て優先度を決定しています。
開発からリリースまでの流れ
git-flowを利用して開発をしており、developブランチへPUSHすると、Bitrise + Beta Crashlyticsで随時テスト版アプリを配布しています。開発対象の機能が完成した時点で、releaseブランチを作成しリリースへと進めます。
releaseブランチを作成した時点で、原則コードフリーズとし、本番環境に近いRC版アプリを配布してテストをします。
RC版でのテストに問題なければ、TestFligthやGoogle PlayのBeta配信でProduction版の最終的なテストを行い、問題がなければ申請・公開をします。
CI,テスト配布については別記事で詳細を書いています。
- Bitrise,fastlane,CrashlyticsでiOSアプリのテスト配布を自動化する - LCL Engineers' Blog
- Bitrise + GradleでAndroidアプリのCI環境構築 - LCL Engineers' Blog
- gradle-play-publisherを利用したGoogle Play申請の自動化 - LCL Engineers' Blog
リリースチェックリスト
Qiita Teamにチェックリストを用意して、それを元に漏れがないようにチェックしています。
RC版 配布前の前提条件
まず、RC版を配布できる状態であることを確認します。特にアプリ以外の部分での準備が忘れがちとなるので、それによってリリースが遅れることにならないように、早めに準備が整っているかを確認します。
- [ ] 今回のバージョンで開発予定の機能は全て消化できているか
- [ ] アプリから呼び出すAPI側に改修がある場合は、リリース準備はできているか
- [ ] Webサイトのランディングページの準備はできているか
- [ ] AppStore / Google Playの更新内容は準備はできているか
- [ ] リリース後のプロモーションの準備はできているか
RC版アプリでのテスト
この時点でコードフリーズし、2,3日かけて重点的にテストを行います。 テスト版アプリで各機能の詳細なテストは実施済みのため、このフェーズでは端末・機能に漏れがないように網羅的に確認しています。
- [ ] 今回の開発対象のテスト
- [ ] シナリオに沿った主要機能でのレグレッションテスト
- [ ] 新規インストール、バージョンアップで共に問題なく動作するか
- [ ] Google Analytics等の計測ログが正しく動作するか
- [ ] 各種OS・端末での確認
- [ ] Android 4.4
- [ ] Android 5.x
- [ ] Android 6.x
- [ ] iOS 8.x
- [ ] iOS 9.x
- [ ] iOS 10.x
Testflight / GooglePlay Beta配信
リリース前の最後のテストとして Testflight ,GooglePlayのBeta配信を行って確認をします。Production版アプリは、RC版と同じソースコードを元にしているため、この段階では細かいテストは行わず、簡単にクラッシュしてしまうなどの致命的な問題がないかを確認しています。
- [ ] 各種OS・端末での確認
- [ ] Android 4.4
- [ ] Android 5.x
- [ ] Android 6.x
- [ ] iOS 8.x
- [ ] iOS 9.x
- [ ] iOS 10.x
AppStore申請・Google Play公開
最終確認に問題がなければ、申請・公開へと進めます。 問題が発生した場合に対応できるように、公開は原則午前中に実施し、休み前は公開しないことを原則としています。
アプリリリース後
アプリリリース後の数日間は、クラッシュが発生していないかを重点的に監視し、問題があればすぐに対応します。
- [ ] releaseブランチをmasterにマージ
- [ ] Crashlyticsなど監視
最後に
以上、弊社でのモバイルアプリのリリースフローについて簡単に紹介しました。 Webアプリケーションのリリースと比べて、まだまだ人力作業が多く非効率な点は否めませんので、品質を保ちつつより効率のよいやりかたとを今後も考えていきたいと思います。