きゃべログ

Apple公式ドキュメントの「AR Human Interface Guidlines」を日本語化した

iOSAR

はじめに

こんにちは。cabbage(@cab_kyabe)です。 本記事はARKit Advent Calendar 2017 - Qiitaの13日目の記事です。 この内容に近い記事は元々公開していた時期があったのですが、完成度が低かったので、Advent Calendar用にリファインして再投稿しました。

Augmented Reality - Technologies - iOS Human Interface Guidelines を一通り読み、日本語として要約しました。内容は厳密に1対1対応させていません。平易な表現で要点がわかりやすいように表現したつもりです。原文を読んで解釈が明らかにおかしいというのを見つけた方がいらっしゃればご指摘ください。異論は認めます。原文を読むのは結構骨が折れる作業だと私は感じたので、少しでも皆さんのお力になれれば幸いです。

概要

現実と仮想物体をシームレスに重ねて、没入感があり、魅力的な体験を実現するために、iOSアプリではAppleのARKitを使うことができる。 カメラはスクリーン上のビューに現実世界を表示するのに使用する。3次元の仮想物体はそのビューに重畳され、物体が本当に存在するように錯覚させる。もしその体験が正確であれば、ユーザはiOSデバイスの向きを変えて仮想物体を様々な角度から調べることや、ジェスチャや動きを使ったインタラクションが可能である。

魅力的な設計

人々を惹きつけるに画面全体を使うこと

現実世界を表示したり仮想物体を表示するために出来る限りスクリーンを大きく使うこと。また、没入体験を損なうのでスクリーン上をコントロールのパーツや情報で散らかさないこと。

物体を配置するときは説得力のある錯覚を生み出すようにすること

すべてのAR体験に現実に近い仮想物体が必要なわけではない。しかし配置される仮想物体はあたかも現実世界に存在するようにしなければならない。ベストプラクティスは本物そっくりのテクスチャが貼り付けられた詳細な3Dアセットを作成すること、またARKitが提供する現実世界の平面認識を使用して仮想物体の照明の当たり方に適用し、現実世界の画面に仮想物体の影をつけること、カメラの位置変化に仮想物体の位置を適応することである。

物理的な制約を考慮すること

ARがうまく動かない環境でも人々はアプリを使おうと試みることを心に留めておくこと。例えば、動き回ることが出来るほどのスペースがなかったり広い平らな部分がないような場所でも人々はアプリを開くかもしれない。難題を課せられるシナリオを想定して、明確に制約や例外を人々に率直に伝えるよう試みること。

ユーザが心地よくなるように心がけること

長期間に渡ってデバイスを特定の距離、あるいは角度に保つのは骨の折れる作業である。そのためユーザがアプリを使う際にどんなふうにデバイスを持つのかを考慮し、不快感を引き起こさない楽しい体験を目指すこと。例えば、仮想物体を近くに移動させてくる必要がないように、最初から仮想物体を配置することができる。

ユーザの動きを促進するなら、動きを徐々に紹介すること。

例えばゲームにおいてはARに入り込んですぐに仮想世界を見せないようにする。まずは体験に順応するための時間をユーザに与えること。そして、徐々に動きを促進していくこと。

ユーザの安全に配慮すること

近くに他の人や物体があったら、あちこち歩き回る行為は危険となり得る。アプリの操作が安全になるような方法をよく考えること。たとえば、ゲームにおいて大幅な動きや急な動きを避けるように仕向けることが挙げられる。

没入体験を促進するには聴覚と触覚フィードバックを使うこと

音声や衝突感は物理的表面や他の仮想物体に接触するようになったと確信を得るための重要な方法である。没入感のあるゲームでは、BGMはユーザが仮想世界に包み込まれるのを手助けする。

参考

可能な限りコンテキストヒントを提供すること

例えば、物体の3次元回転のインジゲータ(矢印など)を示すことはテキストベースの指示を配置するよりも更に直感的な方法である。しかし、ARKitが平面を検出する前やユーザがコンテキストヒントに反応していない場合はテキストヒントを表示する方が確実である。

/説明テキストを表示しなければならない場合、親しみやすい専門用語を使うこと

ARは先進的な概念であるため、怖がる人がいるかもしれない。ARを親しみやすいものにするために、技術的な言葉やARKitWorld detection, trackingのような技術者向けの言葉を使用しないこと。代わりにほとんどの人たちが理解できる会話体の言葉を使うこと。

AR体験を不必要に妨げることを避けること

