XR時代のアプリ開発と課題

Hiroyuki Makino
nttlabs
Published in
8 min readMar 4, 2020

こんにちは、NTTの牧野です。
皆さん、ARアプリの開発盛り上がっていますか?
オブジェクトを認識してバーチャルなオブジェクトを出現させたり、
情報を表示したり、 バーチャルなオブジェクトをジェスチャーで操作したり。
ゲームなら現実空間に飛び出すモンスターをシューティングしたり、
プレーヤーのアクションを認識してマルチプレーヤーで対戦したり。

ところで、皆さんはARアプリのテストやデバッグをどのように行っているでしょうか?
巷の情報を収集してみると、ARアプリのテストは大変だ、という声が聞こえてきます。

ARアプリの開発現場

例えば、実際のデモ環境と同じ環境を実現するため、1/1スケールで部屋のモデルルームを開発環境にも作ってテストしたり。
ARはライティングなどの環境が変わると空間から取得できる特徴点が変わってしまい、うまくアンカーポイントを認識できなくなったりすることがあります。
同じスケールのモデルルームを作ってテストしていなければ、本番の展示会で動作しないところだったと言った話を聞くと、大変そうです。

ハンドジェスチャーやポーズを使ってバーチャルオブジェクトを操作するようなアプリの場合、実機を通してテストする必要がありそうです。
コードを変えて同じ動きを繰り返すといったテストを、コードを変えるたびにやるのは骨が折れます。

また、マルチデバイスで同じ空間を共有するようなアプリでは、異なったビューポイントから同時に同じものが見えるかといった視点やアクションが連動するかといった視点のテストが必要になってきます。
そのため、開発者が複数のiPadを腕にくくりつけて一人二役を演じていたり。

AR/MRは空間アプリケーションなので、空間に配置したオブジェクトの見た目(影や配置など)が自然かといったことはもはや人手でチェックしないと難しいでしょう。

ARのテストとCI

従来のアプリは、テストコードを書いたり、コードをgithubにpushすればCIが自動で動いてテストを行ったりテストが容易ですが、ARアプリとなると、現実空間が絡んでくるため、ソフトウェア上の処理の正しさは従来手法でテストできても、実際に動かしてみると、期待通りにバーチャルオブジェクトが出なかったり、表示位置がずれて違和感があったりといったことが発生します。
現状、人間が目で見てテストしていますが、人手でやっていてはCIが回らないという課題があります。
ARが流行り、キラーアプリが生まれてくるには、開発者が増え、アプリが増え、ユーザが増え、アプリがどんどん改良されていくという好循環が生まれなければなりません。
ARアプリを楽に開発、開発コストを下げコモディティ化が必要でしょう。

ARのテストツール

ここで既存のテストツールにはどのようなものがあるか見ていきましょう。

iOS: Reality Composer & Xcode

Reality Composerの記録と再生機能を使うと、実際の場所でセンサーとカメラのデータを記録しておき、後にXcodeでアプリを動かしたときにiOSデバイスでそれらを再生できます。デバイスを物理的に移動させたりその場に行かなくても、記録されたデータを使ってAR体験を繰り返すことができます。しかしながら、この機能は現状、デバイス上での動作しかサポートされておらず、確認には実機が必要になります。

Android: Android Emulator & VirtualScene

Android StudioのAndroid Emulatorを利用する際に、Camera BackにVirtualSceneを選択すると、仮想シーンカメラによりVRのような仮想空間上でARCoreアプリの挙動を確認することができます。プリセットマクロも用意されており、仮想空間上を移動してARアクションをテストする仕組みも用意されています。
しかしながら、この機能は現状、予め用意された仮想空間やプリセットマクロ上で簡易なテストを行う機能となっています。実際の動作環境や任意のシナリオでテストしたいといったニーズには、実環境からキャプチャした3Dモデルやカスタムマクロが利用できるといった機能が必要になってくるでしょう。

Unity: Unity Test Runner & UI Test Automation
イベントが正しく発生するかといった挙動は単体テストで行い、ARが正しく表示されているかといったことは、UIとして結合テストを行うといった手法も使えるかもしれません。UI Test Automationの機能を利用すると、シーン上でgameObject等の表示、非表示を確認したり、値の検査を行ったりといったことが自動化できます。

人間の目で確認するテストは手間がかかりすぎると思います。理想は、githubにコードをpushしたらARのテストが自動で回る仕組みが欲しいところですが、現時点ではそのようなフレームワークやツールはなさそうです。
他にもこんなよい方法があるよといったものがあれば、ぜひ教えていただければと思います。

XR時代のプログラミングパラダイム

XRアプリの登場でプログラミングパラダイムも変わってくるのかもしれません。
まだリリースされていませんが、Unityでは、Mixed and Augmented Reality Studio (MARS)というXR向けのツールセットを発表しています。ここでは、Simulation viewや現実世界の情報を容易に取り込むためのiOS/Androidツールが提供される予定です。
また、Rich semantic data layerとしてマップ、商品、位置、セマンティックスなど様々な現実世界のリアルタイムな情報をも取り込めるようになるそうです。

まとめ

ARアプリの開発現場では人手を介してテストしているのが現状です。人手でやっていてはCIが回せないという課題があります。XR時代では、現実世界とリンクするアプリが前提となり、テストやデバッグの複雑性も増してくると考えられます。新たなアプリケーションアーキテクチャやフレームワークが必要になってくるでしょう。NTTでは、その手の仕組みを創る仕事に興味のある仲間を募集中です。連絡お待ちしています。

see also … ARアプリ開発におけるCI/CD

--

--

Hiroyuki Makino
nttlabs
Writer for

XR Metaverse Researcher, R&D Engineer at NTT, Japan. Excited for the future of AR and what amazing people create.