Slide 1

Slide 1 text

iOSDC Japan 2026 Track C 15:35~ Wi-Fi Aware を紐解く ~ Apple の公開 API と標準規格から 理解する近距離 P2P 通信 ~ Mika Ito

Slide 2

Slide 2 text

近くの端末と、どう繋ぐ? インターネットが 使えない 同じネットワーク に参加していない 地下、災害時、通信圏外 お互いの IP アドレスが Bluetooth の限界 ⾼帯域なデータ転送や 複数⼈同時接続がしたい 分からない 2

Slide 3

Slide 3 text

近くの端末と、どう繋ぐ? インターネットが 使えない Wi-Fi Aware 地下、災害時、通信圏外 同じネットワーク に参加していない Bluetooth の限界 ⾼帯域なデータ転送や お互いの IP アドレスが 複数⼈同時接続がしたい 分からない 3

Slide 4

Slide 4 text

Wi-Fi Aware とは 近くのデバイスを、直接‧安全‧⾼速につなぐ P2P Wi-Fi ● Wi-Fi Alliance の標準規格(Neighbor Awareness Networking / NAN) ● 直接接続する:アクセスポイントやインターネットなし ● 安全:Wi-Fi レイヤーで認証‧暗号化 ● ⾼速:低遅延、⾼帯域通信 4

Slide 5

Slide 5 text

Wi-Fi Aware とは ● 複数台に同時接続可能 ○ カメラ、PC、スマートフォンなどと並⾏して通信 ● 個々のピアが参加、または離脱しても、他のピアとの接続は維持 ● 通常の Wi-Fi 接続と Wi-Fi Aware の同時利⽤可能 5

Slide 6

Slide 6 text

近距離デバイス通信を実現する技術との⽐較 ● Bluetooth Low Energy を使い、近くの周辺機器を 発⾒‧接続‧通信する Apple のフレームワーク Core Bluetooth ● 同⼀ LAN やアクセスポイントは不要 ● センサー値、状態通知、機器設定などの⼩容量デー タに適する ● 省電⼒ ● TCP/IP ではなく Bluetooth の通信⽅式を利⽤ 6

Slide 7

Slide 7 text

近距離デバイス通信を実現する技術との⽐較 技術 同⼀LAN/AP 通信特性 主な⽤途 Bonjour 必要 発⾒のみ LAN 内サービス検出 MultipeerConnectivity 不要 中速‧Apple 専⽤P2P Apple 端末間共有 Core Bluetooth 不要 低消費電⼒‧低速 センサー、設定 Wi-Fi Aware 不要 ⾼速‧⼤容量 ファイル、⾳声、映像 7

Slide 8

Slide 8 text

どんなユースケースが考えられるか? ● カメラから写真‧動画を⾼速転送 ● ⾳声‧映像のリアルタイム共有 ● 画⾯共有や共同作業 ● ドローンや周辺機器の制御 ● オフライン環境でのゲーム‧データ交換 ○ など... 8

Slide 9

Slide 9 text

Wi-Fi Aware 対応アプリを 作るってどんな感じ? Apple’s DMA Compliance Report 9

Slide 10

Slide 10 text

使う前に知っておきたい使⽤条件 ● iOS‧iPadOS 26以降 ● 対応ハードウェアが必要 ○ iPhone 12 以降 ○ iPad (10th generation) 以降 ○ iPad Air (4th generation) 以降 ○ iPad Pro 11-inch (3rd generation) 以降 ○ iPad Pro 12.9-inch (5th generation) 以降 ○ iPad mini (6th generation) 以降 Wi-Fi Aware | Apple Developer Documentation 10

Slide 11

Slide 11 text

アプリの処理は5段階 1 2 3 4 5 事前準備 デバイスの 検出‧ ペアリング 接続 データ 通信 通信の 維持‧終了 11

Slide 12

Slide 12 text

登場するフレームワーク名 1. DeviceDiscoveryUI / AccessorySetupKit ○ ペアリングのためのシステム標準 UI を提供 2. WiFiAware ○ サービスの宣⾔、確認 ○ 端末が Wi-Fi Aware に対応しているかの確認 3. Network ○ データパス上の実際のデータ通信 12

