【Inside Us #03】「REALITY」は今日のアイデアを実装する。ハイスピードな開発環境の秘密

「Inside Us」は、グリーグループの魅力を技術を通じて深掘りし、お伝えする連載です。本連載はグリーグループの3つの事業の柱のうちの一つであるライブエンターテインメント(現:メタバース)事業を取り上げます。
バーチャルライブ配信アプリ『REALITY』の開発・運営や、バーチャルライブ・バーチャルイベントを開催するためのソリューション「REALITY XR cloud」の提供などの事業を行うREALITY社について、全4回を通してお伝えします。

第3回目の今回は、REALITY社が提供する『REALITY』の“つくりびと”であるエンジニアとプラットフォームの仕組みや技術について深掘りします!
今回は実際に『REALITY』のアバターでインタビューに答えてくれました!

山内(以下、ようてん)山内(以下、ようてん):REALITY株式会社 プラットフォーム事業部 エンジニアリング4チーム マネージャー
『REALITY』アプリの立ち上げから参画し、現在はUnityを用いたアプリ内でのアバターなどの3D関連の機能開発を担当。

高木高木:REALITY株式会社 プラットフォーム事業部 エンジニアリング1チーム マネージャー
GREE Platform、WFSでの複数のゲーム開発を経て、2018年にREALITY株式会社へ異動。現在は『REALITY』アプリのサーバサイドの機能開発を担当。

ユーザーにリアルを感じてもらいたい。開発はネイティブをベースに

ーー『REALITY』は、開発方法にどのような特徴がありますか?


ようてん

ようてん:まず『REALITY』の開発では、一般的な開発方法とは異なり、ネイティブアプリをベースにしながら、一部のビューでUnityを利用しています。ネイティブアプリにUnityをライブラリとして含む形になっています。
Unityは世界で最も利用されているゲームエンジンで、スマホに限らずPCやコンシューマーゲーム機のアプリに採用されています。特に3Dキャラクターを自由に動かして遊ぶようなスマホアプリでは、開発の土台にUnityを用いてネイティブコードはプラグインの形で実装し、通知や課金などのOS・プラットフォーム側の機能を連携・補完させる形で開発するのが一般的です。

ーー3Dゲームなどでは一般的なUnityをベースにした方式ではなく、ネイティブアプリをベースにしているんですね。


ようてん

ようてん:そうなんです。やっぱりアバターも配信も全部やりたいとなると、ユーザーが快適に、しかも長時間に渡ってアプリを利用できる環境を実現するには、他のSNSアプリと同等の快適な動作・操作感が求められます。ネイティブをベースにすることはその目標への最適解だからです。
スマホアプリでもUnityで多く作られている3Dがメインのゲームであれば、最初に大きなデータをダウンロードしてから、ゆっくりとロードを待ち、コンテンツの世界にはまっていく流れが受け入れられますが、SNSなどのスマホアプリやWebサービスはそうではありません。アプリを立ち上げてすみやかにファーストビューが表示され、最初のコンテンツが表れて、次のメニューへ移動する。そうした動作がシームレスでなければユーザーのストレスになってしまいます。
『REALITY』アプリは3Dアバターが動くサービスなので、早く起動することと、豪華に動くことの両方が求められます。そのためにネイティブとUnityの「いいとこ取り」の組み合わせを吟味した結果が現在の動作環境だといえます。



左のアプリ起動画面から右のファーストビューまではほんの数秒で表示される

リアルタイム性と拡張性を高めるシステム。それは、もっと先の未来を見据えて

ーー「動作が速い」・「アバターをリッチにする」ことを両立するうえで苦労している点は?


ようてん

ようてん:ユーザーにストレスなくリアルタイム性の高いコミュニケーションを楽しんでもらいたい。この願いを叶えるには、サーバーに求められる能力も特殊なものになります。
動画をストリーミング再生するような一般的なアプリであれば、サーバに求められるものはテキストや画像、再生のために動画データを小分けにしてダウンロードする機能です。

しかし、バーチャルギフティングやコラボに対応したインタラクティブな「ラグなし・ギガ安・高画質(*1)」なライブ配信を実現するためには、通常の映像ストリーミングとは違ったシステムを組む必要があります。映像ストリーミングは高解像度・高画質では「ギガの消費」が激しく、回線が細いと画質が悪化してブロックノイズが多く発生します。また、通常は映像と音声には大きな遅延が発生するため、ユーザーのコメントやギフティングへのリアクションが返せるのは数秒から数十秒遅れることになり、リアルタイムのコミュニケーションはとりづらくなります。それではアバターの魅力が伝わりません。

ーーなるほど。配信における、モーションやコメントへのリアクションなどのタイムラグを抑えるために、サーバー構築に工夫が求められるんですね。


高木

