Webメタバース開発から運用コスト最小化まで #CEDEC2022 発表体験記
こんにちは。REALITY株式会社GREE VR Studio Laboratory(ラボ)インターンの堀部です。この夏、ラボは8月23日から25日に開催されたCEDEC2022にて2件の講演をしました。大学院生がCEDECで登壇することは珍しいと思いますので、そのうち堀部が直接講演した内容を中心にCEDEC2022体験記を紹介したいと思います。
【講演概要】
・パネルディスカッション「WebXRメタバースの挑戦 in CEDEC2022 ~Mozilla Hubs活用事例と課題共有~」
・チュートリアルセッション「オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで」
ラボのYouTubeにて、Special Editionを公開しています。合わせてご覧ください。
こちら、本セッションの資料です。
オープンソースで構築するWebメタバース ~Mozilla Hubsで学ぶUX開発から運用コスト最小化まで
このセッションでは、堀部・白井に加えて、グリー株式会社 開発本部の駒崎さんにも加わっていただき、インフラエンジニア視点のMozilla Hubs/Hubs Cloud AWSについて紹介いただきました。
インフラエンジニアから見たHubs Cloudベストプラクティス
はじめに、駒崎さんにHubs Cloud AWSを立ち上げるまでの構築編とQ&A形式での運用編で発表いただきました。
皆さん知っていましたか。Hub Cloud AWSの構築に必要なものは、管理者(相当)の権限を持つAWSアカウントとメイン用と短縮URL用の2つのドメインだけなんです。ドメインを持っていない場合は、AWS Route 53から取得します。そして、公式のドキュメント AWS Quick Start では、ビデオガイドも充実しており、20分程度で立ち上げまでを進めることができます。全編英語ですが、ラボでは 日本語訳を公開している ので参考にしてください!
駒崎さんによると、ドメインには注意が必要です。3層以上の深いドメインだと、構築のときにずっと動かないというようなバグが残るようです。公式ドキュメント Domain Recipes をしっかりと読んでから進めてください!
これほどブラウザで簡単に構築できる仕組みに、AWS CloudFormationが利用されています。これは設定ファイルを渡すと、それに沿ったシステムを構築してくれるサービスです。AWS Marketplaceでは、Hubsのアプリケーション一式を構築するCloudFormationの設定ファイルが配布されており、ユーザが読み込むことで簡単にシステムの構築ができるようになっています。詳しくは、駒崎さんによるブログ「Hubs Cloud で学ぶ AWS CloudFormation 実践入門」をご覧ください。
続いて、運用編です。駒崎さんが実際に受けた質問や、インフラエンジニアとして気になりそうなところをQ&Aで挙げてくださりました。
まず、一番気になる予算です。付けっぱなしの運用の場合、Personal版で最低でも月額で約3~4000円になります。上は青天井なので注意が必要です。AWS Cloudですので、基本的には従量課金です。VMのインスタンスサイズやデータベースの稼働状況、データ通信量など、どこが大きい課金要素なのかということを知っておくのが重要になります。もちろん、エンタープライズ版のほうが高額になります。見落としやすいところとしては、データ通信費が結構かかる場合があることに注意が必要です。
安く済ませたい場合には、Personal版を利用する、必要以上にVMのスペックを上げすぎない、DBの上限設定を上げすぎない/休眠モードのような機能を利用する、もっと長い間使わない場合は、オフラインモードという機能を利用すると、データは保持しつつ、 VMを含む計算リソースを停止できる。などが挙げられます。
予期しない請求を防ぐために予算を設定しておくこともおすすめです。Hubsでは「データベース予算パラメータ」と呼ばれるデータベースの稼働により一定の月額を超えた場合に、自動的にオフラインモードに移行する機能があります。また、AWSでは AWS Budgetを利用して通知することができます。HubsのDB予算も AWS Budget で構成されています。
次に、コストにも関係します、どのくらいのインスタンスサイズに設定したら良いのか、サイズごとにどのくらいの負荷に対応できるかが気になるかと思います。こちらはある程度目安はありますが、実際に配信されているコンテンツにかなり依存していると思われます。例えば、動画配信を多めに配置していると、ストリーミング用のインスタンスがボトルネックになり、固まってしまう可能性がかなり高いです。
また、クラウドで負荷を考える際に、オートスケールの話に触れる必要があるかと思います。AWS Hubs Cloudでは、データベースではできますが、VMでは難しいです。データベースは、オーロラサーバーというものが使用されており、上限と下限を設定してあげれば負荷に応じて性能が変化していきます。一方、VMは Auto Scaling Groupにより管理されていますが、オートスケーリングはされません。手動でパラメータを更新する必要があります。
このほかにも、障害が発生した場合や、バックアップ、認証に関してまとめてくださりました。資料や発表動画をご覧ください!
さいごに、インフラエンジニア駒崎さんから見たHubs Cloudは、AWSの知識があまりなくても立ち上げて公開することができるサービスで、簡単に、短期イベントのスペースを作成したり、WebXRの調査研究に利用できるとのことです。一方で、中長期の運用やカスタマイズする場合には、AWS全体の知識があるほうがスムーズだそうです。これは、CloudFormationが複雑であることが理由にあり、製品のレールからなるべく外れずに運用することをオススメされていました。そして、どのサービスがCloudFormationで管理されており、アップデートで巻き戻ったり不整合起こす可能性があるかを意識しておいたほうがよいとのことでした。駒崎さん、ありがとうございました!
大学院生が学ぶ Hubs Cloud大解剖
次に、堀部がMozilla Hubsが運営するDiscordやソースコード/データベースなどを調べながら、Mozilla Hubsのローカルビルドについて発表しました。
ローカルビルドでは、資料のオレンジで色づけたサービスが必要です。今回は、Hubs Cloud AWS 1.1.3を対象としていますが、ユーザ間通信で使用されていたJanusが Mediasoup をベースとしたWebRTCである Dialog と呼ばれるサービスに変わりました。Mediasoupは、APIまわりをNode.jp、WebRTCをC++で実装されているオープンソースです。
今回ローカルビルドしたのは以下の5つです。
Reticulum の README には、以下のようなコメントがあります。
簡単に要約すると「私たちは小さなチームなので、ローカルビルドまでサポートしてないよ。大変かもしれないけど、ローカルビルドするのは歓迎だよ!」です。これを読んだときはなげやりに感じましたが、READMEがとても充実していました。ローカルビルドを行うときは、まずそれぞれのREADMEを手順通り進めていくことを推奨します!
Reticulum/DialogのREADMEは、日本語訳を公開しています。
https://github.com/gree/hubs-docs-jp/wiki/Reticulum-ReadMe
https://github.com/gree/hubs-docs-jp/wiki/Dialog-ReadMe
ビルド環境としてはM1搭載MacBookですが、この発表をした時点ではM1依存による特別な環境構築は必要ありませんでした。
ビルドできたものがこちらになります!
ローカルビルドでハマったところとしては「CORSエラー」と「証明書」の2つあります。
CORSエラーは、ローカルSpokeにてMozilla Hubs公式が提供しているサンプルプロジェクトに含まれるモデルファイルをロードするときに発生しました。モデルファイルのURLがCORSエラーにならないように設定することで回避できますが、公式Spokeにてプロジェクトをダウンロードすることもできるため、再アップロードすることで回避しました。
証明書は、Webアクセスのために必要なものです。今回注意したいのは、Reticulumリポジトリにperms_keyという変数名で証明書のようなものが存在しますが、このKeyでも動かなかったことです。今回は、自分自身のPCのみの利用だったため、ローカルビルド用に証明書を生成しました。
ローカルビルドできたことで、PostgreSQLで生成されたデータベースを覗いてみました。テーブルをみると、accounts, scenes, hubsのようにテーブル名からも役割がわかるようなデータベース構造になっていることがわかります。また、hubsテーブルを覗いてみると、製作したルームのサイズ(room_size)などが、スキーマ名からわかります。そして、このような情報は、Json形式で記録されていることがわかりました。
今回、Mozilla Hubsのローカルビルドに挑戦しました。Mozilla HubsのREADMEが充実しており、サーバ/クライアント、データベースすべてを構築することができるので、メタバース実験環境として利用することができるのではないでしょうか。また、AWS Cloud上で提供されているものに含まれているサービスと同じものですので、ローカルで製作したルームをAWSにデプロイするような運用もできるのではないかと思います。
令和メタバース時代に求められる垂直技術と研究開発における挑戦
ここからは、ラボのディレクター白井さんによるパートになります。
『令和メタバース時代に求められる垂直技術とUXの挑戦』というタイトルですが、REALITY.appと並列にイベント、展示会やオープンキャンパス、学会やワークショップ…B2B/B2B2Cなど本格的なメタバースサービス研究開発による知見、協力各社からのご相談における課題、とくにMozilla Hubsに関するご相談もかなり持ち込まれます。パネルディスカッションとしては「WebXRメタバースの挑戦 in CEDEC2022 ~Mozilla Hubs活用事例と課題共有~」にて、矢野浩二朗先生、DNPさんやNTTさん、Gugenkaさんと登壇をされています。ここではGREE VR Studio Labが行っている、Mozillaのドキュメントの日本語翻訳やHubsを活用したい企業さんからのよく聞かれる質問(FAQ)から学ぶ最新情報を共有しています。
■たくさんの人がきても住み心地の良い場所をつくる
■日本のコンプライアンスに対応する
■UX面の研究開発:快適な音響空間への取り組み
■UGC環境の開発への課題と挑戦
……といった要素で凝縮してお伝えしています。詳しくはアーカイブ動画が公開されましたので、観ていただけると幸いです。他のパネリストのお話も興味深いです。
さいごに「メタバース時代のUX開発とUGC開発者の育成技術」として、「メタバース時代のUX開発におけるHubsの役割と価値創出」をまとめていますが、令和メタバースの幻滅期において、スマートフォン向けメタバース「REALITY」の開発の横で、XRC事業部とともに質実剛健なWeb3と、「にぎわい」の重要性や、セキュリティ、品質面、コンプライアンスなどを高度にコンサルティングしながら、HubsやブラウザUGC環境「Spoke」を活用し、PoCをすすめていき、よりメタバースサービスとして多様なユーザにリーチする必要があるお客さんにはモバイルアプリとしての「REALITY Spaces」の提案や開発にも繋がっていく事例が紹介されています。
また、UGC開発者の育成技術として、ラボのような学生インターンやデジハリ大学院での講義や演習の取り組み、ワークショップを通した『子供でもできる』を実験して、『垂直に、だれでも、いっしょに創り出せる、高品質に』をつくり上げていく手法などが紹介されました。
まとめ
堀部は情報系学生として、OSSであるMozilla Hubsの研究や翻訳を通して「React/ThreeJS/クラウドサービス開発を学ぶ機会」になりましたし、研究としてはHubsをベースにした「メタバース時代の実験環境」の構築に取り組むことができました。また、XRC事業部の皆様方とのコラボや、協力会社さん(イオンエンターテイメント株式会社さん、大日本印刷さん)とのコンサルティングを通して一緒にお仕事をする経験が得られて非常に勉強になりました。これからWebXRについての研究は白井Dと後輩インターンに引き継いでいく予定ですが、この分野の研究を深めたい!という学生さんや、何かご相談がある企業さんがいらっしゃいましたら jp-gi-vr@gree.net までお問い合わせいただければ幸いです。