ユーザーがARを終了したり再開する度に、環境は解析されて平面が検出される。さらに端末とカメラの位置は変わるかもしれない。結果として、以前に配置された物体の配置場所が変わるおそれがある。物体はもはや実世界の平面上に配置されたままである保証もない。こういった体験の妨害を防ぐ方法の1つとして、ユーザに物体の位置や設定をAR体験を抜けずに変更出来るようにさせることが挙げられる。例えば、ユーザがリビングに置くための椅子の購入を検討しているとする。AR上で椅子を配置したとして、ユーザは他の生地の椅子を色々試すような機能が欲しいと思うかもしれない。

ARの世界に入りこむ

初期化が実行されていることを示し、ユーザを巻き込むこと

周囲の環境を評価する初期化処理はアプリがAR機能を開始するとき毎回実行される。この処理には数秒かかる。ユーザの混乱を減らして処理を早くするために、初期化の際にする行動を示すこと。例えば表面を見つけられるように周囲をあちこち映すように勧める。

ARKitが平面を見つけたタイミングや物体を置くタイミングをユーザがわかるように助けること

視覚的なインジゲータは平面検出がアクティブになっていることを伝えるのにとても有効な手段である。例えば、画面中央に台形と十字線を置くことで、ARKitが平面を探しているだろうということをユーザは推測できるだろう。ひと度平面が見つかれば、現在物体を置くことができるこを示すために見た目を変えるべきである。あなたが作るアプリに馴染むような視覚的なインジゲータをデザインすること。

ユーザが物体を配置したときには適切に反応すること

平面検出の精度は、かなり短い時間でしだいに良くなっていく。ユーザが物体を配置するために画面をタップすると、現在使える平面情報を用いて物体を即座に配置する。そして平面検出が完了すると、微妙に物体の位置を調整する。もし物体が検出された平面領域からはみ出て配置されていたら、ARKitは物体を平面上にそっと動かす。

検出された平面の端に整然と物体を並べようとしないこと

ARでは平面の境界線は近似的なもので、周囲環境の解析が更に進むと変わるかもしれないためである。

仮想物体に対するユーザインタラクション

スクリーン上に別のUIを設けるよりは直接操作することが好ましい

物体に働きかける際、画面上に別にボタンなどのコントローラを設けるよりは、ユーザがスクリーン上の物体にタッチして働きかけることができる方がより没入感があり、直観的である。

標準的で親しみやすいジェスチャーを使って物体に働きかけられるようにすること

例えば物体を動かす際に1本指のドラッグをサポートしたり、2本指の回転ジェスチャで物体を回転させるようにするなどが挙げられる。関連情報はジェスチャーの項目を参照。

一般に物体への作用はシンプルであること

AR体験は現実世界の3次元に関わっているが、タッチジェスチャはそもそも2次元である。 仮想物体に対するユーザの作用を簡易化するために次のようなアプローチを検討すること。

  • 移動する方向を物体が置かれている2次元平面上に制限する
  • 回転方向を一軸に制限する

物体近くへ作用する妥当なジェスチャにも反応すること

小さかったり、薄かったり、遠くにある物体上のある1点を正確にタッチするのは難しいかもしれない。あなたのアプリが作用できる物体に近い位置のジェスチャを検知したら、ユーザはその物体に働きかけたいのだと推定するのがふつうは最善である。

ユーザが配置したオブジェクトのスケーリング機能が必要かどうかよく考えること

おもちゃやゲームキャラクターのように物体が固有のサイズがなく、ユーザがそれを大きくしたり小さくしたりしたいと思う場合サイズのスケーリングは一般に適切である。しかし現実世界において固有のサイズを持つ家具のような物体を正確なサイズで配置しようとする場合には不適切である。スケーリングは物体の距離を調整する方法としては使えない。例えば物体が近くに見えるように物体を大きくしても、単に遠くにより大きい物体あるように見えるだけである。

ジェスチャの衝突には気をつけること

例えば2本指のピンチジェスチャは2本指の回転ジェスチャととても似ている。もしこのような2つのジェスチャを実装するならば、アプリはそれらを正確に解釈できるのかをテストして確かめること。

仮想物体の移動は滑らかであるか確認すること

ユーザが物体をリサイズしたり回転させたり新しい位置へ移動するとき、物体がジャンプしているように見えてはいけない。

より魅力的な物体への作用方法を探求すること

ジェスチャだけがARにおいて仮想物体に働きかける唯一の方法ではない。アプリでは端末の動きや物体への接近などの他の要素を使うことができる。例えばゲームキャラクタにユーザが近づくと、ゲームキャラクタがユーザの方向を向くようにするなどである。

