GCPにクラウドゲーミングPCを用意してQuest2 + VirtualDesktopでVRゲームを遊ぶ

はじめに

GoogleCloudPlatform(GCP)上のGoogle Compute Engine(GCE)でGPU付きのインスタンスを利用して、ゲーミングPCをクラウド上に用意します。そのクラウドゲーミングPCにQuest(1|2)向けに提供されているVirtualDesktopを利用してVRChatなどのVRゲームを遊んでみます。VirtualDesktopで調整できるBitrateが10Mbpsから150Mbpsなので、これくらいのあればで遊べるはずです。ここらへんは検証不足なので情報を頂けると助かります*1。料金は大体150yen/hくらいですが、GCPを初めて利用する人には90日間300$分の無料クレジットがもらえて少なくとも200時間くらいは無料でできるので気になる人は気軽に試していただきたいです。

誰向け

  • 帰省先や旅行先でVRChatなどのPCVRゲームがしたい人
  • PC版VRChatなどのPCVRを試してみたい人
  • 自前のゲーミングPCが壊れたけどVRChatなどのPCVRゲームがしたい人

ことわり

この記事を参考にして生じた予想外の事故等については自己責任でよろしくお願いします。

事前に用意するもの

  • Chromeが利用できる端末
  • 高速な通信環境
    • 5 GHz AC or AXのWi-Fiルーターが必要
    • VirtualDesktopで調整できるBitrateが10Mbpsから150Mbpsなので、これくらいのあればで遊べるはずです。ここらへんは検証不足なので情報を頂けると助かります。
    • 筆者が試した環境ではネットカフェ(愛知県)が150Mbps、実家(愛知)が(たしか)300Mbps、自宅(神奈川)が700Mbpsで東京リージョンのサーバーに繋げていましたがどの環境でも違和感なくVRChatが楽しめました。
    • ここらへんは検証不足なので情報を頂けると助かります。
    • 高速な通信環境がない場合は、高速な通信環境を提供するネットカフェや貸し会議室にQuestを持ち込みましょう。
  • Quest 2
    • おそらくQuestでも大丈夫
    • 以降Quest2とQuestの両方を指すものとしてQuestという用語を用います。
  • Quest向け Virtual Desktop

手順

環境構築に掛かる想定作業時間:1~3時間

注:2022年1月の記事なので、リンク先やUIが変わっている可能性があります。

GCPでの前準備

始める前に - GCPを参考にしながら進めます。

プロジェクトに割り当てられる全世界で使えるGPUの数がデフォルトで0個なので1個使えるように制限解除の申請をします。(注:地域別で利用できるgpuの数の制限解除の必要はない)

Cloud Consoleにログインし、上部にあるプルダウンで、先ほど作成したプロジェクトを選択します。

Console の左上のナビゲーション メニューを開き、「IAMと管理」->「割り当て」を選択します。

下図のようにフィルタで「GPUs(all regions)」で検索し、チェックをつけ、上部の割り当てを編集で割り当て上限のGPUの数とリクエスト理由を入力し、次へを押します。

次へを押すと、連絡先を求められるので入力し、リクエストを送信します。

メールによると、1~2営業日で承認されると返信が来ますが、私の場合は1分後に承認のメールが来ました。

なお、プロジェクトへの反映は最大15分かかるということなので注意しましょう。 承認メールの5分後くらいに、上限(クオータ)が1に増加していまいした。

VMインスタンスの作成

Cloud Consoleから下図のように「VMインスタンス」を選択します。

インスタンスを作成」を押します。

下図のように

  • 適当な名前の入力
  • リージョン・ゾーンでは、 物理的に近いリージョンを選ぶと良さそうです。下図では「asia-north-east1-a」を指定しています。
  • シリーズ・マシンタイプでは「N1」シリーズで「n1-standard-8」を指定します。カスタムで指定するのもあり。
  • GPUの選択では「NVIDIA Tesla T4」、GPUの数は「1」個
  • 「仮想ワークステーションを有効にする」にチェックを入れます。
  • 「表示デバイスを有効にする」のチェックを外す(デフォルトで外れているはず。)

