Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

7

Slide 6

Slide 6 text

Google Playにおける 「削除」 8

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

14

Slide 12

Slide 12 text

15

Slide 13

Slide 13 text

16

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

シナリオ 29

Slide 23

Slide 23 text

放置 Scenario 1 30

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

番外編:そもそもリリースできてない サポートに問い合わせて 削除 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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

シナリオ3:サービス終了と公開終了が別々 終了まで タイムライン 59 7月中旬 11月15日 (Google Play 公開終了) 8月15日 (サービス終了) アルバム追加データ v1 DL期間 +アルバム あら〜む+アルバム み あら〜むデータ DL期間 追加データv2 DL期間 「ハッカドール」サービス運用期間 4月中旬 通常機能 +あら〜む +告知ダイアログ +課金関連コード削除 5月中旬

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

すべてが終わったら Aftermath 61

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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