WWDC Quick Look 💓 By SwiftGGTeam
Introducing enterprise APIs for visionOS

Introducing enterprise APIs for visionOS

元の動画を見る

ハイライト

visionOS に 6 つのエンタープライズ API グループが追加。メインカメラアクセス、Passthrough 画面キャプチャ、空間バーコードスキャン、Apple Neural Engine 直接呼び出し、オブジェクト追跡パラメータ調整、app パフォーマンス強化を提供— エンタープライズ内部分配のみ利用可能。


主要内容

Vision Pro 発売以来、エンタープライズ顧客は業務のやり方を本当に変える空間 app を構築するため、より多くのデバイス能力アクセスを求め続けてきました。この Session で紹介する Enterprise APIs for visionOS はまさにそのために作られました。

講演者 Kyle McEachern は、これらの API が既存 API よりはるかに高いデバイス能力アクセスを提供すると明言。プライバシー保護のため、Apple は厳格な管理メカニズムを設計:managed entitlement が必須、開発者アカウントに紐づくライセンスファイルが必要、配布は社内(In-House または Apple Business Manager によるプライベート配布)に限定。

6 つの API は 2 大カテゴリに分類。第 1 はセンサーアクセス強化:メインカメラビデオストリーム(Main Camera Access)、Passthrough ビデオ画面キャプチャ(Include Passthrough in Screen Capture)、空間バーコード/QR コード検出(Spatial Barcode & QR Code Detection)。第 2 はプラットフォーム制御:Apple Neural Engine 直接呼び出し(ANE)、Object Tracking 強化、app パフォーマンス調整(Performance Tuning)。

各 API には具体的な産業シナリオが付属:生産ラインの部品異常検出(メインカメラ + コンピュータビジョン)、リモート専門家コラボレーション(Passthrough 画面共有)、倉庫ピッキング確認(バーコードスキャン)、エッジ AI 推論(ANE)など。Session では総合シナリオもデモ:電子機器組み立てで苦戦する技術者がエンタープライズ app 経由でリモートサポート専門家に接続。メインカメラ共有、説明書取得のバーコードスキャン、Passthrough 全画面共有を順次有効化し、専門家の指導下で組み立てを完了。


詳細

メインカメラアクセス(Main Camera Access)

エンタープライズ顧客から最も要望の高い機能。有効化すると、app が Vision Pro メインカメラのビデオストリームにアクセスし、コンピュータビジョンアルゴリズムで環境認識が可能。

典型シナリオ:生産ライン品質検査。メインカメラが製品画像をキャプチャ、CV アルゴリズムがリアルタイム分析。不合格品をハイライト表示し、作業者の迅速な交換を支援。

実装コード(03:36):

// メインカメラアクセスの例

let formats = CameraVideoFormat.supportedVideoFormats(for: .main, cameraPositions:[.left])
let cameraFrameProvider = CameraFrameProvider()

var arKitSession = ARKitSession()
var pixelBuffer: CVPixelBuffer?

await arKitSession.queryAuthorization(for: [.cameraAccess])

do {
    try await arKitSession.run([cameraFrameProvider])
} catch {
    return
}

guard let cameraFrameUpdates = 
    cameraFrameProvider.cameraFrameUpdates(for: formats[0]) else {
    return
}

for await cameraFrame in cameraFrameUpdates {
    guard let mainCameraSample = cameraFrame.sample(for: .left) else {
        continue
    }
    self.pixelBuffer = mainCameraSample.pixelBuffer
}

キーポイント:

  • CameraVideoFormat.supportedVideoFormats(for: .main) でメインカメラ対応フォーマットを取得
  • .cameraAccess 認可のリクエストが必要
  • メインカメラはデバイス左側にあるため、.cameraFrameUpdates(for: ...).sample(for: .left) でフレーム取得
  • 各フレームは CVPixelBuffer を返し、CV アルゴリズム処理や表示に渡せる

Entitlement:main-camera-access.allow

Passthrough 画面キャプチャ(Include Passthrough in Screen Capture)

デフォルトでは、Vision Pro の画面キャプチャは app ウィンドウのみで背景は除去。この API を有効化すると、キャプチャ内容に Passthrough カメラビュー全体— ユーザーが見る完全な空間シーンが含まれます。

典型シナリオ:リモート専門家コラボレーション。現場技術者がシステムブロードキャストで「見たまま」の完全ビュー(Passthrough 背景と app ウィンドウを含む)をリモート専門家と共有し、正確な指導を実現。

実装要件:

  • Entitlement:include-passthrough
  • Broadcast Upload Extension でビデオストリームを受信する必要あり
  • ユーザーがシステムの「ブロードキャスト開始」ボタンで明示的にキャプチャを開始

entitlement を 1 行追加するだけで使える、実装が極めてシンプルな機能。

空間バーコードスキャン(Spatial Barcode & QR Code Detection)

Vision Pro が空間内のバーコードと QR コードを自動検出・解析可能に。app はバーコードタイプ、空間位置、内容情報を取得。

典型シナリオ:倉庫ピッキング。作業者が荷物のバーコードを見るだけで、システムが正しい品目か自動検証— ハンドheld スキャナ不要。

実装コード(07:47):

// 空間バーコードスキャンの例

await arkitSession.queryAuthorization(for: [.worldSensing])
let barcodeDetection = BarcodeDetectionProvider(symbologies: [.code39, .qr, .upce])