注意

  • asia-north-east1-bはGPUを提供していないです。
  • 第二世代のCPUを選択するとGPUが選択できなくなるので、N1シリーズを選択してください。
  • 「asia-north-east1」リージョンでは、「asia-north-east1-a」と「asia-north-east1-c」のゾーンが利用できますが、VRChatをやる場合は、ゾーンが「asia-north-east1-a」の方がpingが低かったです。(最小で1-cは15ping,1-aは9ping)
  • GPUの選択は下図の「CPUプラットフォームとGPU」を選択することで指定できます。

続いて、下図のようにブートディスクを変更します。OSを「Windows Server」、バージョンを「Windows Server 2019 DataCenter」、サイズはインストールするゲームのサイズに応じてお好みで指定します。

注意

  • OSをWindows Serverにするとライセンス料がCPU時間(実際に動かしている時間×vCPUの数で計算される時間)で大体5yen/hでかかります。

ファイアウォールはとりあえずはデフォルトのまましておいて、あとでVirtualDesktopを通じた通信を許可するためのファイアウォール設定を行います。

また、下図のように管理->可用性ポリシー->プリエンプティブをオンにすることで、通常よりも低価格でVMインスタンスを利用できるようになります。ただし、24時間でインスタンスが停止したり、予期せずにインスタンスが停止したりします。詳細はこちらをご覧ください。

最後に「作成」ボタンを押して、インスタンスを作成します。

注意

Operation type [insert] failed with message "The zone 'projects/cloudpcvr/zones/asia-northeast1-c' does not have enough resources available to fulfill the request. Try a different zone, or try again later."

インスタンスの実行とRDPでの接続確認

ここを参考に進めていきます。 インスタンスが実行されていなかったら、実行し、RDPでWindowsに接続するためのパスワードを設定します。

下図の赤線の「RDP」を押してChrome拡張のRDPを起動します。

Domainは空白のまま(でも大丈夫でした)、Passwordに先ほど設定したパスワードを入力し、Windowsにログオンします。

注意

  • Chrome拡張のRDPを利用して動作が不安定な場合は、Windowsの方は下図赤線のようにRDPファイルをダウンロードして、「リモートデスクトップ接続」で開いて接続するとよいです。

  • ほかのRmoteDesktopアプリケーションを利用する際に接続先のIPアドレスを知りたい場合は下図赤線のアドレスになります。(黒塗りになっている部分です)

RDP等でログオンすると、ServerManagerがで表示されていると思うので、下図のようにLocalServerの設定で

  • Windows Defencder Firewall を Private:On
  • IE Enhanced Security Configuration を off
  • Time Zoneを (UTC+09:00)

に変更します。

デフォルトだと、IEでファイルのダウンロードができないのので、両方オフにします。

タイムゾーンを日本に変更します。

IEを再起動して、choromeをダウンロードします。

VR用ゲーミングPCの環境構築

最新のNVIDIAドライバーのインストール

基本、ここの通りに進めます。

下図のようにデスクトップ上のGoogleCloud SDK Shellをダブルクリックして起動します。

最新のドライバが入っているフォルダのリストを取得します。 gsutil ls gs://nvidia-drivers-us-public/GRID このコマンドをShell上にコピペしてエンターを押すことでドライバのリストを確認できます。

注意

  • 直接Shell上にペーストできないので、サーバー上のメモ帳(NotePad)にペーストしてからコピーしなおして、Shellにペーストするよいです。

一番数字の大きいGRID確認します。 下図の赤線のフォルダの中に最新のドライバが入っています。(記事執筆時点(2022/01/10)ではGRID13.1)

最新のドライバを確認を確認します。 gsutil ls gs://nvidia-drivers-us-public/GRID/GRID13.1/のコマンドで下図赤線のドライバを確認します。

gsutil -m cp gs://nvidia-drivers-us-public/GRID/(上図で確認した最新のGRID番号)/(上図で確認した最新のドライバ) %USERPROFILE%/Downloads のコマンドで最新のドライバのダウンロードします。 例えば、上図のドライバをインストールする場合のコマンドは以下になります。 gsutil -m cp gs://nvidia-drivers-us-public/GRID/GRID13.1/472.39_grid_win10_win11_server2016_server2019_server2022_64bit_international.exe %USERPROFILE%/Downloads コマンドはでメモ帳で編集すると良いと思います。

