iOSDC2018「サブスクリプションサービスにおけるIn-App Purchase再考」
リアルタイムでの反応はこちら https://togetter.com/li/1262366
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考サブスクリプションサービスにおけるIn-App Purchase再考@ohbaryeiOSDC Japan 2018
View Slide
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考言いたいことWAITIn-App Purchaseがベストな選択肢か、もう一度考えてみましょう
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考用語の定義➔ In-App Purchase(アプリ内課金):デバイスやコンピュータ上のアプリの中で追加のコンテンツや定期購読コンテンツを購入できるしくみ➔ 本セッションでは◆ In-App PurchaseをIAPと呼称します◆ iOSに限定します(Amazon, Android, Unity IAPなどは除く)
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考IAPを知っているWebサービスにおける一般的な決済を知っている想定する聴衆ココ以外
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考Agenda | 01020304自己紹介、どういう立場から語るのかWebサービス/IAPの決済基礎IAPと他決済手段の比較結論
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考お話しないこと➔ IAPの実装方法の詳細◆ コードは全く出てきません➔ 自動更新購読 (Auto-Renewable) 型以外のIAP◆ 消耗型、非消耗型、非更新購読◆ サブスクリプションサービスの実現とはあまり関係ないため
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考自己紹介、どういう立場から語るのか01
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ Engineering Manager in➔ 決済開発・運用を3年弱@ohbarye
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考#1 on 2018-09-27https://connpass.com/event/97627/
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 主に中高生向けの動画視聴サブスクリプションサービス➔ 月額1,058円(税込)◆ クレカ・コンビニ・キャリア➔ または月額1,200円(税込)◆ IAPスタディサプリこの辺+αを運用しています
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考IAPを知っているWebサービスにおける一般的な決済を知っている真ん中から語ります
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考Webサービス/IAPの決済基礎02
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ Webサービスの決済基礎◆ 登場人物の整理◆ 決済ゲートウェイとは➔ IAPの場合
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考立替払契約参考 http://blog.kyash.co/entry/2018/05/14/102255加盟店登場人物 簡略図(クレカ決済の一例)決済ゲートウェイカード会社イシュア・アクワイアラ売買契約高校生・保護者SBPS (ソフトバンクペイメントサービス)スタディサプリ三井住友カード
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考加盟店登場人物 簡略図(キャリア決済の一例)決済ゲートウェイキャリア各社売買契約高校生・保護者SBPS (ソフトバンクペイメントサービス)ソフトバンクスタディサプリ立替払契約
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考加盟店登場人物 簡略図(コンビニ決済の一例)決済ゲートウェイコンビニ各社売買契約高校生・保護者SBPS (ソフトバンクペイメントサービス)セブンイレブンスタディサプリ支払
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考決済ゲートウェイ?
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考決済ゲートウェイとは➔ 多種の決済を一括の契約とシステムで導入できるサービス➔ カード会社・コンビニ各社の締日や入金タイミングの差分を吸収◆ 経理上も嬉しい➔ デザインパターンでいうFacade pattern SBPSGMOペイメントベリトランスMF KESSAI etc.
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考加盟店IAPの場合Apple売買契約高校生・保護者スタディサプリカード会社キャリア各社Apple IDコンビニ各社
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考Appleが決済ゲートウェイにあたるつまり…
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考IAPを再考するには決済ゲートウェイとして比較してみるのも一案
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考IAPと他決済手段の比較03
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 開発〜テスト➔ 運用◆ 障害対応、カスタマーサポート、加盟店サポート➔ ビジネス◆ 手数料、マルチプラットフォーム、撤退以下の3つの観点で比較
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 開発〜テスト➔ 運用◆ 障害対応、カスタマーサポート、加盟店サポート➔ ビジネス◆ 手数料、マルチプラットフォーム、撤退
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ コードレベルの実装コストはややIAPが高い◆ IAPの場合iOSがわかるエンジニアが必須◆ クライアントサイドUIとサーバサイド、定期実行ジョブの3つの実装が必要になるのは同じ➔ トランザクション管理の問題が一番やっかい◆ 特にIAPは通信のシーケンスが複雑開発の比較
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 決済の実装ではステージング環境でのテスト容易性が大事➔ AppStoreのsandbox (通称 ”精神と時の部屋”) には幾つか問題点がある◆ 不安定、App Storeに接続できず失敗することがある◆ App Store側での購読状態をこちらでコントロールできない➔ リリースクオリティを満たせるか不安になることがしばしばある…テストの比較(IAPの問題)
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 任意のタイミングで任意のレスポンスを返せる仕組みがある◆ ソフトバンクペイメントサービスではGUIでレスポンスを操作可能◆ Stripeはmock serverの実装を公開しており、自前で立てられる➔ テストが容易、想定ケースを網羅することで安心してリリースできるテストの比較(他の決済ゲートウェイ)
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ どんなに堅牢に作っても障害は絶対に起きる➔ 決済ゲートウェイに求めるもの障害対応の観点
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 加盟店側サーバがDown◆ 決済ゲートウェイへ支払い確定を送ったがこちらのサーバが死んでいる場合「お金を払っているのに閲覧できない」という問題に➔ 決済ゲートウェイ側サーバがDown◆ 例外をこちらでハンドル可能なのでマシ◆ どのタイミングでダウンしたかによってデータの一貫性を保つのが困難なこともある障害の例
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考こうした問題に対して➔ SBPS (ソフトバンクペイメントサービス)◆ 決済ゲートウェイ側の障害発生時間通知がある◆ どちらかが正常に処理を完了できなかった場合の通知がある◆ => 障害に付随する問題を検知できる➔ App Store◆ 特になし (知ってたら教えてください)
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ サブスクリプションサービスでは決済に関する問い合わせは必ず来る◆ 「払ったのに使えない」◆ 「退会手続きをしたい」「返金してほしい」カスタマーサポートの観点
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ SBPS (ソフトバンクペイメントサービス)◆ 決済ゲートウェイ側の管理画面と呼ばれるWebサイトで決済履歴を照会できる➔ App Store◆ iTunes Connect からは特定のユーザーの情報を閲覧できない「払ったのに使えない」
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ SBPS (ソフトバンクペイメントサービス)◆ 一部決済手段を除いて可能➔ IAPの自動更新では◆ 加盟店側で強制的に解約することや返金することはできない◆ 期間内の返金はユーザーからAppleへ問い合わせしてもらう「退会手続きをしたい」「返金してほしい」
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考加盟店サポートの観点➔ SBPS (ソフトバンクペイメントサービス)◆ 加盟店サポートヘルプデスクがある◆ 加盟店ごとの個別対応にかなり柔軟◆ 不整合を検知した時は異常データの修正までやってくれる➔ App Store◆ 問い合わせることはできるが加盟店個別の対応は基本的に無い
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考30%
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考3~4%
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 30%: 自動更新型IAPの手数料◆ 2年目から15%(※ユーザー単位)➔ 3~4%: 日本の主流な決済の手数料◆ (『銀行が「LINEペイ」に到底勝てない根本理由』より)➔ 販売価格が同じだと純粋に利益率に響く◆ IAPによる購入だけ単価を上げることもできるが…ビジネス観点の比較(手数料)
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考混乱
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考マルチプラットフォーム
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考iOSだけでなくAndroidやWebでサービス提供する予定ありますか
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ IAPはiOSにしか適用できない◆ ビジネスが成長してマルチプラットフォーム対応する場合、大きな足かせ➔ 初手IAPは考えもの◆ スタディサプリもApple以外の決済ゲートウェイを介した決済手段を実装し、後からIAPを追加したYESなら以下に留意
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考iOSから撤退して別プラットフォームに移る可能性はありますか
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ IAPに限らずサブスクリプションモデルの決済をやめるのは難しい◆ 新規申し込みを止めることはできる◆ 既存ユーザーが使い続ける限りコードやチーム体制は残り続ける➔ マルチプラットフォーム対応や手数料差を考えて他の決済手段に移ろうにも運用コストのためになかなか離れられない…という事態を招く可能性YESなら以下に留意
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考そろそろIAPの良いところが聞きたい
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ iOSプラットフォームとインテグレートされたスムーズな決済の流れ◆ クレカ情報などを入れることなく、ログイン済のAppleアカウントに紐づく情報で決済◆ 登録後に別サイトに飛んで決済するより遥かに良いユーザー体験➔ クレカを持たない高校生がメインターゲットとなるスタディサプリではユーザーがプリペイドで使うケースも多くて人気IAPの優位性
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ シームレスな決済体験は必ずしもIAPの独壇場ともいえないかも➔ アプリ内では◆ 後述の一部のケースでiOSアプリ内にStripeの決済導入が可能➔ Webでもモバイルでの決済体験向上が進んでいる◆ Payment Request API◆ Apple Pay on Safariとはいえ
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考結論04
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考言いたいこと againWAITIn-App Purchaseがベストな選択肢か、もう一度考えてみましょう
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考とはいえIAPでないと審査通らないのでは…?
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考ガイドラインを読む> 3.1.5(a)アプリケーションの外部で使用する商品やサービス: ユーザーがアプリケーションの外部で使用する商品やサービスをアプリケーションで購入できるようにする場合、そうした商品の支払いにはApp内課金以外(ApplePayや クレジットカードなど)の方法を使用する必要があります。https://developer.apple.com/jp/app-store/review/guidelines/#in-app-purchase
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ アプリ外部で使用する商品(実物、チューターサービス)を販売する場合はむしろIAPは使えない◆ 参考: BOOTH iOSアプリはどうやって有料ダウンロード商品の販売を解禁したか?https://inside.pixiv.blog/danbo-tanak/4749➔ コーチによる学習サポートを提供するスタディサプリ合格特訓コースではクレカ決済で申し込める※ 審査リジェクトリスクは常にあります。選択は自己責任でお願いします。IAP以外の決済手段提供ができるとき
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 「iOSのサブスクリプションサービスならIAPだ」と安易に選択する前に再考してほしい◆ 決済ゲートウェイとしてのクオリティに着目すると良い◆ その選択で御社のサーバサイドエンジニアが苦しむかもしれない➔ 決済手段の導入はビジネス上の戦略も含めた重大な意思決定になる◆ エンジニアとしてリスク洗い出し・代替手段検討をしっかりやる改めて結論
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考Thank you!
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ 決済業界◆ http://finance-startups.jp/2017/04/smartpayment-competitionarea/◆ http://blog.kyash.co/entry/2018/05/14/102255➔ 手数料◆ https://developer.apple.com/jp/app-store/subscriptions/◆ https://toyokeizai.net/articles/-/233362➔ 審査◆ https://inside.pixiv.blog/danbo-tanak/4749参考資料
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ Apple関連◆ https://developer.apple.com/jp/app-store/Receipt-Validation-Programming-Guide-JP.pdf◆ https://developer.apple.com/jp/app-store/review/guidelines/#in-app-purchase◆ https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html◆ https://developer.apple.com/jp/documentation/General/ValidateAppStoreReceipt/Introduction.html➔ Stripe関連◆ https://github.com/stripe/stripe-mock◆ https://stripe.com/docs/mobile/ios
#iosdc サブスクリプションサービスにおけるIn-App Purchase再考➔ Apple Pay on Safari◆ https://www.ipodwave.com/iphone/howto/apple-pay-web-pay.html➔ Payment Request API◆ https://developers.google.com/web/updates/2016/07/payment-request