こんにちは!本記事は弊社が2023-08-03に開催するオンラインイベント『B/43 Tech Talk 〜 Fintech×サブスクリプションサービス立ち上げの裏側〜』の紹介をします。単なる概要紹介では味気ないので、イベントの見どころが伝わるように解説していきます。
B/43のサブスクリプションサービスとは?
弊社スマートバンクはVisaプリペイドカードと家計簿アプリがセットになった新しい家計管理サービス「B/43」を提供しています。登録いただいたユーザーにカードを発行し、カードで決済を行うとアプリ上でリアルタイムに明細が見られる、という手間いらずの支出管理ができるサービスです。
2023年7月12日、B/43をコアに使っていただいているユーザーの声をもとに、新たにサブスクリプションサービス「B/43プラス」をリリースしました 🎉
これまでお使いいただいている機能は無料で使えるままとし、新カードデザインや新機能を追加してより便利に使えるようになりました。
イベントの趣旨
今回はサブスクリプションサービス「B/43プラス」立ち上げの舞台裏を公開しようというイベントになります*1。プロジェクトを通じて得られた技術的な知見や、スマートバンクのプロダクト開発プロセスの一端をお伝えしていきます!
イベントの想定視聴者
どんな方でもウェルカムですと強く言っていきたいところですが、得られるものが大きそうな想定視聴者を挙げるならば以下のような方々です。
- サブスクリプションサービス開発や決済システム、カード発行の裏側に興味がある
- 言語は問いません。強いて言うならRailsを利用するサーバサイドエンジニアだと深いところまで楽しめるかもしれません。
- どのようにユーザーの声を拾い上げながらプロダクト開発しているのかに興味がある
- サブスクリプションサービスにおいて重要なのが有料機能の選定です。我々はユーザーインタビューやアンケートなどの定性・定量両方の手法を通じて機能を選び、加えて、リリース前にユーザーに機能を体験してもらう場を設けました。このような開発プロセスに関心がある方も楽しめます。
- スマートバンクやB/43に興味がある
- いらっしゃったらとても嬉しいです。どんなエンジニアがいるのか、職種間でのコラボレーションがどのように行われているのか。弊社の雰囲気をぜひ感じ取ってもらえると思います。
トーク紹介
今回は4本のLTとトークセッションを予定しています。それぞれのパートについて紹介していきます。
LT①:サブスクリプションサービスをつくる時にエンジニアが考えること
課金基盤の開発を担当した@ohbaryeが、サブスクリプションサービスをゼロから立ち上げる際の設計や実装など、技術的な側面についてお話します。
先行する課金基盤(App Store、Google Play Store、Stripe)の調査、選択したテーブル設計手法、状態遷移、時刻や日付が絡む機能をどのようにテストするか、など様々なトピックがありそうです。
本人からの一言
B/43プラス課金基盤の最大の特徴は決済ゲートウェイやアプリケーションストアの決済機能を用いずすべて内製している点です。おかげで外部システムとネットワークを介した同期を行わなくてよく、サブスクリプションの仕様を高い自由度で設定できる大きなメリットがあります。
しかしながらあらゆる仕様を許容するような設計にするわけにはいかないため、しっかりと制約を決めて実装に落とし込まなければなりません。その過程で考えたことや得られた知見をお話したいと思います。
LT②:クレジットカード発行システムの裏側
B/43プラスリリースを告知した際に最も反響が大きかったことの1つが、特徴的なカードデザインです。
きらびやかな券面のデザインは@wariemonや弊社デザイナーの努力が結実したものですが、実際にカードをユーザーに利用してもらうには裏側のカード発行システムを作り込まなければなりません。
『B/43カード決済システムのしくみ(前編)』や『プロダクトサイドからみた決済サービスの法的スキーム』を執筆しており、弊社で一二を争うほどカード発行に詳しい@uribouがクレジットカード発行システムの裏側について解説します。
本人からの一言
クレジットカードを発行するには、PCI DSS と呼ばれるクレジットカード情報を保護するためのセキュリティ基準に準拠しながら、様々なベンダーと情報をやり取りする必要があります。また、カードの発送は、ユーザに届かず返送されるといった準異常系も含めると、複雑ないくつかのオペレーションから成り立っています。
本発表では、このようなクレジットカード発行・発送における複雑な仕様をシステムとしてどう実現したか、設計時の工夫も交えて解説させていただきます。
LT③:ユーザー自由度の高い機能のためのテーブル継承戦略(仮)
オブジェクト指向で設計されたスーパークラス / サブクラスからなる継承関係をどのようにリレーショナルデータベースのテーブルとして実装するか、悩ましいですよね。B/43プラスの機能開発にて我々もこの課題に遭遇しました。
B/43ではユーザーが行った取引にカテゴリを設定できます。これまではプリセットの12個のカテゴリしか扱えなかったのですが、B/43プラスではユーザー独自のカスタムカテゴリを作成できるようになりました。自由度が高くユーザーにとっては嬉しいですがシステムとしては設計に悩むところです。
同機能を開発した@hiroteaはこの課題を解決するためにClass Table Inheritance(CTI)を選択しました。このLTではRailsでどのようにCTIを実現したのか、設計や実装の工夫を公開します。
本人からの一言
RailsでClass Table Inheritance(CTI)を実現するためにDelegated Typesを活用しました。6.1から登場しているこの機能ですが、まだ活用事例は多くなくドキュメントも少ない印象です。このLTではDelegated Typesの具体的な活用例とPros/Consをお話しできればと考えております。
また余裕があれば、別機能である明細分割機能実装時の決済電文との戦いのあれこれも少しお話しできたらと考えております。
LT④:サブスクリプション機能制御の設計における勘所
“機能制御”と聞いて「なにかややこしそうだな」「権限管理の話?Feature Flagsの話?」etc. …と想像を膨らませることのできる経験豊富なエンジニア向けのLTかもしれません。
B/43はパートナーやお子さまとご一緒に利用できる家族の家計管理サービスです。そのため、B/43プラスの機能は申し込んだ方のカードに紐づくパートナーやお子さまも一緒にB/43プラスの機能をご利用いただける仕様としています。
つまり「サブスクリプションを購読しているユーザー」と「サブスクリプションの特典を利用できるユーザー」は必ずしも一致しません。このような仕様を実現するための創意工夫をモバイルエンジニアの@rocknameが語ります。
本人からの一言
サブスクリプションの設計において、ビジネス上の観点からさまざまなプランを考慮する必要があるかと思います。
例えば、ファミリープランのように1人のユーザーがサブスクリプションを利用することで複数人が同じ機能を利用できるプランがあります。 また、上位プランには追加の機能があり、下位プランとの間で利用できる機能に差があることも考えられるでしょう。
本発表では、このような柔軟なサブスクリプションのプラン設計を考慮した機能制御の設計についてお話ししたいと思います。
トークセッション:B/43プラスを作るエンジニア / PM / UXリサーチャー協業の裏側
今回はTech Talkということでイベント全体では技術面にフォーカスしていますが、スマートバンクのエンジニアの仕事はシステムの設計と実装に限定されません。PMやデザイナー、UXリサーチャーと要件・仕様を決めたり、ユーザーの反応を見てアジャイルに軌道修正する意思決定に携わったりと多岐にわたります。
このトークセッションでは「エンジニアがプロダクト開発のどのプロセスにどのように関わっているのか」を、PMの@yutabnbnやUXリサーチャーの@harokaを交えてお届けします。
スマートバンクのエンジニアが他職種の方とどんなコラボレーションをしているのかが分かるようなコンテンツにしたいと考えています。
おわりに
以上、『B/43 Tech Talk 〜 Fintech×サブスクリプションサービス立ち上げの裏側〜』の宣伝でした。イベントに少しでも興味を持ってもらえたらぜひ申し込んでみてください。
オンライン会場でお会いできることを楽しみにしています!
本記事はサーバサイドエンジニアの@ohbaryeが執筆しました。
*1:スマートバンクの行動指針の1つに “Be Open” があり、このような積極的な情報公開が推奨されています