下図のようにドライバがダウンロードフォルダでダウンロードされているので、ドライバを右クリックし、管理者権限でインストールします。

インストールができているかを確認 タスクマネジャーで確認

Oculus、Steam、VirtualDesktop、VRChatなどのVRゲームのインストール、マイクの設定

  • Quest 2 PCアプリ(旧Oculusアプリ)のインストール
  • steamのインストール
  • steam上でSteamVR - Steamのインストール
  • Steam上でVRChat - Steamのインストール
  • PC向けのVirtualDesktopのインストール

    • ACCOUNTSにはOculusアカウントのユーザー名を入力します。プロフィール - Oculusからユーザー名を確認できます。
    • OPTIONSでは下図のように「Allow remote Connections」にチェックを入れます。
  • アプリがマイクのアクセスするのを許可します。

    • 下図のようにSettings -> Privacy -> Allow apps to access your microphoneを「On」にする。

全てのインストール等が終わったらPCを再起動しましょう。

ファイアウォールの設定

下図のように左上のナビゲーションメニューからファイアウォールを選択します。

下図のようにファイアウォールルールを作成します。

  • 適当な名前を入力
  • トラフィックの方向を「上り」
  • 送信元IPv4範囲を「0.0.0.0/0」
  • tcpの 38810,38820,38830,38840 のポートを入力

のように指定します。

注意

  • 上のVirtualDesktop用の設定だとTCPポートがグローバルに開かれているので送信元IPv4範囲を絞る方がセキュリティ的に好ましいです。
  • デフォルトのネットワーク設定だとRDP用のTCPポートがグローバルに開かれているので送信元IPv4範囲を絞る方がセキュリティ的に好ましいです。
  • 他には、VRで遊び終わったらインスタンスを停止しておく、クラウドPCの方には重要な情報を置かないなどをするのが好ましいです。

インスタンスを起動しVRアプリケーションを起動する。

  • 下図の開始ボタンを押しインスタンスを起動します。1分くらいかかります。
  • Questを装着し、VirtualDesktopを起動し、COMPUTERSから設定したクラウドPCに接続します。
  • 接続に成功するとWindowsのログオン画面が表示されます。右下の赤丸を選択すると、キーボードが表示されます。そのキーボードで設定したパスワードを入力します。

  • 下図のようにVirtualDesktopのGAMESからインストールしたVRゲームを起動します。

注意

  • なかなかVRアプリケーションが立ち上がらず、「GPUが接続されていません」みたいなエラーが出た場合、NVIDIA Control Panelを開いて、OpenGL rendering GPUをTesla T4に変更して右下の適用ボタンをおし、設定を反映します。反映させたらPCを再起動します。

  • RDPを使いながらだと正常にStemVRが動作しないので、VR中はRDPを切断しておきます。

    • RDPを切断するとセッションが破棄され、ログアウトされます。
  • RDPが使いにくい場合はゲーミングPC環境構築 - Qiitaを参考にParsecを利用しましょう。
    • ParsecとSteamVRは共存できます。
    • Parsecを利用しながらだと、通信量が増えるのでVR中は切断した方が良さそうです。

インスタンスの停止

  • 下図のように停止ボタンを押して停止します。

注意

  • インスタンスを停止している間はCPUやGPU稼働時間に対応する料金はかからないが、バランスド永続ディスクを保持するのにお金がかかります。

これ以降、クラウドVRをで遊びたい場合は、コンソールからインスタンスを開始、起動出来たらVirtualDesktopでQuestから接続、Windowsログオン、VRアプリの起動、VRで遊ぶ、遊び終わったらインスタンスを停止させるという流れになります。

パフォーマンス

700Mbs程度の通信環境の場合、Latencyは64msくらいでVRChat内のpingが9msぐらいでした(ゾーンがasia-north-east1-aの場合)。

費用

GCP

大まかに150yen/hで無料クレジット300$分が残っている間は費用は掛からない。

  • 下図の費用レポート(2021年12月分)のようにメインの費用はクラウドPCからQuestへのでデータ量(Network Internet Egress)とCPU稼働時間に応じたWindowsのライセンス使用料、GPUの使用料、バランスド永続ディスクの維持料金です。
  • 13時間で2000円くらいかかってる。

  • クラウド費用の詳細については、次のリンク先が参考になります。費用について - GCP

  • 無料クレジットについて

