見出し画像

note AndroidアプリのサポートするOSバージョンを5.0以上にするために書いたドキュメントを公開します🍭 minSdkVersion 15 → minSdkVersion 21

この記事は、note AndroidアプリのサポートするOSバージョンを5.0以上にするために、社内Wikiに書いたドキュメントの内容です。
一部不要な部分を削ったり、加筆してます。

「これからAndroidアプリのサポートするOSバージョンを上げたい!」と考えている方々の参考になれば嬉しいです。

minSdkVersionいくつからいくつへ変更したか

minSdkVersion 15 から minSdkVersion 21 に変更しました。


以下から本題です。

----- 🍰 -----

サポートするOSバージョンを5.0以上にするために


目的

・ 開発効率を上げるため
・ ビルド早くなる
・ Material Designとかバックポート系意識しなくて済む
・ QA・確認工数の削減
・ 今後新しく入るメンバーへの負担軽減にもなる
        - 正直、これはそこそこでかい話
        - 自分みたいに4系開発も経験してれば頑張れるが皆そうではない...
・ セキュリティ
        - セキュリティが向上するわけではないが、いつまでも古いOSをサポートしていると、サービス全体のスピード感の低下や思わぬ事故にもつながる
・ お客さまサポートの負担軽減
        - サポートしてるOSバージョンが広いほど大変
        - 開発と同じで気にかける範囲を狭めて負担を軽減させる

目的に関する加筆コメント
個人的には「今後新しく入るメンバーへの負担軽減にもなる」は大事なことだと思ってます。
アプリを使ってくれるお客さまのことを第一として考えていますが、それとは別にこれから今後新しく入るメンバーが楽しく開発できる環境作りも大事していきます!という意思表明でもあります。

目的の箇条書きが見づらいので、画像にしたものも貼っておきます。


影響

・ Android 5.0未満の端末を使用しているお客さまにアプリの新しいアップデートを届けることが基本的にできなくなる
        - Android 5.0未満の端末にアップデートを出すこともできるが基本はしない
・ 要は新しくアップデートされたアプリを使えないってこと
・ アプリをインストールできないわけではなく、古いバージョンのアプリしか使えない
        - Android 5.0未満のサポートを終了前のアプリバージョンまでは新規でインストールして使える

影響に関する加筆コメント
どんな状態になるのかを伝えることが大事です。
誰もがAndroidアプリに詳しいわけではないので、誰が見てもどんな状態になるのかがわかるように意識して書いてます。特にお客さまとやり取りをするカスタマーサポートの方々にもわかるように意識して書いてます。


問い(悩んだこと)

Android 4.x系でアプリを使用してもらってる数%に対して機能改善を提供し続け目的は?

・ アプリを使い続けてほしい
・ 少しでもアプリでいい体験を提供したい
・数%なので、全体的な数字をあげる期待値は小さい

機能追加するためにサポートの終了を後回しするより、早めにサポートを終了して運用効率を上げる方がメリットが大きいのでは?

・ もっと色んな機能提供してからサポート終了したいなーと結構悩んだけど、どこまで実装しても満足しなさそうな + これから実装したいと考えてる機能は実装工数が結構かかりそうな予感がしたので、悔しいが早めにサポートを終了する方向性で動く方針にした

問いに関する加筆コメント
すごく色々悩みました。一人でも多くの人に新しいよりよいアプリを提供したい気持ちと、もっと早くよりよいアプリを作って届けたい気持ちとの葛藤でした。
ここらへんの問いはTwitterにも少し書いてます。


影響範囲のために調査した項目

・ Android 5.0未満の端末を使ってるお客さまの割合と活動率の調査
・ Google Playの統計情報からAndroid 5.0未満のOSバージョンの割合調査
・ FirebaseからのOSバージョン別アクティブユーザ割合
・ Google Play、Firebase共にどちらとも 5%未満だった
・ Android 4.X系の event別集計
        - Android 4.X系でアプリを使っている人がどういうアクションをしてるのかを集計
