Slide 1

Slide 1 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 サブスクリプションサービスにおける In-App Purchase再考 @ohbarye iOSDC Japan 2018

Slide 2

Slide 2 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 言いたいこと WAIT In-App Purchaseがベストな選択肢か、もう一度考えてみましょう

Slide 3

Slide 3 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 用語の定義 ➔ In-App Purchase(アプリ内課金):デバイスやコンピュータ上のアプリの中 で追加のコンテンツや定期購読コンテンツを購入できるしくみ ➔ 本セッションでは ◆ In-App PurchaseをIAPと呼称します ◆ iOSに限定します(Amazon, Android, Unity IAPなどは除く)

Slide 4

Slide 4 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 IAPを知っている Webサービスにおける 一般的な決済を知っている 想定する聴衆 ココ以外

Slide 5

Slide 5 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 Agenda | 01 02 03 04 自己紹介、どういう立場から語るのか Webサービス/IAPの決済基礎 IAPと他決済手段の比較 結論

Slide 6

Slide 6 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 お話しないこと ➔ IAPの実装方法の詳細 ◆ コードは全く出てきません ➔ 自動更新購読 (Auto-Renewable) 型以外のIAP ◆ 消耗型、非消耗型、非更新購読 ◆ サブスクリプションサービスの実現とはあまり関係ないため

Slide 7

Slide 7 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 自己紹介、どういう立場から語るのか 01

Slide 8

Slide 8 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ Engineering Manager in ➔ 決済開発・運用を3年弱 @ohbarye

Slide 9

Slide 9 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 #1 on 2018-09-27 https://connpass.com/event/97627/

Slide 10

Slide 10 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考

Slide 11

Slide 11 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 主に中高生向けの動画視聴サブスクリプションサービス ➔ 月額1,058円(税込) ◆ クレカ・コンビニ・キャリア ➔ または月額1,200円(税込) ◆ IAP スタディサプリ この辺+αを 運用しています

Slide 12

Slide 12 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 IAPを知っている Webサービスにおける 一般的な決済を知っている 真ん中から語ります

Slide 13

Slide 13 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 Webサービス/IAPの決済基礎 02

Slide 14

Slide 14 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ Webサービスの決済基礎 ◆ 登場人物の整理 ◆ 決済ゲートウェイとは ➔ IAPの場合

Slide 15

Slide 15 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ Webサービスの決済基礎 ◆ 登場人物の整理 ◆ 決済ゲートウェイとは ➔ IAPの場合

Slide 16

Slide 16 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 立替払契約 参考 http://blog.kyash.co/entry/2018/05/14/102255 加盟店 登場人物 簡略図(クレカ決済の一例) 決済ゲートウェイ カード会社 イシュア・ アクワイアラ 売買契約 高校生・保護者 SBPS (ソフトバンク ペイメントサービス) スタディサプリ 三井住友カード

Slide 17

Slide 17 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 加盟店 登場人物 簡略図(キャリア決済の一例) 決済ゲートウェイ キャリア各社 売買契約 高校生・保護者 SBPS (ソフトバンク ペイメントサービス) ソフトバンク スタディサプリ 立替払契約

Slide 18

Slide 18 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 加盟店 登場人物 簡略図(コンビニ決済の一例) 決済ゲートウェイ コンビニ各社 売買契約 高校生・保護者 SBPS (ソフトバンク ペイメントサービス) セブンイレブン スタディサプリ 支払

Slide 19

Slide 19 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 決済ゲートウェイ?

Slide 20

Slide 20 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ Webサービスの決済基礎 ◆ 登場人物の整理 ◆ 決済ゲートウェイとは ➔ IAPの場合

Slide 21

Slide 21 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 決済ゲートウェイとは ➔ 多種の決済を一括の契約とシステムで導入できるサービス ➔ カード会社・コンビニ各社の締日や入金タイミングの差分を吸収 ◆ 経理上も嬉しい ➔ デザインパターンでいうFacade pattern SBPS GMOペイメント ベリトランス MF KESSAI etc.

Slide 22

Slide 22 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ Webサービスの決済基礎 ◆ 登場人物の整理 ◆ 決済ゲートウェイとは ➔ IAPの場合

Slide 23

Slide 23 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 加盟店 IAPの場合 Apple 売買契約 高校生・保護者 スタディサプリ カード会社 キャリア各社 Apple ID コンビニ各社

Slide 24

Slide 24 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 Appleが 決済ゲートウェイにあたる つまり…

Slide 25

Slide 25 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 IAPを再考するには 決済ゲートウェイとして 比較してみるのも一案

Slide 26

