このドキュメントは、Kyash内で共有しているAndroid/iOSのリリースに関する話をまとめたものです。
Kyashに興味を持っていただいた方に、リリースフローやチームのやりとりのイメージを持ってもらう目的で公開しています。
現在募集中の職種はこちらからご確認ください。
カジュアル面談ご希望の方はこちらからお申し込みください。
- モバイルチーム以外のメンバーに知っておいてほしいモバイルのリリース関連の知識をまとめます
- 事前のデプロイ作業やストア説明文の更新、リリース時のユーザー周知など、他チームとのコミュニケーションコストを下げるのを目的としています
- 原則2週間おきに新機能や改善、修正がリリースされます
- スケジュールを決めておくことで、他チームとの連携のコストを下げる目的で設定しています
- 間に合わないものは次のリリースに乗せるという点が電車のダイヤに似ていることから『リリーストレイン』と呼んでいます
- 大きなリリースの場合には2週間より長くなることもありますが、1週間おきにすることは開発・QA・リリース作業のコストの観点でナシとしています
- 原則段階的にリリースします
- リリース当日にリリース内容に関する周知をする場合、100%リリースにするか周知自体を遅らせるかを事前に相談しておく必要があります
- AndroidもiOSも、サーバサイドと異なりリリースの前に『申請』というプロセスが入ります
- 申請に出すことを『Submitする』と呼んでいます
- 審査員による審査プロセスが入るので、アプリをSubmitする前にサーバサイドのAPIもすべてリリースして本番環境で動作確認ができる状態にしておく必要があります
- Androidは0.5〜1日、iOSは1〜2日で承認されることが多いです
- Androidと比べてiOSの方が審査が厳しいです。審査員の判断によっては、以前承認されていた箇所でもRejectされることがあります
- Rejectされると、指摘箇所を修正して再申請・承認されるまでリリースできません
- Rejectされても間に合うよう、リリース予定の前週木曜日に申請するスケジュールにしています
- 承認後、ストアのコンソール画面から公開ボタンを押すとユーザーに公開されます
- AndroidもiOSも、アプリ更新時に段階的にユーザーにアップデートを促す段階的リリースという機能があります
- 致命的なバグが発生した時の影響を抑えるために原則段階的リリースにしています
- リリース当日にリリース内容に関する周知をする場合、100%リリースにするか周知自体を遅らせるかを事前に相談しておく必要があります
- Android/iOSの段階的リリースの仕様は以下のとおりです
項目 | iOS | Android |
---|---|---|
アプリ更新時に段階的更新の割合を指定できるか | できない ❌ リリース初日から7日間かけて 1%, 2%, 5%, 10%, 20%, 50%, 100%と変化 |
できる ⭕ 1%から99%まで指定可能 |
途中で段階的更新の割合を変更できるか | 一部できる 🔺 100%に上げることはできる |
できる ⭕ ただし割合を下げることはできない |
段階的更新中に全ユーザーがアプリを更新できるか | できる ⭕ 自動更新は行われないが ストアに直接いけば更新できる |
できない ❌ 更新可能なユーザーのみ更新できる |
- リリース後、すぐに修正するべき不具合が見つかった場合には、修正してhotfixとしてリリースします
- リリース判断は、プロダクトマネージャーとモバイルチームTech Lead、QAのメンバーで行います
- 不具合の影響度合いや段階的更新の割合によって、hotfixは段階的更新ではなく100%更新でリリースします
- Android/iOSのストアには、常時表示される説明文と更新時に表示されるアップデート文があります
- ストア画像やアップデート文は、原則Submit日の2日前17:00までに決めておきましょう
- 変更可能なタイミングは以下のとおりです
OS | タイミング |
---|---|
Android | いつでも変更でき、即時反映されます |
iOS | アプリ更新のタイミングで変更できます |
- 特定のバージョン以降のアプリを強制的に使わせたい場合に、強制アップデートを実施することがあります
- たとえば資金移動業対応のv7.0.0では、互換性のない変更が入っていたため強制アップデートを行いました
- 指定したバージョンより古いアプリを使っているユーザーは、アプリを開くと『最新バージョンのアプリが公開されています。最新アプリにアップデートしてください』というメッセージが表示され何も操作できません
- ユーザーにアップデートを強いることで離脱に繋がる可能性があるので、以下のケース以外は原則実施しません
- システム的に互換性を担保しない場合
- 重大なセキュリティリスクを修正した場合
- AndroidはGoogleから、iOSはAppleから新しいOSが公開されていきます
- サポートするOSが増えると運用のコストが嵩むので、定期的に古いOSのサポートを終了しています
- どのOSバージョンのサポートを終了するかは、ユーザーの利用状況やリリースのスケジュールを見て判断します
- サポート終了するユーザーへの案内を何度か行う必要があるので、最初の告知からサポート終了までは最低3ヶ月空ける形でスケジュールを組みます