注意

その他のトラブルシューティングなど

RDPの接続が上手くいかない。RDPを切断するとVirtualDesktopが繋がらなくなる。

RDPの代わりにParsecを利用すると解決するかもしれません

  • ローカル側ではConnect to Work or Games from Anywhere | Parsecからアカウント登録し、アプリをインストールします。
  • リモート側(クラウドPC側)ではPowerShell(Windowsの検索窓からPowerShellを検索して開く)に以下のコマンドをペーストして実行しクラウドPC版Parsecをインストールします。こちらを参考にしています。
    • ここの説明によるとGCPを利用する場合はインスタンス作成時の「表示デバイスのを有効にする」のチェックを外す必要がある説明されているのですが、私の場合はなぜかチェックをつけたままでもParsecが利用できてしまいましたが、外した方が良いはずです。あとで記事を修正します....。
    • もし、「表示デバイスのを有効にする」にチェックを入れたままインスタンスを作成してしまった方はインスタンスの編集画面から「表示デバイスのを有効にする」のチェックを外してからクラウドPC向けparsecをインストールしてください。
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" 
$ScriptWebArchive = "https://github.com/parsec-cloud/Parsec-Cloud-Preparation-Tool/archive/master.zip"  
$LocalArchivePath = "$ENV:UserProfile\Downloads\Parsec-Cloud-Preparation-Tool"  
(New-Object System.Net.WebClient).DownloadFile($ScriptWebArchive, "$LocalArchivePath.zip")  
Expand-Archive "$LocalArchivePath.zip" -DestinationPath $LocalArchivePath -Force  
CD $LocalArchivePath\Parsec-Cloud-Preparation-Tool-master\ | powershell.exe .\Loader.ps1  

Oculusのインストール時のエラー

PCを再起動します。再起動後も出ている場合は、そのエラーは無視して、Oculusアプリを閉じて進めましょう。 もし気になる場合は以下のツイートを参考にしていただけると幸いです。Michitomo NakaharaさんはTwitterを使っています: 「@Parnara_guttata @toutou これは放置でもいいんですが、Wifiロールをインストールすると直りますよー。OculusサービスがAirLink用にロードしてるDLLが不足してるぽいです。 https://t.co/bK7NQJ1PGa」 / Twitter

Virtual Desktopでネットワークプロフィールに関するWarning

Settings->Network & Internet -> Ehernet -> Network -> Privateを選択

「VRChat待機中」の画面から進めない

その他VirtualDesktop関連のトラブルシューティング

Twitter上のトラブルシューティング

GCP側のマーケットプレイスで用意されたゲーミングPC用のインスタンスを利用する方法?

もともとGCP側で用意されたゲーミングPC用のインスタンスを利用する方法として、NVIDIA Gaming PC - Windows Server 2019 – マーケットプレイス – CloudPCVR – Google Cloud Platformを見つけたが、GPUの数の上限解除をするだけでは利用できなかったので他に申請が必要なのかもしれない。

参考

*1:筆者が試した環境はネットカフェが150Mbps、実家が300Mbps、自宅が700Mbpsでしたが、どの環境でも違和感なくVRChatが楽しめました。

私のメタバース観 Adaptation to the Internet Human.

思考ログ

 

個人的には、メタバースは抽象化した人間関係を構築できるインターネット上の空間だと勝手に解釈している。

人間関係ネットワークの各ノードではスマホやPC、HMDを通して人間やモノは物理的な外見・特性から解放されて、インターネット存在として抽象化される。また、インターネット上の距離は物理的距離から解放されている。

 

現実の人間関係(学校や仕事、趣味)のネットワークと対応してそれぞれのメタバース構築されるんじゃないか。

 

家族関係メタバース(現実の家族またはインターネット上のバーチャル家族、現状のVRChatライクな)をベースに学校メタバースや仕事メタバースアバターなどを交換しながらシームレスにメタバース間を移動することができる。

 

