View in English

  • Apple Developer
    • 今すぐ始める

    「今すぐ始める」を詳しく見る

    • 概要
    • 学ぶ
    • Apple Developer Program

    最新情報

    • 最新ニュース
    • Hello Developer
    • プラットフォーム

    プラットフォームを詳しく見る

    • Appleプラットフォーム
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    特集

    • デザイン
    • 配信
    • ゲーム
    • アクセサリ
    • Web
    • Home
    • CarPlay
    • テクノロジー

    テクノロジーを詳しく見る

    • 概要
    • Xcode
    • Swift
    • SwiftUI

    特集

    • アクセシビリティ
    • App Intent
    • Apple Intelligence
    • ゲーム
    • 機械学習とAI
    • セキュリティ
    • Xcode Cloud
    • コミュニティ

    コミュニティを詳しく見る

    • 概要
    • 「Appleに相談」イベント
    • コミュニティによるイベント
    • デベロッパフォーラム
    • オープンソース

    特集

    • WWDC
    • Swift Student Challenge
    • デベロッパストーリー
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Center
    • ドキュメント

    ドキュメントを詳しく見る

    • ドキュメントライブラリ
    • テクノロジー概要
    • サンプルコード
    • ヒューマンインターフェイスガイドライン
    • ビデオ

    リリースノート

    • 注目のアップデート
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • ダウンロード

    ダウンロードを詳しく見る

    • すべてのダウンロード
    • オペレーティングシステム
    • アプリ
    • デザインリソース

    特集

    • Xcode
    • TestFlight
    • フォント
    • SF Symbols
    • Icon Composer
    • サポート

    サポートを詳しく見る

    • 概要
    • ヘルプガイド
    • デベロッパフォーラム
    • フィードバックアシスタント
    • お問い合わせ

    特集

    • アカウントヘルプ
    • App Reviewガイドライン
    • App Store Connectヘルプ
    • 近日導入予定の要件
    • 契約およびガイドライン
    • システムステータス
  • クイックリンク

    • イベント
    • ニュース
    • Forum
    • サンプルコード
    • ビデオ
 

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • Summary
  • トランスクリプト
  • コード
  • Bluetooth Channel Soundingによるアクセサリの発見

    Channel Soundingを使ってBluetoothアクセサリの距離と方向を認識する方法を学びましょう。新しいNearby Interaction APIとCore Bluetooth APIの詳細と、アクセサリ側で必要となる変更点について解説します。消費電力を最適化しながら、スムーズな体験と優れた応答性を実現できます。

    関連する章

    • 0:00 - Introduction
    • 0:50 - Overview
    • 3:17 - Core Bluetooth API
    • 4:34 - Nearby Interaction API
    • 7:05 - Hardware tips

    リソース

    • Measuring distance between devices using Channel Sounding
    • AccessorySetupKit
    • Nearby Interaction
    • Core Bluetooth
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC24

    • AccessorySetupKitについて

    WWDC21

    • サードパーティ製アクセサリとのNearbyインタラクション
  • このビデオを検索

    こんにちは!私はGretchenです。 Core Bluetoothチームに所属しています。 今日は、近くにあるBluetoothアクセサリを 見つける新しい方法をご紹介します。 Channel Soundingを使った方法です。 まず、Channel Soundingの活用方法について いくつかのアイデアをご紹介します。 そして、その仕組みについてもお話しします。 次に、アプリへの実装方法を ご説明します。 Core Bluetoothを使って距離を取得する方法と、 Nearby Interactionを使って アクセサリまでの距離と方向を取得する方法です。

    次に、 Channel Soundingをサポートする ハードウェアを構築するためのヒントをお伝えします。 最後に、次のステップについてお話しします。

    では、概要から始めましょう。

    パーティーを主催しているとします。

    室内ではオーブンを使って料理をしていて、 庭ではスモーカーも稼働させています。

    両方の場所に Bluetooth温度計を設置しています。 すべてを完璧に調理するために。 通知が届きました。 温度計の1つが 設定した温度に達したことを知らせています。

    アプリを開くと、 プローブは右側8メートル先にあると表示されます。 あれはスモーカーに違いない!

    Channel Soundingがあれば、 温度プローブを混同することはありません。 それぞれの距離を測定できます!

    iOS上のサードパーティ製アクセサリまでの 距離を測定する 方向も含めて測定する方法は いくつかあります。

    最高の精度を求めるなら、 アクセサリに Ultra Widebandチップセットを追加して、 アプリでNearby Interaction フレームワークを使用します。

    詳しい情報については、 「Explore Nearby Interaction with third-party accessories」をご覧ください。 ただし、アクセサリに Bluetoothチップセットしかない場合は、 Bluetooth Channel Soundingが 最善の選択肢です。

    過去にRSSIを使って 距離を推定したことがあるかもしれませんが、 Channel Soundingでは 実際に距離を測定できます。 Channel Soundingを試してみることをお勧めします。 より高い精度によって アプリが恩恵を受けられる場面で。 では、Channel Soundingは 具体的にどのように機能するのでしょうか?

    iPhoneがBluetoothアクセサリと ペアリングおよび接続されているとします。

    このシナリオでは、 iPhoneはイニシエーターと呼ばれます。 そして、アクセサリはリフレクターと呼ばれます。

    iPhoneはアクセサリに 信号(トーン)を送信します。 アクセサリはそのトーンを反射して返します。

    iPhoneは信号が伝送中に どのように変化するかを測定します。 一方から他方へ、そして戻るまでの変化を。

    このプロセスを2.4GHzバンドの チャンネル全体にわたって繰り返すことで、 iPhoneはこれらの反射されたトーンの 変化率を観察します。 チャンネルごとに、 そしてそれを使って イニシエーターとリフレクター間の距離を推定します。 この距離測定プロセスを プロシージャと呼びます。

    では、アプリでChannel Soundingを 実行するにはどうすればよいのでしょうか? 距離だけが必要な場合は、 Core Bluetoothを使用できます。 始める前に、 アクセサリがペアリングされ セットアップされていることを確認してください。 AccessorySetupKitを使用して、 Core Bluetoothで接続します。 詳しい方法については ドキュメントをご参照ください。 では、距離を測定する コードを見てみましょう。

    まず、ローカルのiOSデバイスで Channel Soundingがサポートされているか確認します。 CBCentralManager.supportsFeatures メソッドを使用します。

    接続済みのCBPeripheralがあれば、 startChannelSoundingSessionを呼び出します。 CBPeripheralオブジェクトに対して。

    iOSはChannel Soundingのプロシージャを 繰り返し実行します。 各プロシージャが完了すると、

    デリゲートメソッド peripheral didReceive resultsが 測定された距離(メートル)とともに 呼び出されます。

    Channel Soundingセッションを 終了する準備ができたら、 cancelChannelSoundingSessionを呼び出します。

    セッションが終了すると、 デリゲートメソッド peripheral didCompleteChannelSoundingSessionが呼び出されます。

    次に、 Nearby Interactionを使って 距離と方向を測定する方法をご説明します。

    もう一度確認しますが、 アクセサリがAccessorySetupKitを通じて ペアリングおよびセットアップされていることを確認します。 そして、CoreBluetoothで接続されています。 Channel Soundingセッションを作成する前に、 ローカルのiOSデバイスが サポートしているか確認します。 supportsBluetoothChannelSoundingメソッドを使って。

    次に、設定オブジェクトを作成します。 CoreBluetoothの peripheral.identifierを渡します。 bluetoothChannelSoundingIdentifierとして。

    方向を取得するには、 CameraAssistanceが必要です。 必要な場合は、必ず有効にしてください。

    最後に、NISessionを作成します。 デリゲートを設定し、 作成した新しいアクセサリ設定で 実行します。

    アクセサリが移動中か静止中かを アプリが把握している場合は、 Nearby Interactionに伝えることができます。 そうすることで、より正確な 方向推定に役立てられます。 セッションでupdateMotionStateを呼び出します。 accessoryオブジェクトのdiscoveryTokenを渡して。

    例えば、 アクセサリが壁に取り付けられた タグであれば、.stationaryを渡します。 移動するオブジェクトに 取り付けられている場合は、.movingを渡します。

    デリゲートコールバックは UWBの場合と同じです。

    距離と方向を含む NINearbyObjectsの更新を受け取ります。

    距離と方向の両方の結果は、 Bluetooth Channel Soundingの 生の測定値と カメラ入力の融合によって向上します。

    距離と方向の両方は オプションであることを覚えておいてください。 Channel Sounding測定が失敗した場合、 distanceはnilになることがあります。

    iOSは自動的に外れ値をフィルタリングし、 より良いユーザー体験のために 結果を平滑化します。 iOS 27では、アプリがフォアグラウンドにある間 Channel Soundingを使用します。 アプリがバックグラウンドに移動すると、 Channel Soundingセッションは 一時停止されます。

    また、注意が必要なのは、 他のBluetoothやWi-Fiの アクティビティが増加すると、 iOSはChannel Soundingの 測定頻度を下げる場合があります。 Channel SoundingはN1チップを搭載した iPhoneで利用できます。

    次に、アクセサリを 適切に動作させる方法を説明します。 iOS上のChannel Soundingと連携するために。

    アクセサリはBluetooth 6.3を サポートしている必要があります。 そして、inline PCT機能が必要です。

    iOSはフェーズベースの測距を使用するため、 チップセットはmode-0とmode-2も サポートしている必要があります。 Bluetooth仕様で定義されているように。

    T_FCSはトーン間の インタースペースタイミングです。 アクセサリが少なくとも100µsの T_FCSをサポートしていることを確認してください。

    さて、Channel Soundingについて すべてご説明しましたが、次は何でしょう? 互換性のあるアクセサリで APIを試してみてください。 距離の測定によって、 人々とアプリとの関わり方がどう変わるか想像してみてください。 Developer Forumsでご質問ください。 そして、Feedback Assistantを使って フィードバックをお送りください。 ありがとうございました!

    • 3:43 - Start a Core Bluetooth Channel Sounding session

      import CoreBluetooth
      
      func isChannelSoundingSupported() -> BOOL {
          guard centralManager.state == .poweredOn else { return }
          if #available(iOS 27.0, *) {
              // Check current device supports Bluetooth Channel Sounding
              return CBCentralManager.supportsFeatures(.channelSounding)
          }
      }
      
      func startChannelSounding(_ peripheral: CBPeripheral) {
          guard peripheral.isConnected else { return }
          if #available(iOS 27.0, *) {  
              // Step 1: Create a CBChannelSoundingSessionConfiguration
              let config = CBChannelSoundingSessionConfiguration(role: .initiator)
      
              // Step 2: Start the channel sounding session
              peripheral.startChannelSoundingSession(config)
          }
      }
    • 4:09 - Receive distance results and cancel a session

      import CoreBluetooth
      
      // Receive distance results
      func peripheral(_ peripheral: CBPeripheral,
                      didReceive results: CBChannelSoundingProcedureResults?,
                      error: Error?) {
          guard let results = results else { return }
      
          let distance = results.distance
          
          // Do something with distance
      }
      
      // Cancel a Channel Sounding session
      func cancelChannelSounding(_ peripheral: CBPeripheral) {
          guard peripheral.isConnected else { return }
          if #available(iOS 27.0, *) {
              // Cancel the channel sounding session
              peripheral.cancelChannelSoundingSession(config)
          }
      }
      
      func peripheral(_ peripheral: CBPeripheral,
                      didCompleteChannelSoundingSession error: Error?) {   
          // Session is complete
      }
    • 4:41 - Start a Nearby Interaction Channel Sounding session

      import CoreBluetooth
      import NearbyInteraction
      
      // Configure a Nearby Interaction Channel Sounding session
      func startChannelSoundingThroughNearbyInteraction(_ peripheral: CBPeripheral) {
          if #available(iOS 27.0, *) {        
              // Step 1: Check current device supports Bluetooth Channel Sounding
              guard NISession.deviceCapabilities.supportsBluetoothChannelSounding else { return }
      
              // Step 2: Create an NINearbyAccessoryConfiguration
              let config = NINearbyAccessoryConfiguration(
                  bluetoothChannelSoundingIdentifier: peripheral.identifier, 
                  previousChannelSoundingIdentifier: nil)
      
              // Step 3: Enable camera assistance for direction support
              if NISession.deviceCapabilities.supportsCameraAssistance { 
                  config.isCameraAssistanceEnabled = true
              }
          }
      }
    • 5:19 - Run a Nearby Interaction Channel Sounding session

      import CoreBluetooth
      import NearbyInteraction
      
      // Run a Nearby Interaction Channel Sounding session
      func runChannelSoundingThroughNearbyInteraction(_ config: NINearbyAccessoryConfiguration) {
          // Create an NISession
          let session = NISession()
          session.delegate = self
          // Run the NISession with the accessory configuration
          session.run(config)
      }
      
      // Improve Nearby Interaction direction outputs
      func updateAccessoryMotionState(_ isMoving: Bool) {
          NIMotionActivityState motionState = isMoving ? .moving : .stationary
          
          // Tell NISession about.the accessory's motion state
          session.updateMotionState(motionState, forObjectWithToken: object.discoveryToken)
      }
      
      // Receive NISession updates
      func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObjects]) {   
          guard let object = nearbyObjects.first else { return }
      
          if let distance = object.distance {
              // Do something with distance
          }
      
          if let direction = object.horizontalAngle {
              // Do something with horizontal angle
          }
      }
    • 0:00 - Introduction
    • Discover the three aspects of Bluetooth Channel Sounding that will be discussed in this video.

    • 0:50 - Overview
    • Find inspiration for using Bluetooth Channel Sounding.

    • 3:17 - Core Bluetooth API
    • Learn how to get distance with the Core Bluetooth API.

    • 4:34 - Nearby Interaction API
    • Get distance and direction with the Nearby Interaction API.

    • 7:05 - Hardware tips
    • Understand the hardware requirements for Bluetooth Channel Sounding.

Developer Footer

  • ビデオ
  • WWDC26
  • Bluetooth Channel Soundingによるアクセサリの発見
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • Apple Intelligence
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • Mini Apps Partner Program
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    最新ニュースを読む。
    Apple Developerアプリを入手する。
    Copyright © 2026 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン