「Google Play Commerceからのアップデート」についてAndroid 11 Meetupsで登壇しました

Taichi Sato (syarihu)
22 min readAug 26, 2020

--

Android 11 Meetupsのアプリ配信と収益化にて、2020年に発表されたGoogle Play Commerceの最新情報について、いくつかの新機能の紹介と2020年11月までに対応しなければならないことについて発表しました。

Android 11 Meetups は Android 11 Beta のリリースを機に、アプリ開発の最新技術情報をお届けすべく、Google と GDG (Google Developer Groups)が共催するオンラインセミナーシリーズです。
計8回の開催が予定されており、分野ごとにGoogle関係者や外部のエキスパートから発表が行われます。

2020/08/25(火)に開催された「アプリ配信と収益化」では、Play Consoleの新機能や収益化に関わるPlay Commerceの最新情報などをお届けしました。

本記事では、私が発表した「Google Play Commerceからのアップデート」のスライドと発表のスクリプトを公開します。

発表スライドとスクリプト

以下にスライドと発表のスクリプトを公開します。

はじめまして。マネーフォワードでAndroidエンジニアをしているsyarihuです。本日は、今年発表されたGoogle Play Commerceに関連する最新情報について、いくつかの新機能の紹介と2020年11月までに対応しなければならないことについてお話します。

はじめに、プラットフォームのアップデートについてお話します。
直近では、ユーザーの信頼を得るために、プラットフォームレベルの製品変更がいくつか行われています。購入条件の透明性を高めるために、購入画面をアップデートし、試用期間や試用期間後の価格がさらに区別しやすくなりました。
ユーザーが定期購入を安心して試すことができるように、無料トライアルなどが終了する前に電子メールでのリマインダーが届くようになりました。また、有効な定期購入を持つアプリがアンインストールされたときに通知を送信します。
この通知により、ユーザーはGoogle Play Subscriptions Centerで定期購入を管理またはキャンセルできることに気づけます。
定期購入に関するユーザーの信頼を高めることで、より質の高い定期購入者が増え、返金率やチャージバック率が下がるというメリットがあります。

ユーザーが無料オファーとその課金方法を確実に理解できるようにするために、2020年4月に開発者ポリシーを更新し、アプリ内でのオファーの方法について透明性を求めることで、サービスを評価するすべてのユーザーが十分な情報に基づいた選択ができるようにしました。

ポリシーはすでに反映されていますが、自社で提供するサービスがポリシーに則っているかどうか、改めて確認しておきましょう。

詳細については、右上に表示されているリンクを参照してください。

1回限りの購入や有料アプリで利用できるプロモーション機能を利用して成功したユーザの声に基づき、Googleは2つの機能を定期購入に実装しました。

1つ目は、Google Play Consoleでカスタムプロモーションコードを作成して、定期購入の試用期間を提供できるようになりました。
プロモーションコードを必要としない無料試用で定期購入がすでに開始されている場合、元の無料試用期間よりもプロモーションの期間が優先されるため、注意が必要です。

現在のところ、テストカードが使えるライセンステストユーザーではプロモーションコードを利用できません。
定期購入のプロモーションコードを検証する場合は、検証するアカウントをライセンステストユーザーから外した上でテストトラックを使って検証しましょう。

また、定期購入の維持率を高めるために活用できる新機能を多数追加しました。
Google Play コンソールでは、ユーザーが定期購入から得られるメリットの短いリストを追加できるようになりました。
これにより、ユーザーは定期購入をキャンセルする際に、定期購入を継続するか解約するかを十分な情報に基づいて判断できるようになります。

設定は定期購入の詳細にある、特典の欄から行えます。

定期購入価格の値下げにユーザーにオプトインを要求するのは制限が強すぎるという意見があったため、定期購入価格の値下げはユーザーがオプトインするためのアクションを取る必要がなくなりました。
ユーザーには料金が値下げされたことが通知され、価格の変更予定についてGoogle Play Subscriptions Centerで確認できるようになります。

続いて、定期購入ユーザーを維持する方法について見ていきましょう。

Google Playの定期購入は、あらゆる種類の解約を減らすための多くの機能を開発者に提供しています。
ユーザーが支払いに失敗したために解約してしまう「非自発的解約」に対処するために「Account Hold」や「Grace period」などの機能を提供しています。また、ユーザーに定期購入のキャンセルではなく一時停止のオプションを与えることで、自発的な解約にも対応しています。

