visionOS 関連のアップデート。visionOS 26 にアップデートしてから、ウィンドウにボタンが増えたので何かと思ったらこれのことか。今のところ身近に共有できる相手(Vision Pro ホルダー)がいないし、共有したいコンテンツも思いつかないのだが、、コンテンツのシェアリングは今のスマホやノートだと、物理的に身を寄せ合う必要があって限界があるため、今後グラス型のようにカジュアルユースなデバイスが登場するとしたら、体験共有のシームレスさが大きな売りのひとつになるかもしれない。
0:56 – 近くの人との体験共有の詳細
- 各ウインドウのバーに新設された「共有」ボタンから、近くの人を選んで簡単に共有開始。
- 共有されたウインドウは、全員の空間で同じ位置・サイズで表示され、ウインドウバーが緑色に変化。
- まるで部屋にあるかのように指し示したりインタラクトすることが可能
- 誰でもウインドウの移動・リサイズが可能で、全員の表示が同期。
- デジタルクラウンで再センタリングも可能。手がウインドウに重なると内容がフェードし、人物が見やすくなる。
- FaceTime との連携で、リモート参加者も空間に「ペルソナ」として登場し、近くの人と自然に混在可能。
- ペルソナの表示位置は、共有するウィンドウのタイプ(e.g. volumetric)による
- iOS/macOS など他プラットフォームからの参加者は、ウインドウ横にビデオ表示。
- デフォルトでは「閲覧のみ」共有(他の人がアプリを持っていなくてもOK)。
- インタラクティブな体験には SharePlay を採用。
- visionOS の既存 SharePlay アプリは追加対応不要で近くの人と共有可能。
- SharePlay の新APIで、近くの人向け体験を強化可能。
5:35 – 共有メニューからの共有の許可
- 新しい Share メニューで
GroupActivity
を公開することで、ユーザーが簡単に共有を開始可能。 - Volumetric ウインドウでは、アクティビティを公開していれば Share メニューが使える
- 実装例の紹介
- ImmersiveSpace ではウインドウバーがないため、アプリ内ボタンで共有開始を促す設計が必要。
- 共有開始時に
GroupSession
を取得し、SharePlay
を開始。 supportsGroupImmersiveSpace
をtrue
に設定し、全員の空間を同期。
9:15 – 近くにいる参加者の体験の向上
- 新APIで「近くの参加者」と「リモート参加者」を判別可能。
GroupSession
のParticipantState
から.isNearbyWithLocalParticipant
.localParticipant
で判別- 物理的に近い人同士を同じチームに割り当てるなど、空間に応じた体験設計が可能。
10:37 – ユーザーの相対位置へのコンテンツの配置
- 参加者の空間内の位置(
ParticipantState.pose
)を取得し、各ユーザーの近くにコンテンツを配置するよう実装可能。 pose
はリアルタイム追跡ではなく、共有開始や再センタリング時に更新。- seat pose(固定座席位置)も取得可能で、空間テンプレートのカスタマイズも可能。
13:20 – 共有されたメディア再生の調整
- visionOS 26の AVPlayer/AVPlaybackCoordinator で、近くの人同士のメディア再生を完全同期するよう設計
- 物理的に近いと、参加者のデバイスからの音ズレが顕著なため
GroupSession
と連携し、音声・映像の遅延やエコーを防止。
15:38 – 複数のウインドウのサポート
- 新APIで、複数
WindowGroup
のうちどれをSharePlay対象にするかを明示的に指定可能。 .groupActivityAssociation
修飾子で、共有対象ウインドウを切り替え可能。
16:50 – アンカーされたコンテンツの共有
- ARKitの新APIで、物理空間に固定した
WorldAnchor
を近くの参加者と共有可能。- ImmersiveSpaceは空間全体が動くため、物理的な位置固定に必要
WorldTrackingProvider
を使用した実装方法の紹介
sharedWithNearbyParticipants
をtrue
にしてアンカーを作成し、全員のデバイスで同じIDで同期。worldAnchorSharingAvailability
- これにより、家具配置アプリやコラボ体験など、物理空間を活かした共有体験が実現。
- SharePlay 外でも独自のネットワークレイヤでも共有可能(ビジネス用アプリ)