見出し画像

REALITYにフリーマーケットを作った話 REALITY Advent Calendar #3


はじめに

本記事はREALITY Advent Calendar 2021の2021/12/03の記事になります。
本年11月に行われたREALITY開発合宿で、作ったREALITYのフリーマーケット機能について解説します。

自己紹介

REALITY株式会社のサーバサイドの開発チームに所属しているsochiaiです。
主にGolangでのサーバAPI開発や、Node.js(TypeScriptを使っています)によるゲームサーバや、社内ツールの開発を行っています。

なぜフリーマーケットなのか

弊社ではメタバース事業への参入を発表しています。

画像4


ということで、メタバースに必要なものとはなんだろうか、と自分でも考えました。
まだまだメタバースの形は見えてきませんが、自分の中では「メタバース空間上での自由な交流や、自由経済」があると思っています。
ネットというのは、結構中央集権的な空間ですが、ユーザーがその中で自由を感じるためには、中央集権的なだけの経済活動(運営が物を売って、ユーザーが買う、というような)では、到底自由とは言えません。
ユーザー間での自由な物品のやり取り、売買があってこそ、資本主義社会に生きる我々が自由を感じられるという物です。
また自分はユーザーが自由に物を売り買いできる空間が好きです。ネットオークションやフリマや同人イベントなど、物が流れる場所には人が集まり、人が集まれば交流があり、交流の中から価値のあるものが発見・創造されるという循環があります。
あと単純な話ですが、ウィンドウショッピングやオークションなどは見てるだけでも楽しい。それ自体が楽しいコンテンツになりうるのです。

画像5

REALITYで自由なマーケットを作るには

…とまあ、志は大きく「REALITYにフリーマーケットを作るぞ」と思っても、今のREALITY上でユーザーが所有しているアイテムは多くはなく、アバターアイテム(主にガチャアイテム)しかありません。
なので、現状の物を活かすなら自然と「自分が所持しているガチャで入手したアバターのアイテムを売買する機能を作る」ということになります。
作る期間も合宿中の1日程度なので、規模感としてはこの辺りに抑えて作りきることを目指しました。

かつ自分はサーバエンジニアなので、サーバサイドだけで完結するように作ることにします。
とは言えユーザーが触れるようにするには、クライアント開発も必要なのですが、今回の合宿では基本的に一人一テーマで個別に物を作ります。
アプリ開発にも興味はありますが、期間を考えて慣れたサーバサイドのアセットのみで開発をします。
機能としては、以下の機能です。

・ガチャアイテムの出品
・出品時の値付け
・マーケット一覧での買取
・アイテムの所有権の変更

…先に言っておきますと、これらの機能が実際に世に出ることはありません。
というのも、ガチャのアイテムを売却する機能(重複したアイテムをアバターポイントというアプリ内通貨に変換する)はすでに存在しています。アイテムから別の価値を生み出す・変換するという意味では、機能としてコンフリクトしてしまうのです。
なので、あくまでマーケットを現状の資産のみを使って試作するとどうなるのか?という試みです。

内部の構造としては単純です。
詳しい情報は書けないのですが、REALITYのデータベースにはユーザーの所持ガチャアイテムを管理するテーブルが存在します。
マーケットへのアイテム出品を管理するテーブルを作成します。ユーザーのアイテムには全て一意なidをつけて管理しているので、それを使ってマーケットへどのアイテムを出品したかを管理します。

すごく簡略化した関係として以下のようになります。

画像6

出品者からマーケットに出品されたアイテムは、アイテムがもつ固有idをマーケットに登録します。

ユーザーのアイテム出品、マーケットでのアイテム買取の操作は、webviewページでそれぞれページを作成します。

できたもの

できたものとしては、以下のようになります。

その1、自分の所持するアイテムをマーケットへ出品するページです。

画像2

その2、マーケットに出品されているアイテム一覧ページです。

画像3

これらのページへはREALITYのお知らせ(この部分は色々なデザインのページを表示できるようにwebviewになっています)のUIからそれぞれのページを表示できるように改修しました。

REALITY内にはいくつかのアプリ内通過があるのですが、今回はそのうちのアバターポイントを使って売買が成立するようにしました。


終わりに

結構あっさりとしたものになってしまいましたが、初期の構想としては、最近の流行りのNFT売買っぽくアイテムに付加価値をつけるような機能を実装する予定でした。

・アイテム自体の売買履歴
・アイテムの価値の格付け(過去の持ち主のフォロワー数から)
・アイテムの特殊属性(そのアイテムを装着してるだけでバッジやフレームが付く)

時間がなく実装できなかったのですが、アイテムのマーケットというのは色々可能性があるし、それだけで1つのアプリや会社ができるほどのものなのでメタバースにおいては絶対必要だと思っているので、いつかREALITYがメタバース化したあかつきにはみんなが自由に売買できる楽しいマーケットを作ってみたいものです。

(普通に機能実装してしまっていまいちブログ映えはしなかったので、次はもっと見栄えのしたい機能を作ろうという意気込みとともに、合宿で食べた見栄えの良い肉を載せておきます)

画像1

明日は uchidaの「REALITYで家具を置きたいと思った話」です!
よろしくお願いいたします!