Slide 13

Slide 13 text

1. 準備 アプリが Wi-Fi Aware を利⽤するための事前準備 ● サービス名の定義 ● Info.plist, Entitlement の設定 13

Slide 14

Slide 14 text

1. 準備 アプリが Wi-Fi Aware を利⽤するための事前準備 ● サービス名の定義 ● Info.plist, Entitlement の設定 14

Slide 15

Slide 15 text

1. 準備 ~サービス名の定義~ ● お互いのデバイスの検出し、接続するための識別⼦ ● サービス名 + プロトコルの⼆要素で構成 サービス名 _iosdc-service ● ⼀意であること ● アルファベット、数字、ハイフ プロトコル _tcp . ● TCP or UDP ン ● 15⽂字を超えない ● (RFC6763, RFC6335 に準拠) 15

Slide 16

Slide 16 text

1. 準備 アプリが Wi-Fi Aware を利⽤するための事前準備 ● サービス名の定義 ● Info.plist, Entitlement の設定 ○ Info.plist にサービス名を記述 ○ com.apple.developer.wifi-aware の Entitlement を追加 16

Slide 17

Slide 17 text

2. 検出‧ペアリング 近くにいる通信相⼿を⾒つけ、ユーザーが接続 を許可。誰と通信するかを決定。 1. Wi-Fi Aware 対応端末か確認 2. 接続候補を UI に表⽰ 3. ユーザーが相⼿を選択‧ペアリング ○ ⼀度ペアリングすれば、その後は毎回 ペアリング UI を出さずに接続できる 17

Slide 18

Slide 18 text

3. 接続 相⼿との通信経路を確⽴ ● Wi-Fi Aware が端末間のデータパスを⽤意 ● Network が接続を作成 ● Network が接続完了や切断などの状態を管理 18

Slide 19

Slide 19 text

3. 接続 ~ 接続に関する役割を決定 ~ Subscriber Publisher Subscriber Publisher 19

Slide 20

Slide 20 text

3. 接続 ~ 接続に関する役割を決定 ~ Publisher Subscriber 20

Slide 21

Slide 21 text

3. 接続 ペアリング済 Publishable service ペアリング端末 Listener (Publisher) Subscribable service ペアリング端末 Browser (Subscriber) 21

Slide 22

Slide 22 text

3. 接続 ここにサービスを 公開してます! Publishable service ペアリング端末 Listener (Publisher) 接続できる サービスはどこ? Subscribable service ペアリング端末 Browser (Subscriber) 22

Slide 23

Slide 23 text

3. 接続 発⾒!👀 Publishable service ペアリング端末 Listener (Publisher) Subscribable service ペアリング端末 Browser (Subscriber) 23

Slide 24

Slide 24 text

3. 接続 Publishable service ペアリング端末 Listener (Publisher) Subscribable service ペアリング端末 Browser (Subscriber) エンドポイントを 取得 24

Slide 25

Slide 25 text

3. 接続 Publishable service ペアリング端末 Subscribable service ペアリング端末 Listener (Publisher) Browser (Subscriber) 接続要求を受信 エンドポイントを 取得 25

Slide 26

Slide 26 text

3. 接続 Publishable service Subscribable service ペアリング端末 Listener (Publisher) ペアリング端末 Browser (Subscriber) Connect! 26

Slide 27

Slide 27 text

3. 接続 Publishable service Subscribable service ペアリング端末 Listener (Publisher) ペアリング端末 Browser (Subscriber) 💤 Connect! 💤 27

Slide 28

Slide 28 text

4. データ通信 送受信するデータによって、どのように運ぶかを決定する ● 通信プロトコルの決定 ● パフォーマンス最適化 28

Slide 29

Slide 29 text

4. データ通信 送受信するデータによって、どのように運ぶかを決定する ● 通信プロトコルの決定 ● パフォーマンス最適化 29

Slide 30

Slide 30 text

4. データ通信 ~ 通信プロトコルの決定 ~ Wi-Fi Aware で作った通信経路の上に、どの通信プロトコルを載せるか Listener (Publisher) Browser (Subscriber) TCP? UDP? 30