これらの機能は、多くのユーザーのリテンションを向上させ、ビジネスを成長させるのに役立ちます。
例えば、Account Holdを有効にしている開発者は、有効にしていない開発者に比べて、非自発的な解約率が8%低く、支払い失敗からの復帰率が35%高いです。

このような効果があることから、Googleはこれらの機能をより簡単に利用できるように、デフォルト設定を更新しています。
今年の11月1日から、Account HoldとRestoreが必須になり、Pauseがデフォルトでオンになります。
アプリがこれらの新しい変更が処理できることを確認するために、すべてのライセンステストユーザーに対してAccount HoldとPauseが有効になり、期限までに検証できるようになりました。

これらの変更に対応するためには、各機能を理解しておく必要があります。それぞれどのような機能なのかを詳しく見ていきましょう。

はじめにAccount Holdを説明したいところなのですが、それを説明するにはGrace Periodを知っておいたほうが理解しやすいです。
まずはGrace Periodについて解説します。

Grace Period 猶予期間とは、定期購入の更新時にクレジットカードの期限切れなどで支払いに失敗した場合に入る期間です。
猶予期間中はユーザーは引き続き定期購入により提供されている機能を利用できます。

猶予期間は、Play Consoleの設定から3日から30日のいずれかの期間を設定できます。

猶予期間の流れを図を使ってみてみましょう。
ユーザーが定期購入を契約中で、図のt2で定期購入が自動更新されるとします。

定期購入の更新時のt2でなんらかの理由で課金に失敗すると、猶予期間がはじまります。

猶予期間がはじまると、本来の有効期限だったt2から、猶予期間の期間分、定期購入の有効期間が動的に延長され、定期購入の自動更新日がt3になります。

猶予期間の終了日であるt3までの間に支払いの失敗が解決されなかった場合は、定期購入が自動でキャンセルされ、定期購入の契約が終了します。猶予期間の流れは以上です。

猶予期間に入ったらメールやPlayストアアプリから、猶予期間に入ったことがユーザーに通知されます。しかし、サービスは継続して利用できてしまうため、それでは気づかないユーザーもいます。
サービス側で猶予期間に入ったことを検知し、アプリ上からも通知や支払いを促す表示を行うとより効果的です。

猶予期間は今回必須の対応ではありませんが、非自発的な解約を防ぐためには有効な手段です。
Account Holdを有効にするタイミングで一緒に有効にしておくことをおすすめします。

続いて、Account Holdです。

Account Hold アカウントの一時停止とは、定期購入の更新時に支払いに失敗した場合になる状態です。
猶予期間が有効の場合は、猶予期間後にアカウント一時停止状態になります。
猶予期間との違いは、定期購入サービスは継続して利用できないところです。

アカウントの一時停止は現在はデフォルトOFFですが、11月から必須になります。

アカウントの一時停止の流れを図をつかって見てみましょう。

猶予期間までは先ほどと一緒で、猶予期間が終わるときに課金に失敗すると、アカウントが一時停止状態になります。

アカウントの一時停止状態では、有効期限は猶予期間の終了日のままで、サービスは利用できません。
購入履歴も返ってこないので、課金していないのとほぼ同じ状態です。

アカウントの一時停止期間中に解決しなかった場合は定期購入が自動キャンセルされ、定期購入契約は終了します。

アカウントの一時停止状態では課金していないのとほぼ同じ状態です。
他のプラットフォームで二重課金されないように、アカウントの一時停止に入ったときとアカウントの一時停止が解決したときにサービス側で検知できるようになっている必要があります。

課金の状態がすでに検知できるようになっている場合は、アカウントの一時停止を有効化すること自体は可能です。

アカウントの一時停止も猶予期間と同様に、メールやPlayストアアプリから通知はされます。
しかし、アプリ上からもアカウントの一時停止状態であることを通知し、支払いを促す表示を行うとより効果的です。

もしアプリからも支払いを促す場合、アカウントの一時停止の検知はアプリからは行えないため、サーバーとの連携を行うことが必須になることに注意しましょう。

つぎに、Restoreです。

Restore アカウントの復元は、ユーザーが自発的にキャンセルした定期購入、つまり解約予約をした定期購入が実際に解約されるまでの間にユーザーが解約予約をキャンセルできる機能です。

解約予約のキャンセルはSubscription Centerから行えます。Restoreは後に説明するResubscribeの機能の一部です。
現在はデフォルトONですが、今年の11月からは必須の機能となります。

まずは通常の解約の流れを見ていきましょう。
ユーザーが定期購入を契約中で、図中のt3までが定期購入の有効期間です。

ユーザーが解約予約をすると自動更新がオフになり、解約予約期間に入ります。この解約予約期間の間は、いつでも復元できます。

解約予約期間中に解約予約がキャンセルされなかった場合は自動更新が行われないため、定期購入の有効期間が終了後に解約されます。
これが通常の解約の流れです。

続いて解約予約期間中に途中で復元した場合を見てみましょう。

先ほどの図のとおり、解約予約をした場合はこのまま定期購入の更新時期をむかえると定期購入が解約されてしまいますが、

途中で解約予約をキャンセルすると、自動更新がONになり、定期購入の有効期間もそのままになります。
つまり、解約予約する前の状態に戻ります。

Restoreの流れは以上です。

Restoreは、定期購入の有効期間内であれば、定期購入の有効期間が変わらずに解約予約をキャンセルできるのが主なメリットです。

Subscription Centerからしか行えないことと、Purchase Tokenや定期購入の有効期間も変わらないため、基本的には何も対応しなくても問題ありません。

続いて、Resubscribeです。

Resubscribeは解約予約した定期購入を再開できる機能です。
Resubscribeには3種類のパターンがあります。

解約予約した定期購入の有効期限が切れる前では、アプリ内からの再開、そしてSubscription Centerから再開できます。Subscription Centerからの再開は先ほど説明したRestoreと同じです。

定期購入の有効期限が切れたあとでは、有効期限が切れてから最大1年の間に、Subscription Centerから同じSKUを再購入できます。

これら3つがResubscribeです。

Subscription Centerから行うResubscribe、つまりRestoreと、アプリ内から行うResubscribeでは定期購入の有効期限は同じです。
Restoreとアプリ内から行うResubscribeの違う点は、アプリ内から行うResubscribeではPurchase Tokenが新しく生成されることです。

アプリ内から行うResubscribeではアプリ内からの再開となるため、アプリ内に「再開」ボタンを設置する必要があります。
もし対応する場合は、自動更新されるかどうかの値であるisAutoRenewingで解約予約中かを判別して導線を表示することになります。

アプリ内からの再開は考慮することが増えてしまうため、再開導線を出すよりはSubscription Centerを開くようにするのがおすすめです。
Subscription CenterのDeep Linkについては、右上のリンクから参照してください。

Billing Libraryの2以上を使っている場合は定期購入の期限が切れてから最大1年の間に、Subscription Centerから定期購入を再購入できます。
これはアプリの外部で購入が発生するアプリ外購入になります。

サービス側でアプリ外購入を検知し、自社サーバーで購入情報を処理できるようにしておく必要があります。

Resubscribeはデフォルトで有効になりますが、SKUごとにあとから設定を無効化できます。
Resubscribeの主なメリットとしては、アプリの外で購入機会を作れることと、契約期間を効果的にのばせることです。
可能であれば、有効のままにしておくことをおすすめします。

続いて、Pauseです。

Pause 定期購入の一時停止はユーザーが一定期間だけ定期購入を一時停止できる機能です。
一週間から3ヶ月のいずれかの期間で一時停止できますが、年間定期購入は停止できません。

Pauseは、解約以外の請求を止める選択肢として利用できるようになったのが大きなメリットです。
たとえば海外出張など、一時的に使わないユーザーを引き止めることができます。
これにより、自発的な解約を防ぐことが期待できます。

定期購入の一時停止の流れを図をつかって見てみましょう。

ユーザーが自発的に一時停止を行うと、定期購入の一時停止が予約されます。
一時停止予約状態のため、一時停止してからすぐにサービスが止まるわけではありません。
定期購入の有効期間中はサービスは引き続き利用できます。有効期間が終わると、定期購入の一時停止が開始されます。

一時停止が開始されると、一時停止期間中はサービスは利用できなくなります。
一時停止期間が終了すると、自動で再購入が行われ、購入に成功すると定期購入が再び有効になります。

定期購入の再購入に失敗した場合は、アカウントの一時停止状態になります。その後の流れはアカウントの一時停止の流れと同じです。

定期購入の一時停止を有効にするには、一時停止状態に入ったときと一時停止が終わったときにサービス側で検知できるようになっている必要があります。
2020年11月からデフォルトで有効になりますが、すぐに対応するのが難しい場合は、無効にしておくのがよいでしょう。

さいごにPlay Billing Libraryについてお話します。

Play Billing Libraryを軽くおさらいすると、AIDLを抽象化したライブラリです。
Play Billingとの接続管理などを内蔵しているので簡単に課金処理が実装できます。
また、AIDLのときとは違い、ライブラリのバージョンを上げるだけで簡単にアップグレードできます。

今年の6月、予告通りBilling Libraryのバージョン3が発表されました。

新しい定期購入プロモーション機能や、Purchase attributionなどのいくつかの新機能が含まれています。

バージョン2から3へのアップグレードは簡単です。gradleファイルを新しいバージョンに変更するだけです。

APIの変更については必ずリリースノートを確認して、適宜コードを変更してください。

Purchase attributionについてもう少し触れておきます。
多くのゲームやアプリでは、アプリ内での購入が特定のゲーム内キャラクターやアバター、ユーザープロフィールに関連付けられていることを確認する必要があります。
Billing Libraryでは、購入フローを起動する際にこの情報を指定できるようになりました。

簡単なコードを見てみましょう。

例として、特定のゲーム内キャラクターに購入品を関連付ける方法を説明します。

まず、新しい BillingFlowParams ビルダーを取得します。

次に難読化されたアカウントIDを設定すると、ユーザーのアカウントを一意に識別できます。

難読化されたプロフィールIDを設定して、プロフィールを一意に識別するオプションもあります。

そして最後に、課金フローで使用するためのパラメータを渡します。

購入が成功した後に難読化されたアカウント ID とプロフィール ID を取得するためには、このように実装します。

以上がPurchase attributionの簡単なサンプルです。

Billing LibraryはI/O 19にて、毎年メジャーバージョンアップを行い、2年間サポートすることを発表しました。

Billing Libraryをアップデートすることで新しい支払いオプションやUX、パフォーマンス、セキュリティアップデートなどを受け取れるメリットがあります。

Billing Libraryのリリース時期が予測できるようになったため、Billing Libraryのアップデートは計画的に行うようにしましょう。

Billing Libraryの2系では、acknowledgeやPending transactionsなどの新しい仕組みが導入されています。AIDLやBilling Library 1+からアップデートを行う際には注意してください。

これからのPlay Commerceの要件を整理しておきましょう。

Billing Libraryは、新規アプリでは2021年8月2日から、アプリのアップデートでは2021年の11月1日からバージョン3を使うことが必須になりました。これは、同時にAIDLとBilling Libraryの1と2のサポートが終了することを意味します。

すでにストアにある古いバージョンを使用しているアプリは引き続き課金のトランザクションを処理できますが、アプリをアップデートする際にはBilling Libraryの新バージョンを使うことが必須になります。

なるべく早めにBilling Libraryをアップデートしておきましょう。

また、Account HoldとRestoreについては2020年11月から必須になるので、有効になったときに正しく処理できるか確認しておきましょう。

PauseとResubscribeについても、2020年11月からデフォルトで有効になります。これらも対応することを検討しましょう。

Play Commerceに関するドキュメントはすべて刷新されました。

AIDLからのマイグレーションガイドなども用意されているので、ぜひ確認してください。

今回発表した内容について、対応が必要なアップデートの解説については、mediumでも解説記事を投稿しています。よければこちらも右上のリンクから確認してください。

Play Billing Libraryを使ったサンプル実装や、さきほど少し触れたPlay Billing Library 2系からの新機能であるacknowledgeやPending transactionsの解説などについては、DroidKaigiの公式チャンネルにて私が発表した動画あります。

ぜひこちらも確認してみてください。

今回はGoogle Play コマースの新機能と必須要件などについてお話してきました。新しい機能を積極的に活用し、よりよい課金体験をユーザーに提供していきましょう。

ありがとうございました。

--

--