Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サブスクリプションサービスにおけるIn-App Purchase再考 / Rethink In...
Search
Masato Ohba
September 01, 2018
Technology
7
8k
サブスクリプションサービスにおけるIn-App Purchase再考 / Rethink In-App Purchase on subscription services
iOSDC2018「サブスクリプションサービスにおけるIn-App Purchase再考」
リアルタイムでの反応はこちら
https://togetter.com/li/1262366
Masato Ohba
September 01, 2018
Tweet
Share
More Decks by Masato Ohba
See All by Masato Ohba
5年間のFintech × Rails実践に学ぶ - 基本に忠実な運用で築く高信頼性システム / 5 Years Fintech Rails Retrospective
ohbarye
9
5.6k
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
3
9.2k
組織のスケールを見据えたプロジェクトリードエンジニア制度の実践 / Project Lead Engineer for Scaling Engineering Organization
ohbarye
14
3.7k
Two Blades, One Journey: Engineering While Managing
ohbarye
5
6.1k
Git scrapingで始める継続的なデータ追跡 / Git Scraping
ohbarye
5
2.4k
プロポーザルのつくり方 〜個人技編〜 / How to come up with proposals
ohbarye
7
2k
Data Migration on Rails
ohbarye
8
14k
Unlocking Potential of Property Based Testing with Ractor
ohbarye
3
19k
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
2.4k
Other Decks in Technology
See All in Technology
事業開発におけるDify活用事例
kentarofujii
5
1.4k
スタートアップの現場で実践しているテストマネジメント #jasst_kyushu
makky_tyuyan
0
120
IoTLT@ストラタシスジャパン_20251021
norioikedo
0
110
OCIjp_Oracle AI World_Recap
shinpy
1
180
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
14k
現場データから見える、開発生産性の変化コード生成AI導入・運用のリアル〜 / Changes in Development Productivity and Operational Challenges Following the Introduction of Code Generation AI
nttcom
1
470
Biz職でもDifyでできる! 「触らないAIワークフロー」を実現する方法
igarashikana
7
3.3k
AWS UG Grantでグローバル20名に選出されてre:Inventに行く話と、マルチクラウドセキュリティの教科書を執筆した話 / The Story of Being Selected for the AWS UG Grant to Attending re:Invent, and Writing a Multi-Cloud Security Textbook
yuj1osm
1
130
Okta Identity Governanceで実現する最小権限の原則 / Implementing the Principle of Least Privilege with Okta Identity Governance
tatsumin39
0
170
HonoとJSXを使って管理画面をサクッと型安全に作ろう
diggymo
0
180
「タコピーの原罪」から学ぶ間違った”支援” / the bad support of Takopii
piyonakajima
0
140
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
3
660
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
526
40k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Writing Fast Ruby
sferik
630
62k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
How GitHub (no longer) Works
holman
315
140k
Building Adaptive Systems
keathley
44
2.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Transcript
#iosdc サブスクリプションサービスにおける In-App Purchase再考 サブスクリプションサービスにおける In-App Purchase再考 @ohbarye iOSDC Japan
2018
#iosdc サブスクリプションサービスにおける In-App Purchase再考 言いたいこと WAIT In-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 | 01 02 03 04
自己紹介、どういう立場から語るのか 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-27 https://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再考 ➔ 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再考 ➔ Webサービスの決済基礎 ◆ 登場人物の整理 ◆ 決済ゲートウェイとは
➔ IAPの場合
#iosdc サブスクリプションサービスにおける In-App Purchase再考 決済ゲートウェイとは ➔ 多種の決済を一括の契約とシステムで導入できるサービス ➔ カード会社・コンビニ各社の締日や入金タイミングの差分を吸収 ◆
経理上も嬉しい ➔ デザインパターンでいうFacade pattern SBPS GMOペイメント ベリトランス MF KESSAI etc.
#iosdc サブスクリプションサービスにおける In-App Purchase再考 ➔ Webサービスの決済基礎 ◆ 登場人物の整理 ◆ 決済ゲートウェイとは
➔ IAPの場合
#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再考 ➔ どんなに堅牢に作っても障害は絶対に起きる ➔ 決済ゲートウェイに求めるもの 障害対応の観点
#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再考 ➔ 開発〜テスト ➔ 運用 ◆ 障害対応、カスタマーサポート、加盟店サポート
➔ ビジネス ◆ 手数料、マルチプラットフォーム、撤退
#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再考 言いたいこと again WAIT In-App Purchaseがベストな選択肢か、もう一度考えてみましょう
#iosdc サブスクリプションサービスにおける In-App Purchase再考 とはいえIAPでないと 審査通らないのでは…?
#iosdc サブスクリプションサービスにおける In-App Purchase再考 ガイドラインを読む > 3.1.5(a)アプリケーションの外部で使用する商品やサービス: ユーザーが アプリケーションの外部で使用する商品やサービスをアプリケーションで購入 できるようにする場合、そうした商品の支払いにはApp内課金以外(Apple
Payや クレジットカードなど)の方法を使用する必要があります。 https://developer.apple.com/jp/app-store/review/guidelines/#in-ap p-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/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
#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