決済基盤の最新事情こんにちは。ユーザー・決済基盤部の大石です。決済基盤の最新事情を開催しました。登壇し、クックパッドの決済基盤での取り組みについて発表させていただきました。変遷とユーザー・決済基盤部という決済基盤の運用や開発を行う部署としてなぜ独立しているのか、そしてこれからの展望について話させていただきました。クックパッドの決済基盤は日々進化しており、その中でもアプリ内課金のサポートが一つの大きな転機であり、このあとの宇津、三吉によるアプリ内課金に関する発表につながるイントロダクションとなりました。中心に、決済に関するクライアントライブラリの技術スタックや導入理由などを発表いたしました。活用したサブスクリプションの状態管理について話させていただきました。Q&Aセッション最後に登壇者を交えてQ&Aセッションを行いました。いくつかの質問をピックアップして紹介致します。決済部分専門のチームだと新規開発よりも運用工数が増えていくことで増してくるマンネリ感。打開策としてどういったことをやっていたりしますか?運用に関してはできるかぎり自動化や利用者が解決できるようにして、人間によるオペレーションや運用負荷を抑えるようにしています。いまのところは運用に忙殺されてなにもできないということは避けられてると思います。APIを扱うSDKはイメージが着くが、決済や認証などはアプリのライフサイクル/UIのどこでその処理を行うか?が重要だと思っている。そのSDKを呼び出すタイミングなどはどう制御しているのか?(導入時に支援としてモブしたりとか??)SDKにおいては実装ガイドラインも提供しています。ガイドラインでは導入時に実装すべき事と呼び出しタイミングについても触れられており、これを元に実装して頂いています。モブプログラミングのように直接導入支援を行ったケースもあります。決済をテーマにしたイベントというのは他のテーマに比べて多くはない印象でどうなるか不安もありました。参加者の皆様の多くが決済の実装や運用に関わっていらっしゃったようで、懇親会では突っ込んだ質問が飛び交い決済に関わるエンジニア同士の一体感を感じました。参加者の皆様の取り組みなどもお聞きし、我々の決済基盤もまだまだやるべきことがあるなと刺激にもなりました。今回お話した内容はごく一部ではあるのでまた開催できればと企んでいます。最後に我らユーザー・決済基盤部は決済あるいはユーザー管理や認証・認可に興味のあるエンジニアを募集しております。クライアントアプリ開発の裏側こんにちは。メディアプロダクト開発部の柴原(@nshiba310)です。storeLive(以下、storeLive)のクライアントサイド(AndroidTV)の開発を行っています。クライアントサイドの開発についてご紹介したいと思います。スーパーマーケットの店頭に設置した縦型55インチの大型サイネージで、著名人や料理研究家による料理デモンストレーション映像をLiveや収録動画で提供するアプリです。置かれている売り場に適した再生したい動画を選択します。担当者が動画を止める操作をするまで選択された動画をループで再生し続けます。土・日曜日など、比較的人が集まりやすいタイミングでライブ配信を行うことがあり、ライブ配信が始まるとアプリは自動的にライブ閲覧画面を起動し、終了すると自動的に前に再生していた動画再生画面に戻るようになっています。通常のアプリと違い基本的に人間の操作が動画の選択時しかありません。ポーリング機能を実装しライブ配信や動画の情報を自動的に更新しています。使うことが候補としてあがってくると思います。以下の制限があり今回要求されている仕様を満たすことができないため使用することができませんでした。いうメソッドがあり、これを用いると1秒単位で実行時間を設定でき、きちんと設定した時間に発火してくれます。秒後に発火するアラームを設定しています。ガイドがあるため一度読んでおくことをおすすめします。https://developer.android.com/guide/backgroundオフライン機能スーパーはいろいろな人が出入りする場所のためいろいろな電波が飛び交う可能性があり、ネットワーク状況が不規則に不安定になる可能性があります。稼働する環境はスーパーの固定された位置を想定しているため、ネットワーク状況が悪くなってもネットワーク状況がいい場所に移動できないということもあり、ネットワークが不安定でアプリがうまく動かないという問題が稼働当初からありました。基本的に動画を再生し続けるアプリであり人間の操作はほとんど存在しません。それに加えて、アプリを操作して動画を再生する人と動画を閲覧する人は別の人間です。いったような表示で凌ぐことはできません。できるだけアプリの安定性を高めるためにオフライン機能を実装しました。オフライン機能を実装するにあたって取得したデータをローカルに保存する必要があり、今回はDBに保存することにしました。採用しているので、これらと連携する手段が公式で用意されているためです。採用していこう、という動きがあるのも理由の一因です。組み合わせて使うと簡単にそしてシンプルにオフライン機能を実装することが可能です。以下のようなデータを定義します。経由で非同期に取得することが可能です。関数を呼び出すときに別スレッドで呼び出す必要はありません。された場合等)に新しいデータが渡されます。データが入っているため、ネットワークがないとき、つまりオフラインでもアプリが動作するのでこれでオフライン機能の完成です。以外からのデータの更新が可能です。ポーリング機能が存在してます。するだけで良くなったのは非常に嬉しかったです。クラスを使ってデータを読み込みます。クラスを戻り値にすることができます。いう拡張関数が用意されています。リストの表示が可能となります。管理画面で操作した内容はいつ端末に反映されるのかオフライン機能ではローカルにデータを保存するため、一度データを取得したあとはネットワークに繋がらなくてもアプリの表示が可能です。いうのはわからず、管理画面からデータの変更を行っても、それはいつ端末に反映されたのか、すでに反映された後なのか、といった判断が難しいです。いう表示を出し、ひと目でネットワークに接続出来ているかどうかを判断できるようにしています。いうエラーが出てしまってデータの更新が出来なくなる、という問題が発生していて困っています。各動画に表示期間を設けています。何度も言う通り、オフライン機能ではローカルにデータを保存するため、一度データを取得したあとはネットワークに繋がらなくてもコンテンツの表示が可能です。逆に言うと、ネットワークに繋がらなければデータの更新は一生行われません。そのため、表示期間が定められていると期間を過ぎてアプリ上に表示されてしまうとまずい状況になってしまう可能性があり、いつまで表示していいのかという情報も一緒に保存しておく必要があります。句を書くことができるので、テーブルに表示期間のカラムを入れておくことでデータ取得時にフィルタリングできるので便利です。端末時刻は容易に変更できるため表示期間のチェックとしては不十分な場合があります。場合では、アプリや端末自体の操作はユーザーには行われない想定なので、端末時刻は変わらないという前提の元比較に使用しています。この方法を参考に表示期間のチェックをする場合には注意してください。主にポーリング機能やオフライン機能の開発についてご紹介しました。サービスのあり方を模索している段階で機能追加や仕様変更などがたくさんあります。大きな機能の実装がありましたご紹介したいともいます。興味がある方いらっしゃいましたら、気軽にお声がけください。一緒に色々チャレンジしていきましょう。使ったセキュリティログ検索基盤の構築サービス特性にあった検索システムの設計戦略クックパッド採用説明会「クックパッドはサービスの作り手を採用したいんです。/*}*/スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。