do {
    try await arkitSession.run([barcodeDetection])
} catch {
    return
}

for await anchorUpdate in barcodeDetection.anchorUpdates {
    switch anchorUpdate.event {
        case .added:
           // 新しく検出したバーコードの周囲に視覚マーカーを追加
           addEntity(for: anchorUpdate.anchor)
        case .updated:
            // バーコード位置マーカーを更新
            updateEntity(for: anchorUpdate.anchor)
       case .removed:
            // バーコードマーカーを削除
            removeEntity(for: anchorUpdate.anchor)
    }
}

キーポイント:

  • .worldSensing 権限が必要
  • BarcodeDetectionProvider で対応バーコードタイプを指定(Code-39、QR、UPC-E など)
  • anchorUpdates 非同期ストリームで検出イベントを受信
  • added/updated/removed イベントは初回検出、位置変化、視野外退出に対応

Entitlement:barcode-detection.allow

Apple Neural Engine アクセス(ANE Access)

以前 visionOS では Core ML モデルは CPU と GPU のみで実行可能。この API が Apple Neural Engine を解放し、より高い演算力を必要とする ML モデルをデバイスローカルで実行可能に。

典型シナリオ:メインカメラと組み合わせ、カスタム異常検出モデルを実行。完全ローカルの製品品質分析を実現。

実装コード(13:17):

// Apple Neural Engine アクセスの例

let availableComputeDevices = MLModel.availableComputeDevices

for computeDevice in availableComputeDevices {
    switch computeDevice {
        case .cpu: setCpuEnabledForML(true) // サンプルメソッド名
        case .gpu: setGpuEnabledForML(true) // サンプルメソッド名
        case .neuralEngine: runMyMLModelWithNeuralEngineAvailable() // サンプルメソッド名
        default: continue
    }
}

キーポイント:

  • MLModel.availableComputeDevices で利用可能な計算デバイスを照会
  • システムがリソース占有、モデル要件などに基づき最適な計算ユニットを動的選択
  • NE が利用不可または非効率な場合、CoreML は GPU/CPU に自動フォールバック

Entitlement:neural-engine-access

オブジェクト追跡強化(Object Tracking Enhancements)

visionOS 2.0 で既知オブジェクト追跡機能を導入。エンタープライズ API がパラメータ調整能力をさらに開放:

  • maximumTrackableInstances:最大同時追跡オブジェクト数(デフォルト 10)
  • maximumInstancesPerReferenceObject:参照オブジェクトタイプごとの最大インスタンス数
  • detectionRate:新規オブジェクト認識頻度
  • stationaryObjectTrackingRate:静止オブジェクト追跡頻度
  • movingObjectTrackingRate:移動オブジェクト追跡頻度

典型シナリオ:複雑な修理環境で大量の工具と部品を同時追跡。技術者のステップバイステップ修理を支援。

実装コード(15:39):

// オブジェクト追跡強化の例

var trackingParameters = ObjectTrackingProvider.TrackingConfiguration()

// 最大追跡オブジェクト数をデフォルトの 10 から 15 に引き上げ
trackingParameters.maximumTrackableInstances = 15

// その他のパラメータはデフォルト値のまま
trackingParameters.maximumInstancesPerReferenceObject = 1
trackingParameters.detectionRate = 2.0
trackingParameters.stationaryObjectTrackingRate = 5.0
trackingParameters.movingObjectTrackingRate = 5.0

let objectTracking = ObjectTrackingProvider(
        referenceObjects: Array(referenceObjectDictionary.values),
        trackingConfiguration: trackingParameters)

var arkitSession = ARKitSession()
arkitSession.run([objectTracking])

キーポイント:

  • パラメータ調整は計算リソースのバランスが必要— 1 つを上げると他を下げる必要がある場合あり
  • 参照オブジェクトは .referenceObject ファイル。作成方法はドキュメント参照
  • 設定したパラメータ値を ObjectTrackingProvider に渡す

Entitlement:object-tracking-parameter-adjustment.allow

app パフォーマンス調整(App Compute Settings)

此 API で app がより多くの CPU と GPU 演算力を取得可能。代償としてファン回転数増加、環境ノイズ増加。

典型シナリオ:高忠実度 3D 設計モデルのレンダリング。演算力強化でレンダリング性能とフレームレートを向上。

Entitlement:app-compute-category

注意事項:

  • 此設定は app レベル。コードで動的にオン/オフ不可
  • システムがデバイス状態とワークロードに基づき動的調整

重要ポイント

  1. エンタープライズシナリオでは Passthrough 画面キャプチャを優先評価:実装コストが最も低く、効果が最も即座。entitlement を追加するだけで既存 app が完全な「見たまま」リモートコラボレーションをサポート— エンタープライズ visionOS app の第一歩に最適。

  2. メインカメラ + バーコードスキャンは倉庫物流の定番コンボ:顧客が倉庫管理、生産ライン QC、小売在庫などのシナリオなら、此 2 つの API を優先検討。メインカメラが環境認識、バーコードスキャンが品目識別— 組み合わせで完全なデジタルツインワークフローを構築。

  3. ANE アクセスがローカル AI 能力を解放:カスタム ML モデルが必要なシナリオでは ANE アクセスが鍵。異常検出、欠陥認識、OCR などの視覚タスクをクラウド依存なしで完全にデバイスローカル実行— プライバシーに敏感なエンタープライズ環境に最適。


関連セッション

コメント

GitHub Issues · utterances