はじめに
モバイルアプリの開発をするとき、依頼者と開発者の間で決めておくべきことに、サポートするOSのバージョンとどの機種で動作検証するかという項目があります。
ここをあいまいにしたまま開発を進めてしまうと、プロジェクトの終盤や保守フェーズで、「想定外の古いスマホで画面が崩れる」「お客様の個人スマホでバグが起き、急な修正コストが発生する」といったトラブルに発展してしまいます。
サポートするOSのバージョンと検証機種の選定基準を調べたので記事にしたいと思います。
サポートするOSのバージョン
まず、サポートという言葉の定義ですが、開発側として動作を検証し、動作を保証するという意味で使っています。
上記を前提として、サポートするOSのバージョンは最新と第2か第3世代前とするのが良いと思います。
サポート対象を多くするとテスト対象や何かあった時の対応が増えるため、工数に関わってきます。
依頼者との合意形成では、サポートするOSのバージョンと、最低OSバージョンは分けるのもありかと思います。
サポートするOSのバージョンは、上述したように動作検証し動作を保証するバージョンで、
最低OSバージョンは、開発側で動作検証しないが使用できるバージョンとして含めるバージョンという意味です。サポートするOSのバージョンより低い、かつ、最低OSバージョン以上のバージョンで、不具合があった場合は、別途工数をもらって対応するイメージです。
以下のようなイメージとなります。
動作検証するバージョンは最新と第2世代前までの合計3世代とし、この三つのバージョンはテストし、動作を保証する。
第3世代前のOSのバージョンも最低OSバージョンには含めるが、テスト対象外とし、不具合があれば、別途工数をもらって対応する
どのバージョンまでをサポートする基準ですが、以下のサイトで使用率を目安に決めるのがいいと思います。
サポートする機種
動作を保証する機種も決めておく必要があります。
もし決めておかないと、この機種だと動かないという不具合が発生した時、開発側で瑕疵対応をするのか、依頼者側が別途修正を発注するのか曖昧になります。
動作を保証する機種は、依頼者側の要望、実際に用意できる機種、テストの工数との兼ね合いで変わってくる部分であります。
iOSの場合、iPhoneSEとその時の主力製品の二つが基本的には問題ないと思います。
Androidの場合は、最低限、基準機としてGoogle Pixelシリーズを用意し、その他にオプションで、Samsung Galaxy シリーズ、SHARP(AQUOS)、Sony(Xperia)、Xiaomi、OPPOあたりを用意するのがいいと思います。
運用にあたって
OSのバージョンは更新されていくので、それに伴ってサポートするバージョンの下限も上げていく必要があります。
サポートするバージョンの下限が上がることと、移行条件についての合意も最初の方にしておくと、後々楽かなと思います。
移行条件は、下記のようなイメージです。
- OSの新バージョンがリリースされてから3ヶ月後、サポートするOSのバージョンを上げる
この時も、バージョンの使用率を確認して、上げるかどうか判断するのがいいと思います。
なぜ引き上げる必要があるか?
古いOSをサポートし続けるには、以下のようなデメリット(コスト)が発生する
- 最新の便利な機能(新しい画面のデザインや、安全性の高い仕組みなど)が使えない
- 古いOSのためだけに、わざわざ別のプログラムを書かなければいけない
- テストに必要な古い端末をずっと保管・管理しなければいけない
バージョンを上げる手順
ステップ1
- 新しいOSで動作確認し、問題があれば修正し、リリースする
(最低サポートバージョンは古いまま据え置き)
ステップ2
- 合意した移行期間終了後、使用率を確認し、問題なければ、古いOSのサポートを「終了」する
- 使用率はOSのバージョン使用率が確認できるサイトや、Firebaseを導入している場合はアクティブユーザーのOSバージョンの割合を確認する
サポート対象外になったユーザーはどうなるか?
サポートを切っても、アプリが使えなくなるわけではなく、古いOSのユーザーは今のバージョンからアップデートできなくなります
テストパターン
サポートするOSのバージョンと機種が決まれば、テストが可能です。
OSのバージョンを上げてしまうと、戻せないので注意が必要です。
テストパターンは、OS x 機種分用意する必要はなく、対象のOSの各バージョンの端末と機種がカバーできれば問題ありません。
例えば、最新のOSと一つ前のOSをサポートする。機種はPixelとXperiaだとすると
最新のOSバージョンのPixelと一つ前のOSバージョンのXperiaでテストします。