Slide 26 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 IAPと他決済手段の比較 03

Slide 27

Slide 27 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 開発〜テスト ➔ 運用 ◆ 障害対応、カスタマーサポート、加盟店サポート ➔ ビジネス ◆ 手数料、マルチプラットフォーム、撤退 以下の3つの観点で比較

Slide 28

Slide 28 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 開発〜テスト ➔ 運用 ◆ 障害対応、カスタマーサポート、加盟店サポート ➔ ビジネス ◆ 手数料、マルチプラットフォーム、撤退

Slide 29

Slide 29 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ コードレベルの実装コストはややIAPが高い ◆ IAPの場合iOSがわかるエンジニアが必須 ◆ クライアントサイドUIとサーバサイド、定期実行ジョブの3つの実装が必 要になるのは同じ ➔ トランザクション管理の問題が一番やっかい ◆ 特にIAPは通信のシーケンスが複雑 開発の比較

Slide 30

Slide 30 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 決済の実装ではステージング環境でのテスト容易性が大事 ➔ AppStoreのsandbox (通称 ”精神と時の部屋”) には幾つか問題点がある ◆ 不安定、App Storeに接続できず失敗することがある ◆ App Store側での購読状態をこちらでコントロールできない ➔ リリースクオリティを満たせるか不安になることがしばしばある… テストの比較(IAPの問題)

Slide 31

Slide 31 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 任意のタイミングで任意のレスポンスを返せる仕組みがある ◆ ソフトバンクペイメントサービスではGUIでレスポンスを操作可能 ◆ Stripeはmock serverの実装を公開しており、自前で立てられる ➔ テストが容易、想定ケースを網羅することで安心してリリースできる テストの比較(他の決済ゲートウェイ)

Slide 32

Slide 32 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 開発〜テスト ➔ 運用 ◆ 障害対応、カスタマーサポート、加盟店サポート ➔ ビジネス ◆ 手数料、マルチプラットフォーム、撤退

Slide 33

Slide 33 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ どんなに堅牢に作っても障害は絶対に起きる ➔ 決済ゲートウェイに求めるもの 障害対応の観点

Slide 34

Slide 34 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 加盟店側サーバがDown ◆ 決済ゲートウェイへ支払い確定を送ったがこちらのサーバが死んでいる 場合「お金を払っているのに閲覧できない」という問題に ➔ 決済ゲートウェイ側サーバがDown ◆ 例外をこちらでハンドル可能なのでマシ ◆ どのタイミングでダウンしたかによってデータの一貫性を保つのが困難 なこともある 障害の例

Slide 35

Slide 35 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 こうした問題に対して ➔ SBPS (ソフトバンクペイメントサービス) ◆ 決済ゲートウェイ側の障害発生時間通知がある ◆ どちらかが正常に処理を完了できなかった場合の通知がある ◆ => 障害に付随する問題を検知できる ➔ App Store ◆ 特になし (知ってたら教えてください)

Slide 36

Slide 36 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ サブスクリプションサービスでは決済に関する問い合わせは必ず来る ◆ 「払ったのに使えない」 ◆ 「退会手続きをしたい」「返金してほしい」 カスタマーサポートの観点

Slide 37

Slide 37 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ SBPS (ソフトバンクペイメントサービス) ◆ 決済ゲートウェイ側の管理画面と呼ばれるWebサイトで決済履歴を照 会できる ➔ App Store ◆ iTunes Connect からは特定のユーザーの情報を閲覧できない 「払ったのに使えない」

Slide 38

Slide 38 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ SBPS (ソフトバンクペイメントサービス) ◆ 一部決済手段を除いて可能 ➔ IAPの自動更新では ◆ 加盟店側で強制的に解約することや返金することはできない ◆ 期間内の返金はユーザーからAppleへ問い合わせしてもらう 「退会手続きをしたい」「返金してほしい」

Slide 39

Slide 39 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 加盟店サポートの観点 ➔ SBPS (ソフトバンクペイメントサービス) ◆ 加盟店サポートヘルプデスクがある ◆ 加盟店ごとの個別対応にかなり柔軟 ◆ 不整合を検知した時は異常データの修正までやってくれる ➔ App Store ◆ 問い合わせることはできるが加盟店個別の対応は基本的に無い

Slide 40

Slide 40 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 開発〜テスト ➔ 運用 ◆ 障害対応、カスタマーサポート、加盟店サポート ➔ ビジネス ◆ 手数料、マルチプラットフォーム、撤退

Slide 41

Slide 41 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 30%

Slide 42

Slide 42 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 3~4%

Slide 43

