ハンド メニュー
ハンド メニューは、HoloLens 2 の最も特徴的な UX パターンの 1 つです。 手にアタッチされた UI をすばやく立ち上げることができます。 いつでもアクセスして簡単に表示したり非表示にしたりできるので、クイック アクションに最適です。
以下に示すのは、ハンド メニューを使用する際に推奨されるベスト プラクティスです。 また、ハンド メニューのデモンストレーションを行う MRTK のサンプル シーンもご覧いただけます。
ベスト プラクティス
ボタンの数を少なくする
ハンドロックされたメニューと目との間の距離が近いこと、また、ユーザーは常時比較的小さい視覚野に焦点を合わせる傾向があることから (注視の視円錐は約 10 度)、ボタンの数は少なくすることをお勧めします。 私たちの調査によれば、1 列に 3 つのボタンを配置すると、ユーザーが手を視野 (FOV) の中心に移動させても、すべてのコンテンツが FOV 内に収まり、良好な結果が得られています。
ハンド メニューをクイック アクションに使用する
腕を上げた状態を続けると、腕はすぐに疲れてしまいます。 ハンドロック方式は、対話式操作が短時間で済むようなメニューに使用してください。 メニューが複雑で対話式操作に長時間を要する場合は、ワールドロック方式またはボディロック方式の使用を検討してください。
ボタンとパネルの角度
メニューは、かざした手の逆側の肩寄りに、頭の中央に対面するように提示することをお勧めします。そうすることで、反対側の手でメニューを操作する際に自然な手の動きが可能になり、ボタンを触るときの不自然な手の位置や無理な手の位置を避けることができます。
片手操作またはハンズフリー操作への対応を検討する
ユーザーの両手が常に空いているとは考えないでください。 片手や両手がふさがっているときのさまざまなコンテキストを考慮し、そうした状況に対応した設計を心がけます。 片手ハンド メニューをサポートするために、ハンド フリップ (手のひらを下に向ける操作) でメニューの配置をハンドロックからワールドロックに切り替えるという選択肢もあります。 ハンズフリーのシナリオについては、音声コマンドでハンド メニューを呼び出すことを検討してください。
手首 (システム ホーム ボタン) の近くにボタンを追加することは避ける
ハンド メニューのボタンをホーム ボタンに近づけすぎると、ハンド メニューの操作中に、ホームボタンが間違ってトリガーされてしまうことがあります。
大きく複雑な UI コントロールを備えたハンド メニュー
手動でアタッチされたメニューのボタンまたは UI コントロールの数を制限することをお勧めします。 これは、多数の UI 要素を長時間操作していると腕が疲れる可能性があるためです。 目的のエクスペリエンスに大きなメニューが必要な場合は、ユーザーが簡単にメニューをワールド ロックできるようにしてください。 1 つの手法として、手が下がった (手のひらがユーザーから遠ざかった) ときにメニューをワールドロックする方法をお勧めします。 また、ユーザーがもう一方の手で直接メニューをつかむことができるようにする手法も考えられます。 ユーザーがメニューを離したときに、メニューをワールド ロックします。 そうすれば、ユーザーは長時間にわたり、さまざまな UI 要素を快適に安心して操作できます。メニューがワールドロックされているときに、メニューを移動させたり、不要になったメニューを閉じたりする手段を必ず用意してください。 メニューを移動できるようにするには、メニューの側面や上部にハンドルを付けます。 閉じるボタンを追加すれば、メニューを閉じることができます。 ユーザーが手のひらを自分に向けたときに、メニューが再び手にアタッチされるようにします。 また、誤ってアクティブにしてしまうのを避けるために、ユーザーが自分の手を見つめたときにだけアクティブになるようにすることをお勧めします (以下を参照)。
使いにくい大きなメニュー
手を下げるとワールドロックされるメニュー
手動グラブ & ワールドロックメニューにプル
誤ったアクティブ化を防ぐ方法
手のひらを上に向けるだけの動作をイベントとして使用し、ハンド メニューをトリガーした場合、人間の手の動きには、意図したもの (意思の疎通や物の操作) とそうでないものとがあるため、メニューが必要のないときに誤って表示 (誤検知) されてしまうことがあります。 誤ってアクティブにしてしまうことを避けるには、ハンド メニューの呼び出しに、手のひらを上に向けるイベントだけでなく、さらに別のステップ (指を完全に開く、ユーザーが意図的に自分の手を見つめるなど) を追加します。
手のひらを平らにすることを要求する
手のひらを平らにすることを要求することで、ユーザーが環境内で物を操作したり意思表示のためのジェスチャーを行ったりしたときに生じる誤作動を防ぐことができます。
見つめることを要求する
ユーザーに自分の手を見つめること (目または頭の動きによる視線入力) を要求すれば、アクティブにするための第 2 のステップとして手に視線を向けなければならなくなるので誤作動の防止になります (ただし、ユーザーが快適に操作できるよう距離のしきい値を調整できるようにします)。
ハンド メニューの配置に関するベスト プラクティス
人体構造上、尺骨神経は、尺骨の近くを走る神経です。 尺骨は、前腕の肘から小指に延びる長い骨です。
私たちの調査に基づいて推奨される 2 つの配置を以下に示します。
A. 手のひらの尺骨側
この位置であれば、両手が重なることはないので安全です。 手の検出と追跡を正確に行ううえで、このことはきわめて重要となります。
B. 尺骨側の手の上方
この位置は、ユーザーが腕をさほど高く上げなくても快適にハンド メニューを操作できます。 手のひらよりも 13 cm 上にメニューを配置し、手のひらの尺骨側に沿ってボタンを一直線に並べることをお勧めします。 最適なボタンの大きさの詳細については、こちらの記事をお読みください。
技術的な理由からこの位置を推奨しますが、開発上の実装の要件が 1 つあります。それは、ユーザーがメニューを操作しようと反対側の手を近づけたときにメニューを固定する必要があるということです。 これにより、手が重なることによるジッターを回避でき、また、ボタンに照準を合わせやすくもなります。
HoloLens 2 カメラが手を正確に識別するためには、両手が離れている必要があります。 少しでも手が重なっていると、ハンド メニューがアンカーの位置から離れてしまいます。
推奨されないメニュー位置
Microsoft では、メニューのレイアウトと位置をいろいろ変えながらユーザー リサーチを行ってきましたが、次のメニュー位置は推奨されません。以下、各調査で判明した問題点をご覧ください。
腕の上
1 - 適切なハンド トラッキングを維持するのが困難
2 - 不自然な姿勢となるためユーザーが疲れる
指の上
1 - 手を長時間差し出していなければならず、手が疲れる
2 - 人差し指と中指でハンド トラッキングの問題が生じる
手のひらの中心の上
1 - 両手が重なるためにハンド トラッキングの問題が生じる
2 - メニューを操作するためには両手を長時間維持している必要があるため、手が疲れる
トップ指先
1 - ハンド トラッキングの問題が生じる
2 - 通常の位置よりも上に手を維持しなければならず、手が疲れる
3 - 指の間隔が狭いために、誤って他の指でボタンを押してしまう
腕の裏
1 - 誤ってホーム ボタンをトリガーしてしまう可能性がある
2 - 自然で快適な位置ではない
MRTK (Mixed Reality Toolkit) for Unity のハンド メニュー
MRTK には、ハンド メニューのためのスクリプトやサンプル シーンが用意されています。 HandConstraintPalmUp ソルバー スクリプトを使用すると、構成可能なさまざまなオプションを使用して、あらゆるオブジェクトを手にアタッチすることができます。 MRTK のハンド メニュー サンプルには、手のひらを平らにする、見つめるといった、誤作動を防ぐための要件を始めとした便利なオプションが含まれています。
MRTK Examples Hub アプリで HoloLens 2 のハンド メニュー サンプルを試すことができます。