ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Nearby Interactionの最新情報
Nearby Interactionフレームワークで、Ultra Wideband(UWB)がAppやハードウェアアクセサリに簡単に統合する方法をご覧ください。ARKitの視覚と空間の能力とU1チップの無線感度を組み合わせて、近くの静止オブジェクトを正確に見つける方法について解説します。また、BluetoothにてペアリングされたUWBアクセサリでバックグラウンドインタラクションを作成する方法も紹介します。
リソース
関連ビデオ
WWDC21
WWDC20
-
ダウンロード
♪ 穏やかな音楽ヒップホップミュージック ♪ ♪ こんにちは Jon Schoenbergと申します AppleのLocation Technologies チームでエンジニアしています このセッションでは 空間認識で より豊かで多様な体験を構築できる Nearby Interactionの 新機能を紹介します Nearby Interactionフレームワークは Ultra Wideband技術用のAppleのチップである U1の性能を活用するだけで 周辺のApple製デバイス間やUltra Wideband用 AppleのU1チップ対応のアクセサリ間で 正確かつ空間認識できる インタラクションの作成を可能にします この2年間でどんなことが できるようになったのか 概要を見ていきましょう WWDC 2020で Nearby Interactionが紹介された際に その機能はU1を使用した2台のiPhone間の セッションの作成と実行に 重点が置かれていました WWDC 2021では Apple Watchや第三者の Ultra Wideband対応アクセサリを使用して ランニングセッションに対応するために 機能が拡張されました Nearby Interactionフレームワークの APIの詳細を知りたい場合 2020年のWWDCでの 「Nearby Interactionについて」 および2021年の 「サードパーティ製アクセサリとの Nearbyインタラクション」 をご確認ください Nearby Interactionに対する コミュニティのレスポンスに圧倒されており このセッションで 新しい性能と改善点を 紹介することを楽しみにしています 2つのメイントピックである ARKitを使用したNearby Interactionの強化 バックグラウンドセッション に焦点を当てます その中で Nearby Interaction フレームワークを より使いやすくするための改良点を紹介し 昨年発表した第三者のハードウェアサポートに 関するアップデートをお伝えします この新しい性能により どんなことができるのか 詳細を見ていきましょう ARKitとNearby Interactionを密に統合した 興味深い新しい性能からご紹介します この新しい性能は ARKitから 計算されたデバイスの 軌跡を活用することで Nearby Interactionを強化します ARKitで強化されたNearby Interactionは AirTagのPrecision Findingと同じ 基礎技術を活用し Nearby Interactionで 利用可能できるようにします 最適なユースケースには 置き忘れた物 興味のあること ユーザーが関わりたいことなど 特定の周辺にある物へ ユーザーを導くことがあります ARKitとNearby Interactionを統合することで Nearby Interaction単独で使用するよりも 距離と方向に関する情報を安定して取得でき Ultra Widebandフィールドのビューを 効果的に広げます この新しい機能は 据え置き型デバイスとの インタラクションに最適です AppによるARKitと Nearby Interactionの新しい統合の可能性を さっそくデモでご紹介します Jetpack Museumで Ultra Widebandアクセサリを使って ユーザーを展示物にご案内するAppがあります 次のjetpackについて見ていきましょう ユーザーが次の展示に進むことを選択すると AppがUltra Widebandアクセサリを検出し Nearby Interactionの使用を開始するために 必要な交換を実行します Appはユーザーに 携帯電話を左右に動かすよう指示をして ARKitで強化された Nearby Interactionモードを使って 次の展示物の物理的位置の特定を開始します 次の展示に対応する方向を Appが理解したことで その展示に向かうべき方向を示す 矢印のアイコンが 表示されるようになりました ARKitとNearby Interactionの 組み合わせを活用した この豊富な空間認識情報は 展示がユーザーの背後にある場合 展示の反対方向に向かっている場合にも 表示することができます 最後に AR世界に次の展示の 位置をオーバーレイ表示し AppでiPhoneを上下に 少し動かすようユーザーを促し AR世界のどこに展示があるか 解決することができます ARコンテンツがシーンに配置されると Ultra Wideband計測による Nearby Interactionと ARKitの強力な組み合わせにより ユーザーは簡単に次のjetpackを 確認することができるようになります jetpackは見つからないかもしれませんが queenは見つけました この強化されたNearby Interactionモードを 有効にする方法について説明します iOS 15では 周辺のピアから NIDiscoveryTokenを受け取り セッション構成を作成し NISessionを実行するメソッドが Appにあるかと思います ARKitによるエンハンスモードの有効化は NIConfigurationのサブクラスの新しい isCameraAssistanceEnabledプロパティにより Nearby Interactionの新規および 既存の使用で簡単に行うことができます isCameraAssistanceEnabledプロパティを 設定するだけで ARKitで エンハンスモードを活用できます 2台のAppleデバイス間 およびAppleデバイスと 第三者のUltra Widebandアクセサリの 相互作用時に カメラアシスト が利用できます カメラアシストを有効にして NISessionを実行すると どうなるのか見ていきましょう カメラアシストが有効の際に ARSessionは自動的に Nearby Interaction フレームワーク内で作成されます あなたは このARSessionの 作成に携わっていません カメラアシストを有効にして NISessionを実行することで Nearby Interaction フレームワーク内で作成される ARSessionも有効にします The ARSessionはApp プロセス内で実行されます 結果として Appは AppのInfo.plist内に カメラの重要な使用方法を 提供する必要があります 良質な体験を提供するために なぜカメラが必要なのかを ユーザーに伝えるために これを役立つ文字列にしてください 単一のARSessionだけが提供された Appで実行できます これは ARKitをすでにAppで経験した場合 NISession内で作成された ARSessionを共有することが必要となります NISessionによるARSessionを共有することで 新しいsetARSessionメソッドは NISessionクラスで利用可能です NISessionで実行する前にsetARSessionを 呼び出す場合 セッション実行時に Nearby Interactionフレームワーク内に ARSessionは自動的に作成されません これにより AppのARKit体験と Nearby Interactionの カメラアシスタンスが同時に行われます この SwiftUI の例では makeUIView機能の一部として ARView内の基礎となるARSessionは 新しいsetARSessionメソッドを介して NISessionと共有されます ARSessionを直接提供する場合 ARWorldTrackingConfigurationを使用して ARSessionに実行する必要があります カメラアシストによる 高品質なパフォーマンスを 確保するためには このARConfiguration内で いくつかのプロパティを特定の方法で 設定する必要があります worldAlignmentをgravity collaborationと無効のuserFaceTracking initialWorldMap falseを返す delegateのsessionShouldAttempt Relocalizationメソッドに設定してください 作成したARSessionを共有する際の ベストプラクティスを紹介します NISessionDelegate didInvalidateWithエラーメソッドでは 常にエラーコードを検査してください 共有のARSessionの実行に使用される ARConfigurationが概略のプロパティに 適合していない場合 NISessionは無効になります 新しいNIError code invalidARConfigurationが 返されます Appで周辺オブジェクトの更新を受け取るには NISessionDelegateで didUpdateNearbyObjects メソッドを継続して使用します didUpdateNearbyObjectsメソッドでは おそらく目的のピアの 周辺オブジェクトを確認し 利用可能な場合はNINearbyObjectの距離と 方向プロパティに基づいてUIを更新し これらはnilになることを 常に留意してください カメラアシスタンスが有効の場合 2つの新しいプロパティが INearbyObject内で利用可能です 1つ目はhorizontalAngleです これは 周辺オブジェクト への方向を示している ラジアンで1D型角度になります 利用できない場合 この値はnilになります 2つ目は verticalDirectionEstimateはであり 垂直方向における 近傍のオブジェクトとの位置関係です これは新しい VerticalDirectionEstimateタイプです 距離と方向は ユーザーのデバイスと 周辺オブジェクト間の重要な 空間的関係を表します 距離はメートル単位で計測され 方向はあなたのデバイスから 周辺オブジェクトへの 3D型ベクトルで示されます 水平角とは ローカル水平面内で NISessionを実行しているデバイスと 周辺オブジェクト間の 角度を定義するものです これは 2つのデバイス間の垂直方向の変位の オフセットと デバイス自体の 水平方向の回転を考慮したものです 方向が3Dであるのに対し 水平角は 2つのデバイス間の方位を1Dで表示します この水平角プロパティは 方向プロパティと補完関係にあり 方向が解決できない場合 水平角が利用可能であれば ユーザーを周辺オブジェクトに誘導できます 鉛直方向推定は 鉛直方向の位置情報を 定性的に評価するものです フロアレベル間でユーザーの 誘導に使う必要があります ではここで 新しいVerticalDirection Estimateタイプを見ましょう VerticalDirectionEstimateは NINearbyObject内にネストされたenumであり 周辺オブジェクトとの垂直関係の 定性的評価を表しています VerticalDirectionEstimateが未知であることを プロパティを使用する前に 必ず確認してください 垂直関係は 同等 上回る 下回る または特別なaboveOrBelow値で 周辺オブジェクトが同等レベルではなく デバイスを上回る または下回ることが 明確でないことを表現します Ultra Widebandの測定は ビューや 障害のフィールドに 影響されることがあります 方向情報のビューのフィールドは デバイスの背面から突出した円錐に一致します カメラアシスト有効時に ARKitから計算されるデバイスの軌跡により 距離 方向 水平角 垂直方向の推定値が より多くのシナリオで利用可能となり Ultra Widebandセンサーの ビューを効果的に拡張します ARKitとNearby Interactionの この統合を活用して シーンにARオブジェクトを 配置する方法を説明します カメラフィードのビジュアライゼーションに 周辺オブジェクトを表す 3Dバーチャルコンテンツを 簡単にオーバーレイできるように NISessionに ヘルパーメソッド (worldTransform)を追加しました このメソッドはARKitの座標空間における worldTransformを返すもので 物理的環境において指定された 周辺オブジェクトの位置が 利用可能な場合 それを表します 利用可能でない場合 そのメソッドはnilに戻ります デモでこのメソッドを使用して 次の展示の上に球体を配置します Nearby Interactionの位置情報出力を活用して AppでAR世界のコンテンツを操作することを できる限り簡単にできるよう にしたいと考えています iOSに搭載された2つの 強力なシステムの組み合わせ カメラアシストが適切に 世界変換を計算できるように ユーザーは垂直方向と水平方向に デバイスを十分に掃引する必要があります このメソッドは カメラアシストが ARKitの世界変換に完全に収束するために ユーザーの動作が不十分な場合に nilを返すことができま可能です この変換がApp体験にとって重要な場合 この変換を生成するアクションを ユーザーに指導することが重要です NISessionDelegateに追加して デモで見たような ユーザーを導くための 機能を紹介します ユーザーをオブジェクトに導くために NISessionDelegateコールバックは 新しいdidUpdateAlgorithmConvergence デリゲートメソッドを介して Nearby Interactionアルゴリズムの収束 に関する情報を提供します アルゴリズムの収束は 水平角 垂直方向推定 およびworldTransformが利用できない理由と それらのプロパティを解決するために ユーザーが取ることのできる アクションを理解するのに役立ちます このデリゲートは 新しいNIAlgorithmConvergence オブジェクトとオプションで NINearbyObjectを提供します このデリゲートメソッドは NIConfigurationで 有効なカメラアシストが ある場合にのみ呼び出されます 新しいNIAlgorithmConvergence タイプについて見ていきましょう NIAlgorithmConvergenceは NIAlgorithm ConvergenceStatuタイプの 単一状態プロパティを持ちます NIAlgorithmConvergence Statusタイプは アルゴリズムが収束したか どうかを表すenumです アルゴリズムが収束していない場合 NIAlgorithmConvergence StatusReasonsの配列が提供されます 新しいデリゲートメソッドに戻り ユーザーに対してカメラアシスタンスの ステータスを更新したいとします 輻輳のステータスをオンにし 不明または輻輳した場合 その情報をユーザーに 表示することができます NINearbyObjectの検査を行ってください オブジェクトがnilの場合 NIAlgorithmConvergence状態は 特定のNINearbyObjectではなく セッション自体に適用されます ステータスがnotConvergedの場合 アルゴリズムが収束しない理由を 記載した関連値も含みます ローカライズされた説明は このような理由から ユーザーとのより良いコミュニケーション をとるためにあります 次に これらの値を使用する 方法を見ていきます notConvergedのケースと関連する理由の 値をより詳細に調べることで 周辺オブジェクトに関する 目的の情報を生成するのに 役立つアクションを取るように ユーザーを導くことができます 関連する値は NIAlgorithmConvergence StatusReasonsの配列である StatusReasonsの配列です 理由は全体の動きが不十分であること 水平または垂直方向の動きが不十分であること 照明が不十分であることが示されています 複数の理由が同時に存在する 可能性があることを留意し Appに対し最も重要なことはどれかを考え 各アクションを順次案内してください デモで携帯電話を動かし ワールド変換を解決するために 水平方向と垂直方向の両方を掃引する 必要があったことを留意しください これが カメラアシストで強化された Nearby Interactionモードの 最も重要な部分です このモードをより活用していただくために いくつかの変更を追加しました 以前は NISessionの単一の isSupportedクラス変数は Nearby Interactionが指定のデバイスで サポートされているかを 確認することが必要でした 現在では非推奨となっています カメラアシストの追加により デバイスの性能を新しいNIDeviceCapability オブジェクトを返すNISessionで 新しいdeviceCapabilitiesの クラスメンバーにより Nearby Interactionをサポートします 少なくとも supportsPreciseDistance Measurementプロパティ を確認することは 現在では非推奨の isSupportedクラス変数と同等です デバイスが正確な距離測定を サポートしていることを 確認したらNIDeviceCapabilityを使用して Appを実行しているデバイスの Nearby Interactionで利用できる性能を 完全に理解する必要があります NIDeviceCapabilityオブジェクトの 追加のsupportsDirection Measurementと supportsCameraAssistance プロパティを確認して デバイスの性能に適した App体験をすることを推奨します すべてのデバイスが方向計測やカメラアシスト に対応しているわけではないので このデバイスの性能に適合した体験が 含まれていることを確認してください 特に Apple Watchに最適に対応するために 距離限定の体験が含まれていることを 留意してください これが ARKitでNearby Interactionを 強化する方法としての カメラアシストになります次にアクセサリの バックグラウンドセッション について見ていきましょう 現在では Appで Nearby Interactionを使用して ユーザーが他のデバイスを選択 友達の位置情報を検索 アクセサリまでの距離や方向に基づいた操作や その他UIを表示することができます Appがバックグラウンド にトランジションした際 またはiOSやwatchOSで ユーザーが画面をロックした際 実行中のNISessionはAppが フォアグラウンドに戻るまで中断されます つまり アクセサリを操作する際の ユーザーの本番経験に フォーカスする必要がありました iOS 16から Nearby Interactionは ハンズフリー化されました スマートスピーカーで部屋に 入ると音楽が流れ始めたり eBikeに乗ると電源が入ったり アクセサリの ハンズフリーアクションを トリガーしたりすることが Nearby Interactionで実現可能になりました アクセサリのバックグラウンド セッションを介して ユーザーがアクティブにAppを 使用していないときでも 実行することができます ここでは この新しい性能を実現する 方法について説明します アクセサリでNISessionを構成 実行するまでの 一連の流れを少し振り返っていきましょう 昨年のWWDCのプレゼンテーションで このシークエンスについて 理解した方もいるかと思います アクセサリはデータチャネルを介して Ultra Widebandアクセサリ構成データを Appに送信し このデータから NINearbyAccessoryConfiguration を作成します accessory.NISessionを作成し NISessionDelegateを設定して アクセサリからUltra Wideband の測定値を取得します あなたの構成でNISessionを実行し セッションが共有可能な構成データを返し アクセサリとAppが 相互作用するために設定します この共有可能な構成データを アクセサリに送返後 Appとアクセサリで Ultra Wideband測定を 受けることが可能になります 第三者アクセサリを使ったNearby Interactionの 構成と実行に関する詳細は 昨年のWWDCセッションをご確認ください 新しいバックグラウンドセッションの 設定方法を見ていきましょう 前回のシーケンス図では Appとアクセサリの間のデータの 流れが示されていました アクセサリーとAppの通信経路に Bluetooth LEを使用することは 非常に一般的となっています Bluetooth LEを使用して アクセサリとペアリングした際 Nearby Interactionを有効にして バックグラウンドで セッションを開始および 継続することができます これがどのようにして可能 になるのか詳細を見ていきます 現在では Appを構成して Core Bluetoothを使用し Appがバックグラウンドにある際 Bluetooth LEアクセサリを検出 接続 データ交換することができます 詳細は 既存のCore Bluetooth Programming Guideや 2017年WWDCセッションをご確認ください CoreBluetoothの強力な バックグラウンド操作を活用して 効率的にアクセサリを検出し バックグラウンドでAppを実行することにより Appはバックグラウンドで Ultra Widebandにも対応した Bluetooth LEアクセサリで NISessionを開始できます この新しいモードを反映して シーケンス図がどのように 更新されるかを見ていきます このアクセサリと相互作用 するには まず最初に Bluetooth LEがペアリング されていることを確認します その後アクセサリに接続します アクセサリがUltra Wideband 構成データを生成した際に それをAppに送信し Nearby Interaction GATTサービスに 入力する必要があります 次で詳細を説明します 最後に Appがアクセサリの 構成データを受信した際 アクセサリのUWB構成データと Bluetoothピア識別子の両方を提供する 新しいイニシャライザを使用して NINearbyAccessoryConfiguration オブジェクトを構築します この構成でNISessionを実行し NISessionDelegateで共有可能な構成を 受け取ることによって 設定が完了したことを確認し 共有可能な構成をアクセサリに送信します アクセサリにおいてBluetooth識別子と Ultra Widebandの構成の 関係性を作成するには 新しいNearby Interaction GATTサービスを 実装する必要があります Nearby Interactionサービスは Accessory Configuration Data という単一の暗号化された特性を含みます NINearbyAccessory Configurationオブジェクト の初期化で使用された 同様のNUWB構成データを含みます iOSはこの特性を使用して Bluetoothピア識別子 とNISessionの関係性を検証します Appはこの特性を直接 読み込むことはできません この新しいNearby Interaction GATT service 詳細につきましては developer.apple.com/ nearby-interactionで確認できます アクセサリが並行して 複数のNISessionをサポートする場合 Accessory Configuration Data の複数のインスタンスを作成し それぞれに異なるNISession のUWB構成を設定します これがアクセサリに必要なこととなります いくつかのコードを実施して Appで実装すべきことを見ていきます アクセサリのバックグラウンド セッションでは ユーザーのiPhoneとアクセサリーが LEペアリングされている必要があります Appはこのプロセスのトリガーとなります そのために アクセサリを スキャンして接続し そのサービスや特性を 検出する方法を実装します アクセサリーの暗号化された特性の 1つを読み取るメソッドを実装します これは一度だけ行う必要があります ペアリングを受け入れる プロンプトが表示されます アクセサリバックグラウンドセッションは アクセサリにBluetooth 接続する必要があります Appはバックグラウンドにある場合でも この接続を形成する必要があります これにより メソッドを実装し アクセサリへの接続を初期化します Bluetoothの範囲内にアクセサリが ない場合においても これを実行する必要があります 次に CBManagerDelegateメソッドを実装して AppがCore Bluetoothによって 再起動された後に状態を復元し 接続が確立されたときに処理します これでアクセサリバックグラウンド セッションを実行する準備が整いました CBPeripheral識別子から アクセサリのUWB構成データと Bluetoothピア識別子の両方を指定して NINearbyAccessoryConfiguration オブジェクトを作成します その構成でNISessionを実行して Appがバックグラウンド にある際に実行されます 以上です XcodeにあるAppの更新をするために 必要な設定がもう一つあります このバックグラウンドモードには AppのInfo.plistの UIBackgroundModes配列にある Nearby Interactionの文字列が必要です Xcodeの性能のエディタを使用して このバックグラウンドモードを追加できます Appがバックグラウンドで アクセサリと接続できるように 「Bluetooth LEアクセサリを使用する」 が有効になっていることを 確認する必要があります この新しいアクセサリ バックグラウンドセッションについて 一つ重要なことがあります Appがバックグラウンドにある場合 NISessionは継続的に実行され 中断されないため Ultra Widebandの測定は アクセサリで可能です アクセサリのUltra Widebandの測定値を 消費および実行する必要があります Appはランタイムを受け取らず Appがフォアグラウンドに戻るまで didUpdateNearbyObject デリゲートコールバックを受け取りません この新しいバックグラウンド モードを使用する際の ベストプラクティスを見ていきます アクセサリーとのLEペアリング をトリガーすることで ユーザーにペアリングを受け入れる プロンプトが表示されます ユーザーがアクセサリを ペアリングする理由を直感的に 理解できるというタイミング で行ってください これは アクセサリとの関係性を 構築する設定フローであったり ユーザーがアクセサリーとの 相互作用を希望していることを 明確に示したときであったりします Appがバックグラウンド化されている間 NISessionは中断できませんが but it will not receive didUpdateNearbyObject didUpdateNearbyObjectデリゲート コールバックを受け取ることはありません しかし アクセサリは Ultra Wideband測定値を受け取ります アクセサリに直接これらの測定値を処理して ユーザーに対して生じるべき アクションについて決定します 最後に アクセサリからAppに データを送信するだけで ユーザーへの通知を表示するなどの 重要なユーザーインタラクションの間で バッテリー使用量を管理します 以上がバックグラウンドセッション で知っておきべきことであり 第三者のハードウェアサポートに関する 最後のトピックにつながります 本日 これまで提供していた ベータ版U1対応開発キットがベータを終了し 広く利用できるようになった ことをお知らせします 互換性があるUltra Wideband開発キットの developer.apple.com詳細につきましては nearby-interactionをご覧ください Nearby Interaction GATTサービスを含む 新しいアクセサリバックグランドセッションに 対応するためアクセサリメーカー向けの 仕様書を更新し 同サイトで公開しています Nearby Interactionは ARKitと Nearby Interactionを緊密に統合し ユーザーを周辺オブジェクトに誘導する 空間認識体験をシームレスに実現する 新しいカメラアシストモード が追加されました アクセサリのバックグラウンド セッションを使用すると バックグラウンドでセッションを開始したり 拡張したりすることができ ユーザーにとって よりハンズオフな体験を 構築することができます 第三者対応Ultra Wideband ハードウェアのサポートについて エキサイティングな発表しました これが本年度のNearby Interaction更新になります デモをダウンロードして 更新された性能についての フィードバックを提供し 更新された第三者の仕様を確認し 空間体験のある素晴らしい Appを構築してください ありがとうございました ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。