メタバース上では、種族、人種、性別、年齢などに関わらず自由な姿でアバターを持つことができる。メタバースに適応できるようなシステムには何が必要か。物理的な人間から、インターネット上の人間への抽象化システムの構築に貢献したい。

 

Adaptation to the Internet Human.

 

「世界を変えたテレビゲーム戦争」を見た

感想

アタリ創業者のノーランの言葉

過去にとらわれたくない、アタリを壊された悲しみより、革新的な製品の方が重要だ

アイディアなんて些細なものだ、大事なのは実行する人間

最高の人生とはよく働き、よく遊ぶことだ。フルパワーでやることだ。

Hatena REMOTE INTNERNSHIP 2021 に参加しました!

id:toutounodeです。はてなリモートインターンシップ2021に参加し、非常に充実した3週間を楽しく過ごせました。以降のはてなインターンへの参加を考えている方向けになったらいいなと思いつつリモートならではの話も交えつつ時系列順に参加記を残していけたらなと思います。 f:id:toutounode:20210903213431p:plain

サマーインターン応募から面談や準備まで

応募

今年の4月に大学院に進学し、研究室での顔合わせで内定をもらった先輩に夏にインターン行くといいぞと聞いたのがきっかけです。この頃から夏のインターンがチラつき始め、なんとなく自分が気になる分野のインターンを探し始めました。去年dockerコマンドで応募できるインターンシップがあったなと思い出し、まだ4月半ばだけどインターンページあるかなぁ〜って探してたらあったので応募してみました。今年は開発者コンソールでapplyIntern()を実行すると応募用のリンクが表示されるような感じだったと思います。

面談

6月の初旬の面談では、自己紹介用のスライドやWebページを画面共有しながら進めていきました。最初に趣味のVRやWeb開発について軽く話して、研究、Webバイト、これまで作った物、みたいな順番で紹介したと思います。そのあとは、面接担当の方が気になった点を深掘りして話していくという流れでした。研究と趣味のVRに関することばかり話題にしていただいたのでとても楽しい面談だったのですが、Webの話をあんまりしてなくて、ほんとに大丈夫か?みたいな気持ちでした。1時間程で面談が終了し、その3時間後くらいにインターン内定の連絡がきて早すぎて驚きました。

準備

リモートインターンということで、事前準備に色々な工夫がされていました。インターン中の円滑なコミュニケーションのために、nonpiやzoomを利用した事前交流会だったり、はてなTシャツ配布だったり、プロダクトコードを扱うための開発PCの貸し出しだったり、開発についてこれるように事前課題を設定していたりと色々ありました。

scrapboxに自己紹介を書いたり、はてなリモートインターンシップ2021事前課題をやったりして、インターンに備えました。

講義

はてなインターンは3週間で、初めの1週間はWebに関する講義パート、残りの2週間はプロダクトコードに触れる開発パートという流れでした。 講義パートでは、WebAPIやインフラ、コンテナ、Kubernetes、マイクロサービス、RDBMS、フロントエンド、企画、AWS講義、ブログシステム演習、Perlブートキャンプがあり、どれもレベルが高い&後半の開発に役立つ講義が多くとてもためになりました。

ブログシステムの演習とAWS講義は、今までの講義のまとめ的な位置付けでした。account,blog,renderer,dbなどのpodをminikubeで管理し、アカウントサービス、レンダラーサービス、ブログサービスがgRPCでやりとりするといったアプリケーションを触ることができました。演習では、記法レンダラーが未実装だったので、TypeScriptでmarkdownパーサーとしてunifiedを導入したり、テスト書いたりして、課題を終わらせました。nodeやらyarnのバージョンが違ったり、最新のunifiedをサクッと導入できなかったりして、つまづいてしまったんですが、メンターの id:YaaMaa さんや 同じインターン生の id:KarakasaDcFd さんに助けてもらいながら進めていきました。 最後に、このブログシステムをハンズオン形式でAWSにデプロイし、前半の講義パートは終了しました。

あと、リモートで講義で受けるのって結構疲れます。疲れの原因の一つにノートPCのディスプレイを見続けることというのがあると思うので、大きめのディスプレイや外部Webカメラなどを用意することをお勧めします。

開発

