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

この視野は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となっている。
本フレームワークを用いるアプリを開発する場合は、この点を考慮してユーザーエクスペリエンスを設計する必要がある。
デバイスの向き
最適なパフォーマンスを得るには、インタラクションするデバイスが両者縦向きである必要があるらしい。

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

セッションでは「絶対に避けたい」とまで言っている。
This is something you absolutely want to avoid
このことを念頭において、ユーザーが横向きで持ったりしないようにアプリの体験を設計する必要がある。
Occlusions
デバイスの間にレンガの壁、人や物があると、測定の可用性が低下する可能性があるらしい。


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

#WWDC2020 の勉強メモ
堤がWWDC 2020およびiOS 14についてセッションやサンプルを見つつ勉強したことを記事にしていくマガジンです。NDAの都合上、Ap…
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/