イマシブ記事

【WWDC 2025レポート】FaceTimeとSharePlayで「そこにいる」感覚を共有する

Vision Proで実現する共有体験の設計:SharePlayと空間の一致

【WWDC 2025レポート】FaceTimeとSharePlayで「そこにいる」感覚を共有する

Apple Vision Proの最も強力な機能の一つは、FaceTimeとSharePlayの深い統合です。[00:28] これにより、近くにいる参加者も、遠隔地の参加者も、同じ仮想コンテンツを同じ空間で共有する体験を構築できます。

本記事では、この共有体験の基礎となるSharePlayの仕組み、開発者が活用すべきAPI、そして新しい共有体験を設計するための原則を解説します。


1. SharePlayの基礎:状態の分散同期

SharePlayは、Appleプラットフォームでリアルタイムのコラボレーションを可能にする中核技術です。[01:26] 通常、FaceTime通話中に起動され、参加者全員でApple MusicやApple TVなどのコンテンツを同期して楽しめます。

SharePlayの仕組み

  • Group SessionとMessenger: 開発者はGroup Activitiesフレームワークを使用します。

    • Group Session(グループセッション):アクティビティの状態に関する情報を提供します。[02:45]

    • Group Session Messenger(メッセンジャー):参加者間でメッセージを送り合い、アプリの状態を同期するために使用されます。[02:51]

  • 分散型アーキテクチャ: SharePlayの同期は、画面ミラーリングとは異なり、参加者それぞれのデバイスでアプリの独立したコピーが実行される「分散型」で行われます。[03:56] ある参加者が「一時停止」を押すと、そのアプリが一時停止メッセージを他の参加者に送信し、それぞれのローカルアプリで一時停止が実行されます。[04:18]

  • クロスプラットフォームのメリット: このアーキテクチャにより、MacユーザーとiOSユーザーが一緒に音楽を聴くなど、プラットフォームが異なっても最適なアプリ体験を提供できます。[05:20]

Vision OSにおけるSharePlayの空間的要素

Vision OSでは、SharePlayアプリは「共有座標系(Shared Coordinate System)」に配置されます。[06:16]

  • 空間的一貫性: 共有されたウィンドウやボリュームは、すべての参加者にとって同じ位置に配置されます。空間ペルソナ(Spatial Persona)を使用している場合、[06:24] 誰かがコンテンツを指差すと、他の参加者はそれがどこを指しているかを正確に同じ場所で見ることができます。

  • 近くの共有と遠隔の共有: Vision OS 2.0では、パススルーを通して自然に見える近くの参加者と、空間ペルソナとして現れる遠隔の参加者が混在するセッションをサポートします。[06:46]

  • システムコーディネーターとテンプレート: Group Activitiesには、Vision OS固有のAPIとしてSystem Coordinator(システムコーディネーター)があります。[07:24] これを通じて、アプリはSpatial Template Preference(空間テンプレート設定)を構成し、共有アプリに対する参加者の空間ペルソナの配置(シート)をシステムに指示できます。[08:00] (例: 参加者が円形に配置されるデフォルト設定や、カスタムテンプレート)


2. 共有体験を実現する主要なAPIとデザインパターン

(1) メディア再生の同期

  • AVPlayer: AV FoundationフレームワークのAVPlayerは、Appleプラットフォームで最も一般的なメディア再生APIですが、SharePlayのサポートも組み込まれています。[09:56] Group SessionをAVPlayerに渡すだけで、再生、一時停止などの同期処理はAV Foundationが自動で処理します。

  • Apple Immersive Video (AIV): AIVのような「単一の最適な視点」を持つコンテンツを再生する場合、[10:56] システムは自動で空間ペルソナを非表示にし、すべての参加者を理想的な視聴位置に配置します。音声は聞こえるため、没入空間内で会話しながら視聴できます。

  • RealityKit Video Player Component: カスタムの没入体験(180度ビデオなど)を構築する場合、[11:21] RealityKitエンティティにAVPlayerを埋め込むためにこのコンポーネントを使用します。

