Cookpad Tech Kitchen #22 決済基盤の最新事情 https://cookpad.connpass.com/event/153267/
アプリ内課金の最新事情(クライアントサイド編)Cookpad Tech Kitchen #22@uzzu
View Slide
自己紹介•宇津宏一 @uzzu•クライアントサイド開発がメイン•2017年4月 入社•Design It!は良い本なので読みましょう
まとめ•Cookpadアプリではアプリ内課金の定期購読機能の新機能を早期に取り入れる動きがある•Cookpadアプリ以外でも新機能を使いたいので、そのノウハウを集約する形でCuisineプロジェクトが存在している、というのが現状•CuisineをCookpadアプリにも導入し、新規問わずサービス開発を加速させるのが今後のミッション
Agenda•アプリ内課金機能の利用状況•Cuisine(iOS, Android)の技術スタックと理由•所感と直近のミッション
アプリ内課金機能の利用状況•定期購入機能の利用がメイン•cookpadLiveでは都度課金機能を利用している時期もあった(現在は終了)•non-Consumable(都度課金/買い切り)以外は運用実績がある
Cookpadアプリの速•iOS: Promoting IAP, Promotional Offers(予定)•Android: Defer billing, Grace period, Acknowledgement•技術調査は発表後即(みんな新機能が大好き)•導入仕様検討や試作はbeta段階〜OSリリース直後•使用していないものは未検討ではなく意図的なものがほとんど
Cookpadアプリの速•個別のノウハウは随時アウトプットしてるので そちらをどうぞ - クックパッド開発者ブログ - https://techlife.cookpad.com/ - connpassのイベントページに登壇資料のリンクあり - https://cookpad.connpass.com/event/ - 他、エンジニア各位のblogやSpeaker Deck等
https://speakerdeck.com/uzzu/
Cookpadアプリ以外でも使いたいhttps://speakerdeck.com/uzzu/xin-gui-apurikai-fa-wozhi-eruyuzajue-ji-ji-pan
Cuisine•新規アプリ開発で必要になるユーザ認証・課金周りの汎用的且つ複雑な機能を吸収して、サービス開発を加速する為のプロジェクト•cuisine-api(Rails)、クライアントライブラリ(cuisine-ios, cuisine-android)、実装ガイドライン、導入サポート
ϢʔβొCookpad APIϢʔβج൫Reverse ProxyCookpad App (iOS, Android)༷ʑNew App API cuisine-apiNew App (iOS, Android, etc…)Financiercuisine(ios, android)
クライアントライブラリの技術スタックcuisine-ios - KeychainAccess - [test] XCTest - [test] OHHTTPStubs/Swiftcuisine-android - kotlin(MPP) - kotlinx-serialization - kotlinx-coroutines - ktor-client - ktor-client-okhttp - [test] kotlin.test - [test] assertk
クライアントライブラリの技術スタック•依存ライブラリは少なく、最低限必要なものだけ - 新機能をすぐに試せる状況にしたい - 外的要因によってbeta版SDKを試せない、といった 状況を極力防ぎたい•課金周りは自作したい - 固有のロジックが入る可能性が高い - 既存OSS以上の機能提供がCuisineには必要
現状•cuisine-ios - 認証、アプリ内課金両サポート - 新規アプリではほぼ導入されている(8件)•cuisine-android - 認証周りのみ。アプリ内課金機能追加はこれから - アプリ内課金機能を利用していない新規アプリで 導入されている(2件)
現状•Androidでアプリ内課金使いたい場合は? - ラッパーライブラリ + 実装ガイドライン Android Cookpadも新規Androidアプリも これらを使用して実装されている
例) 定期購入の購入処理フロー
アプリ内課金実装の共通化に対する所感•共通化・導入自体は「やればできる」•各サービスより先周りして動く必要がある - 「使いたい」話を受けてから動くのでは遅い - 「使えますよどうですか?」と売り込むぐらいの スピード感・スタンスであるべき
アプリ内課金実装の共通化に対する所感•WWDCやGoogle I/O等で発表された新機能をシュッと汎用化しなければならない - 新機能検証は即 - 特にServer notification周りは充実してきているので しっかり活用する•なるべく素の状態に近い汎用的な概念に落とし込み、且つ各サービスで素早く導入できるようにする - それなりに難易度は高いが、ソフトウェアエンジニアとしては とても楽しい
直近のミッション•CuisineのCookpadアプリへの導入 - 新規だけでなくCookpadアプリもサービス開発に 注力できるように - Cookpadアプリのレガシーな認証・アプリ内課金実装を リプレースする裏目的もある•導入するためには… - Cookpadアプリの速に追いつく(まずは機能追従) - 導入した後Cuisineをどう運用するか?(速の維持の為)