Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アプリ内課金の最新事情 クライアントサイド編 / In-app Purchase in Cookpad 2019

2d855b951ff3160c55915821261432f9?s=47 uzzu
November 27, 2019

アプリ内課金の最新事情 クライアントサイド編 / In-app Purchase in Cookpad 2019

Cookpad Tech Kitchen #22 決済基盤の最新事情 https://cookpad.connpass.com/event/153267/

2d855b951ff3160c55915821261432f9?s=128

uzzu

November 27, 2019
Tweet

Transcript

  1. アプリ内課金の最新事情 (クライアントサイド編) Cookpad Tech Kitchen #22 @uzzu

  2. 自己紹介 •宇津宏一 @uzzu •クライアントサイド開発 がメイン •2017年4月 入社 •Design It!は良い本なの で読みましょう

  3. まとめ •Cookpadアプリではアプリ内課金の定期購読機能の新機能 を早期に取り入れる動きがある •Cookpadアプリ以外でも新機能を使いたいので、そのノウ ハウを集約する形でCuisineプロジェクトが存在している、 というのが現状 •CuisineをCookpadアプリにも導入し、新規問わずサービス 開発を加速させるのが今後のミッション

  4. Agenda •アプリ内課金機能の利用状況 •Cuisine(iOS, Android)の技術スタックと理由 •所感と直近のミッション

  5. アプリ内課金機能の利用状況 •定期購入機能の利用がメイン •cookpadLiveでは都度課金機能を利用している時期も あった(現在は終了) •non-Consumable(都度課金/買い切り)以外は運用実績 がある

  6. Cookpadアプリの速 •iOS: Promoting IAP, Promotional Offers(予定) •Android: Defer billing, Grace

    period, Acknowledgement •技術調査は発表後即(みんな新機能が大好き) •導入仕様検討や試作はbeta段階〜OSリリース直後 •使用していないものは未検討ではなく意図的なものがほとん ど
  7. Cookpadアプリの速 •個別のノウハウは随時アウトプットしてるので
 そちらをどうぞ
 - クックパッド開発者ブログ
 - https://techlife.cookpad.com/
 - connpassのイベントページに登壇資料のリンクあり
 -

    https://cookpad.connpass.com/event/
 - 他、エンジニア各位のblogやSpeaker Deck等
  8. https://speakerdeck.com/uzzu/

  9. Agenda •アプリ内課金機能の利用状況 •Cuisine(iOS, Android)の技術スタックと理由 •所感と直近のミッション

  10. Cookpadアプリ以外でも使いたい https://speakerdeck.com/uzzu/xin-gui-apurikai-fa-wozhi-eruyuzajue-ji-ji-pan

  11. Cuisine •新規アプリ開発で必要になるユーザ認証・課金周りの 汎用的且つ複雑な機能を吸収して、サービス開発を加 速する為のプロジェクト •cuisine-api(Rails)、クライアントライブラリ(cuisine- ios, cuisine-android)、実装ガイドライン、導入サ ポート

  12. Ϣʔβొ࿥ Cookpad API Ϣʔβج൫ Reverse Proxy Cookpad App (iOS, Android)

    ༷ʑ New App API cuisine-api New App (iOS, Android, etc…) Financier cuisine (ios, android)
  13. クライアントライブラリの技術スタック cuisine-ios
 - KeychainAccess
 - [test] XCTest
 - [test] OHHTTPStubs/Swift

    cuisine-android
 - kotlin(MPP)
 - kotlinx-serialization
 - kotlinx-coroutines
 - ktor-client
 - ktor-client-okhttp
 
 - [test] kotlin.test
 - [test] assertk
  14. クライアントライブラリの技術スタック •依存ライブラリは少なく、最低限必要なものだけ
 - 新機能をすぐに試せる状況にしたい
 - 外的要因によってbeta版SDKを試せない、といった
 状況を極力防ぎたい •課金周りは自作したい
 - 固有のロジックが入る可能性が高い


    - 既存OSS以上の機能提供がCuisineには必要
  15. 現状 •cuisine-ios
 - 認証、アプリ内課金両サポート
 - 新規アプリではほぼ導入されている(8件) •cuisine-android
 - 認証周りのみ。アプリ内課金機能追加はこれから
 -

    アプリ内課金機能を利用していない新規アプリで
  導入されている(2件)
  16. 現状 •Androidでアプリ内課金使いたい場合は?
 - ラッパーライブラリ + 実装ガイドライン
 Android Cookpadも新規Androidアプリも
 これらを使用して実装されている

  17. 例) 定期購入の購入処理フロー

  18. Agenda •アプリ内課金機能の利用状況 •Cuisine(iOS, Android)の技術スタックと理由 •所感と直近のミッション

  19. アプリ内課金実装の共通化に対する所感 •共通化・導入自体は「やればできる」 •各サービスより先周りして動く必要がある
 - 「使いたい」話を受けてから動くのでは遅い
 - 「使えますよどうですか?」と売り込むぐらいの
 スピード感・スタンスであるべき

  20. アプリ内課金実装の共通化に対する所感 •WWDCやGoogle I/O等で発表された新機能をシュッと汎用化しなけれ ばならない
 - 新機能検証は即
 - 特にServer notification周りは充実してきているので
 しっかり活用する

    •なるべく素の状態に近い汎用的な概念に落とし込み、且つ各サービス で素早く導入できるようにする
 - それなりに難易度は高いが、ソフトウェアエンジニアとしては
  とても楽しい
  21. 直近のミッション •CuisineのCookpadアプリへの導入
 - 新規だけでなくCookpadアプリもサービス開発に
 注力できるように
 - Cookpadアプリのレガシーな認証・アプリ内課金実装を
 リプレースする裏目的もある •導入するためには…
 -

    Cookpadアプリの速に追いつく(まずは機能追従)
 - 導入した後Cuisineをどう運用するか?(速の維持の為)
  22. まとめ •Cookpadアプリではアプリ内課金の定期購読機能の新機能 を早期に取り入れる動きがある •Cookpadアプリ以外でも新機能を使いたいので、そのノウ ハウを集約する形でCuisineプロジェクトが存在している、 というのが現状 •CuisineをCookpadアプリにも導入し、新規問わずサービス 開発を加速させるのが今後のミッション