Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DroidKaigi 2020 - アプリの閉じ方

shinmiy
March 16, 2020

DroidKaigi 2020 - アプリの閉じ方

何ヶ月もかけて開発したアプリを、いよいよGoogle Playに公開!リリース当初は話題になるものの、次々に新しいサービスが生まれる中徐々に埋もれていってしまいます。少しの間足掻いてみますが、その努力も虚しくとうとうサービスを終了する判断が下されます。Androidアプリのエンジニアとして所属するあなたは、アプリをクローズするタスクを任されることになりました。

公開したアプリをクローズすることはなかなか経験することのないタスクでありながら、一度きりで絶対に失敗できない重要なものでもあります。特に課金などお金に関わる部分で失敗すると、目も当てられない状況に陥ってしまいます。しかもアプリを公開することに関しては世の中に知見が溢れている一方で、閉じる事に関する知見はあまりありません。

本セッションではサービスを終了することが決まったアプリをクローズするにあたり、
- シナリオで考えるアプリの終了方法
- それぞれで取れる対策と行動
- アプリ終了に関する落とし穴とその回避方法
について取り上げる予定です。

shinmiy

March 16, 2020
Tweet

More Decks by shinmiy

Other Decks in Programming

Transcript

  1. アプリ 閉じ方
    @shinmiy
    Feb. 20, 2020 / DroidKaigi 2020 Day 1

    View Slide

  2. Who?
    @shinmiy
    DeNA / タクシー配車アプリ「MOV」
    2

    View Slide

  3. 3

    View Slide

  4. サービスを終了することになった訳だが
    4

    View Slide

  5. 7

    View Slide

  6. Google Playにおける
    「削除」
    8

    View Slide

  7. Google Playにおける「削除」
    Google Playから
    アプリを落とすって
    どういうこと?
    9

    View Slide

  8. Google Playにおける公開ステータス
    ● 「公開中」
    ● 「アップデートを処理しています」
    ● 「アップデート否承認」
    ● 「公開停止中」
    ● 「停止中」
    ● 「削除済み」
    Google Playにおける「削除」
    11

    View Slide

  9. 12
    Google Playにおける「削除」
    一度公開したアプリ
    Google Playから
    完全に「削除」すること できない※
    ※一部特殊な場合を除く

    View Slide

  10. Google Playにおける「削除」
    13
    一番近い手として
    「公開停止中」
    状態にするにする

    View Slide

  11. 14

    View Slide

  12. 15

    View Slide

  13. 16

    View Slide

  14. 17
    アプリを「非表示」にする に
    ● 最新 デベロッパー販売 / 配布契約に同意していること。
    ● 対応が必要なエラーがアプリにないこと。
    ○ コンテンツ レーティング質問票
    ○ アプリ ターゲット ユーザーとコンテンツに関する詳細情報
    …など
    ● 非公開にするアプリで時間指定公開が有効になっていないこと。

    View Slide

  15. ● 公開済み アプリ 場合:「製品版リリース 管理」権限が必要
    ● 公開前 アプリ 場合:「テスト版トラック リリース管理ができます」権限が必要
    18
    アプリを「非表示」にする に

    View Slide

  16. アプリを「非表示」にする に
    19

    View Slide

  17. アプリを「非公開」にすると
    どうなる?
    20

    View Slide

  18. アプリを「非表示」にする と
    ● Google Play内 検索に 引っかからなくなる
    ○ インストール・未インストール関わらず
    ○ 比較的すぐ(そ 日 内に)
    21

    View Slide

  19. ● 直リンク https://play.google.com/store/apps/details?id=xxx
    ○ インストールしたことがない:
    ○ ログインしてない:
    ○ インストールしてる:
    ○ アンインストールした:
    ○ PCも同様
    アプリを「非表示」にする と
    26

    View Slide

  20. アプリを「非表示」にする と
    ● Google Playアプリ内
    ドロワーメニュー→マイアプリ&ゲーム
    ○ インストールしたことがない:
    ○ インストールしてる:
    ○ アンインストールした:
    ○ PCも同様
    ○ ライブラリから削除しても直リンで見える
    27

    View Slide

  21. アプリを「非表示」にする と
    お客さんが中にいる状態でお店 シャッターを下ろす
    (勝手口 開きっ なしな で、リピーター 出入り自由)
    28

    View Slide

  22. シナリオ
    29

    View Slide

  23. 放置
    Scenario 1
    30

    View Slide

  24. シナリオ1:放置
    31
    リリース! → 売れない…
              ↓
            人割けない… → 更新できない…
                        ↓
                     _人人人人_
                     > 放置 <
                      ̄Y^Y^Y ̄

    View Slide

  25. シナリオ1:放置
    ど ような場合に取れる手段?
    • 本当 意味でサーバーレス
    • 広告収入 >= サーバー費用
    32

    View Slide

  26. シナリオ1:放置
    (当たり前ですけれど)
    コンソールで なにもしない
    もともと少ないユーザーがだんだん減っていく を
    ダッシュボードで眺めておきましょう
    33

    View Slide

  27. シナリオ1:放置
    放置 リスク
    ● TargetSDKバージョン 縛り
    ● Google Play 規約変更
    34

    View Slide

  28. シナリオ1:放置
    アプリに法的な問題が見つかった!
    いまさら炎上した!
    →すぐにアップデートができない…!
    →最終的に非公開に切り替えなど
    35

    View Slide

  29. 明確に
    サービス終了
    Scenario 2
    36

    View Slide

  30. シナリオ2:明確にサービス終了
    37
    リリース! → 売れない…
              ↓
            サーバー費用…
              ↓
            _人人人人_
            > 終了 <
             ̄Y^Y^Y ̄

    View Slide

  31. シナリオ2:明確にサービス終了
    シャッターを閉じただけ 状態。終了しても…
    ● ユーザー アプリを起動できる
    ● 将来的にユーザーが別端末で再インストールする可能性がある
    サービス終了後に起動したユーザー ケアが必要
    ● ストア文言を終了用に差し替える
    ● 設定ファイルなど取得できなかった時に詰まない
    ● 新規登録導線など混乱を生まない
    ● サーバーと 通信が失敗したとき 文言を変える
    38

    View Slide

  32. シナリオ2:明確にサービス終了
    課金要素がある場合
    ● 一回きり 購入
    ○ 仮想通貨方式 場合 返金対応が必要になってくる、など
    ● 定期購入
    ○ 一度登録した定期購入メニュー 削除できない
    39

    View Slide

  33. シナリオ2:明確にサービス終了
    一度登録した
    定期購入メニュー
    削除ができない
    40

    View Slide

  34. シナリオ2:明確にサービス終了
    41
    問題
    ● 一度リリースした継続課金メニュー 、メニュー 削除が効かない
    ● 価格も許可されている価格帯でしか設定ができない
    ○ 日本 場合 99円~48,000円
    どうなる?
    ● Google Play上で 、定期購読を「継続利用できる」ように見える
    ● 購読してる と 、そ まま購読が継続してしまう
    ● 今 ないが、「もし」将来Google Playがアプリ外(ブラウザなど)から
    加入できる仕様が追加されたら、購読できてしまう可能性が微レ存

    View Slide

  35. シナリオ2:明確にサービス終了
    どうする?
    ● アプリから定期購入 導線を削除
    ● アプリから課金関連 コードを削除
    ● サーバーで継続確認 バッチを停止
    ● 既存 課金ユーザー 導線廃止と同時に全員購読キャンセル
    ○ 内部的な定期購読フラグ オン ままにしておく
    ● Google Play ユーザー課金通知を検知して、
    すぐにキャンセル・返金するコードを用意
    ○ サービス終了後も、一定期間コードを動かし続ける
    44

    View Slide

  36. シナリオ2:明確にサービス終了
    Google Play ユーザー課金通知を検知して、すぐにキャンセル・返金する
    コードを用意
    ● Real-time developer notification経由でユーザー 課金ステータス
    変更を感知できる で、GCP Pub Subで監視
    ○ ステータスがすべて届く で、購入・継続 場合 キャンセル、返金
    を行う
    ● サービス側 義務として、定義した期間 サービスを提供しなけれ な
    らない で、バッファ期間を持った行動が必要
    45

    View Slide

  37. シナリオ2:明確にサービス終了
    どうにもならないこと
    ● 「アプリ内購入あり」表記 課金停止以降も消えずに残る
    46

    View Slide

  38. シナリオ2:明確にサービス終了
    おおまかな手順
    ● (必要なら )アプリアップデート
    ○ 課金要素 削除
    ● サーバー止める
    ● Google Play 非公開
    47

    View Slide

  39. シナリオ2:明確にサービス終了
    (必要なら )アプリをアップデート
    ● サービス終了後 状態でも正常に動作するアプリを用意
    ○ 終了を知らせる告知箇所を増やす
    ○ サーバーと 通信が失敗したとき 文言を変える
    48

    View Slide

  40. シナリオ2:明確にサービス終了
    サーバーを止める(参考)
    • 監視を止める
    • バッチ処理止める
    • メンテナンスモードに切り替え
    • DNS切り替え
    • あと ゆっくり停止作業
    49

    View Slide

  41. シナリオ2:明確にサービス終了
    Google Play 非公開
    • ストア情報を更新
    • すべてが完了したら、非公開に移行
    50

    View Slide

  42. そもそもリリース
    できてない
    番外編
    51

    View Slide

  43. 番外編:そもそもリリースできてない
    ● 永遠 事前登録
    ● 何らか アプリに関係ないトラブルがあって
    リリースできない世界線
    ● 内部テスト版トラック、
    クローズドトラック まま終わる
    52

    View Slide

  44. 番外編:そもそもリリースできてない
    ● なにもアップロードしてない状態:アプリ一覧から削除可能
    ● 誰もダウンロードしていない状態:問い合わせで可能かも
    53

    View Slide

  45. 番外編:そもそもリリースできてない
    サポートに問い合わせて 削除
    You can also delete:
    ● Published apps or games that haven't been installed on any devices
    ● Published apps or games that no users are entitled to re-install
    In these cases, contact our support team to request that your app's or game's data be
    permanently deleted.
    Changes to your Play Console data - Play Console Help
    The support team replied to my deletion request with more details of the app deletion
    requirements:
    ● App must be in good standing (not rejected, suspended, or otherwise removed).
    ● App must have 0 lifetime installs.
    ● App must be unpublished for 24 hours (to ensure 0 installs)
    How to remove application from app listings on Android Developer Console
    54

    View Slide

  46. サービス終了と
    公開終了が別々
    Scenario 3
    55

    View Slide

  47. シナリオ3:サービス終了と公開終了が別々
    2段構え的なパターン。
      _人人人人人人人人_
      > サービス終了 <
       ̄Y^Y^Y^Y^Y^Y^Y ̄
           ↓
                 _人人人人人人_
         猶予期間 →  > 公開終了 <
                  ̄Y^Y^Y^Y^Y^ ̄
    56

    View Slide

  48. シナリオ3:サービス終了と公開終了が別々
    ハッカドール 場合:
    サーバーがなくても動く機能だけを残した
    「ハッカドール THE めもりある」をリリース
    57

    View Slide

  49. シナリオ3:サービス終了と公開終了が別々
    58
    ←あら~む機能
    アルバム機能→

    View Slide

  50. シナリオ3:サービス終了と公開終了が別々
    終了まで タイムライン
    59
    7月中旬
    11月15日
    (Google Play 公開終了)
    8月15日
    (サービス終了)
    アルバム追加データ v1 DL期間
    +アルバム
    あら〜む+アルバム

    あら〜むデータ DL期間
    追加データv2 DL期間
    「ハッカドール」サービス運用期間
    4月中旬
    通常機能
    +あら〜む
    +告知ダイアログ
    +課金関連コード削除
    5月中旬

    View Slide

  51. シナリオ3:サービス終了と公開終了が別々
    サービス終了日に大型アップデートをリリース
    ● 機能開発した を終了前 リリースに乗っける
    ● 最終版 不要になる機能を削るだけ
    ● アクティビティ自体を切り分けて、コードも共有させないつくり
    ● -13万行 Pull Request
    60

    View Slide

  52. すべてが終わったら
    Aftermath
    61

    View Slide

  53. すべてが終わったら…
    62
    ● まだレビュー 投稿できる
    ○ 自動でレビューを監視しているサービスとか
    止めずに残しておくと、たまにレビューが届く

    View Slide

  54. すべてが終わったら…
    63
    ● まだ発信している人 いる
    ○ 終わってもなお発信してくれる とがいる
    ○ っそりとイースターエッグを残しておくと
    気づいてくれるユーザーがいてほっこりする

    View Slide

  55. 最後に細かいTips
    ● 終了に向けて 一連 作業にPJ名をつける
    ○ 他 チームがいる中でサービスをたたむたたむ言う もなんな で
    ○ ミーティングとして「サービス終了定例」とかができる で毎週気分が沈む
    ● 終了日近辺 タイムライン 細かく
    ○ アプリ、サーバー、広報、営業すべてが同時に動く で
    タイムラインと当日 進捗 細かくチェック
    ● iOS審査やリリースに時間がかかったとき プランも用意しておく
    ○ 審査やリリース タイムラグ iOS ほうが顕著な で
    最悪当日浸透しなかった場合 プランも用意しておくと安心
    64

    View Slide

  56. 最後に細かいTips
    使ってくれた・遊んでくれた
    ユーザー ことを
    最後まで第一に考える
    65

    View Slide

  57. ありがとうございました!
    66

    View Slide