開発パートでは、id:ci7lusさんとともに漫画チームに配属され、新機能の企画から実際のプロダクトコードに触れ新機能を実装、リリースまでを体験しました。開発を進めるにあたって、分からないところはすぐにエンジニアメンターの id:mizdra さん漫画エンジニアの皆さん、仕様面については プランナーの id:byorori さん、デザイン面に関しては、id:tymikii さんに slackやdiscord,meet,scrapboxで相談できる環境で、コミニケーション面でも非常に進めやすかったです。

今回のインターンでは、GigaViewerに新機能を実装したのですが、新機能を紹介する前にGigaViewerについて紹介したいと思います。

GigaViewer

漫画チームではGigaという漫画ビュワーを開発し、様々なメディアに提供しています。おそらく、Webで漫画を見る多くの方が目にするビュワーではないでしょうか。

こんな感じで漫画が読めるめちゃくちゃ見やすいビュワーです。 comic-trail.com

さらに、Viewerの下の方で作品(応援)コメントが投稿できるようになっています。

開発面では、Gigaのバックエンドはクリーンアーキテクチャ(丸いドーナツ)っぽい薄めのフレームワークでできており、新しい機能を追加する際にどこを触れば良いかが分かりやすく実装しやすかったです。

漫画チームではファンレター機能とエピソードコメント機能の二つの新機能をリリースしました。二つについて紹介していきます。

ファンレター機能

これまでのGigaViewerでは、読者が漫画家さんに感想を届ける明確な方法はなかったのですが、個人的に熱いメッセージを送りたいというニーズはがあり、編集部側では送られたファンレターを管理したりフィルタリングしたりしたいという要望がありました。

そこで開発したのがファンレター機能です。ファンレターボタンを押すと、Google Formが開いて、届いたファンレターは編集部で確認できるという仕組みになっています。

こんな感じになりました。

f:id:toutounode:20210903184831p:plain
作品紹介ページの下側に「ファンレター送る」ボタンがあります。

インターン期間中に、コミックトレイルさんくらげバンチさんでリリースすることができました。

編集部からのリリース記事になります。 comic-trail.com

kuragebunch.com

次にエピソード機能についてです。

エピソードコメント機能

Gigaの読者は基本的にはエピソード単位で漫画を読みます。読んだ後に感想を送りたいと思うこともあるでしょう。これまでのGigaでは作品に対してコメントすることができても、エピソード単位でコメントすることができませんでした。この結果何が起こるかというと、最新話を読んでいない人が、作品コメントを見てしまうとネタバレをくらってしまうという問題があります。これを解決するためにエピソード毎にコメントを投稿できる機能を追加しました。また、エピソード毎にコメントすることで、より深いコメントをしやすくなるという効果も期待できます。

こんな感じになりました!

f:id:toutounode:20210903210323p:plain
左側が既存の作品コメント機能で右側がエピソードコメント機能です。

今回、インターン期間中に、ゼノン編集部さんでリリースすることができました。

編集部からのリリース記事になります。 kuragebunch.com

終わってみて

漫画チームの新機能開発では、たくさんの登場人物が現れます。エンジニアはもちろんのこと、デザイナーや、編集部、漫画家、メディア編集部と漫画チームのやりとりを調整するプランナーなどです。それぞれの立場にそれぞれの考えがあり、様々な視点で新機能案を議論し、実装可能な案に落とし込んでいきました。貴重な体験ができました。また、メンターのid:mizdra さんをはじめとした漫画エンジニアの方々に実装方針の相談やコードレビューを通した手厚いサポートにとても感謝しています。とても楽しかったし、充実していたし、成長できた、最高な夏を過ごせました!!!

XRには時間拡張の可能性が秘められてる #XR創作大賞

はじめに

この記事は第一回XR創作大賞向けの記事です。

sites.google.com

これまでのXR技術では、VRやARなどの空間に関する特徴に着目されてきたが、ここでは新たに、時間拡張的な側面でXR技術の未来・可能性やそれを支えるXRシステムについて想像してみた。

実質的に時間拡張が可能になった未来

VR空間で利用可能な分身AIの発明により、ヒトは現実やVR空間で同時に複数の場所で存在が可能になり、1人あたりの実質的活動時間は24時間を超えるようになった。