高木:『REALITY』ではWebSocketをベースに必要な情報をやりとりするサーバーをいちから開発・構築しています。容量の大きな映像データではなく、顔の位置のトラッキングモーション結果や、ギフトや音声データなどをサービスの部品として送り合い、レンダリングはローカル環境で行うことで、通信容量を大幅に圧縮しています。これで低容量かつ低遅延を実現し、さらに後々発展したデータを容易に追加することができるようになっています。

ーー機能の拡充も視野に入れてサーバー構築しているのですか?


高木

高木:はい。たとえば、現在は最大4人のコラボ配信ができ、その配信枠内4人でゲームがプレイできるのですが、さらに8人、16人と配信枠を超えてチーム対戦ができるマルチゲームに発展させたり、もっと制限のない広場のような部屋を作れるようにしたりしても対応できるように、『REALITY』という世界の、未来を見据えたシステムにしています。

「REALITY」のハイスピードな開発環境の秘密

ーー最近苦労して実装された機能などありますか?


高木

高木:現在エンジニアが中心となって、安定性や速度など「アプリにあって当たり前のもの」の品質向上に取り組んでいます。最近だと音声通話では必須となるエコーキャンセル機能を導入したり、アプリが起動してから配信を見られるようになるまでの時間を大幅に短縮したりしました。修正による影響が大きいなど困難なこともありましたが、それぞれの担当となったエンジニアが企画の立案から進行管理、実装まで手がけながら取り組みました。

ーー別の記事でも触れられていましたが、『REALITY』は改善や要望を反映するのがとても早いですよね。


高木

高木:XR業界では開発者がコミュニティに出て、ユーザーと直接コミュニケーションをとることが多く、『REALITY』でも開発者がアカウントをオープンにしていちユーザーとしてサービスを使いながら、自由に配信したり、ユーザーからの要望を直接聞いたりしています。ユーザーとの距離が近く、要望を汲みやすい環境だと言えます。

また、エンジニアが個人的に思いついたことや飲み会で盛り上がったネタなどのアイデアが隠し機能として『REALITY』の本番環境にすぐに実装されます。
具体例を挙げると、コメントとして特定のコマンド文字列を入力することで配信中に着替えることができる隠しコマンドを実装しました(*2)。これは、前述した通り、Unityがライブラリとして効果的に機能し、アーキテクチャ設計として独立した結果、可能になっています。
それに続いて、別のメンバーがコメントの自動翻訳(*3)やおみくじ(*4)のコマンドを実装し、特に翻訳についてはアプリの提供地域を広げている最中なので、実用性から正式な機能として開発してほしいと要望があがっています。
まさに「お客さまの声」を開発チームが直接聞いたり、サービスを使ってる中で思いついたアイデアをトライアンドエラーで試しながらアプリを進化させていける環境だといえます。

「REALITY」の“つくりびと”は欲張る。試す。巻き込む。そして、楽しむ。

ーーエンジニアから見た『REALITY』をつくる上で面白いところ、魅力は何でしょうか?


ようてん

ようてん:『REALITY』で用いられている技術や手法それぞれは珍しいものではありません。しかし作りたいサービスのためにそれらを組み合わせて、全部やってみようという方針は珍しいと思います。この背景には「どんどん新しく作って試そう」というREALITY社の文化に加えて、「新しいやり方もどんどん試そう」という『REALITY』プラットフォームチームの性格があります。


高木

高木:新しいサービスを試行錯誤しながら作るのはやっぱり楽しいですね。その中でも『REALITY』では利用する技術や仕組みについても割と自由に試すことができますし、作りたいものを作るというマインドが歓迎され、浸透している環境なので、自分の仕事のプラスアルファでやりたいことがあれば何でも試せます。また、隣の事業(XR Entertainment事業)と協力して、スタジオでの配信番組を制作することもありますし、WFSと協力して『REALITY』の配信中に遊ぶことのできるゲームの開発を行ったりもしています。『REALITY』は「アバター×ゲーム×ライブ配信SNS」のプラットフォームとして現在もどんどんと成長している最中です。困ることといえば、やりたいことが多くて時間が足りないことですかね(笑)。なので、そんな『REALITY』を一緒に作る仲間を絶賛募集中です。

第3回はここまで。第4回は、REALITY社が提供を目指す新しいソリューションの解説や、いま取り組んでいる試みについて紹介します!

(*1)2020.01にリリースした「低遅延モード」のキャッチコピー。内部的にはクライアントレンダリング、CRと呼ばれている。「ラグなし・ギガ安・高画質」を実現!-REALITYで低遅延モード配信が可能に
(*2)「/slot 1」などのコマンド。最近コラボゲストにも対応した。
(*3)「/translate ja」「/translate en」などのコマンド。利用制限があり、エネルギーが切れると回復するまでおやすみする。
(*4)「/omikuji」コマンド。日々の運勢と本日のラッキーギフトがわかる