(2) ファイルと3Dオブジェクトの共有

  • Group Session Journal(ジャーナル): 写真や大きなファイルなど、[12:14] リアルタイムの小さなメッセージには適さない大きなコンテンツを共有するために使われます。後から参加した参加者にもファイルを提供できるなど、効率的なファイル転送を可能にします。

  • Manipulation ComponentとMessenger: 3Dモデルを操作する体験(例: 仮想オブジェクトの受け渡し)では、RealityKitのManipulation Componentがローカルの操作を可能にします。[13:37] しかし、これを共有するには、Group Session Messengerを使用して、エンティティのTransform(位置情報)の更新を遠隔の参加者に同期する必要があります。

    • Unreliable Delivery Mode: リアルタイムで頻繁な更新(例: 3Dオブジェクトの移動)を伴う場合、[14:13] ネットワークのオーバーヘッドを減らし、スムーズな動きを実現するために、Messengerの「Unreliable Delivery Mode」の使用が推奨されます。

(3) 卓上型ゲームと時間同期

  • Tabletop Kit: [15:21] 仮想の卓上(テーブルトップ)上にインタラクティブな要素を配置するゲームや体験(例: Game Room)を容易に構築するために設計された新しいフレームワークです。プレイヤーのトークンや風景アイテムの状態同期を自動で処理します。

  • AV Delegating Playback Coordinator: [17:38] AV Playerの同期機能を支える基盤技術への直接的なアクセスを提供します。これにより、[18:00] ビデオ以外の時間ベースの同期(例: 没入空間内のカスタムアニメーションの同期)を保証できます。


3. 共有体験を成功させるためのデザイン原則

没入型スタジオTargoのAlex Rodriguez氏は、新しいSharePlay体験をプロトタイピングする上で重要な3つの核となる原則を挙げています。

(1) 共有コンテキストの保持

  • 視覚的一貫性: [20:04] すべての参加者が同じUIを同じタイミングで見えるように、アプリの状態を同期します。

  • 空間的一貫性: すべてのコンテンツがすべての参加者にとって同じ空間に配置されるように、[20:36] Transform(位置情報)と状態の更新を同期します。

(2) サプライズの回避

SharePlayは多くのカスタマイズを可能にしますが、過度な変化は没入感を壊します。

  • トランジションを最小限に: [21:14] テンプレートの切り替えなど、大きな変化は参加者が自発的に開始できるようにします。

  • コンテンツの配置: [21:35] 参加者の物理的な空間を想定せず、UIは読みやすく触れやすい距離に提示するか、[21:51] 仮想的に空間内を移動する方法を提供します。

  • シンプルな開始: [22:00] 没入型アプリであっても、最初はウィンドウやボリュームから始め、プレイヤーが物理的な空間で準備できるようにします。(例: Beat Punch)

(3) 可能な限りの簡素化

APIの選択肢は豊富ですが、すべてをカスタムにする必要はありません。

  • 既存APIの活用: [22:20] AV PlayerなどのAPIは、優れたSharePlay体験をすぐに提供してくれます。

  • システムテンプレートの利用: Side by Sideなどのシステムテンプレートが共有ウィンドウのタイプに適している場合は、それらを活用します。[22:35]

プロトタイピングの事例(SF脱出ゲーム)

Alex氏は、SharePlayを最大限に活用したSF脱出ゲームのプロトタイプ設計を通じて、APIの組み合わせ方を示しました。[23:05]

  • カスタムテンプレートと役割(Role)API: [26:58] 空間テンプレートをカスタムし、役割(例: メッセージ担当、送信担当)を割り当てることで、[27:49] プレイヤーがそれぞれのパズルに必要な位置に自動で移動できるようにします。

  • 複数APIの連携:

    • AVPlayer: 待合室のチュートリアルビデオを同期。[24:55]

    • AV Delegating Playback Coordinator: [31:02] ビデオではなく、モールス信号の点滅といったカスタムの時系列コンテンツを同期。

    • Group Session Journal: [31:51] プレイヤーが自分のデバイスからアップロードした「水がある証明写真」をチーム間で共有。

    • Manipulation Component + Messenger: [33:09] エンジン部品の操作をリアルタイムで同期し、全員でエンジンを修理。


元動画情報:


(この記事は、上記のYouTube動画のトランスクリプトを基に作成・翻訳されたものです。)

-イマシブ記事