ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
SiriKit Media Intentsをより多くのプラットフォームに拡大する
SiriKit Media Intentsを使い、音楽やオーディオAppで、Siriからの再生を有効にする方法をお見せします。音楽、ポッドキャスト、その他の音声サービスを、HomePodやApple TVなどのより多くのプラットフォームにSiriのサポートを追加して、ユーザーはSiriに尋ねるだけでそれらを視聴可能になる方法を丁寧にご説明します。また「その他の候補」をサポートする新しいAPIを使用し、ユーザーがSiriのインターフェースを離れることなく素早く視聴できる方法もお伝えします。
リソース
- If you’d like to integrate your music service with HomePod, let us know
- Managing Audio with SiriKit
- Providing Hands-Free App Control with Intents
関連ビデオ
WWDC20
- インテリジェンスのためのデザイン - 人々のいる場所で会うこと
- インテリジェンスのためのデザイン - 「システム」と友達になる
- インテリジェンスのためのデザイン-新しい機会を発見する
- インテリジェンスのためのデザイン-進化したApp
- インテントの強化
- ショートカット Appでアクションをフィーチャーする
- 就寝準備をAppに組み込む
- 高品質なSiriメディアインタラクションをデザインする
- Appの音声インタラクションを評価し、最適化する
- Siriで一般的なエラーを読み解き、対応する
- SiriKitとショートカットの新機能
- watchOSにおけるショートカットの活用
Tech Talks
-
ダウンロード
こんにちは WWDCへようこそ “SiriKit Media Intentsを より多くのプラットフォームに拡大する” こんにちは ダニー・マンデルです。 “SiriKit Media Intentsをより多くの プラットフォームに拡大する”へようこそ SiriKit Mediaの新しい機能と 新たな体験をご紹介したいと思います お伝えすることが たくさんありますよ 今年は家で使用するSiriKit Media Intentsに 特に重点を置いており― これを新たなプラットフォームに 拡張させていく予定です いくつか新機能についても ご説明した後 最後に SiriKit Mediaの体験を 加速させるための新たな方法をご紹介します ではまず 新しいSiriKit Mediaの プラットフォームについてお話しします 昨年 我々は皆さんに 最高の体験をお届けしましたが 今年は 家で音楽を聞く際にも 同じように最高の体験を楽しめるようにします
Appleのホームで HomePod独自の特徴を活用すべく HomePodに同じMedia Intentsと 新しいクラウドの再生用APIを使用しています Developer Programの全詳細は developer.apple.com/siriで確認できます
この度 SiriKit Media Intentsが Apple TVでも使用できるようになりました 皆さんは iOSのアプリケーションのほか Apple TVをカスタマイズして楽しんでいますよね そのため SiriKit Mediaをそれらの アプリケーションで使用可能にしたかったのです では ここからはライアン・クレムスが 新しいApple TVの機能性をご紹介します 昨年 iOS 13とwatchOS 6に メディアアプリケーションに対応する Sirikit Media Intentを導入しました 今年は同じ機能性を tvOS 14に持たせることができました これにより 大画面でもアプリケーションを サポートするSiriを追加できます SiriKit Media Intentsでアプリケーションに 幅広い種類の自然言語のクエリを追加できるので シンプルな検索ができます ControlAudioで音楽をかけて
バンド名で再生させることができます ControlAudioでバンド「クルアンビン」をかけて
アーティスト名で曲を流すこともできます ControlAudioで マシュメロ&ホールジーの「Be Kind」をかけて
他にもいろいろとできます tvOSのアプリケーションに対応する SiriKit Media Intentを追加する際は iOSにサポートを追加するのと 同じ手順を踏んでください 2019年のWWDCセッション “SiriKit Media Intentsの導入”にて アプリケーションにExtentionターゲットを 追加する手順を説明しているのでご参照ください ではSiriKit Media Appsにおける 自然言語のリクエストの処理方法を説明します
IntentハンドラはSirikit Mediaのリクエストを ハンドルするキークラスで 実装するためのキーメソッドは resolvedMediaItemsです resolvedMediaItemsは アプリケーションから受け取った― INPlayMediaIntentオブジェクトを評価し それを アプリケーションに再生させたい 具体的なmediaItemに変換すべく検索を行います mediaItemが決定したら 呼び出されたハンドラが アプリケーションを起動させるので ユーザーは音を再生することが出来ます tvOSとの違いは 顧客が1度に1つの アプリケーションと応答し合うという点です フォアグラウンドで実行するアプリケーションが 結果 応答としては より優先されるようです バックグラウンドで実行するものが 応答として優先されるiOSとは異なりますね これをコントロールする際には continueInAppを返しますが handleInAppではなく ハンドルメソッドから行うのです 昨年ご紹介した簡単なステップを踏めば tvOSのSiriを通して オーディオコンテンツを アプリケーションで操作できるようになります 昨年はiOSとwatchOSでSiriKit Media Intentsが 多様な形で活用されており 感激しました 今年は皆さんが tvOSをどう活用してくれるのか 楽しみにしています すばらしい紹介をありがとう ライアン 次は新機能について ご紹介します これらの機能を使えば Siriを利用して さらに手軽に音楽を聞けるようになります 我々のサンプルアプリケーションである ControlAudioを使ってご説明します このアプリケーションは WWDC19でご紹介しました ではSiriの新たな代替UIについて お話しします
まず新しいコンパクトなSiriのUIで 現在のSiriKit Mediaの体験を見てみましょう アルバム「New Me, Same Us」から 1曲かけるように指示を出します すると ControlAudioが1曲を選び 再生を始めます これ以上の指示は出せないので その1曲だけしか再生できません しかし 再生し始めた曲よりも 少し違う曲がよかったと思うこともありますよね だから実行中でも より簡単に 微調整ができるようにしたんです アプリケーションを開くために 現在やっている作業を中断する必要はありません 我々が新たに開発したSiriKit Mediaの代替UIで それが可能になります 画面上では 同じ曲を再生するという指示を受け Siriが曲を再生し始めましたね
ところが今“Maybe You Wanted,”という 新しいメニューが表示されました これをタップすると次のUIが現れます
ご覧のとおり 同じアルバムに収録された 別の曲が表示されました これらは ControlAudioが選んだ曲の代わりに ユーザーが選ぶ可能性のあった曲です これらのオプションのどれか1つをタップすれば 最初とは別の曲を再生できるのです これが新しいSiriKit Mediaの代替UIの機能です 使い方は非常にシンプルになっています 現在のresolvedMediaItemメソッドでは INMediaItemResolutionResultに success with resolvedMediaItemメソッドを 呼び出しますよね すると そのメソッドは 単数のmediaitemのResolution Resultを返します
複数のアイテムを返す方法は簡単です 新しい複数バージョンに切り替えると successes with resolvedMediaItemsや リストの一番目に来るアイテムの 後に並ぶものが代案として表示されます
次に ユーザーが代案の中の1曲を選んだ場合 タップをどう処理すべきかご説明します 代案の中の1曲をタップすると タップされたメディアアイテムは 処理されるInPlayMediaIntentの メディアアイテムとしてセットされます つまり 他のInPlayMediaIntentを処理するように これを処理できるのです SiriKit Media Alternativesで処理させるために 行うべきコードの書き換えを見ていきましょう まずは サンプルコードプロジェクトの ControlAudioでIntentハンドラを開きます
そして resolvedMediaItemsメソッドに導きます
現在呼び出している単数バージョンのメソッドは “success with”です ではアプリケーションを実行すると どう動くのか見てみましょう
ControlAudioで 「New Me, Same US」から曲をかけて ControlAudioでリトル・ドラゴンの 「Where You Belong」を再生します 再生を開始しましたが 代案は表示されません
またXcodeに戻りましょう プロセスを終了した後 メソッドを更新し 単数の代わりに 複数のメディアアイテムを返すようにします
ここで 複数バージョンのメソッドである― “successes with”を呼び出します では アプリケーションを実行して 今回はどう動くのか確かめましょう
ControlAudioで 「New Me, Same US」から曲をかけて ControlAudioでリトル・ドラゴンの 「Where You Belong」を再生中です この通りです 今度は代案があるので 1曲選びましょう
では「New Fiction」をかけます
再生が始まりましたね こうすれば SiriKit Mediaに備えられた 新しい代案のサポートを簡単に入手できます 今年はSiriKit Mediaのパフォーマンスを 新たに改善しました
昨年 SiriKit Media Intentsを発表した時は SiriKit Mediaの機能性を適用するために Intents Extentionを使用する必要がありました しかし 今年からは新たな方法で SiriKit Media Intentsをハンドルできます In-app intent handlingを使うのです
In-app intent handlingは すべてのIntentをハンドルする段階で Extention内よりも むしろアプリケーション内で動きます これにより Intents Extentionと アプリケーションを実行する必要がない時 バックグラウンドでAudio Sessionを 開始するために実行プロセスを避けられます ただ アプリケーションを 起動するだけでいいのです
しかし アプリケーション全体を 起動しているため リゾルブフェーズの間に Siriのレスポンスタイムが遅れるかもしれません Intents Extentionは素早く起動するために 最適化された小さくて軽いプロセスです そのため 必ずアプリケーション全体の 起動体験を調整し 速いレスポンスを得ましょう
プレーヤーウォーミングフェーズを 早い段階から始められるのも大きな利点です そこでリゾルブを実装しますからね 認証を取るために ネットワークリクエストを 始める必要があると分かっている場合は リゾルブの始めに開始することができます そしてIntentをハンドルする頃までには 確実に プレーヤーの初期化を100%の状態に しておくことができます “Intentsをアプリケーションと統合する” というプレゼンをご覧いただければ In-app intent handlingの 全詳細を把握できますよ 現存のExtentionベースで実装している方は 今年 App prewarmingを通して パフォーマンスを高めることが可能です 現存のSiriKit Mediaの実装では 通常 リゾルブ コンファーム ハンドルという フェーズを経ることになっています そしてこれらが完了すると 音の再生が開始されるよう バックグラウンドアプリケーションが起動します これにより ExtentionはすべてのIntentの ハンドリングロジックを含めることができ また アプリケーションは再生ロジックを ハンドルすることができるのです しかし アプリケーションの重要事項である プレイバックエンジンの設定や認証の取得を 通常よりも かなり遅らせることも出来ます
SirikitがApp prewarmingを使い より早い段階でアプリケーションを始動させ Extentionが完了したら すぐに再生を開始できる状態にしておきます App prewarmingがアプリケーションに 追加の処理を必要とするという点をお忘れなく あなたが正しい処理をさせているか 我々と一緒に確認するとよいでしょう そして最後に In-app intent handlingと App prewarmingには 長所と短所があります あなたの実装にとって どんなメリットや デメリットがあるのかを検討した上で どれがあなたに一番合うのか 決めてくださいね デベロッパコミュニティの皆さんに 知っておいてもらいたいのですが 皆さんに提供するサービスは 我々自身で使ってからリリースしています 我々のバグフィックスや新しい機能 そしてパフォーマンス改善のための 共通のフレームワークを持てることを 非常にうれしく思います 皆さんとAppleのSiriチーム どちらの利益にもなりますからね では今年はぜひ SiriKit Mediaを通して 最高かつ新しい体験を人々に与えてください
-
-
2:45 - resolveMediaItems method
func resolveMediaItems(for intent: INPlayMediaIntent, with completion: @escaping ([INPlayMediaMediaItemResolutionResult]) -> Void) { }
-
3:03 - handle with .continueInApp
func handle(intent: INPlayMediaIntent, completion: (INPlayMediaIntentResponse) -> Void) { completion(INPlayMediaIntentResponse(code: .continueInApp, userActivity: nil)) }
-
5:24 - Singular successWithResolvedMediaItem call
INPlayMediaMediaItemResolutionResult.success(with: mediaItems[0])
-
5:40 - Plural successesWithResolvedMediaItems call
INPlayMediaMediaItemResolutionResult.successes(with: mediaItems)
-
6:07 - handle with .handleInApp
func handle(intent: INPlayMediaIntent, completion: (INPlayMediaIntentResponse) -> Void) { completion(INPlayMediaIntentResponse(code: .handleInApp, userActivity: nil)) }
-
6:37 - ControlAudio resolveMediaItems
func resolveMediaItems(for intent: INPlayMediaIntent, with completion: @escaping ([INPlayMediaMediaItemResolutionResult]) -> Void) { let mediaSearch = intent.mediaSearch resolveMediaItems(for: mediaSearch) { optionalMediaItems in guard let mediaItems = optionalMediaItems else { return } completion(INPlayMediaMediaItemResolutionResult.successes(with: mediaItems)) } }
-
10:24 - App prewarming background appLaunch
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Locate any app prewarming logic in this method -- fetch credentials, get audio player ready, etc. return true }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。