SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

iOSエンジニアたちと振り返るWWDC

【WWDC2022直前!】いくつ知っている? WWDC2021でのiOS/iPadOSの進化を振り返る


SharePlayの利用方法と実装

 では、SharePlayは具体的にどのように利用するのでしょうか。

 例えばメディアの同期再生の場合、ユーザーがFaceTimeで通話をしている最中、SharePlayをサポートしているアプリに遷移すると、そのアプリで機能が利用可能であることがシステムから通知されます。その後、アプリ内で「コンテンツを再生」アクション実行のタイミングでSharePlayを行うかどうか確認するダイアログが表示され、許可を行うことでコンテンツの同期再生が開始されます。

 SharePlayはあらゆるデバイス間で実行することができ、ブラウザもWebKitで実装されているものであれば利用が可能です。

実装方法

 ここからはSharePlayの機能をアプリに組み込む方法について概要を解説します。

 端末の画面共有は各アプリで何か対応をする必要はなく、全てのアプリで実行が可能です。一方、メディアの同期再生やカスタムコンテンツの共有などは自動では対応されず、SharePlayの機能に対応したアプリでのみ実行が可能になります。SharePlayはシステム全体の全再生ボタンと連動することが目標とされているため、App内のどんなメディアでもFaceTime中に「再生」を行うとSharePlayを開始できるようAPIが用意されています。具体的には、GroupActivityフレームワークを使うことで、サードパーティ製のアプリもSharePlayに対応することができます。

GroupActivity

 GroupActivityは、アプリが提供する共有体験自体を定義するために利用されるものです。再生中コンテンツのURLなど、必要な情報を保持する役割も担っています。これは、SharePlayの機能を提供する各アプリがそれぞれ定義するものとなっており、実行タイミングで明示的にインスタンス化して利用することになります。また、共有するコンテンツはメディアだけではなく、お絵描き共有などのカスタム共有体験を実現することにも対応しており、この場合はユーザーが描いているものに関する情報を保持することになります。

GroupSession

 SharePlayを行うユーザーは同一のセッションに参加することになり、この共有体験を表したものをGroupSessionと呼びます。GroupSessionは明示的に作成するものではなくシステムから受け渡されるものとなっており、これを通してセッションの状態管理を行ったり、同一セッションに参加しているユーザーの情報にアクセスしたりすることなどができます。

セッションの開始

 SharePlayでメディアコンテンツの共有を開始するには、大まかに以下のような実装手順を進める形になります。

  1. Xcodeのプロジェクト設定からCapabillitiesに「GroupActivities」を追加する
  2. GroupActivityプロトコルに準拠した新しい型を定義し、グループ参加者が読み込むURLやシステムUIをカスタマイズするためのメタデータを指定する 
  3. 再生アクションが行われたタイミングでGroupActivityのインスタンスを作成し、prepareForActivationを呼び出してSharePlayの準備を行う。
  4. 再生の同期を行うためにAVPlayerのplaybackCoordinator.coordinateWithSessionにGroupSessionのインスタンスを受け渡し、最後にGroupSessionのjoinを呼び出して暗号化チャネルを形成する。

 以上のような形で、シンプルな共有体験を実現するだけであれば、とても少ない実装でSharePlayをアプリに組み込むことが可能となっています。

 記事執筆時点ではまだあまりSharePlayに対応しているアプリは多くなく、対応しているアプリも若干不安定な印象を受けましたが、今後どう発展していくのか目が離せない技術の1つとなっています。

次のページ
「FocusMode」と「新しいNotification」により、大切な時間をより集中しやすい環境に

この記事は参考になりましたか?

iOSエンジニアたちと振り返るWWDC連載記事一覧

もっと読む

この記事の著者

横山 拓也(STORES 株式会社)(ヨコヤマ タクヤ)

 STORES 株式会社テクノロジー部門モバイル本部にて、STORES レジ のiOSアプリ開発に従事。 水産学部出身でエンジニアになり、主にモバイルアプリ開発を主軸として経験を積み、現在ではAndroidやFlutterなども書く。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/15891 2022/06/10 21:23

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー