Takafumi Horiuchi

子どものためのインタラクティブ・オブジェクトのプロトタイピングVRシステムの開発

概要

Smart Codesign VRは、インタラクティブなモノ —— 「スマートオブジェクト」 —— をVR空間で組み立て、その場で触れて確かめられるようにしたプラットフォームである。プレイヤーは環境・入力・出力の3枚のカードを選び、「どんなときに」「何が起きるか」を自分の手で定義する。完成したオブジェクトは仮想の公園に置かれ、実際に動かして確かめることができる。

元になっているのは、ミラノ工科大学のi3Labが開発した「SNaP(The Smart Nature Protagonists)」というボードゲームである。SNaPでは、子どもたちがカードを組み合わせてスマートオブジェクトを考案する。ただし、そこで生まれるのは紙の上の一文にとどまっていた。このプロジェクトは、その一文をVR空間で実体化し、自分の身体で組み立てて、触れられるものにすることを目指した。

ミラノ工科大学の授業「Advanced User Interfaces」(2020–21年度)の最終課題として、4人のチームで設計・実装した。想定した利用者は11〜13歳の子どもで、なかでも神経発達症(NDD)のある子どもを念頭に置いている。Oculus Quest 2向けにUnityとC#で実装し、カードの選択から公園での操作までが通して動くプロトタイプまで到達した。

デモ動画。カードを選び、入力の条件と出力の振る舞いを決め、できあがったスマートオブジェクトを仮想の公園で動かすまでの一連の流れ。

SNaPというボードゲームと、設計の前提

子どもがデザインの主役になるゲーム

SNaPは、2〜4人の子どもが「デザイナー」となり、進行役の大人が「市長」を務めるボードゲームである。市長がゲームの冒頭でミッションを出し、子どもたちは話し合いながらカードを組み合わせて、そのミッションを解くスマートオブジェクトを考える。狙いは、創造性と、他者と協働して自分の考えを言葉にする力を育てることにある。神経発達症のある子どもによる利用も想定したが、本プロジェクトで療育・教育効果を検証したわけではない。

環境・入力・出力 —— 3種類のカード

SNaPのカードは3種類あり、それぞれ役割が違う。

環境(Environment)カードは、スマートにする対象そのものである。木、ベンチ、ブランコ、水辺、石、街灯、ゴミ箱、自転車、橋、階段、通学かばん —— 公園や街のなかにある、ありふれたものが並んでいる。センサーでも機能でもなく、それらを組み込む「対象物」にあたる。

入力(Input)カードは、その対象物が何を感じ取るかを決める。ボタン、動き、接触、距離、温度、湿度、明るさ、色、音、火、水位、天気予報など、センサーにあたるものである。

出力(Output)カードは、その対象物が何をするかを決める。光る、音を鳴らす、振動する、動く、表示する、記録する、送信する —— アクチュエータにあたるものである。

環境カードが要るのは、同じ入力と出力の組でも、どこに宿るかで意味がまるごと変わるからである。「動きを検知したら音を鳴らす」をゴミ箱に載せれば「ゴミを入れ損ねると音が鳴る」になり、街灯に載せれば「人が近づくと知らせる灯り」になる。入力と出力だけでは装置の仕様にしかならず、そこに環境を足してはじめて、身のまわりの出来事についての一文になる。

環境カード「Trash can(ゴミ箱)」、入力カード「Motion(動き)」、出力カード「Make sound(音を鳴らす)」の3枚が「&」でつながれ、矢印の先に「Missing the trash bin creates a sound.(ゴミ箱に入れ損ねると音が鳴る)」という一文が置かれている。
3枚のカードの組み合わせが、一つのスマートオブジェクトの説明文になる。カードの枠の色が種類を表しており、緑が環境、水色が入力、黄色が出力である。
SNaPのカード49枚を並べた一覧表。上2段が緑枠の環境カード20枚、中2段と最下段左端が水色枠の入力カード21枚、最下段の残りが黄色枠の出力カード8枚。
SNaPのカード全49枚。環境が20枚、入力が21枚、出力が8枚あり、この語彙の掛け合わせがゲームのデザイン空間になっている。

紙の上の一文を、触れるものにする

これまでSNaPのセッションは、考えたスマートオブジェクトを一文に書き下したところで終わっていた。i3Labでは、タブレットとArduinoを組み合わせてそれを物理的に組み立てる「フィジカルボード」も並行して開発されていた。Smart Codesign VRは、それに対するもう一つの答えとして、VRを媒体に選んだものである。研究チームがまだ試していなかった方向だった。

