見出し画像

Nearby Interactionのベストプラクティス

空間認識を行うU1チップを利用してiPhone同士でインタラクションを行う新しいフレームワークNearby Interactionの概要や実装方法については既に記事に書いた:

WWDC 2020のセッション"Meet Nearby Interaction"ではこのフレームワークの利用において考慮すべき注意事項やベストプラクティスについて言及があったので、本記事ではそのあたりについてまとめる。


方向の視野 - Directional field of view

Nearby Interactionでは相手のデバイスの方向(3次元)と距離を得られるが、

extension NINearbyObject {

  public var distance: Float? { get }

  public var direction: simd_float3? { get }
}

これには(カメラや他のセンサーと同様に)「視野」がある。この視野は円錐形で、次の図のようにデバイスの背面から出ている。

画像1

この視野はWWDC 2020のセッションによると、iPhone 11のウルトラワイドカメラの視野とほぼ一致するらしい。

It roughly corresponds with the Ultra Wide camera's field of view on the iPhone 11. 

そして重要なのが、これが"Directional field of view" つまり「方向の」視野であるという点。相手のデバイスがこの視野内にある場合は距離と方向の両方の更新を高い信頼性で得られるが、相手デバイスがこの視野の外側にある場合、距離の更新を得ることはできるが、方向の更新は得られなくなる

こういったケースがあるため、NINearbyObjectの各プロパティはoptionalとなっている。

本フレームワークを用いるアプリを開発する場合は、この点を考慮してユーザーエクスペリエンスを設計する必要がある。

デバイスの向き

最適なパフォーマンスを得るには、インタラクションするデバイスが両者縦向きである必要があるらしい。

画像2

片方が横向きだったりすると、測定可能な範囲が限られてしまうようだ。

画像3

セッションでは「絶対に避けたい」とまで言っている。

This is something you absolutely want to avoid

このことを念頭において、ユーザーが横向きで持ったりしないようにアプリの体験を設計する必要がある。

Occlusions

デバイスの間にレンガの壁、人や物があると、測定の可用性が低下する可能性があるらしい。

画像4
画像5

こういったケースでは、NISessionDelegateのデリゲートメソッドから得られるNINearbyObjectオブジェクトの距離または方向のプロパティの値がnilになる可能性がある。


ここから先は

0字
昨年は書籍という形にまとめましたが、今年はこのマガジンに集約することにしました。 最初は記事が少ないので格安から開始して、充実してくるごとに本来あるべき価格に戻していく予定です。というわけで早いうちに買うと非常にお得です。 昨年の書籍は約80ページ+本に載せなかった事項もたくさん、ということで最終的にはそれなりの量になるのではと思います。

堤がWWDC 2020およびiOS 14についてセッションやサンプルを見つつ勉強したことを記事にしていくマガジンです。NDAの都合上、Ap…

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/