Slide 43 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 30%: 自動更新型IAPの手数料 ◆ 2年目から15%(※ユーザー単位) ➔ 3~4%: 日本の主流な決済の手数料 ◆ (『銀行が「LINEペイ」に到底勝てない根本理由』より) ➔ 販売価格が同じだと純粋に利益率に響く ◆ IAPによる購入だけ単価を上げることもできるが… ビジネス観点の比較(手数料)

Slide 44

Slide 44 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 混乱

Slide 45

Slide 45 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 マルチプラットフォーム

Slide 46

Slide 46 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 iOSだけでなくAndroidや Webでサービス提供する 予定ありますか

Slide 47

Slide 47 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ IAPはiOSにしか適用できない ◆ ビジネスが成長してマルチプラットフォーム対応する場合、大きな足か せ ➔ 初手IAPは考えもの ◆ スタディサプリもApple以外の決済ゲートウェイを介した決済手段を実 装し、後からIAPを追加した YESなら以下に留意

Slide 48

Slide 48 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 iOSから撤退して 別プラットフォームに移る 可能性はありますか

Slide 49

Slide 49 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ IAPに限らずサブスクリプションモデルの決済をやめるのは難しい ◆ 新規申し込みを止めることはできる ◆ 既存ユーザーが使い続ける限りコードやチーム体制は残り続ける ➔ マルチプラットフォーム対応や手数料差を考えて他の決済手段に移ろうにも 運用コストのためになかなか離れられない…という事態を招く可能性 YESなら以下に留意

Slide 50

Slide 50 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 そろそろIAPの 良いところが聞きたい

Slide 51

Slide 51 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ iOSプラットフォームとインテグレートされたスムーズな決済の流れ ◆ クレカ情報などを入れることなく、ログイン済のAppleアカウントに紐づく 情報で決済 ◆ 登録後に別サイトに飛んで決済するより遥かに良いユーザー体験 ➔ クレカを持たない高校生がメインターゲットとなるスタディサプリではユーザー がプリペイドで使うケースも多くて人気 IAPの優位性

Slide 52

Slide 52 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ シームレスな決済体験は必ずしもIAPの独壇場ともいえないかも ➔ アプリ内では ◆ 後述の一部のケースでiOSアプリ内にStripeの決済導入が可能 ➔ Webでもモバイルでの決済体験向上が進んでいる ◆ Payment Request API ◆ Apple Pay on Safari とはいえ

Slide 53

Slide 53 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 結論 04

Slide 54

Slide 54 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 言いたいこと again WAIT In-App Purchaseがベストな選択肢か、もう一度考えてみましょう

Slide 55

Slide 55 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 とはいえIAPでないと 審査通らないのでは…?

Slide 56

Slide 56 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ガイドラインを読む > 3.1.5(a)アプリケーションの外部で使用する商品やサービス: ユーザーが アプリケーションの外部で使用する商品やサービスをアプリケーションで購入 できるようにする場合、そうした商品の支払いにはApp内課金以外(Apple Payや クレジットカードなど)の方法を使用する必要があります。 https://developer.apple.com/jp/app-store/review/guidelines/#in-ap p-purchase

Slide 57

Slide 57 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ アプリ外部で使用する商品(実物、チューターサービス)を販売する場合はむ しろIAPは使えない ◆ 参考: BOOTH iOSアプリはどうやって有料ダウンロード商品の販売を解禁したか? https://inside.pixiv.blog/danbo-tanak/4749 ➔ コーチによる学習サポートを提供するスタディサプリ合格特訓コースではクレ カ決済で申し込める ※ 審査リジェクトリスクは常にあります。選択は自己責任でお願いします。 IAP以外の決済手段提供ができるとき

Slide 58

Slide 58 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ 「iOSのサブスクリプションサービスならIAPだ」と安易に選択する前に再考し てほしい ◆ 決済ゲートウェイとしてのクオリティに着目すると良い ◆ その選択で御社のサーバサイドエンジニアが苦しむかもしれない ➔ 決済手段の導入はビジネス上の戦略も含めた重大な意思決定になる ◆ エンジニアとしてリスク洗い出し・代替手段検討をしっかりやる 改めて結論

Slide 59

Slide 59 text

#iosdc サブスクリプションサービスにおける In-App Purchase再考 Thank you!

Slide 60

Slide 60 text

#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 参考資料

Slide 61

Slide 61 text

#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/I ntroduction.html ◆ https://developer.apple.com/jp/documentation/General/ValidateAppStoreReceipt/Introduction. html ➔ Stripe関連 ◆ https://github.com/stripe/stripe-mock ◆ https://stripe.com/docs/mobile/ios

Slide 62

Slide 62 text

#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