Slide 31

Slide 31 text

4. データ通信 ~ 通信プロトコルの決定 ~ ● TCP ● UDP ○ 順序保証‧再送あり ○ 順序保証‧再送なし ○ 確実に届けたいデータに適する ○ 低遅延を優先する通信に適する ○ ファイル‧重要なメッセージなど ○ ⾳声‧映像 など サービス名 _iosdc-service プロトコル . _tcp or _udp 31

Slide 32

Slide 32 text

4. データ通信 送受信するデータによって、どのように運ぶかを決定する ● 通信プロトコルの決定 ● パフォーマンス最適化 32

Slide 33

Slide 33 text

4. データ通信 ~ パフォーマンスの最適化 ~ ● パラメータ1:Performance Mode ○ ● デューティサイクル パラメータ2:Traffic Service Class ○ パケットの優先順位 33

Slide 34

Slide 34 text

4. データ通信 ~ パフォーマンスの最適化 ~ 送受信するデータによって、パフォーマンスの最適化を⾏う Performance Mode Traffic Service Class 遅延 消費電力 bulk bestEffort / background 大きい 少ない realtime interactiveVideo / interactiveVoice 小さい 多い 34

Slide 35

Slide 35 text

5. 通信を維持‧終了 5.1 状態監視 ● Connection の状態変化を監視 ● 信号強度‧遅延‧スループットを取得可能 ● 必要に応じて Heartbeat などで応答を確認 35

Slide 36

Slide 36 text

5. 通信を維持‧終了 5.2 復旧 ● .waiting:⼀時的な不良として回復を待つ ● .failed:接続を破棄して再探索‧再接続 ● 連続再接続を避け、間隔を空けて試⾏ 36

Slide 37

Slide 37 text

5. 通信を維持‧終了 5.3 終了 ● Publisher(Listener) / Subscriber(Browser) を停⽌ ● Connection や受信タスクをキャンセル 37

Slide 38

Slide 38 text

Wi-Fi Aware アプリ開発 tips ● ● 例:トランシーバーアプリ(リアルタイム⾳声)を作ってみた!🔊 ○ 実際の通信の確認には実機が必要 ○ Wi-Fi Aware は複数台前提。でも開発は⼀⼈ ○ 通信距離の最⼤値を知りたいが、広い部屋が必要 解決策 ○ Wi-Fi Aware に依存しないデバッグ導線 ○ 実機では無線固有部分だけを確認 ○ 同僚‧友⼈に協⼒してもらう ■ 障害物がなければ 25 m~30 m くらいは届いた 38

Slide 39

Slide 39 text

少しだけ Android の話 iOS 同⼠のみ検証済みで、Android との接続は未検証 ● Android 8.0 (API Level 26) から Wi-Fi Aware API を提供 ● Android 14 (API Level 34) から Wi-Fi Aware 4.0 のペアリング API を提供 ● 同じ標準規格でも、相互接続には細部の合意が必要 ● 今回検証できたのは iOS 同⼠のみ 39

Slide 40

Slide 40 text

まとめ Wi-Fi Aware を試してみよう!! 40

Slide 41

Slide 41 text

参考⽂献(順不同) ● ● ● ● ● ● ● ● ● ● ● ● ● ● https://developer.apple.com/documentation/wifiaware https://developer.apple.com/jp/videos/play/wwdc2025/228/ https://developer.apple.com/documentation/wifiaware/building-peer-to-peer-apps https://developer.apple.com/documentation/wifiaware/connecting-paired-devices https://developer.apple.com/documentation/wifiaware/adopting-wi-fi-aware https://developer.apple.com/documentation/technotes/tn3111-ios-wifi-api-overview https://developer.apple.com/documentation/multipeerconnectivity https://developer.apple.com/documentation/corebluetooth https://developer.android.com/develop/connectivity/wifi/wifi-aware?hl=ja https://source.android.com/docs/core/connect/wifi-aware?hl=ja https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf https://developer.apple.com/documentation/technotes/tn3151-choosing-the-right-networking -api https://www.apple.com/legal/dma/NCS-March-2026.pdf https://developer.apple.com/forums/thread/790195 41