Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Wi-Fi Aware を紐解く ~ Apple の公開 API と標準規格から理解する近距...
Search
mika
September 16, 2026
1
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Wi-Fi Aware を紐解く ~ Apple の公開 API と標準規格から理解する近距離 P2P 通信 ~
mika
September 16, 2026
More Decks by mika
See All by mika
iOS 18 新機能対応
mika1315
0
450
Accessibility for Swift Charts
mika1315
0
700
速習!iOS 17 Widgets 対応!
mika1315
0
500
Featured
See All Featured
Practical Orchestrator
shlominoach
192
12k
A better future with KSS
kneath
240
18k
Site-Speed That Sticks
csswizardry
13
1.5k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
430
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Statistics for Hackers
jakevdp
799
230k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
Code Review Best Practice
trishagee
74
20k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing for Timeless Needs
cassininazir
1
480
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Transcript
iOSDC Japan 2026 Track C 15:35~ Wi-Fi Aware を紐解く ~
Apple の公開 API と標準規格から 理解する近距離 P2P 通信 ~ Mika Ito
近くの端末と、どう繋ぐ? インターネットが 使えない 同じネットワーク に参加していない 地下、災害時、通信圏外 お互いの IP アドレスが Bluetooth
の限界 ⾼帯域なデータ転送や 複数⼈同時接続がしたい 分からない 2
近くの端末と、どう繋ぐ? インターネットが 使えない Wi-Fi Aware 地下、災害時、通信圏外 同じネットワーク に参加していない Bluetooth の限界
⾼帯域なデータ転送や お互いの IP アドレスが 複数⼈同時接続がしたい 分からない 3
Wi-Fi Aware とは 近くのデバイスを、直接‧安全‧⾼速につなぐ P2P Wi-Fi • Wi-Fi Alliance の標準規格(Neighbor
Awareness Networking / NAN) • 直接接続する:アクセスポイントやインターネットなし • 安全:Wi-Fi レイヤーで認証‧暗号化 • ⾼速:低遅延、⾼帯域通信 4
Wi-Fi Aware とは • 複数台に同時接続可能 ◦ カメラ、PC、スマートフォンなどと並⾏して通信 • 個々のピアが参加、または離脱しても、他のピアとの接続は維持 •
通常の Wi-Fi 接続と Wi-Fi Aware の同時利⽤可能 5
近距離デバイス通信を実現する技術との⽐較 • Bluetooth Low Energy を使い、近くの周辺機器を 発⾒‧接続‧通信する Apple のフレームワーク Core
Bluetooth • 同⼀ LAN やアクセスポイントは不要 • センサー値、状態通知、機器設定などの⼩容量デー タに適する • 省電⼒ • TCP/IP ではなく Bluetooth の通信⽅式を利⽤ 6
近距離デバイス通信を実現する技術との⽐較 技術 同⼀LAN/AP 通信特性 主な⽤途 Bonjour 必要 発⾒のみ LAN 内サービス検出
MultipeerConnectivity 不要 中速‧Apple 専⽤P2P Apple 端末間共有 Core Bluetooth 不要 低消費電⼒‧低速 センサー、設定 Wi-Fi Aware 不要 ⾼速‧⼤容量 ファイル、⾳声、映像 7
どんなユースケースが考えられるか? • カメラから写真‧動画を⾼速転送 • ⾳声‧映像のリアルタイム共有 • 画⾯共有や共同作業 • ドローンや周辺機器の制御 •
オフライン環境でのゲーム‧データ交換 ◦ など... 8
Wi-Fi Aware 対応アプリを 作るってどんな感じ? Apple’s DMA Compliance Report 9
使う前に知っておきたい使⽤条件 • 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
アプリの処理は5段階 1 2 3 4 5 事前準備 デバイスの 検出‧ ペアリング
接続 データ 通信 通信の 維持‧終了 11
登場するフレームワーク名 1. DeviceDiscoveryUI / AccessorySetupKit ◦ ペアリングのためのシステム標準 UI を提供 2.
WiFiAware ◦ サービスの宣⾔、確認 ◦ 端末が Wi-Fi Aware に対応しているかの確認 3. Network ◦ データパス上の実際のデータ通信 12
1. 準備 アプリが Wi-Fi Aware を利⽤するための事前準備 • サービス名の定義 • Info.plist,
Entitlement の設定 13
1. 準備 アプリが Wi-Fi Aware を利⽤するための事前準備 • サービス名の定義 • Info.plist,
Entitlement の設定 14
1. 準備 ~サービス名の定義~ • お互いのデバイスの検出し、接続するための識別⼦ • サービス名 + プロトコルの⼆要素で構成 サービス名
_iosdc-service • ⼀意であること • アルファベット、数字、ハイフ プロトコル _tcp . • TCP or UDP ン • 15⽂字を超えない • (RFC6763, RFC6335 に準拠) 15
1. 準備 アプリが Wi-Fi Aware を利⽤するための事前準備 • サービス名の定義 • Info.plist,
Entitlement の設定 ◦ Info.plist にサービス名を記述 ◦ com.apple.developer.wifi-aware の Entitlement を追加 16
2. 検出‧ペアリング 近くにいる通信相⼿を⾒つけ、ユーザーが接続 を許可。誰と通信するかを決定。 1. Wi-Fi Aware 対応端末か確認 2. 接続候補を
UI に表⽰ 3. ユーザーが相⼿を選択‧ペアリング ◦ ⼀度ペアリングすれば、その後は毎回 ペアリング UI を出さずに接続できる 17
3. 接続 相⼿との通信経路を確⽴ • Wi-Fi Aware が端末間のデータパスを⽤意 • Network が接続を作成
• Network が接続完了や切断などの状態を管理 18
3. 接続 ~ 接続に関する役割を決定 ~ Subscriber Publisher Subscriber Publisher 19
3. 接続 ~ 接続に関する役割を決定 ~ Publisher Subscriber 20
3. 接続 ペアリング済 Publishable service ペアリング端末 Listener (Publisher) Subscribable service
ペアリング端末 Browser (Subscriber) 21
3. 接続 ここにサービスを 公開してます! Publishable service ペアリング端末 Listener (Publisher) 接続できる
サービスはどこ? Subscribable service ペアリング端末 Browser (Subscriber) 22
3. 接続 発⾒!👀 Publishable service ペアリング端末 Listener (Publisher) Subscribable service
ペアリング端末 Browser (Subscriber) 23
3. 接続 Publishable service ペアリング端末 Listener (Publisher) Subscribable service ペアリング端末
Browser (Subscriber) エンドポイントを 取得 24
3. 接続 Publishable service ペアリング端末 Subscribable service ペアリング端末 Listener (Publisher)
Browser (Subscriber) 接続要求を受信 エンドポイントを 取得 25
3. 接続 Publishable service Subscribable service ペアリング端末 Listener (Publisher) ペアリング端末
Browser (Subscriber) Connect! 26
3. 接続 Publishable service Subscribable service ペアリング端末 Listener (Publisher) ペアリング端末
Browser (Subscriber) 💤 Connect! 💤 27
4. データ通信 送受信するデータによって、どのように運ぶかを決定する • 通信プロトコルの決定 • パフォーマンス最適化 28
4. データ通信 送受信するデータによって、どのように運ぶかを決定する • 通信プロトコルの決定 • パフォーマンス最適化 29
4. データ通信 ~ 通信プロトコルの決定 ~ Wi-Fi Aware で作った通信経路の上に、どの通信プロトコルを載せるか Listener (Publisher)
Browser (Subscriber) TCP? UDP? 30
4. データ通信 ~ 通信プロトコルの決定 ~ • TCP • UDP ◦
順序保証‧再送あり ◦ 順序保証‧再送なし ◦ 確実に届けたいデータに適する ◦ 低遅延を優先する通信に適する ◦ ファイル‧重要なメッセージなど ◦ ⾳声‧映像 など サービス名 _iosdc-service プロトコル . _tcp or _udp 31
4. データ通信 送受信するデータによって、どのように運ぶかを決定する • 通信プロトコルの決定 • パフォーマンス最適化 32
4. データ通信 ~ パフォーマンスの最適化 ~ • パラメータ1:Performance Mode ◦ •
デューティサイクル パラメータ2:Traffic Service Class ◦ パケットの優先順位 33
4. データ通信 ~ パフォーマンスの最適化 ~ 送受信するデータによって、パフォーマンスの最適化を⾏う Performance Mode Traffic Service
Class 遅延 消費電力 bulk bestEffort / background 大きい 少ない realtime interactiveVideo / interactiveVoice 小さい 多い 34
5. 通信を維持‧終了 5.1 状態監視 • Connection の状態変化を監視 • 信号強度‧遅延‧スループットを取得可能 •
必要に応じて Heartbeat などで応答を確認 35
5. 通信を維持‧終了 5.2 復旧 • .waiting:⼀時的な不良として回復を待つ • .failed:接続を破棄して再探索‧再接続 • 連続再接続を避け、間隔を空けて試⾏
36
5. 通信を維持‧終了 5.3 終了 • Publisher(Listener) / Subscriber(Browser) を停⽌ •
Connection や受信タスクをキャンセル 37
Wi-Fi Aware アプリ開発 tips • • 例:トランシーバーアプリ(リアルタイム⾳声)を作ってみた!🔊 ◦ 実際の通信の確認には実機が必要 ◦
Wi-Fi Aware は複数台前提。でも開発は⼀⼈ ◦ 通信距離の最⼤値を知りたいが、広い部屋が必要 解決策 ◦ Wi-Fi Aware に依存しないデバッグ導線 ◦ 実機では無線固有部分だけを確認 ◦ 同僚‧友⼈に協⼒してもらう ▪ 障害物がなければ 25 m~30 m くらいは届いた 38
少しだけ 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
まとめ Wi-Fi Aware を試してみよう!! 40
参考⽂献(順不同) • • • • • • • • •
• • • • • 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