メタのWearables Device Access Toolkit (DAT) SDK は iOS でAIグラスを利用するための公式ツールキットであり、デバイス登録、接続管理、リアルタイムのカメラストリーミングやセンサーアクセス、許可ハンドリングなどを簡単に行えるようにします 。ここではv0.5版のiOS Swift APIリファレンスを概要から各モジュール、主要クラスや列挙型まで包括的に整理します。
https://wearables.developer.meta.com/docs/reference/ios_swift/dat/0.5
DAT全体の設計と構造
- MWDATCamera モジュール – AIグラスのカメラ・ビデオストリーミングを扱う機能群。
- MWDATCore モジュール – デバイスの検出・登録・状態監視などを担当する基盤機能。
- Wearables インターフェース – DAT全体の入口となる静的クラス。共通設定やSDK全体のエラーハンドリングに利用します 。
MWDATCamera モジュール
StreamSession クラス
ストリーミングの中心となるクラスで、指定デバイスと設定を用いてビデオフレームの受信・写真撮影を行います。主な機能は以下の通りです。
- 初期化時にデバイスセレクターとストリーム設定を指定し、メディアストリーミングをセットアップ 。
- start() メソッドでストリーミングを開始し、デバイスが見つからない場合などはエラーを返します 。
- stop() でストリーミングを停止しリソースを解放。
- capturePhoto(format:) はストリーミングを一時停止して写真を撮影し、その後ストリーミングを再開します 。
- statePublisher や videoFramePublisher など Combine のパブリッシャを通じて状態変化やビデオフレームを購読できます。
構造体・列挙型
| 名称 | 説明 |
|---|---|
| PhotoData | 撮影した写真を表す構造体で、data と format を持ちます 。 |
| StreamSessionConfig | ストリーム設定を表す構造体。動画コーデック (videoCodec)、解像度 (resolution)、フレームレート (frameRate) を指定できます 。省略時は raw コーデック・中解像度・30fpsが採用されます。 |
| VideoFrame | ストリーミングされる各フレームを表し、sampleBuffer プロパティにはCMSampleBufferが格納されます。makeUIImage() でUIImageへ変換可能 。 |
| VideoFrameSize | 動画フレームの幅と高さを表す構造体 。 |
列挙型
| 列挙型 | 意味 |
|---|---|
| PhotoCaptureFormat | 写真のフォーマットを指定。heic (高効率だが対応アプリが限られる) と jpeg (幅広くサポートされる) 。 |
| StreamingResolution | 動画ストリーミング解像度。high (720×1280)、medium (504×896)、low (360×640)。すべて9:16比率 。 |
| VideoCodec | フレームのエンコード方式。raw は未圧縮でアプリがバックグラウンドに移ると停止、hvc1 はHEVC形式でバックグラウンドでも受信可能 。 |
| StreamSessionError | ストリーミングエラーの種類。deviceNotFound、deviceNotConnected、videoStreamingError などを含む 。 |
| StreamSessionState | ストリームの状態。starting、streaming、paused、stopping、stopped 等 。 |
MWDATCore モジュール
デバイス選択
DATでは、デバイス選択を抽象化するためのプロトコルとクラスが用意されています。
- DeviceSelector プロトコル – activeDevice プロパティと activeDeviceStream() を定義し、現在の選択デバイスを観測します 。
- AutoDeviceSelector – 利用可能なデバイスを自動的に選択。activeDeviceStream() で選択中デバイスの変化を監視 。
- SpecificDeviceSelector – デバイスIDを指定して1つのデバイスを選択する 。
デバイスとセッション管理
| クラス | 役割 |
|---|---|
| Device | AIグラスデバイスを表す。deviceUUID、name、linkState などの情報を持ち、互換性チェックやリンク状態のリスナー登録ができる 。 |
| DeviceStateSession | デバイスの状態変化を監視するためのセッション。start() で監視を開始し、stop() で終了 。 |
設定・登録・セッション
| 名称 | 概要 |
|---|---|
| Wearables (singleton) | DATのエントリーポイント。shared にシングルトンのインスタンスがあり、configure() で初期設定を行う。二重に設定すると alreadyConfigured エラーが発生する 。 |
| RegistrationState | デバイス登録処理の状態を示す列挙型。unavailable、available、registering、registered 。 |
| RegistrationError / UnregistrationError | 登録・登録解除の失敗理由。networkUnavailable、configurationInvalid、metaAINotInstalled など 。 |
| SessionState | デバイスセッションの状態。running、paused、stopped 等 。 |
権限とエラー
| 列挙型 | 内容 |
|---|---|
| Permission | 取得可能な権限。現状は camera のみ 。 |
| PermissionStatus | 権限が granted(許可済み)か denied かを示す 。 |
| PermissionError | 権限リクエスト時のエラー。noDevice、requestTimeout、metaAINotInstalled など 。 |
| WearablesError | configure() 時のエラー。internalError、alreadyConfigured、configurationError が含まれる 。 |
| WearablesHandleURLError | URL処理エラー。登録・登録解除などで返されるエラー種類を表す 。 |
デバイス種別と接続状態
| 列挙型 | 意味 |
|---|---|
| DeviceType | 対応デバイスの種類。rayBanMeta、oakleyMetaHSTN、oakleyMetaVanguard、metaRayBanDisplay など 。 |
| LinkState | 接続状態。disconnected、connecting、connected 。 |
WearablesInterface プロトコル
SDK全体の主要インターフェースで、登録状態やデバイスリスト、セッション状態の監視機能を提供します。主な機能は次の通りです 。
- 登録状態やデバイスリストのストリームを購読できる。
- デバイス登録・登録解除、権限チェックとリクエスト、セッションの取得など非同期関数を提供。
- makeDeviceStateSession(device:) で指定デバイスのセッションを作成できる。
まとめ
MetaのWearables Device Access Toolkit v0.5は、iOSアプリでAIグラスを簡単に統合するための包括的なSDKです。MWDATCameraモジュールではカメラストリーミングや写真撮影を管理するStreamSessionや関連する設定・データ型を提供し、MWDATCoreモジュールではデバイス発見・選択・登録・セッション管理や権限付与といった基盤機能を提供します。数多くの列挙型がエラーや状態を厳密に定義しており、Combineフレームワークを活用してストリームベースで状態変化を受け取れる点が特徴です。
https://wearables.developer.meta.com/docs/reference/ios_swift/dat/0.5