VRを選ぶことで、二つのことが変わる。一つは、子どもが全身の動きでプロトタイピングできること。掴む、運ぶ、光を当てる、筆で塗るといった行為が、そのまま「条件を決める」「振る舞いを決める」という操作になる。もう一つは、考えたものが視覚的に立ち上がり、その場で触れられること。抽象的な一文が、目の前にある大きさと形を持ったものになる。

誰のために設計したか

主な対象は11〜13歳の子どもで、なかでも神経発達症のある子どもに重点を置いた。スマートオブジェクトを構想する作業には一定の論理的思考が要るため、SNaPもこのVR版も、ある程度の年齢を前提にしている。

本プロジェクトは、手を動かして試作し、考えを他者へ伝える体験を目指した。これは設計上の目標であり、子どもを対象とした評価や療育・教育効果の検証は行っていない。

空間そのものへの配慮

本プロジェクトでは、参照した資料をもとに、音、光と色、空間構成、素材の四点を空間設計の検討項目とした。音については、聴覚過敏への配慮として遮音と音量調整ができること、静かで単調な音を使うことを考えた。光と色については、落ち着いた低彩度の背景を基本に、明るく彩度の高い色を小さな面積にとどめることを考えた。空間の境界を明確にして秩序ある配置にすること、単純で読み取りやすい形と動線を妨げない配置にすることも設計上の配慮とした。VR空間では、これらを設計者が調整できる。ただし、本プロジェクトでは、こうした配慮が利用者の快適性に与える効果を検証していない。

VRという媒体そのものが持つ制約

同時に、VRを使ううえで、機材のコスト、酔い、ヘッドセットの重さによる頭や首への負担、周囲が見えない状態での事故、長時間使用による目への負担、過度な没入に伴う依存への懸念を、設計上の検討事項とした。

これらは設計上の判断に直接効いた。インタラクションは単純に保ちつつ、学びになるだけの手応えは残すこと。視覚と音は明快で、刺激を強くしすぎないこと。そして、体験に明確な終わりを用意すること —— プロトタイピングと公園での操作が終われば活動は完結する、という区切りである。仮想世界に留まり続ける設計にしない、という判断でもある。


つくったもの —— 体験の流れと実装

体験の四つの場面

アプリケーションは四つの場面で構成されている。待機画面、カード選択、プロトタイピング、そして公園での操作である。

1. 待機画面

起動するとまずタイトル画面が出て、コントローラのボタンを押すまで次へ進まない。装着や姿勢が整う前に本編が始まってしまわないようにするための、意図的な足止めである。

2. カード選択 —— 掴んで、箱に入れる

次の場面で、環境・入力・出力のカードを1枚ずつ選ぶ。選び方は、カードを表すオブジェクトを掴み、対応する箱まで運んで入れるというものである。クリックで選ばせるのではなく「掴んで運ぶ」にしたのは、VRが持つ3次元空間を使うためである。三つの箱すべてに中身が入ったことを検知すると、音声の案内とともにプロトタイピングの場面へ移る。順番は問わないが、三つとも埋めなければ先へは進まない。

VR空間のカード選択画面。カードの並んだボードの手前に、input、environment、outputと書かれた半透明の箱が三つ並び、手が拡声器のオブジェクトを掴んでいる。
カード選択の場面。手前の三つの箱が環境・入力・出力に対応し、掴んだオブジェクトを入れると選択が確定する。この段階で扱えないカードは薄く表示されている。

3. プロトタイピング —— 条件と振る舞いを、身体で決める

ここがこのシステムの中心である。選んだ入力カードについて「どんなときに」を、出力カードについて「何をするか」を定義していく。操作方法はカードごとに作り分けられており、6自由度トラッキングでなければできない動きが割り当てられている。

たとえば入力に「天気予報」を選ぶと、晴れ・曇り・雨・雷・雪をそれぞれ表すオブジェクトが手元に現れる。そのうち一つを掴み、そこから伸びる光線を対象のオブジェクトへ当てると、条件が確定する。出力に「光る」を選んだ場合は、絵筆を掴み、色ごとに置かれた絵の具の缶に穂先を浸し、対象へこすりつけることで発光色を決める。塗った色を消したいときは、「水」の缶に浸してからこすればよい。

実装のうえで大きかったのは、入力と出力の組を複数並べて定義できるようにしたことである。当初の計画では1組だけで、「晴れたら赤く光る」で終わりだった。これを複数にしたことで、「晴れたら赤、雨なら青、雪なら白に光る」というように、一つのオブジェクトが複数の状況へ違う応答を返せるようになった。定義した組は、確定する前に実際に動かして試すことができ、気に入らなければ戻って直せる。

プロトタイピング画面。左に入力カード「Weather」の操作説明パネル、中央に「When it is about to be sunny/rain/snow」と書かれた三つの吹き出し、右に出力の吹き出しが並び、手前に木のオブジェクトと絵の具の缶がある。 同じ画面を右から見たところ。黄色く塗られた街灯のオブジェクトの左右に、入力と出力の吹き出しが対になって並び、右端に出力カード「Light up」の操作説明パネルがある。
2021年制作時のプロトタイピング画面。左右の吹き出しが入力条件と出力の振る舞いを表し、番号で対応している。+ボタンで組を増やし、−ボタンで減らす。入力側のパネルには「最大インスタンス数:5」と表示されている。

4. 公園 —— できたものに触れる

オブジェクトを確定させると、仮想の公園へ移る。ここでは、自分が組み立てたスマートオブジェクトを置き、定義した入力条件を起こして、出力の振る舞いを実際に確かめる。オブジェクトが動作したところで祝福の演出が出て、体験は終わる。

全体の流れ

以上をUMLのアクティビティ図にまとめたものが次の図である。上段が全体の流れ、下段の2枚が「天気予報」カードと「光る」カードそれぞれの操作を細かく展開したものである。カード選択のあと、指示を受けたうえで選び直しに戻れること、確定と試行のあとで再編集に戻れることが、それぞれ分岐として書かれている。

UMLアクティビティ図。上段の「Overall Activity」は、待機画面から3枚のカード選択、指示、入力条件と出力振る舞いの定義、確定、動作確認、公園での操作までを示す。下段左は天気予報カードの操作、下段右は光るカードの操作を展開している。
利用者の行動を表したUMLアクティビティ図。カードの種類ごとに操作が違うため、共通の流れと、カードごとの詳細を分けて書いている。

装置とツール

対象機はOculus Quest 2である。6自由度トラッキングを備え、回る、歩く、掴むといった動きがそのまま入力になる。仮想のオブジェクトを繰り返し手で扱うことが体験の中心にある以上、スマートフォンを差し込む3自由度の機器では成立しないと判断した。

ゲームエンジンはUnity、言語はC#、Quest 2との接続にはOculus Integrationパッケージを使い、VRカメラの挙動、描画、コントローラ入力の共通APIをそこから得ている。

四つのシーンと13のクラス

システムはUnityのシーン単位で四つに分かれており、体験の四つの場面にそのまま対応する。クラスは全部で13、うち3つは抽象クラスである。

タイトルシーンはTitleSceneCoreだけを持ち、ボタン押下で次のシーンへ移す。

カード選択シーンはCardSelectionSceneCoreとCardSelectionDetectorからなる。前者が後者を3つ生成し、環境・入力・出力それぞれの選択ボックスに割り当てる。各ボックスは、カードを表すオブジェクトが近づいたら内側へ引き込み、その分類を「選択済み」にする振る舞いを共通して持つ。三つとも揃うと、選択の内容をSmartObjectクラスへ書き込み、シーンを進める。SmartObjectは静的クラスとして、実行中にシーンをまたいでデータを保持する。この一点が、四つのシーンを一つの体験としてつないでいる。

プロトタイピングシーンが中心である。PrototypingSceneCoreが手続き全体を集中管理し、カードの振る舞いはCardを頂点とする継承の階層で表す。Cardの下にInputCardとOutputCardがあり、さらにその下にWeather、Fire、MakeSound、LightUpといった具体的なカードのクラスが並ぶ。実際にプロトタイピングの操作を担うのは末端の具体クラスだけなので、上の3つは抽象クラスにしてある。

PrototypingSceneCoreは、入力条件のインスタンスのリストと、出力振る舞いのインスタンスのリストを持つ。選ばれたカードが「天気予報」と「光る」であれば、前者はWeatherのインスタンス、後者はLightUpのインスタンスだけで埋まる。開始時にそれぞれ1つずつ自動生成し、以降はUIの追加ボタンを押すたびに増える。毎フレーム、リスト中のすべての入力条件を評価し、対応する出力の振る舞いを呼ぶ。利用者が確定するとisConfirmedが真になり、組み上がった振る舞いのデータがSmartObjectの静的プロパティへ書き込まれる。

インタラクションシーンはInteractionSceneCoreだけを持ち、公園への配置、入力条件の実行と出力の観察、そして終わりの祝福の演出を受け持つ。

