View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

WWDC19に戻る

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • SiriKit Media Intentの紹介

    iOS 13では、オーディオコンテンツを再生するためのさまざまな方法に新たに対応して、SiriKitを強化しています。このセッションでは、ハンズフリーで音楽、オーディオブック、Podcast、ラジオなどを再生できる素晴らしい体験を実現する方法について説明します。検索語句を処理するためのベストプラクティスや、再生スピードの調整機能、プレイリストへの追加機能、コンテンツを気に入ったかどうかを表明できる機能を実装して、充実した再生環境を提供する方法についてご確認ください。

    リソース

    • Managing Audio with SiriKit
    • SiriKit
      • HDビデオ
      • SDビデオ
    • プレゼンテーションスライド(PDF)

    関連ビデオ

    WWDC20

    • 高品質なSiriメディアインタラクションをデザインする
    • CarPlayによるAppの高速化

    Tech Talks

    • SiriKit Media IntentsをHomePodに統合する
  • このビデオを検索

    (音楽)

    (拍手) ダニー・マンデルです 本日はSiriKit Media Intentsを 紹介します SiriKitに追加した メディアドメインのサポート機能です

    最初にSiriKit Media Intentsの 機能について話します その後 実装で使う際の 手順について説明します 最後は 最高のユーザ体験を もたらすための ベストプラクティスを 説明したいと思います

    SiriKit Media Intentsは オーディオ操作を一新させます この新しい機能は 多くの人を魅了するでしょう 音声の再生や 嗜好プロファイルの更新に加え コレクションへの追加や検索も可能です “アプリケーションでカリードを再生” と言うだけで Siriが音声を認識し アプリケーションで音楽を再生できます

    では 機能を詳しく見てみましょう

    Intentは4つあります まずは INPlayMediaIntentです 例えば“Outer Peaceを再生” と指示して音楽を再生する機能です iOS 12では ショートカットによる 再生サポートを導入しましたが 今回は SiriKitを追加しました

    次に INAddMediaIntentです プレイリストやライブラリに アイテムを追加する機能で “この曲をドライブ用のプレイリストに 追加”と指示できます

    INUpdateMediaAffinityIntentでは アイテムの好みを表現できます “この曲 好き”と言うだけで 構いません

    INSearchForMediaIntentは 特定のメディアの検索機能です “ビリー・アイリッシュを検索”と 指定できます

    SiriKitがサポートするメディアは 多岐にわたります まずは音楽です 音楽は 曲名だけでなく アルバムやアーティスト名 プレイリスト ジャンルでも 検索することが可能です 詳細はINMediaSearchの ドキュメントに掲載されています 最高のユーザ体験のために 多数の検索方法を採用してください 再生機能にはシャッフルやリピート キューなどが含まれ アーティストやアルバムを指定しての シャッフルやキューへの追加も可能です

    2つ目は Podcastです “Stuff You Should Knowを再生” とタイトルを言えば再生を開始します エピソードの再生順序や 速度もコントロールできます “最新のエピソード”と指定したり “倍速で再生”という指定も可能です

    次に オーディオブックです 本のタイトルを指定して 再生の指示ができます Podcastと同様に 速度の調整も可能です

    最後はラジオです 特定のラジオ局の指定が可能で 例えば“このアプリケーションで 89.1 FMを再生”とリクエストします

    ご紹介した4つのメディア以外を扱う アプリケーションでも大丈夫です SiriKit Media Intentsを使って アイテムの検索と再生ができます 唯一の弱点は 解析程度が強いメディアです 例えば自然音の再生アプリケーションに “哺乳類”などと指定しても Siriは動物の種類を認識しません そのため 哺乳類の音の ストリングを作成する必要があります 他のメディアより非体系的ですが サポートはされています

    では 操作方法を説明します

    SiriKit Media Intentsは 他のSiriKitドメインと同じです つまり全てのリクエスト処理は Intents App Extensionで行われます 詳細は これまでのWWDCの講演で 説明したので リクエスト処理に関しては 講演とドキュメントを参照してください

    ここで SiriKitの典型的な リクエストを見てみます “アプリケーションで カッコいい曲を再生”と指示すると Siriはこのリクエストを認識し Intents Extensionを起動します リクエストは“解明”“承認”“対処” の3ステップで処理されます

    最初のステップは“解明”です メディアドメインにおける“解明”は 検索対象の獲得と アプリケーションでの 検索を指します 再生する具体的なアイテムが 1つ以上抽出されます 検索結果が0件やエラー発生の場合は エラーメッセージを表示するよう Siriに伝えます

    次は“承認”のステップです メディアドメインでの使用は 推奨しません なぜなら アプリケーションの 使用状況から このステップで 再生を諦める ユーザが多いと分かったからです

    最後のステップは“対処”です これは非常にシンプルです 応答コードにより バックグラウンドで アプリケーションが起動します

    そして通常どおり アプリケーションで アイテムを再生します 画面にUIが表示されないので テストには注意が必要です CarPlayやヘッドホンなど さまざまな状況で試してください リクエスト処理の概要を 説明しました 次にアイテムの解明方法です パラメータは異なりますが ロジックは全てのIntentに共通です アプリケーションのカタログ内を 共通の方法で検索します

    サポートされていない結果に初期化し 検索結果がない場合は エラーを出すようSiriに指示します

    INMediaSearchは検索内容を含む Intentフィールドです Siriがサポートする 全ての音声関連のクエリであり この数多の可能性の中から 再生すべきアイテムを抽出します この例では まずINMediaSearchから mediaNameを読み込み

    アプリケーションのカタログから アイテム一覧を取得

    mediaNameのプロパティを そのアイテム一覧と比較しています ただし 詳細は後ほど説明しますが これは避けるべきでしょう

    名前が一致し再生アイテムが見つかると その結果は成功となり 完了処理へと進みます

    この場合 成功の応答を返すだけなので 非常に短い処理となります これによりバックグラウンドで 起動が開始します アプリケーションの 起動を見てみましょう

    起動をサポートするために 使用するメソッドは applicationとhandle intent そしてcompletionHandlerです これもかなり短い実装法です Intentから 再生するメディアを読み込み 通常どおりの方法で再生します

    最後に 成功の応答コードを使って completionHandlerを呼び出します

    これらがどのように機能するのか 実際のアプリケーションで ライアン・クレムスが説明します (拍手) ありがとう

    SiriKit Media Intentsの 追加は簡単です ここに既存の 音楽アプリケーションがありますが これにSiri Extensionターゲットと メソッドを追加するだけです Extensionを追加するには “File”“New”“Target”と進み

    “Intents Extension”を選択し “Next”をクリック 名前を付けます

    最後に“Finish”をクリック

    これでハンドラが作成されました 次にアプリケーションに Siriの機能を追加します

    Extensionを選択し サポートするIntentを追加します この例では INPlayMediaIntentと INAddMediaIntentの2つです

    次に選ぶのはメディアタイプです そして Extensionを組み込むために メソッドを追加します

    コード署名をオンにした後は Intentのハンドラに 操作手順のサポートを追加します

    解明と対処のメソッドのために

    スタブを導入しておきます 最初の例では サポートされていない 結果を返すことにします こうすることで Siriは 検出不可能と伝達します 試してみましょう 画面を表示します

    このように Siriはアイテムを 検出できなかった事実を伝えます 続いて 既存の検索機能に 接続しようと思います

    まずはユーザの検索内容を判断しますが この例では アーティストを検索します

    このメソッドでは メディアのアイテムを解明します

    アイテムを解明したら 対処メソッドに移り 応答コードを返し アプリケーションを 起動しなければなりません そのために デリゲートに切り替え handle intentメソッドを追加します これで 前のステップで解明した アイテムが抽出され再生されます 結果を見てみましょう

    メディアアイテムが解明され アプリケーションが再生を開始しました 次はINAddMediaIntentサポートを 追加しましょう まずはINAddMediaIntentHandling プロトコルで拡張します

    解明と対処のための メソッドを追加します 解明メソッドは INPlayMediaIntentと ほぼ同じに見えますね INAddMediaIntentには 解明デスティネーションもあり 追加先がライブラリか プレイリストかを判断します 指定されたプレイリストが ライブラリに存在しない場合 “リストが存在しません”と 返答すると良いでしょう

    今度は アプリケーションに戻って 再生開始する理由はないので Extensionだけで全てを処理します アイテムが解明されたら メソッドを使って ライブラリかプレイリストに追加します ここではユーティリティを使って 追加します 結果を見てみましょう

    指定したプレイリストに アイテムが追加されました このとおり サポートの追加は簡単です 活用を期待しています ありがとう (拍手) ダニー お願いします

    ありがとうございました ライアンが説明したのは Intents Extensionを追加する方法と Intentとメディアタイプの 指定方法でした INPlayMediaIntentとINAddMediaIntent での解明と対処の具体例も紹介しました これで Siriを使った メディアの再生と追加が可能です

    採用時に覚えておくべき ベストプラクティスを確認しましょう

    メディア再生のショートカットが 導入されていれば朗報です 対処とアプリケーションの起動には 同じコードを使います ただし ショートカットと違い SiriKitには解明ステップが必要なので 解明のメソッドとハンドラの 追加が必要です Siriがコンテンツタイプを認識するよう Xcodeでメディアタイプを更新します Extensionの対処メソッドは 共通でなければなりません メディアアイテムに同じ識別子を 使う限り 起動も同様です これはショートカットの構造です 解明メソッド以外は SiriKitと同じなので 解明メソッドを追加するだけで ショートカットから移行できます

    次は Apple Watchへの 導入方法です watchOSのアプリケーションは フォアグラウンドで起動するため Extensionの対処メソッドから 応答コードを返す方法をとります このコードが起動を開始し Intentを WKExtensionデリゲートに転送します

    対処メソッドはiOSと似ています シグネチャは少し違いますが NSUserActivityの インタラクションから読み込みます そしてiOSと同様 アイテムを アプリケーションで再生開始します

    解明メソッドではデバイス上の キャッシュを使うよう注意してください やむを得ない場合のみ ネットワークを経由します

    “Awesome Songをかけて”と リクエストしたとします 最初のステップは 再生するアイテムの解明でした 先ほどの例では アイテム名を Intentのプロパティと照合し 完全一致しました 一致しない場合はどうでしょうか

    大文字小文字の区別や句読点が 不一致の原因となる場合があります 例えば“hello”の場合 異なる文字列が考えられます 正しくは“HELLO!”で 大文字で感嘆符付きです しかし Siriの音声認識エンジンは 全て小文字や 感嘆符なしで 認識する可能性があります そのため 大文字と小文字や 句読点を無視することが必須です

    一般的には省略される言葉が 含まれていたり 完全一致しないタイトルで 呼ばれている場合もあります 例えば バージョンが違う アルバムです 一般的にはバージョンを指定して リクエストはしません アルバムのバージョンは指定せず 単純にタイトルのみを指定します サウンドトラックも同様です “ロケットマンのサウンドトラック” とリクエストはしても “オリジナルサウンドトラック” とは指定しないでしょう ヒップホップのタイトルに多い “フィーチャーリング”の略語は 多くの場合は指定しないか “フィーチャーリング”と言います すると完全一致になりません

    Podcastでも呼び名と正式名の 不一致が起こります 例えば“podcast”という単語を タイトルに含んでいる場合です “Stuff You Should Know Podcast” とリクエストすると SiriはPodcastを タイトルではなく メディアタイプと解析しかねません その結果 完全一致にならないのです さらに オーディオと映像の種別が タイトルに表示されるものもありますが SiriKit Mediaは主にオーディオを 再生するため あえて種別を指定する人はいません

    加えて 音声認識装置を使う際は 表記の違いに注意が必要です “81st”というタイトルは “eighty-first”の可能性もあります “I Love You Son”を “Sun”と認識するかもしれません

    Siriは正しいタイトルの抽出に 最善を尽くしますが 解明メソッドには 柔軟性が必要でしょう

    Siriの返答は解明メソッドの オブジェクトでコントロールできます Special Disaster Teamの “Maybe Sometime”という曲を リクエストしました Siriはタイトルと アーティスト名を返答しました この曲のタイトルとアーティストの プロパティを持っていたことになります つまり 常にタイトルとアーティスト名 そして メディアタイプを 入力する必要があるのです なお 複数の応答があった場合 Siriは最初の項目を取り上げます

    SiriKit Mediaでは エラーの適切な処理が重要です インテリジェントアシスタントを使うと 事象の理由が不明なこともありますが エラーを適切に処理することで ユーザに対して理由を明らかにできます 例えば リクエストの内容が 見つからない場合は サポートされていない という結果を返します 他にも多くのエラーがあります モバイルデータ通信を必要とする時に 通信がオフになっている場合や サブスクリプションが必要なものを 再生したい場合などです INPlayMediaMediaItem UnsupportedReasonにリストがあります 他のIntentでも 類似のリストの採用が必須です それでは Siriに対する さまざまなリクエストと それを適切に処理する方法を 説明しましょう

    最も一般的なリクエストは “再生して”でしょう 何を再生したいのか不明な場合に 何が最適な対応なのか見極めるのは デベロッパの仕事です 単に 既にあるキューを 再生することもできます オーディオブックやPodcast以外では それが最も合理的です しかし 大胆な選択もできます お勧めのプレイリストや流行の音楽を 再生することもできます 選択はあなた次第です 検索の基準が指定されていない リクエストの場合 何を再生するか 聞けばいいと思うかもしれません しかし 承認ステップと同様 このアプローチはお勧めしません ダイアログを促されると 再生を中断する可能性が高いからです

    リピート シャッフル 再開や キューへの追加なども可能ですが その場合は INPlayMediaIntentでも サポートが必要です 検索オプションからの コンテンツ再生も可能です 特に便利な検索オプションに 分類パラメータがあります これは“最新のエピソードを再生”と いうようなリクエストです アーティストの“ベストアルバム” というリクエストも可能です “お勧め”をリクエストすることも できます INMediaSortOrderで リストを確認してください

    リファレンスという検索オプションは INAddMediaIntentと INUpdateMediaAffinityIntentでは 非常に便利です 再生中のアイテムをライブラリや プレイリストに簡単に追加できるほか 好きか嫌いかの好みを 伝えることもできます MPNowPlayingInfoCenterに 外部コンテンツの識別子を入れると INMediaSearchのプロパティに入るため 検索アイテムが正確に把握できます

    ユーザの用途をSiriに伝えることが ユーザ体験の向上につながります

    Siriにユーザの語彙を伝えれば 興味の対象の理解が容易になりますが 重要なのは 特に興味を持っている ものだけを選ぶことです 語彙は順序付けされているため 優先順位を考慮する必要があります メディアのタイプによって Siriへの伝達事項はさまざまです 音楽アプリケーションはプレイリストの タイトルとアーティスト名 オーディオブックは 本のタイトルと著者 Podcastは番組のタイトルです 全てのユーザに該当するものは グローバル語彙サポートを参照ください

    本日は オーディオをコントロールする SiriKit Media Intentsを紹介しました 再生 追加 嗜好プロファイルの更新 メディア検索が可能になりました 最高の体験を提供するには 検索に柔軟性を持たせることが重要です ユーザは再生したいアイテムの名前を 正確に言うとは限りません エラーは適切に処理し 問題の原因を伝えましょう Siriと最高の会話ができるように オブジェクトを適切に構築してください そして Siriがユーザにとって 最良の選択をするよう 重要な言葉の情報を 与えなくてはなりません

    オンラインでドキュメントを 確認してください SiriKit Media Intentsで 皆さんが何を構築するのか とても楽しみです ありがとうございました (拍手)

Developer Footer

  • ビデオ
  • WWDC19
  • SiriKit Media Intentの紹介
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン