この記事は Nikkei Advent Calendar 2020 2日目の記事です。
アプリチームでAndroidアプリを開発しているやまんだ(@ymnd)です。 本稿ではアプリ内課金を利用した定期購入に関わる施策を検討する際、それぞれのプラットフォームでおさえておきたい機能を網羅的に紹介します。 紹介する各機能は、今後のアップデートにより変更される可能性があります。 公式ドキュメントを必ず参照ください。
定期購入とは
定期購入(サブスクリプション)は、一定期間ごとに請求が行われるサービスで、定期購入期間中は繰り返し利用できるコンテンツの利用権が提供されます[1]。
定期購入の画面は次のとおりです。

iOSではApp Store、AndroidはPlay Storeがアプリ内課金のサービスを提供しています。
用語の対照表
本対照表は、用語の意図する概念をざっくりとまとめたものです。
\ | App Store | Play Store |
---|---|---|
課金方法 | App内課金 | アプリ内購入 |
定期購入 | サブスクリプション | 定期購入 |
サービス | App Store | Play Store |
プラットフォームへの手数料 | 手数料 | サービス手数料 |
管理画面 | App Store Connect | Play Console |
無料お試し | 無料トライアル | 無料試用 |
プロモーション | お試しオファー, プロモーションオファー, オファーコード | プロモーションコード |
支払猶予 | 猶予期間 | 猶予期間 |
アカウントホールド | 支払いの再試行 | アカウントの一時停止 |
一時停止 | x | 一時的な購読の保留 |
価格変更 | アップグレード, ダウングレード, クロスグレード | アップグレード, ダウングレード |
プラットフォームごとに定期購入をめぐる表現方法が異なりますので注意する必要があります。
プラットフォームへの手数料
両ストアの定期購入機能を利用する場合、サービスを利用するための手数料がかかります。 原則ユーザー単位で課金を始めてから1年間は販売価格の30%が差し引かれます。 この手数料は減額される場合が存在します。 両ストアではユーザーごとに有料サービスの継続日数が1年分積算されると15%になります[2]。
また、App Storeでは小規模事業者に対して手数料が2021年1月から15%に減額されます[3]。
サービスの利用期間のカウントの有無は、次の表のとおりです。
\ | App Store[4] | Play Store[5] |
---|---|---|
お試し価格の期間 | ○ | ○ |
無料試用 | ✗ | ✗ |
プラン変更 | ○ | ○ |
猶予期間 | 支払いサイクル内に適用[6] | ○ |
アカウントホールド | ✗ | ✗ |
保留期間 | なし | ✗ |
実際にサービスが金銭を伴って提供されていた期間が対象となるため注意が必要です。
アプリ内課金以外の購入導線について
定期購入サービスには、プラットフォームが提供する機能を利用する場合に加えて、自社が利用している決済サービスを搭載するケースも存在します。
App Storeで提供されているアプリは、アプリのコンテンツまたは機能の支払いにアプリ内課金を使用する必要があります[7]。 他の決済への導線をアプリ内に含めることはできません。 また、Play Storeも支払いポリシーが更新され、Google Playを決済方法として使用しなければならなくなりました[8]。 決済方法や導線設計など既存のプロモーションに影響があるため注意しましょう。 このポリシーに準拠をする期限は、新規のアプリは2021年1月20日までに、既存のアプリは2021年9月30日までに対応しなければなりません[9]。
アプリ内課金の会員情報は取得できる?
プラットフォームの課金情報を他社の端末で利用する場合、ユーザーに自社が提供するサービスのアカウントと連携する必要があります。 サービス提供に必要な情報だけ紐づけるようにしてください。
SDKのアップデートサイクル
SDKのアップデートを行う際、アプリ・サーバーのそれぞれに対してアップデートの対応が必要となります。
App StoreではアプリはStoreKit APIを使用しています。StoreKit APIは、Xcodeの更新にあわせてアップデートされます。 サーバー側はレシート検証API[10]、ならびにServer Notifications[11]の対応が必要になります。 Server Notificationsは、2021年3月に通知とレスポンスにアップデートが行われますのでご注意ください[12]。
Play Storeでは、アプリはGoogle Play Billing Libraryを使用しています。 毎年メジャーバージョンが更新され、バージョンのリリースから2年間サポートされます。 配布済みのアプリへの影響はありませんが、サポート期間が切れた場合はアプリを更新できなくなりますので注意しましょう。 現在は3.0.2[13]が最新で、新規のアプリは2021年8月2日までに、既存のアプリは2021年11月1日まで[14]にアップデートしなければなりません。 サーバー側は、Subscriptions and In-App Purchases API[15]やReal-time developer notifications[16]の対応が必要になります。
定期購入の機能編
定期購入の期間
定期購入の支払い期間は週、月、年の中から設定できます。
\ | App Store[17] | Play Store[18] |
---|---|---|
1週間 | ○ | ○ |
4週間 | ✗ | ○ |
1ヶ月 | ○ | ○ |
2ヶ月 | ○ | ✗ |
3ヶ月 | ○ | ○ |
6ヶ月 | ○ | ○ |
1年 | ○ | ○ |
サブスクリプションオファー
定期購入を利用するにあたり、無料または割引価格でお試しでサービスを提供できます。
無料お試し
初めて定期購入を行うユーザーに対し特定の期間無料でサービスを提供します。試用期間後は本契約へ移行します。
App Storeでは、無料トライアルとして3日、1・2週間、1・2・3・6ヶ月、1年といったオプションの中からトライアル期間を選択できます[19]。
Play Storeでは、3日以上で任意の日数を指定し、無料試用を提供できます[20]。 お試し価格は無料試用期間後に適用されます。 無料試用の対象は、商品単位か商品全体のいずれかの括りを選べます。
初回価格
App Storeでは無料トライアルだけでなく、都度払いや前払いという支払いのオプションが用意されています[21]。 都度払いは割引価格を請求期間ごとに支払う方法です。一定期間、割引した価格で定期購入を使用できます。 前払いは利用者が1回限りの価格を支払い、サブスクリプションが一定期間利用できるようになります。
Play Storeでは、1回限りのお支払いと定期的なお支払いのオプションがあります[22]。 1回限りのお支払いは、特定の期間、1回限りのお試し価格で利用できるものです。 定期的なお支払いは、請求対象期間と一致した日数だけ、お試し価格で利用できます。
プロモーション
新規利用者や過去に定期購入されていた方へオファーを行う機能です。会員の獲得や維持に効果的です。 それぞれ訴求したい対象ごとに使用すべきオファー方法を適切に選択していきましょう。
App Storeのプロモーション
App Storeは、お試しオファー、プロモーションオファー、オファーコードの3種類が提供されています[23]。 これらのオファーは誰を対象にどこで訴求するかにより使用目的が異なります。 互換性のあるOSバージョンが異なりますのでご注意ください。
お試しオファーは新規利用者に訴求するためのオファーで、アプリ内またはApp Storeで宣伝できます。 プロモーションオファーは、定期購入中もしくは過去に定期購入したことがある利用者を対象に、アプリ内でオファーできます。
オファーコードは、新規・定期購入中・過去に定期購入した利用者を対象に無料または割引価格を提供するコードを発行できます[24]。 オンラインまたはオフラインでの任意の方法で配布して使用できます。 また、オファーコードに類似した機能にPromo codes[25]があります。 これは、潜在的な顧客やレビューのために非営利目的で発行されるもので、期限後は定期購入が更新されません。
Play Storeのプロモーション
Play Storeではプロモーションコードというオファーコードに相当する機能が提供されています[26][27]。 ユーザーに、無料で試用できるプロモーション用コードを発行できる機能です。 1回限りのコードとカスタムコードという2種類のコードがあります。 1回限りにコードはPlay Storeやアプリ内から利用できます。 カスタムは新規利用者が利用でき、コードの利用回数の上限を付与できます。
これらのプロモーションに使えるコードは、発行回数などに制限がありますので詳細はドキュメントをご確認ください。
支払い猶予 (Grace Period)とアカウントホールド (Account Hold)
支払い猶予とアカウントホールドは、支払いの失敗による解約を防ぐための機能です。
支払いの失敗は、クレジットカードの有効期限切れ、Google Play ギフトカード(Android)や、App Store & iTunesギフトカード(iOS)でチャージした残高が購読料に対して不足しているなどが原因で起こります。
支払い猶予は、ユーザーの支払いが失敗した場合に購読を解約させるのではなく、これまでと同様に購読状態を一定期間保ち続ける機能です。 支払い猶予期間後は購読状態が停止するアカウントホールドに入ります。 この期間内に支払い状態が更新された場合、定期購入で提供されているサービスに再びアクセスできるようにする必要があります。
これらの機能により、ユーザーの意図にそわない解約を防ぎ、効果的に購読期間を継続できます。
\ | App Store[28] | Play Store[29] |
---|---|---|
Grace Period | 6 or 16 日間 | 3, 7, 14, 30日間 |
Account Hold | 60日間 | 30日間 |
App Storeは定期購入期間により猶予期間が異なります。 1週間の場合は6日、それ以上の期間では16日となります。 また、アカウントホールドの代わりに60日間はAppleが支払いの再試行を試みるという仕組みがあります。
Play Storeでは、期間が長くなるごとに選択肢が増えていきます。 1週間では3日か7日、4週間では14日が追加、1ヶ月以上では30日と選択肢が増えます。 アカウントホールドは最大30日間で期間を変更できません。 支払いの失敗時には、それぞれメールとストアアプリによる通知が行われます。
一時的な購読の保留 (Pause)
一時的な購読の保留は、Play Storeで提供されるユーザーが定期購入を一定期間止めることのできる機能です[30]。 解約以外で請求を停止する選択肢となり、海外出張や内定後など一時的に使わないユーザーを引き止められます。 ユーザーは最大3ヶ月まで一時停止を行えます。 ただし、年次定期購入では指定できません。 一定期間経過した後は再び購読が始まります。
一時停止は、即時適用ではなく、次の支払い期間から適用されます。 一時停止の期間後に支払いが失敗した場合は支払い猶予がスキップされアカウントホールドになります。
プランの価格変更
一度購入した後の定期購入のプランの価格を変更することができます。 ユーザーが値上げ後の価格にアプリ内もしくはストアアプリから能動的に応じる必要があります。もし期間内に応じなかった場合は強制的に解約となります。値下げの場合は許諾が不要です。
App Storeではメールとプッシュ通知により、値上げの通知と同意確認が行われます[31]。またiOS 13.4およびiPadOS 13.4以降では、アプリ内で自動的に表示される価格同意シートでも、影響を受ける利用者への通知が行われます。
Play StoreではGoogle Playからユーザーへの通知が送られる他、アプリ内で価格同意シートを表示できます。
プランのアップグレード/ダウングレード
現在購入しているプランから異なるプランへの変更を行います。
\ | App Store[32] | Play Store[33] |
---|---|---|
アップグレード | ○ | ○ |
ダウングレード | ○ | ○ |
クロスグレード | ○ | ✗ |
アップグレード
App Storeでは、プランがただちにアップグレードされ、元々のサブスクリプションの比例配分された金額が返金されます。 Play Store では、現在契約している商品の残余期間を処理した後移行するというステップを踏みます。 即時適用や既に支払われている料金の扱いを設定できます。
ダウングレード
App Storeでは、現在のサブスクリプションは次回の更新日まで継続され、既存の価格よりも低い価格に更新されます。 Play Storeでは、現在契約している商品の残余期間を処理した後移行するというステップを踏みます。 即時適用や既に支払われている料金の扱いを設定できます。
クロスグレード
App Storeが提供する、同等のレベルのサブスクリプションに切り替える機能です。 機能差が同等で期間が異なる場合は、クロスグレードを適用します。 サブスクリプションの期間が同じであれば、新しいサブスクリプションはただちに開始され、期間が異なる場合は、新しいサブスクリプションは次回の更新日に有効になります。
さいごに
定期購入の各機能についてプラットフォームごとの比較を行いました。 App StoreとPlay Storeでは多くの機能が共通して提供されていますが詳細な仕様が異なっています。 それぞれのプラットフォームの特性や訴求したい内容にあわせて機能を選択していきましょう。
本稿では、用語の英訳対照表、これらの機能を使いどのような施策を実施するか、また施策の評価においてコンソールをどう利用できるかという部分は言及できていません。 また別の記事としてご紹介できればと思い、鋭意執筆中です。ご期待ください。
明日は3日目、石原さんによる「日経電子版のデータを使ったSQL問題集を作った」です。お楽しみに!!
脚注
(最終閲覧日は2020年11月25日)
[1]: Google Play の請求関連の用語, https://developer.android.com/google/play/billing/terminology
[2]: Apple Storeでは `有料サービスの日数が1年分積算される` と、Play Storeでは `12か月の定期購入が継続される` という期間を異なる表現が使われています。Google サポートに確認したところ12ヶ月と1年分は表現上の差であるとの回答を得ました。
[3]: App Store Small Business Program, https://developer.apple.com/jp/news/?id=i7jzeefs
[4]: 1年経過後に純収益率が85%に, https://developer.apple.com/jp/app-store/subscriptions/#revenue-after-one-year
[5]: サービス手数料, https://support.google.com/googleplay/android-developer/answer/112622?hl=ja
[6]: Enable Billing Grace Period, https://developer.apple.com/documentation/storekit/in-app_purchase/subscriptions_and_offers/reducing_involuntary_subscriber_churn
[7]: App Store Reviewガイドラインを参照してください。 厳密にはその他の購入方法 (3.1.3)というアプリ内課金以外の購入方法を利用できる例外規定があります。 , https://developer.apple.com/jp/app-store/review/guidelines/#in-app-purchase
[8]: お支払いポリシー, https://support.google.com/googleplay/android-developer/answer/9992660?hl=ja
[9]: Google Play の支払いに関するよくある質問にお答えします, https://developers-jp.googleblog.com/2020/09/commerce-update-faqs.html
[10]: Validating Receipts with the App Store, https://developer.apple.com/documentation/storekit/in-app_purchase/validating_receipts_with_the_app_store
[11]: Enabling App Store Server Notifications, https://developer.apple.com/documentation/storekit/in-app_purchase/subscriptions_and_offers/enabling_app_store_server_notifications
[12]: 新しいサブスクリプションのサーバ通知がプロダクション環境で利用可能に, https://developer.apple.com/jp/news/?id=an960mux
[13]: Google Play Billing Library リリースノート, https://developer.android.com/google/play/billing/release-notes#3-0-2
[14]: Meet Google Play Billing Library Version 3, https://android-developers.googleblog.com/2020/06/meet-google-play-billing-library.html
[15]: Subscriptions and In-App Purchases, https://developers.google.com/android-publisher/#subscriptions
[16]: リアルタイム デベロッパー通知のリファレンス ガイド, https://developer.android.com/google/play/billing/rtdn-reference
[17]: Enable Billing Grace Period for auto-renewable subscriptions を参考にして作成した, https://help.apple.com/app-store-connect/#/dev58bda3212
[18]: Play Consoleと定期購入の作成を参考にして作成した, https://support.google.com/googleplay/android-developer/answer/140504
[19]: 自動更新登録のお試しオファーの設定, https://help.apple.com/app-store-connect/#/deve1d49254f
[20]: 定期購入の作成, https://support.google.com/googleplay/android-developer/answer/140504?hl=ja
[21]: サブスクリプションオファーを提供する, https://developer.apple.com/jp/app-store/subscriptions/#providing-subscription-offers
[22]: `1回限りのお支払い` と `定期的なお支払い` という表現は、Play Consoleの設定の文言を使用しています, 定期購入の作成, https://support.google.com/googleplay/android-developer/answer/140504?hl=ja
[23]: サブスクリプションオファーを提供する, https://developer.apple.com/jp/app-store/subscriptions/#providing-subscription-offers
[24]: オファーコードの設定, https://help.apple.com/app-store-connect/?lang=ja#/dev6a098e4b1
[25]: Promo codesの概要, https://help.apple.com/app-store-connect/#/dev50869de4a
[26]: プロモーションの作成, https://support.google.com/googleplay/android-developer/answer/6321495?hl=ja
[27]: プロモーションコード, https://developer.android.com/google/play/billing/promo
[28]: 自動更新登録の請求の猶予期間を有効にする, https://help.apple.com/app-store-connect/#/dev58bda3212
[29]: 定期購入の作成, https://support.google.com/googleplay/android-developer/answer/140504?hl=ja
[30]: 定期購入を一時停止する, https://developer.android.com/google/play/billing/billing_subscriptions#pause
[31]: 価格を管理する, https://developer.apple.com/jp/app-store/subscriptions/#managing-prices-for-existing-subscribers
[32]: グループ内でサブスクリプションをランク付けする, https://developer.apple.com/jp/app-store/subscriptions/#ranking
[33]: アップグレード、ダウングレード、再登録, https://developer.android.com/google/play/billing/subscriptions#upgrade-downgrade
参考資料
- App Store
- https://developer.apple.com/jp/in-app-purchase/
- https://developer.apple.com/jp/app-store/subscriptions/
- https://help.apple.com/app-store-connect/?lang=ja#/devb57be10e7
- https://developer.apple.com/videos/app-store-and-distribution/in-app-purchase-and-subscriptions
- Play Store
- https://developer.android.com/google/play/billing/subs
- https://www.youtube.com/watch?v=gnrNckXeSjQ&feature=youtu.be
- https://speakerdeck.com/syarihu/re-zero-starting-uses-of-play-billing-library
- https://speakerdeck.com/ymnder/xiang-jie-ding-qi-gou-ru
- https://medium.com/@syarihu/2020%E5%B9%B4%E7%89%88-play-commerce%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E5%AF%BE%E5%BF%9C-682716d240fd