見出し画像

AndroidアプリのOSバージョンサポート基準を見直してみた

個人開発しているAndroidアプリでサポートするOSのバージョンを見直してみました。

きっかけ

targetSdkVersion 29 の対応期限が迫ってきたので個人開発アプリをちまちまと対応させていたら、これは minSdkVesrion も見直すタイミングなんじゃないか?という考えが頭をよぎりました。

targetSdkVersion は「メインターゲットになるOSのバージョン」です。アプリの挙動は変わることがありますが、ユーザーがダウンロードできるかどうかには影響しません。

一方で minSdkVersion は「アプリをインストールできる最低のAPIレベル」なので、見直すと対応OSが変わります。minSdkVersion を上げるということは、古いOSでアプリを使ってくれているユーザーを切り捨てる、ということになります。

手間を考えたらサポート範囲は極力狭くしたい。でもユーザーの絶対数が少ないから使ってくれているユーザーを手放すのは忍びないし惜しい。さてどうしましょう。

アプリの現状

ここ数年で新しく作ったアプリは minSdkVersion を21にしていますが、古株は16もしくは19です。

minSdkVersion 16 は Android 4.1、minSdkVersion 19 は Android 4.4なので、要するに Android 4系がサポート対象なんですよね。

なんなら minSdkVersion 8 (Android 2.2)や 9 (Android 2.3)で開発をスタートし、年月が経つにつれてさすがに2系はサポートできなくなって minSdkVersion を 16 や 19 まで引き上げた、というアプリが大半です。

歴史がある分、古いOSで使い続けているユーザーもそれなりにいるんです。

アプリ上のシェア

感覚だけだと話が前に進まないので、古いOSを使っているユーザーって実際問題どれくらいいるの?を調査。

Google Play Console で(自分的には)主力級アプリのOSシェアを集計してみました。

アプリA
 10系: 42.79%, 9系: 28.53%, 8系: 12.95%, 7系: 6.75%, 6系: 4.17%, 5系: 1.77%, 4系: 2.99%
アプリB
 
10系: 31.92%, 9系: 30.57%, 8系: 15.41%, 7系: 11.80%, 6系: 5.83%, 5系: 2.74%, 4系: 1.65%
アプリC
 
10系: 41.19%, 9系: 29.31%, 8系: 12.59%, 7系: 7.73%, 6系: 3.78%, 5系: 2.95%, 4系: 2.37%
アプリD
 
10系: 28.89%, 9系: 24.50%, 8系: 13.68%, 7系: 11.72%, 6系: 7.01%, 5系: 6.62%, 4系: 7.44%

アプリごとに多少の差はあれど、Android 7~10でシェアの大半を占めています。昔と比べると新しめのバージョンを使っているユーザーの比率がぐんと高まってますね。

ちなみにアプリDは一番の古株。Android 2系が主流だった時代にユーザーを集め、その後もしぶとく生き残っているアプリなので、古めのバージョン利用率が高いのは予想通りです。

世間の流れ

世間的にはどんな感じか、もざっくり調べてみました。

Money Forward
・アプリによって15~23とまちまち
AndroidアプリのAndroidバージョンサポート基準を定めました | Money Forward Engineers' Blog

クックパッド
・minSdkVersion 21 (= Android 5.0)
Androidアプリ の minSdkVersion を21にした話 - クックパッド開発者ブログ
・2018年の記事ですが、その後に記事を読む限りでは基準の見直しはされていないようなので、いまも minSdkVersion は21なんじゃないかと

note
・minSdkVersion 21 (= Android 5.0)
2020年2月における note Androidアプリの開発現場|キンパツ / Shinobu Okano|note

ポケモンGO
・minSdkVersion 23 (= Android 6.0)
ポケモンGO、旧型スマホのサポート終了。iPhone 6・iOS 11・Android 5以前は非対応 - Engadget 日本版
・Android 5のサポート終了ということは minSdkVersion 23 相当になる、ということ

もう Android 4系はサポートしなくていいよね、という流れです。5系は切るかどうか微妙なラインで、6系はまだサポートしておきたい、というところでしょうか。

方針決め

さてさて、これらを踏まえて方針決めです。まあ、個人開発なんで決めの問題なんですけど。

ちょっと悩みましたが、今回はやや保守的な方針に決めました。

・アクティブな開発が続いているアプリは minSdkVersion を 21 にする
・ただし、古いOSでの利用者が多いアプリ(前述のアプリDなど)は現状維持
・メンテナンスのみで積極的に開発していないアプリも現状維持
・現状維持としたアプリは大きめの改修をするタイミングで  minSdkVersion を 21 にすることを検討する

開発が続いているアプリはさすがに 4系のサポートは打ち切ろうかと。限られた時間は新規機能の追加に使いたいな、と。

開発がアクティブじゃないアプリは積極的に機能追加することもないので、もうしばらく4系をサポートしても手間に大差ないと判断しました。

直近半年くらいはこの方針で行こうと思います。

余談

このへん、仕事だとドライに決められるんですよねー。自分の仕事はSIなので、サポート範囲は頂戴するコストに直結します。「保守費の中で面倒見れるのは直近Nバージョンです」みたいな取り決めになることが多いので、それに合わせて粛々とやっていくだけ。

個人開発は言ってしまえば自分の余暇をどう捉えるか、なので、いろんな考え方ができます。

個人開発は時間的リソースが限られているのだから一層ドライに割り切る、というのが合理的ではあります。でもそこをなかなか割り切れないのが個人開発の難しさであり面白さなのかなー、とも思っています。

----
※ 今回の見出し画像は ooceey @ Pixabay から拝借しました。

この記事が気に入ったらサポートをしてみませんか?