・ Monthly Android OS別アクティブユーザ調査
        - 非会員・会員を含めた割合調査
・ Monthly Android OS別 アクティブ会員調査
        - 会員のみの割合調査
・ Daily Android OS別アクティブユーザ 2018/11/27段階
        - Android 4.X系でアプリ人が全体の2.99%
        - 1ヶ月前と比べると -1%減くらいなので、かなり減少傾向

Daily Android OS別アクティブユーザ調査のSQL

FirebaseのイベントをBigQueryに流してる場合、以下のSQLで調査できます。テーブル名はご自身の環境のものに書き換えてください。
Monthlyを調べたい場合、dateのformatをいじるのと、対象とする期間を調整しているINTERVALをいじればMonthlyも似たSQLで調べられます。

WITH
 os_au AS (
 SELECT
   FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP_MICROS(event_timestamp), "Asia/Tokyo") AS date,
   device.operating_system_version AS operating_system_version,
   COUNT(DISTINCT user_pseudo_id) AS c
 FROM
   `xxx.analytics_xxxxxxxxx.events_*`
 WHERE
   _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 30 day))
   AND FORMAT_DATE("%Y%m%d", CURRENT_DATE('Asia/Tokyo'))
   AND device.operating_system = 'ANDROID'
 GROUP BY
   date,
   device.operating_system_version
 ORDER BY
   date,
   device.operating_system_version ),
 au AS (
 SELECT
   FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP_MICROS(event_timestamp), "Asia/Tokyo") AS date,
   COUNT(DISTINCT user_pseudo_id) AS au
 FROM
   `xxx.analytics_xxxxxxxxx.events_*`
 WHERE
   _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 30 day))
   AND FORMAT_DATE("%Y%m%d", CURRENT_DATE('Asia/Tokyo'))
   AND device.operating_system = 'ANDROID'
 GROUP BY
   date
 ORDER BY
   date)

SELECT
 au.date,
 operating_system_version,
 au.au,
 os_au.c
FROM
 os_au
JOIN
 au
ON
 os_au.date = au.date


Android 4.X系の event別集計

FirebaseのイベントをBigQueryに流してる場合、以下のSQLで調査できます。テーブル名はご自身の環境のものに書き換えてください。

SELECT
 FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP_MICROS(event_timestamp), "Asia/Tokyo") AS date,
 device.operating_system_version,
 event_name,
 user_id
FROM
 `xxxx.analytics_xxxx.events_*`
WHERE
 _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 10 day))
 AND FORMAT_DATE("%Y%m%d", CURRENT_DATE('Asia/Tokyo'))
 AND device.operating_system = 'ANDROID'
 AND device.operating_system_version LIKE '4.%'
 AND event_name != 'user_engagement'
 AND event_name != 'screen_view'
ORDER BY
 date

影響範囲のために調査した項目に関する加筆コメント
影響範囲の調査は、単純なユーザ割合だけでなく、どんな活動をしているのかなど、色んなデータを見て判断しました。
誰もが客観的に見てAndroid 4.X系のサポートを終了することに、納得感があるようにするためにです。
調査は 3 - 4ヶ月ほど継続的に行いました。継続的に調べることで、Android 4.X系でアプリを使っているお客さまの割合の減少傾向具合なども考慮して見れるので、継続して見ていくのがおすすめです。

いつ実施するか?

・ 11月下旬 or 12月頭あたりが希望

いつ実施するか?に関する加筆コメント
実際に実施したのは2018年12月20日です。


4.X系のサポートを終了までにアプリに入れる機能

・ FCM(Firebase Cloud Messaging)移行
        - Pushが引き続き届くようにするため


合わせて読みたい

・ Androidアプリ の minSdkVersion を21にした話
https://techlife.cookpad.com/entry/2018-05-15-android-minsdkversion-21

・ Android 4系のサポートを終了した話
https://buildersbox.corp-sansan.com/entry/2018/12/14/113000


サポートしてもらうことで、キンパツは大好物のミスドが食べられます!よろしくお願いします!