UMLクラス図。Title Scene、Card Selection Scene、Prototyping Scene、Interaction Sceneの四つのパッケージと、それらから参照される静的クラスSmart Objectが描かれている。Prototyping Scene内では、抽象クラスCardの下にInput CardとOutput Cardがあり、さらにWeather Card、Fire Card、Make Sound Card、Light Up Cardが継承している。
システムのUMLクラス図。四つのパッケージがUnityのシーンに対応し、中央下のSmart Objectだけがシーンをまたいでデータを保持する。図の属性とメソッドは、読みやすさのために簡略化してある。

できたこと、残したこと

実装まで届いたのは49枚のうち9枚

プロトタイプに実装したカードは9枚である。基礎となる処理 —— カードの選択、条件と振る舞いの定義、複数インスタンスの管理、シーン間のデータ受け渡し —— は動く状態まで作れた。残りのカードは今後の実装課題である。追加6枚は操作方式を設計したが未実装で、ほかの34枚は方式の検討も含めて残っている。

プロトタイプでの実装状況
状態カード
実装済み(9枚)環境:木、街灯、道路標識、ゴミ箱、橋
入力:火、天気予報
出力:音を鳴らす、光る
設計のみ(6枚)入力:ボタン、速さ、音
出力:動く、振動する、送信する
未着手(34枚)環境カード15枚、入力カード16枚、出力カード3枚(表示する、起動する、記録する)

評価は行っていない

実利用者による評価は実施していない。開発期間がCOVID-19下の遠隔参加と重なり、VRヘッドセットを前提にした対面のワークショップも、遠隔での代替も組めなかった。したがってこのプロジェクトが示せているのは、設計した体験が動く形で成立するところまでであり、それが子どもにとって使いやすいか、療育の場で意味を持つかは確かめられていない。

今後評価を行うとすれば、「プロトタイピングという作業に対して、このUI/UXはどれだけ直感的か」を問いに置くことになる。完了までの所要時間、事前に考えていたスマートオブジェクトとできあがったものとの一致度、意図しないボタン操作の回数などが指標になり、SUS(System Usability Scale)にもとづく事後アンケートを併せると量的なデータが取れる。今後の評価では、操作中の身体の動きも観察するため、参加者の同意と適切な手続のもとでセッションの録画を検討する。2021年当時の計画では、SNaPの想定年齢と、その時点で参照したOculusの指針を踏まえ、評価対象を13歳とする案を考えた。今後評価する場合は、使用機器の現行条件と研究計画にもとづいて参加条件を改めて決める。

この先にある作業

時間と技量の都合で手が回らなかった仕事として、まずUI/UXの作り直しがある。カードの組み合わせを成立させる実装に時間を取られ、視覚・聴覚・触覚の表現まで練り込めなかった。とくに、VRのUIに文字をどこまで使うかは考え直す余地がある。平面向けに設計された情報には、3次元空間の空間的ユーザインタフェース(SUI)として再検討したほうがよい要素がある。神経発達症のある子どもを対象とするなら、音声によるやりとりは有力な方向である。

学術的な広がりとしては、三つの道筋を挙げた。一つは、同じi3Labで開発が進んでいたフィジカルボードとの比較である。現実の場と仮想環境で同じ協働ゲームを行い、仮想環境の側で会話の量が増えたという先行研究があり、同種の比較がこの二つの間でも成り立ちうる。二つめは、複数人での同時参加への対応である。「Codesign」という名を持つ以上、仮想空間の中で他者と一緒に組み立てられることには意味がある。三つめは、スマートオブジェクトの記述形式を標準化し、プラットフォームをまたいで持ち出せるようにすることである。

まとめ

このプロジェクトで作ったのは、完成したスマートオブジェクトの見本ではなく、それを作るための場所である。環境・入力・出力という3枚のカードを、そのまま「対象物」「条件」「振る舞い」という組み立ての単位に置き換え、掴む・当てる・塗るという身体の動作でそれらを結びつけられるようにした。ボードゲームで生まれた一文は、ここで自分の手で動かせるものになる。その条件と振る舞いのデータは、実行中のシーン間で保持される。

Takafumi Horiuchi, Paul Cozma-Ivan, Elmira Katsajeva, and Olivia Ludkiewicz, “Design and Implementation of a Smart Object Prototyping Platform in Virtual Reality for Children with NDD,” Advanced User Interfaces (A.Y. 2020–21) Final Exam Project, Politecnico di Milano, 2021年2月。