VR空間での活動が増えた未来では、ヒトは、VR空間で、本人そっくりのアバターや獣耳美少女アバターなど所有し、アバターを直接操作したり、操作自体を分身AIに任せたりできるようになった。 分身AIは、VR空間において、複数の場所で同時に存在したり現実時間の何倍もの速さで活動したりすることが可能である。 分身AIが活動することで得られる情報から経験の本質を抽出し、本人へ効率的な情報のフィードバックが行われる。

このように、ある経験を獲得するために必要な時間が大幅に短縮され、本人は短縮された時間分を他の活動に充てることができる。現実の本人とVR空間での分身AIが活動することで、本人がなんらかの体験を経験するための時間が実質的に拡張されたといってもいいだろう。

未来のVRシステム

では、上のような未来ではどのようなVRシステムが社会に普及し影響を与えているのだろうか。VR空間と接続するための入出力システム、VRシミュレーションシステム、そのシステムが収集する情報の行方に分けて想像したい。

入力システム

まず、VR空間でアバターを操作するために、現実での入力操作が必要である。入力システムとしては、複数カメラによる姿勢推定や服の繊維に埋め込めるくらい小型化された複数の位置計測デバイスが使われるようになり、 室内では複数カメラによる位置トラッキング、外出時には、位置トラッキング対応の服を着るなどの使い分けがされるようになるだろう。 また、小型化された入力デバイスは、手足などの身体パーツの位置だけではなく、筋電や音声、脳波などもトラッキングできる。

出力システム

出力システムとしては、視覚・聴覚刺激を与えるためには、グラス型のXRデバイスや無線イヤホンが利用され、現実とは異なる場所に存在するように感じたり、現実空間の物体にバーチャルな視覚・聴覚情報を付与されたりするようになる。

また、触覚や力覚を生み出すための、服の繊維に埋め込めるくらい小型化された神経を直接刺激するデバイスが利用される。

味覚や嗅覚については、基本五味や代表的な匂いに対応した基本ペースト食を組み合わせることで様々な味や匂いを実現するフードプリント技術が開発された。 その食べ物をXRグラスに通して見てみると、美味しそうな料理の見た目で上書きされる。現実の料理に味は劣るかもしれないが、VR空間での食べ物受け渡しや、一緒に同じ料理を食べることができるといった体験ができる。

シミュレーションシステム

VRシミュレーターとして汎用型デスクトップPCが使われるようになった。入力システムからの操作情報を受け付け、XR空間の3D演算を行い、演算結果をXRグラスなどの出力デバイスに返すような役割を果たす。

VRシミュレーターについては、複数のHMDなどのVR入出力装置が一つのPCに接続可能になった。また、一家に一台の高性能な汎用型デスクトップPCや公共Wi-Fiのような公共XR演算装置が普及し、外出時にもVR空間にアクセスできるようになった。

VRシステムが収集する個人情報の行方

このようなVRシステムが普及した結果、ヒトは常に位置や音声、脳波がトラッキングされるようになり、このトラッキング情報はVRシミュレーションを実現するためだけの情報としてだけではなく、ヒトの振る舞いを解明するための情報として扱われるようになる。VRシステム普及の黎明期では、このような究極の個人情報についての厳密な取り扱いが決まっておらず、各VRプラットフォーマーはそれぞれの基準であまり目立たない形で大量のトラッキングデータを収集していた。 ずさんな個人情報の取り扱いにより、足元をすくわれるプラットフォーマーが出現するなか、適切な匿名処理と大量トラッキングデータの効率的な収集に成功したプラットフォーマーが次世代の情報インフラを握ることになるだろう。

VRシステム普及後のVR空間における汎用型AIの実現

こうして、VR黎明期に大量のトラッキングデータを獲得したプラットフォーマーは人間の外側の振る舞いのみを模倣し中身のアルゴリズムはあまり気にしないという考え方で汎用型AI用ソフトウェアの開発に成功してしまう。 この技術はAIのハードウェア面を考慮する必要がないVRアバター技術と親和性が高く、個人の分身AIのために利用されるようになった。

分身AIからの効率的なフィードバック技術と例

