ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Group Activitiesについて
SharePlayを支えるフレームワークについて詳しく確認し、Appを使用する人々のために実装できるさまざまな共有体験について説明します。グループ活動とAVFoundationが連動する仕組みなど、フレームワークのアーキテクチャとコンセプトのハイレベルな概要を知り、Appに実装する方法を学びます。SharePlayに関する知見を深め、Group ActivitiesをAppに統合する方法を知るための素晴らしい出発点となります。
リソース
関連ビデオ
WWDC21
-
ダウンロード
♪ (Group Activityについて) こんにちは Pierreです コミュニケーション アプリケーションチームのマネージャです 後程 同僚のBhaskarが 参加します 「Group Activityについて」 にようこそ この1年間ネットを通じてつながりを 維持する方法を見つけることが これまで以上に重要だと 感じられていることは 誰もが認識できると思います これは私たちAppleにとって 非常に重要なことであり 私たちはユーザーに有意義な新しい つながり方を提供したかったのです その結果 iOS 15では 共有している人たちと 同じ部屋にいるような感覚で 一緒に活動を楽しむ 新しい方法を作り出しています 「SharePlay」 と呼んでいます SharePlay は Group Activities フレームワークによって 機能しています このセッションでこの機能を アプリケーションに導入する 方法について説明します これらの詳細に入る前に SharePlayの 主要なコンポーネントについて もう少し説明します コミュニケーションから 始めましょう ダイナミックで自然な コミュニケーションは 有意義な共有体験の非常に 重要な部分であると考えているので SharePlayを FaceTimeと Messagesに組み込みました これらのAppがいかに 中心的であるかに 絶えず圧倒されています 人々の生活や人間関係の中で 特にこの1年で大きくなったのです 30年前の友達と FaceTimeやメッセージを使って 連絡を取り合うだけではありません ユーザーは自分に最も近い人との コミュニケーションにかなりの 時間を費やしています 最も親しい友人や家族 例えば 映画を見るためにリビングルームに 招待するような人たち 私たちはSharePlayで それを促進したいのです この仕組みを説明しましょう すべてはセッションの コンセプトから始まります グループがアクティビティを 開始する前に 全員が一緒になって 共有できるように セッションに参加する 必要があります セッションに入ると ユーザーは テキスト オーディオ ビデオを使って今までどおり メッセージやFaceTimeで コミュニケーションを とることができます これらのコミュニケーション モードの切り替えは 動的で流動的なので その瞬間に合った コミュニケーション方法を 簡単に選ぶことができます また システム全体で一貫した方法で セッションを管理することも できます ユーザーは新しいユーザーを その場で招待したり セッションを完全に 終了したりできます セッションに入るとユーザーは システム全体をナビゲートし 任意のAppを 操作することができます 開発者はこれらの機能を Group Activitiesで 無料で使えます これがコミュニケーションです 次に重要だと考えているのは プラットフォーム体験です 私たちはこの体験は シンプルで一貫性があり システムやデバイス全体で 利用できるべきだと考えました Group Activitiesでは 統合された エクスペリエンスを iOS iPadOS macOSで 構築しており WebKitを使った ウェブサイトでも Group Activitiesを 利用できます AppleTVでも美しく 動作するので 大画面でも楽しめます セッション中であることを 全てのデバイスが認識しているので どのデバイスからでも参加でき あなたは複数のデバイスを シームレスに使用できます 最後に優れたオーディオを AirPodsを含む Bluetoothデバイスに 提供できるように設計しました プラットフォーム体験の一環として コンテンツ再生のために 特別なことをしています APIの表現力を最大限に活用して 様々なタイプのSharePlay アクティビティを 作成していただきたいと 考えていますが 共有メディア体験を簡単に 構築できる 非常に優れた拡張機能をいくつか 作成しました メディア体験のコアとなるのは 再生ボタンです ユーザーが時間を費やしたい コンテンツを決定する瞬間です 私たちの目標は システム全体の全再生ボタンが SharePlayと 連動することです 私たちは App内のどんなメディアでも 友達とFaceTimeを しているときにはいつでも 共有体験を始める 準備ができていると 人々に感じてもらいたいです 既存のコードパスに ぴったり合うように 設計された新しい APIを提供しています Group Activitiesを 実行することで グループ会話がアクティブな ときにはいつでも 再生ボタンでこれらの 共有メディア体験を開始できます また 時間の経過と共にスマート機能を 利用してユーザーの行動に適応し 共有体験をシンプルに 実行できるようにします 次に 時間軸の同期再生です みんなが 一緒に笑ったり 一緒に コンテンツに反応したりすることが 非常に重要だと思います SharePlayは 再生を プラットフォームレベルで 同期させることができるので 簡単に実行でき 自分で操作を行う 必要もありません これはSharePlayで コンテンツを消費する際に 解決すべき困難な問題でした 私たちは たとえ地球の裏側にいても 人々がお互いにまったく 同じ瞬間を体験できるように したかったのです まだ起きていないことを友人が 笑っているのを見たり聞いたり することを想像してみてください ネタバレ注意! そこで デバイス上の AVFoundationスタックに 深く統合された 全く新しい再生同期プロトコルを 構築しました つまり 誰かが再生ボタンを押すと グループの全員がすぐに同時に 再生を開始します お気に入りのシーンにジャンプすると 他のすべての人もそのシーンを見ることができ まるで同じ部屋にいるかのように その瞬間を完全に同期して 体験することができます この再生同期の背後にある魔法は メディアを再送信しないことを 意味します あなたのAppでの再生は いつものようにサーバーから ストリーミングされるので 誰もがあなたのフル忠実度の ビデオを手に入れることができます また すべての視聴者が最高品質の ビデオを 視聴できるようにすることで コンテンツの品質を損なうことなく 没入型のソーシャル視聴体験を 得ることができます また 再生中の コミュニケーションを 自然なものにするための 画期的な取り組みも行っています スマートボリュームでは 再生中に誰かが話し始めると コンテンツの音量が 自動的に下がり 適切なタイミングで元に戻ります そのため同じ部屋に 座っているときと同じように 音声 ビデオ テキストを介して 自然にコミュニケーションを 取ることができます もちろん Picture in Pictureとの 連携も素晴らしいので ユーザーは自分だけの画面で 共有メディアを再生しながら デバイス上でマルチタスクを実行できます 以上が プラットフォーム上で 私たちが行っていることの概要です 最後にコンテンツです あなたの出番です ユーザーが あなたのAppで利用可能な 最高のコンテンツを 楽しめるようにしたいと考えています FaceTime通話中のユーザーは あなたのAppにアクセスして コンテンツを共有できる ようになると 期待するでしょう SharePlayは あなたの製品のユーザーとの タッチポイントを拡張し あなたのアプリが ユーザーと共に過ごす時間を 増やすことを可能にします これは非常に自然に起こります 既存のユーザーが 新規のユーザーと一緒に SharePlayを使うことで Appをアピールするでしょう ここまで SharePlayの主要な コンポーネントの概要を 説明してきました 次に フレームワークの 中核コンセプトである グループアクティビティに 注目しましょう グループアクティビティは SharePlayを使用して FaceTime通話に参加している人たちと 共有したり楽しんだり できるものを表すオブジェクトです ユーザーがアプリ内で グループアクティビティを開始する 方法を説明します 通話中にユーザーは あなたのAppに移動することができ Group Activitiesを 利用している場合は アプリがSharePlayを サポートしていることが通知されます 共有するアクティビティを 設定するには まずGroupActivityプロトコルを 実装したオブジェクトを 作成する必要があります アクティビティを設定したら prepareForActivation APIを呼び出して そのアクティビティの共有を 開始します このAPIは FaceTime通話に 参加している全員と そのアクティビティを共有するか ローカルのみで保持するかを 選択できるようにしています ユーザーが グループとの共有を選んだ場合は グループアクティビティに よって通知され GroupSession オブジェクトにjoinできます ユーザーがグループセッションに 参加すると プレイ ポーズ またはシークしても ビデオはグループ内で 同期されます これらのイベントが発生するたびに Group Activitiesは ここに示すように自動的に ユーザーに通知します そして最後に ユーザーは終了したら 自分のみ アクティビティを終了するか グループ全体のアクティビティを 終了するかを選択できます 簡単なことです! Bhaskarと代わりましょう このプレゼンテーションの 残りの部分を説明します ありがとうPierre こんにちは Bhaskarです FaceTimeチームの エンジニアです この新しいフレームワークの背後にある 高レベルのコンセプトと アーキテクチャについて説明します GroupActivitiesは Swiftネイティブの フレームワークで FaceTime通話中に ユーザー間でアプリケーションの 共有エクスペリエンスを 作成することができます さらに このフレームワークは AVFoundationと 緊密に統合されています これにより 共有ビデオおよび オーディオ再生エクスペリエンスを 簡単に作成できます APIの背後にある高度な 概念を説明する前に APIの2つの重要な部分 つまり GroupActivityと GroupSessionについて 説明します GroupActivityは アプリが共有エクスペリエンスを 定義するために使用するものです 共有エクスペリエンスのために アプリケーションが必要とする 情報を保持します たとえば オーディオまたはビデオの 共有再生エクスペリエンスを 実行している場合 再生中のコンテンツのURLを 保持することがあります または アプリケーションがカスタム共有 エクスペリエンスを提供する 場合もあります 例えばみんなで お絵かきを行うような 体験を提供することが 考えられます その場合 これはユーザーが描いているものに 関する情報を保持します GroupSessionは 基本的に共有エクスペリエンスに 参加するグループを 表現したものです グループの参加者などに アクセスできます また フレームワークには GroupSessionとともに使用して デバイス間でデータを送受信できる 追加のAPIがあります GroupSessionは 大量のデータを 交換するための ものではありません 例えば 共有リスニング体験を 作成している場合 曲のコンテンツの交換に GroupSessionは 使用されません 代わりに このチャネルは AVFoundationによって使用され 再生 一時停止 または シークコマンドの交換によって コンテンツの同期を保ちます また GroupSessionが 提供する通信媒体は エンドツーエンドで暗号化されます つまり デバイス上の このアプリケーション以外 このチャネルで交換される データを読み取ることができません 画面に2台の電話があります 左が私のスマホで 右がチームメイトのPierreの スマホです FaceTime通話をしています また 画面には 「Awesome App」という サンプルアプリケーションがあり これで私とPierreの間で体験を 共有する準備が整いました この場合 左側のデバイス上の アプリケーションが アクティビティを開始します アプリケーションが最初に行う 必要があるのは GroupActivityプロトコルに準拠しt オブジェクトを作成することです この例では GroupActivityに準拠した AwesomeActivityオブジェクトです 先に述べたように GroupActivity プロトコルに 準拠するこのオブジェクトには 共有アクティビティに関する 情報が含まれています たとえば 共有再生体験を 作成している場合は 再生するコンテンツに関する 情報が表示されます あるいは 何かを一緒に描くなどの カスタムエクスペリエンスを 作成する場合は 何を描くかについての 情報が含まれます Appがアクティビティを 作成したら 次にすべきことは そのアクティビティの prepareForActivationを 呼び出すことです これにより アクティビティを開始するかどうかを 確認するプロンプトが 表示されます ユーザーを驚かせたくないので アクティビティを始める前に ユーザーの同意を得たいのです したがって このステップは不可欠です そして最後に ユーザーがアクティビティを 開始する許可を得た後Appは アクティビティオブジェクトに対して activateを 呼び出す必要があります これで Appが共有エクスペリエンスを 開始することをシステムに 指示します 次に セッションの監視について 説明します 先ほど見たのと同じ Appがここにあります この時点でアプリケーションは アクティビティオブジェクトに対して activateを 呼び出しています その後 アプリケーションは GroupSessionクラスの AsyncSequenceを介して 着信セッションを 繰り返す必要があります そして セッションが見つかると アプリケーションは 共有体験のために GroupSession オブジェクトを受け取ります これはアプリケーションが 開始した側であるか セッションを受信する リモートデバイスであるかに 関係なく Appが実行するステップは 同じであることに注意してください グループセッションの開始と 監視の詳細については このWWDCセッションを ご覧ください アプリケーションに セッションが渡されたので セッションに参加する前に Appを設定する必要があります 参加する前のアプリケーションの セットアップは アプリケーションの ユースケースによって 異なる場合があります たとえば 何かを一緒に描くなどの カスタムエクスペリエンスを 作成している場合 ユーザーが エクスペリエンスに参加する前に 共有エクスペリエンスに必要な コンテンツをロードします ただし アプリケーションが 共有メディア再生 エクスペリエンスを 提供している場合は 次のような処理が行われます アプリケーションは AVplayerの AVplaybackCoordinatorを GroupSessionに接続し 関連付けられた AVplayerがフレームワークによって 提供される通信チャネルを介して 再生を同期できるようにします この同期のサポートは AVplayerだけに 限られているわけでは ありません 現在お持ちの 他のカスタムビデオプレーヤーでも サポートされています AVDelegatingPlaybackCoordinatorを 使って同期します 最後に アプリケーションは セットアップが完了すると GroupSessionで joinを呼び出します joinが呼び出されると システムは異なるデバイスで 動作するAppとの間に エンドツーエンドの暗号化 チャネルを設定します この時点でアプリケーションは データを同期し ユーザーが共有エクスペリエンスに 参加できるようになります カスタムエクスペリエンスを 作成する場合 アプリケーションはこのチャネルを 使用してデータを交換し ユーザーの同期を維持できます AVFoundationは このチャンネルを使用して ユーザーが再生 一時停止 スキップなどをクリックしたときに 再生状態を交換することで メディア再生の同期を維持します このチャネルは 大量のデータを交換するための ものではありません 代わりに ユーザーの同期を保つための 情報を交換するために使用します これでアプリケーションは セッション中となり ユーザーは共有エクスペリエンスを 楽しんでいます 経験を豊かにするために もう一つできることがあります つまり フレームワークを使用して イベントをポストする事です イベントを使用すると ユーザーは共有体験で何が起こって いるかを知ることができます 例えば イベントをポストして 誰かがトラックを再生 一時停止 またはスキップしたときに ユーザーに知らせることができます イベントをポストすると システムはユーザーに イベントについて通知します 現在のAPIでは メディア再生エクスペリエンスの イベントのみを投稿できます これは AVplayerまたは AVDelegatingPlaybackCoordinatorを 使って自由に行えます どちらも使用していない場合でも Appはフレームワークを 使用してイベントをポストできます 独自のカスタム体験を提供する 方法やイベントを投稿する方法の 詳細については このWWDCセッションを ご覧ください まとめると Group Activitiesは 新しいSwiftネイティブの フレームワークで FaceTimeで共有体験を作ることができます このフレームワークは クロスプラットフォームで iOS macOS iPadOSと tvOSで利用できます AVFoundationと 緊密に統合されており Appがメディアの 共有再生エクスペリエンスを 提供できるようにします 最後に macOS上でのウェブ上での 同期再生もサポートしています そして 私たちのセッションを 見てくれてありがとうございます そして素晴らしいWWDC 21を! ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。