前職でAndroidのアプリケーションに携わる業務が多く、要件生理時に作成するアプリの対応バージョンについて話し合う場合が多かったので、
対応OSバージョンを決める際に抑えてたポイントを備忘録がてら書き出します。
iOSアプリ開発やWebアプリ開発でも同等の考えはできると思います。
当時抑えていたものはこの2点+αでした。
(+αについては最後に記載します)
- 機種の制限の有無
- 各端末でのシェア率による検討
1. 機種の制限の有無
対応OSを決めてから要件を整理することは原則ありません。
機能等の要件を整理したうえで、開発の要件を抑えるのが基本なので要件が固まり次第、決まるのが定石です。
いくら開発側が「Android 13で開発したい!」といっても顧客側が「この機種で動くものを作ってほしい」と言われたら該当機種に搭載されているOSで頑張るしかありません。
ただし、上記のような事象は業務用で利用するアプリ開発でのみ発生するパターンです。
世の中に出るアプリの場合は1種のみの指定等はまずありません。ですので「じゃあこの記事書いてること意味ないやないか!」ということはありませんので、気楽に読んでいただければ幸いです。
2. 各端末でのシェア率による検討
シェア率の検討にはStatcounter GlobalStatsを利用してターゲットのOSの各バージョンのシェア率を確認しています。
こちらのサイトのデータは基本無料で利用できるので商用で利用しても問題ありません。
- Statcounter GlobalStat: https://gs.statcounter.com/
- 統計データについて: https://gs.statcounter.com/factsheet
国内向けのAndroidアプリを作成する際にはこちらの表から各OSの利用率を確認していました。
https://gs.statcounter.com/android-version-market-share/mobile-tablet/japan
顧客の方もプロの人ではないため、「サポート期間がまだ残っているOS」とか「全員に触られるようにしたいからとりあえず全部!」と要求する顧客もいます。
そんな方たちと対峙したときには、ぜひこちらのサイトのデータを利用して対応OSの検討をすることをおすすめします。
※私が担当していた際には上位80%に含まれるOSを対象にする場合が多かったです。
Androidの場合はカスタムROMを搭載した機種も少なくないため、MMD研究所様の調査結果から上位のAndroid機種で利用されているROM(OPPOの場合、Color OSなど)も対応OSの定義に利用していました。
https://mmdlabo.jp/investigation/detail_2288.html
+α分は技術的問題か観点により開発側に負担や条件を振りにさせないため、必ず考えていた観点です。
minSDKへの影響
アプリによっては一回開発しただけでそのあとOSアップデート対応を行わない場合がありますが、原則サービス終了するまでOSアップデートは行います。
AndroidではtargetSdkVersionに付随してminSdkVersionの設定が必要となり、targetSdkVersionのバージョンによってminSDKVersionのバージョンが決まっています。例えばAndroid 10の際にはAndroid 5.1が必要になるため、Android 5.1未満にしている場合はストアにも公開できない可能性があります。
そのため、開発対象のアプリケーションの対象バージョンに対するminSdkVersionは都度確認する必要があります。
対応OSを増やしたことによる影響
パッと思い浮かぶリスクは以下になります。
- OSバージョン毎の処理
- テスト項目の増加
OSバージョン毎の処理
OSによってはDeprecateにより古いAPIを使用できない場合や新しいAPIが使用できずにエラーが発生するため、各OSバージョンによって処理を分岐する必要がある場合があります。
(特にハードウェアを動かす処理やManifest, Permissionまわりで体感多い気がします)
またカスタムROMの場合、特殊なAPIが挙動が通常のAndroidと異なる場合が存在するので、機能によっては考慮する幅が広がってしまうリスクがあります。
テスト項目の増加
OSバージョンごとに挙動を変える場合、その分テスト項目が増えてしまい、潜在的なリスクが単純に増加します。
また、古いOSが増えれば増えるほど入手が困難になってしまう可能性があります。
結合テスト、システムテストではテスト要員が必要になり、スケジュールへの影響も大きくなるので、このあたりのことを考えると必要のないOSは対応しないのが良策だと思います。
最後に
Androidメインになってしまいましたがアプリ開発時の対応OSバージョンを決める考え方について述べました。
適切に対応バージョンを決めることで開発含め、その後の運用保守も負担のかからないものになりますので、バージョン設定についてはかなり重要だと思います。
この記事で少しでもお役に立てられば幸いです。
話変わりますが、「劇場版 ぼっち・ざ・ろっく! Re:」 見た後に泣きました。
OP曲数え切れないくらいに聞き返しました。