VR内での汎用型AI技術の実現により、本人の現実やVR空間の生活で取得できる身体位置や音声、脳波などのトラッキング情報からその人の本質を抽出し、VR空間で新たな身体を獲得した分身AIを構築できるようになる。

この分身AIはまさに本人の分身として活動し、簡単な会話や身体の伴うコミュニケーション、遊び、技術習得、仕事などを肩代わりしてくれる。そして、分身AIが獲得した経験は適切なタイミングで本人に効率的にフィードバックされる。

フィードバック技術の例として、経験の要約を視界のオーバーレイに文字として表示したり、経験の重要な場面をVR空間で再生したり、分身AIの経験に基づいた意思決定の補助をしたりすることが考えられる。

このような様子をA君とB君のやりとりを通してみていきたい。

簡単なコミュニケーションの例

A君がVR空間でフレンドのB君と他愛もない話をしている最中に最近気になっているCさんからお誘いが来る。A君は自身の分身AIをこっそりとその場に残し、A君本人はCさんがいるVR空間へ遊びに行くといった場合が想定される。また、現実のA君は睡眠をとり、VR空間でのA君の分身AIはB君の悩みや愚痴や趣味の話を聴くなどのフレンド付き合いをしてもらうといった場合もコミュニケーションの例として考えられるだろう。

上の二つの例では、簡単な会話や体の伴うコミュニケーションではA君が中に入っているかどうかを会話相手であるB君は簡単には見分けることができないが、B君はA君の存在感を感じながらある程度の満足感があるコミュニケーションを経験することができる。

A君の分身AIが経験したコミュニケーション内容は要約され、B君との次の会話の直前や最中に要約が視界のオーバーレイに文字として表示されたり、A君が寝る前など適切なタイミングで経験の重要な部分をVR空間まるごと再生されたりするなどの方法でフィードバックされる。

このように、同時存在が可能になることで、VR上でより多くの人と交流ができたり、睡眠時間を犠牲にせずにしたりして、フレンドの好感度を高めることができる。

意思決定補助の例

新しい趣味を見つけてたい場合があるかもしれない、現実のA君を身体的特徴や快楽受容の脳の特性を知った分身AIが代わりに様々なゲームやスポーツを体験することで、A君本人がどのような遊びのどんなタイミングで楽しさを感じる可能性があるかを予測し、A君に適したゲームやスポーツなどの新しい趣味を提案してくれる。「何か面白いことないかなぁ~」と考えながら退屈な時間を過ごすことや数多のゲームの中から選んだものがクソゲーだったみたいな場合が減るかもしれない。

将来の自身の健康状態を知ることができるかもしれない。現実の何倍もの速さで進むVR空間では、A君の将来の姿を手軽に確認することができる。現在のA君の食生活や運動習慣に基づいた将来の健康状態を知ることで、現在の環境を変える意思決定が可能になるかもしれない。

効率的な訓練方法の提案の例

技術習得が個人に最適化された訓練方法の提案がされる例 現実のA君の身体的特徴や癖に基づいたアバターを用いて、現実時間の数千倍の速さでスポーツの練習をしたり、運転の練習をしたりする。そのアバターAIによるシミュレーションの結果、A君個人に最適された訓練方法を提案することできる。これにより、現実のA君が様々な試行錯誤をする時間がほとんどなくなり、新し技術を習得するのに必要な時間は大幅に短縮されるだろう。

VR空間での仕事の例

VR空間での仕事も増えてきた。主な仕事に、電子データ売買やプレゼンテーション、ミーティングなどが挙げられる。機械的な作業は分身AIに任せ、質問対応や積極的な意見が求められるときには、分身AIから本人へ通知をおくり、アバターの中に入ることで対応するようになる。分身AIが機械的な作業をしているあいだ、本人は趣味に没頭したり、睡眠したりすることができるだろう。

まとめ

このように、分身AIが経験した時間が圧縮、エッセンスの抽出がされて、効率的に本人にフィードバックされる。 本人が経験した実質的な時間は 1日24時間 - 睡眠時間 + (分身AIの活動時間 - フィードバックを受ける時間) × アバターの数 となり、24時間以上となる。 VRには、目の前にある現実とは異なる現実を体験できるといった空間的拡張性だけではなく、実質的時間拡張の可能性が秘められている。