見出し画像

REALITYにプレミアム機能を導入してみた話 - REALITY Advent Calendar 2022 #3

こんにちは、REALITY Advent Calendar 2022 3日目担当サーバエンジニアのゆーしです。昨年に引き続き開発合宿は2歳の愛娘と離れるのが辛いので、リモートでの参加です。
プラットフォーム部エンジニアの開発合宿はもちろん現地でワイワイ楽しくやるのが一番ですが、個々の事情によってはリモートでの参加もOKです。おいしいご飯が食べられなかったのは大変残念でしたが!

今回の合宿ではREALITYにプレミアム機能を導入してみたので、その紹介をさせていただこうと思います。

プレミアム機能とは

プレミアム機能とは、アプリ内課金で購入可能な、一定期間特典を受ける権利のことで、保有していると有効期間中様々な特典を受けることができるといったものです。
世の中のサービスでも同様のもの導入しているものは多く、例えば広告が表示されなくなったり、保存容量/件数が増えたりするようなものはよく目にします。
決済手段としても様々なタイプがあり、1週間単位であったり1ヶ月単位で都度購入が必要なものもあれば、サブスクリプションサービスとして定期購入の形を取っているものも多くあります。

REALITYの決済基盤のお話

さて、過去にREALITY for WEBに関する記事でご紹介させていただいたのですが、

REALITYでは決済の仕組みとして、同じグループ会社のWFS のプロダクトで主に採用されているGamelibと呼ばれる共通基盤を利用させていただいております。

このGamelibですが、通常のGoogle/Apple/Stripe(Web)の決済の仕組みを始めとして、期間限定/増量キャンペーンといった時限キャンペーンであったり、定期購入の仕組みまでしっかりとサポートしています。
こういった決済周りの非常に気を使う部分を専門性の高い方々に担っていただくことで、安心してプロダクト開発に専念できるわけですね。

実際に導入してみました

今回は、このGamelibの仕組みを使って1週間有効な視聴向け機能を作ってみることにしました。
まずは権利を購入できるようにするところからですが、上記の通りGamelibにて大部分がサポートされているので、管理ツールに値段や名称などの設定を入れて、プロダクト側の表示部分を少し修正してやればこの通りすぐに購入可能な状態にできます。

今回はREALITY for WEBで購入してみました

続いてサーバプログラムに修正を加えていきます。
実際に購入した権利の有効期間などについてもGamelibのサーバ上で全て管理されているので、プロダクト側ではユーザの購入状態をAPIを使って問い合わせて確認するだけでOK! 
今回は、以下のようにギフトを贈った際の挙動に変化を加えてみました。

ギフトを送ると、"熱烈なファンの"が付きます
熱心な応援のおかげでスコアも心なしかいつもより増えているかも!?

ということで、実際の難易度は特典内容に左右されるのですが、比較的容易にプレミアム機能を導入することができました。

終わりに

今回は実装した機能は、あくまで共通基盤の仕組みを利用してみるためだけに作ったもので、リリースの予定はありません。
ですが、今回試みたような応援を手助けしてくれるサービスだったり、その他にも月替わりで季節に合わせたアバターコーデをプレゼントしてくれるようなサブスクリプションプランとかあったらいいなと考えているので、将来何かしらの形でお得なプレミアム機能を提供できればと思います。

さーて、明日のアドベントカレンダーは?

明日はUnityエンジニアの@izmさんになります!
きっと素敵な記事が準備されていますよ〜、お楽しみに!!