問題を解決する

AR体験がユーザの期待に沿っていない場合、ユーザ自身でリセットできるようにすること。

状態が改善するまで待たせたり、物体の配置に苦労させてはいけない。ユーザにもう一度やり直してより良い結果が得られるか確認できる方法を提供すること。

問題が起こったら改善方法を提示すること

暗かったり、平面が光を反射しなかったり、平面のディテールが十分でなかったり、カメラの動きが過剰すぎるなど様々な理由によってユーザの環境分析や平面検出は失敗することがある。アプリが平面のディテールが不十分だったりカメラの動きが過剰であると知っていたら、あるいは平面検出に時間がかかりすぎていれば、問題解決の方法を提案すること。

問題と改善案の例

  • 検出されるディテールが不十分→光をもっと照らし、端末を動かして周囲を映してください
  • 過剰な動きを検出→端末をもっとゆっくり動かしてください
  • 平面検出に時間がかかりすぎている→端末を動かして周囲を映してください。また、端末が十分ざらざらした平面を映しているかを確認してください。

ARの機能は使える端末だけに提供すること

もしあなたのアプリの主な目的がARであれば、ARKitをサポートしているデバイスのみでしかアプリを利用できないようにすること。また、もしあなたのアプリが製品の写真を含む家具のカタログのようなARを二次的な機能として使用し、いくつかの製品をARで見られるようにしている場合、ARをサポートしていないデバイスでその機能を使用しようと試みたときにエラーを表示しないようにすること。もしデバイスがARKitをサポートしていない場合、最初からオプションのAR機能を提示しないこと。開発者の手引として、ARKitキーについてはInformation Property List KeyUIRequiredDeviceCapabilitiesを参照のこと。また、ARConfigurationisSupported - ARConfiguration | Apple Developer Documentationも参照のこと。

ARのピクトグラム

アプリはAR体験を開始するボタンなどのコントロールにARピクトグラムを表示することができる。ARピクトグラムは Resourceからダウンロードできる。

ARピクトグラムは本来意図されたとおりに使うこと

ARピクトグラムはARKitを用いたAR体験を開始する場合のみに限って使われるべきである。サイズや色を変更するなど以外の変更をピクトグラムを適用したり、他の用途に使用したり、ARKitで作られていないAR体験の開始に使用してはならない。

最小限の余白を保つこと

ピクトグラムの周りに最小限の余白として、ピクトグラムの高さの10%を確保しなければならない。他の要素でそのスペースを侵害したり、ピクトグラムを隠してはならない。

ARバッジ

製品やその他のアイテムのコレクションを含むアプリにおいて、ARKitを使ったARで見ることができる特定のアイテムを識別するために、ARバッジを使うことができる。例えば、デパートのアプリでは家具を購入前に自分の家でその見た目をプレビューできるようになるかもしれない。

ARバッジは本来意図された通りに使うこと

ARバッジはResourceからダウンロードできる。これらの画像はARKitを使ってARで製品やその他の物を見ることができることを識別するためにのみ使われるべきである。バッジを変更したり、色を変えたり、他の用途で使用したり、ARKitを使っていないAR体験と関連づけて使用したりしてはならない。 ARピクトグラムよりARバッジを使用することが望ましい。一般的に、ピクトグラムだけのバッジは画面のスペースが限られているときや、ARバッジを配置しきれない場合に使われるべきである。いずれのバッジもデフォルトサイズでうまく動作する。

ARバッジはARで見ることができるものとそうでないものが混ざっている場合にのみ使うこと

もしアプリの中のオブジェクトすべてがARで閲覧できるとすれば、そのときバッジは冗長で不要なものである。

バッジの位置は不変で明確に保つこと

バッジは物体の写真のある隅に表示されるのが最も良い。常に同じ角に配置し、バッジがはっきりみえるのに十分大きいことを確認すること。ただし大きすぎて大事な写真の詳細を覆ってしまうようではいけない。

最小限の余白を保つこと

ピクトグラムの周りに最小限の余白として、ピクトグラムの高さの10%を確保しなければならない。他の要素でそのスペースを侵害したり、ピクトグラムを隠してはならない。

まとめ

さて、日本語でもかなり読むのに苦労する記事だったと思いますがいかがでしょうか。 ユーザにやさしいAR体験にはとても大事な項目が多いです。 初めて使うユーザがストレスフリーにアプリを利用できるよう、ポイントを押さえて置きたいところです。


きゃべ (@cab_kyabe)
きゃべ (@cab_kyabe)
Software Engineer / Product Manager