ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
アプリショートカットによるアプリのSpotlight
アプリショートカットを使いアプリで頻繁に使われる機能をSpotlightやSiriに表示する方法を確認しいましょう。アプリの検索結果を設定する方法を確認し、素晴らしいアプリショートカットを作成するためのベストプラクティスについて解説します。また素晴らしい視覚及び音声体験の構築方法と、それをApple WatchやHomePodなどほかのAppleデバイスにも拡張する方法を紹介します。アプリショートカットとApp Intentの詳細はWWDC23の「App Intentにおける機能強化の詳細」と「Spotlight向けのショートカットのデザイン」をご確認ください。
リソース
関連ビデオ
WWDC23
-
ダウンロード
♪ ♪
こんにちは Siri App Shortcuts Teamの Engineering ManagerのJerryです 今日はアプリショートカットでアプリを Spotlightに出す方法をご紹介します まずOSのどこからでも使用できる 素早く習慣的な動作を作るための アプリショートカットをなぜ採用すべきか見て 次にアプリショートカットを実行する 基本事項についてお話しします そのあと視覚と音声使用のために アプリショートカットを どのように向上できるか またiOS 17での 改善点についてお話しします 最後にiPhone以外のAppleデバイスにおいて アプリショートカットを改善させる新しい方法を 見てみます まず最初にアプリショートカットは アプリの機能の発見と使用が楽になります アプリをインストールした直後から使用でき ユーザーの設定は必要ありません iOS 15以前とは違い ショートカットアプリや Siriに追加ボタンで 使用前にアプリショートカットを 設定する必要はありません アプリショートカットはトリガーフレーズで Siriから動作させられますw またSpotlightで検索すれば 検索結果に顕著に表示されます またショートカットアプリにあり パワフルなショートカットや オートメーションの一部にできます
アプリショートカットはシステムを通して アプリの機能を示し ユーザーがアプリを開ける機能としてや バックグラウンドで何かを実行させる 発起点となります アプリの主要機能を使用する上で 手順を減らし 声だけでハンズフリーや HomePodなどを活用し より多くの状況で利用できます アプリの重要な機能を狙った 覚えやすいアプリショートカットで みなさんのアプリを発見し覚えやすく 使用を習慣にすることができます 例えばこのセッションで To Doリストを管理する 「Demo」という架空のアプリを使用します 新しい機能の「リスト要約」を システムに表示させたいとします これによりショートカットかSiriで するべき事を素早く確認することができます このような手軽い機能が アプリショートカットに最適です アプリからスムーズに必要な物を得て 日常生活に戻れます To Doリストの要約にApp Intentを どう実行し アプリショートカットに実行するか説明し ユーザーがショートカットから声のコマンドで リストを要約しSpotlightに 表示されるようにします
アプリショートカットを作る App Intentフレームワークは Swiftソースコード内でintentsを 素早く簡単に作るため一から構築された Swiftのみのフレームワークです アプリショートカットはソースコード内で intentの定義から始まります Intentsはアプリで完了されるタスクを示し それらにはTo Doリストやコンテンツの要約 項目のマーキングなどがあります App intentを作ったあと アプリショートカットを作れば SpotlightやSiriで使用できます これでintentが必要なトリガーフレーズや タイトルとシンボルに関連付けされます いざ両方が定義されればビルドし アプリをテストします まず簡単なアプリショートカットから始めます このアプリショートカットはリスト名を入力すると SpotlightやSiriから 新しいTo Doリストを作成します これは2ステップで完了します app intentを定義し アプリショートカットを定義するだけです まずApp Intentフレームワークを 取り入れます そしてintentの新しいstructを実行し AppIntentプロトコルに準拠させます システムに呼ばれるperformメソッドに intentの機能性を含みます
AppShortcutsProvider structを 最後に実行します 各アプリに多くて1つのstructが このプロトコルに従います AppShortcutsProviderでアプリが サポートするすべてのアプリショートカットを 特定できます ここではCreate Listアプリショートカットを 足しました アプリショートカットは幾つかの要素からなります トリガされると発動するintent このアプリショートカットの実行のための Siriの認識フレーズ 1つのアプリショートカットに幾つも付けられます このアプリショートカットを視覚的に表示するための short titleとsystem image nameです シンプルなアプリショートカットに 必要なのはそれだけです アプリを動作させてSiriと ショートカットアプリから コードで2つのstructsを作り すぐにTo Doリストを作ることができます
しかしもう少し高度な事を試し 要約すべき特定のリストで タスクを要約することにします これはApp Intentの 2つの主要概念に触れます エンティティとクエリです 試してみましょう まずSummarizeList AppIntentを実行します 以前のようにAppIntentプロトコルに準拠する structを作る必要があります TodoList structには スタブの実装を残しました 後に説明します 既にアプリにリストの 要約を戻す機能があるため それを使います App intentの結果の一部として カスタムダイアログとして この要約を戻せます Siriが結果を話すか表示させます
どのintentもシステムが表示する titleが必要です
変数を宣言し @Parameter プロパティラッパーで注釈し intentsはinputsを受けられます この場合 今はただのスタブである ToDoList structを参照しています
ここでApp Intentに便利な 2つの概念について お話しします エンティティとクエリです エンティティはユーザーが参照したい アプリに関連する概念です このアプリではタスクの実行時 人々が参照したがる論理オブジェクトの to do listエンティティがあって当然です ほかのアプリではusersやdocuments ordersなどのエンティティがあるでしょう インテントがエンティティを inputパラメータとして使用する時 アプリのエンティティは App Intentに使用できます この例ではSummarizeListインテントが to do listエンティティをパラメータとしています App Intentのパラメータに収まる エンティティインスタンスの発見のため システムはクエリに頼ります ランタイムでシステムは queryオブジェクトを例示しコールし 様々な検索パラメータに基づき エンティティを発見します クエリはシステムに関連するエンティティの インスタンスを戻します 後にシステムはIntentの実行時 これらのエンティティを使用します このアプリではto do listエンティティを実行し システムが関連するto do listを探すため クエリする必要があります 先程のlist summaryアプリショートカットに 戻ります ToDoListをAppEntityに準拠させ スタブを拡張します typeDisplayRepresentationプロパティ を実行し システムがこのエンティティタイプを 説明できるようにします 同様にdisplayRepresentationを実行し システムがこのインスタンスを 説明できるようにします Spotlightやショートカットでエンティティを トップレベルに表示したいなら エンティティはDisplayRepresentationに imageかsymbolが必要です 最後にこのエンティティの defaultQueryを宣言します to do listエンティティの簡単なクエリを 実行しました 最低でもクエリはidentifierで to do listを取得できねばなりません またsuggestedEntitiesも実行すれば どのto do listがユーザーに 関連があるかアプリが決定できます システムはこれらのエンティティ提案で アプリショートカットを自動的に配置します SummarizeList App Intentと 関連するエンティティと クエリ配列だけで ショートカットアプリの中から オートメーションの一部として使用できます でもまだまだです この機能がSiriにもアクセスでき Spotlightで取り上げるようにします このためにアプリショートカットを実行します
まず先程のAppShortcutsProviderを 拡張します 既存のものに新しいアプリショートカットを足します またSiriからアプリショートカットを発動させる 発話フレーズの配列を含みます ちなみにアプリの名前の代わり special tokenをstringに使っています これでSiriがアプリの名前だけでなく 定義したどの同意語にも気付きます またintentのパラメータである listも足しました アプリショートカットは既定義のパラメータを持つ トリガーフレーズを拡張し Siriを呼んですぐユーザーが パラメータを提供きるようにします この場合 システムは suggestedEntitiescontextメソッドを ToDoListQueryに呼び 可能性のある値の配列を得ます ちなみにlistパラメータのない フレーズも提供します もしlistなしでアプリショートカットが 使われた場合 Siriやショートカットがユーザーに プロンプトできいいアイデアです もしパラメータがオプショナルでない場合 アプリショートカットはintentの実行前に 値をプロンプトします オプショナルのパラメータはメソッド内で 手動で値をプロンプトできます 以前と同様にshort titleと system imageが必要です
よいshort titleとsystem imageの選択は Spotlightでアプリを検索した際 最初に表示されるので重要です アプリショートカットは前もってSiriに指定できる 周知のパラメータ値セットを持つ パラメータをサポートします 「アプリでXを探せ」のような Xが何でもあり得る 制限のない値はサポートしません 値があらかじめわかっている App Enumsのパラメータや 動的なApp Entitiesである パラメータは使用できます このアプリのような suggestedEntitiesを通し クエリでエンティティのリストを戻すだけです
最後にupdateAppShortcutParametersを AppShortcutsProviderオブジェクトに呼びます このメソッドは アプリショートカットパラメータの変更を システムに伝え 再フェッチするための関連クエリに suggestedEntitiesを呼び出します To do listが変更する度に必要で 追加や削除 名前の変更のような変化も含みます 例えばエンティティの displayRepresentationが一部でも変われば このメソッドが必要です
アプリを初めて起動した時にも これを呼ぶ必要があります システムが初めて無事 エンティティをフェッチするまで entityパラメータを参照する アプリショートカットフレーズは作動しません
Summarize Listアプリショートカットに 実行するのは以上です これでアプリを使用する時 「Hey Siri Demoで 買い物リストを要約」と言うと すぐに発話と視覚での レスポンスが得られます わずかなコードで素早くシームレスに 情報を得られるようになりました 本格的なアプリショートカットを実行する時 ユーザーがそれを見つけられねばなりません 単にデバイスを使用する上で アプリショートカットを見つける 2つのパワフルな方法があります SpotlightとSiri Tipsです SpotlightはiPhoneとiPadでアプリを 起動させる最も人気のある方法です Spotlightのトップヒットは アプリに加えアプリショートカットも表示します アプリショートカットの発見に最適です アプリの検索で アプリショートカットをすぐ発見でき アプリがトップヒットになります また「Summerize List」のように アプリショートカットの タイトルで検索できます Spotlightに加えSiri Tipは アプリを使用中に アプリショートカットを発見できます ヒントがあると便利であると思われる リストビューに1つ足してみました TipビューはSwiftUIとUIKitで使用でき どのアプリにも適する 数々のスタイルを用意してあります Siri Tipsは画面内容に関連する コンテキスト依存の配置が最適です SpotlightとSiri Tipsで アプリ内外どこでも アプリショートカットを発見することができます
App Intentとアプリショートカットについて さらに知りたければ WWDC22の2セッションをご覧ください 「App Intentの詳細」は App Intentフレームワークの概要について 「App IntentによるAppショートカットの実装」 は多くのパラメータ値を 明白にするなどアプリショートカットで可能な ユーザー体験の数々を探求します
初めてのアプリショートカットを実行したところで 今年加わったアプリショートカットの新機能と iOS 17の新機能を どう活用できるかお話しします
iOS 17ではショートカットでApp Intentと アプリショートカットの表示を更新しました この新デザインでインテントを簡単に発見でき アプリの重要アクションに ワンタップでアクセスできます またアプリショートカットはSpotlightで 目立つようになります よく使われるアプリショートカットだけでなく あなたのアプリショートカットを際立たせる 新APIを追加し Spotlightが興味あるエンティティを ハイライトする機能も追加しました
ショートカットオートメーション設定は 簡単に使用できるようリデザインされ 簡単に始められるよう アプリショートカットが特集されています
これらの新機能を使い アプリショートカットに注目を集めるため 新しいAPIsを導入しカラーや エンティティサムネイルや シンボル付きのshort titleをカバーします これらのAPIは すべてのアプリショートカットに必須で アプリを目立たせます
ではカラーからです アプリのInfo plistで2色設定でき アプリがSpotlightやショートカットに 現れた際に使用されます アプリ内のスタイルに似た色を使用し システムを通して アプリ体験を一貫します 次に各エンティティインスタンスが サムネイル画像を持てます これは既存のDisplayRepresentation APIの 拡張です サムネイルはイメージのURLを供給するか イメージを示すDataオブジェクト 名前付きバンドルイメージリソースか system image nameで供給できます ユニークなイメージを選ぶことで Spotlightでの表示に魅力が出ます 最後にどのアプリショートカットも short titleとsystem imageが必要です Spotlightやショートカットに現れると short titleとsystem imageが アクションのスタイルになります アプリショートカットを表す 特徴あるものを選んでください
アプリショートカットを視覚的に表すのに加え アプリショートカットの Siriでの利用も大きく改善しました iOS 16ではソースコードとstringsファイルで 定義通りに話さなければ アプリショートカットトリガフレーズは 認識されませんでした しかしアプリのユーザーは 違う言葉やフレーズを使います 例えば先程のアプリでは 「Demoで買い物リストを要約」と トリガフレーズ通りに言えば 実行されますが 「Demoの買い物リストを教えて」など 似たようなものでは実行されませんでした iOS 17ではアプリショートカットのトリガに より自然な言葉を 使用できます デバイス上での機械学習で アプリショートカットで定義されたフレーズに 似たものでも実行できるようになりました これはセマンティック類似度 インデックスのおかげです
このflexible matching機能で アプリショートカットを自然に呼び出せ 可能性のあるフレーズを すべて供給せずに済みます さらにコードを変更する必要はありません Xcode 15でアプリをリビルドすれば 既にあるフレーズに 似たもので呼び出せます まだflexible matchingを適応できないなら オプトアウトできます Enable App Shotrcuts Flexible Matchingビルド設定で アプリショートカットのフレーズにしか 反応しないようセットできます
アプリショートカットフレーズの 自然さを広げるため 新しいシノニムAPIがあります DisplayRepresentation APIの小さい追加で AppEntitiesとAppEnumsにおける さらなる同意語を定義できます Siriにより自然に話せることで アプリショートカットの浸透を 拡大することができます このアプリの例ではトリガフレーズ内で 「リスト」以外の言葉を使用できます
シノニムは予めリストを特定せず Siriが聞いた場合も使用できます これらの同意語は各いんすたんすに関連し 変更すればupdateAppShortcut パラメータをまたコールすべきです
Flexible Matchingをサポートする 新しいネガティブフレーズAPIがあります アプリショートカットにないものの 間違ってアプリを 呼び出すフレーズがある場合にのみ 使用します この場合「Demo概要をお店に送れ」と言うと 間違ってアプリを呼び出すため これをネガティブフレーズに含めます
最後にアプリショートカットを Siriでテストするのは 毎回Siriに話さねばならず 非常に時間がかかります ロケールが幾つもある場合など 特に時間がかかります このオーサリング過程を 素早く簡単にするため Xcodeに非常にパワフルなツールである アプリショートカットプレビューを用意しました アプリショートカットプレビューはmacOS Sonomaで Xcode 15を使用した時のみ利用できます デモを見てみましょう 先程アプリショートカットを実行した Demoアプリのプロジェクトが ここにあります アプリを起動してSiriに話しかけ テストできますが フレーズの影響を素早く プレビューする方法をお見せします この機能は にあり Semantic Similarity Indexが 生成できるよう先にアプリを 作成しておかねばなりません 作成したらアプリを左側から選び 人々がSiriに使うであろう フレーズを入力します コードで定義したフレーズなら うまくいくので試してみましょう 「Demoの買い物リストを要約」 SummarizeListインテントにマッチしました
今のに似たフレーズを 試してみましょう 「Demoにある買い物リストの要約をくれ」
Flexible Matchingのおかげで 余分な作業をする必要なく 同じインテントにマッチしました
では少し違いすぎるため認識が不確かな 3つ目のフレーズを試してみましょう 「Demoの買い物リストの 要点をまとめてくれ」 どのアプリショートカットともマッチしません アプリショートカットに 新しいフレーズを手早く足し 再ビルドし再テストします
「Demoの買い物リストの 要点をまとめてくれ」 フレーズがマッチし アプリを起動せずに確認できました ではアプリを中国語でテストします iPhoneの言語を変え アプリを起動しSiriに聞く代わり Previewのlocale selectorを 使用できます これですぐテストできます (中国語で話す)
開発デバイスを使用することなく 予想通りうまく行きました
アプリショートカットプレビューは Siriで1つ1つテストするよりずっと早く アプリショートカットの開発が簡単になります iOS 17は String Catalogファイル形式と共に アプリショートカットのフレーズの ローカライズを改善します これまでは各ロケールでの フレーズ数が限定されていました もしSwiftコードで 5つのフレーズを定義すれば 各ロケールで5つのフレーズに 限定されていました iOS 17ではString Catalogsにより この限度を省き 各ロケールにおいて 自然に必要なだけフレーズを使用できます この機能はiOS 17以降を ターゲットにするアプリにだけ利用できます この機能は簡単に利用できます 今年以前にアプリショートカットを 採用していなければ AppShortcutsという String Catalogを作るだけです
アプリをリビルドすると AppShortcutsProviderに 定義したフレーズが自動的に生成されます
Swiftソースコードを編集し リビルドするとString Catalogが自動的に 追加・削除したフレーズを更新します 既に今年以前からアプリショートカットを 採用していたなら 単にAppShortcuts.stringsファイルを String Catalogに移行してください
Xcodeで右クリックし migration assistantの指示に従います 完了後リビルドすると 自動的にフレーズが生成され 既にローカライズされたものも 維持されます
String Catalogに移行すれば 各ロケールで限度なく フレーズを足すことができます
Flexible matchingと アプリショートカットプレビュー そしてString CatalogsはSiriでの アプリショートカット体験を向上させます ではトリガーフレーズの より良いものにするためのヒントです 忘れられないフレーズが重要です ユーザーはアプリショートカットを サポートするアプリを たくさん持っています 実際にフレーズを覚えるのは困難です アプリ名の同意語を利用し ユーザーがアプリショートカットを 発動しやすくします Swiftソースコードで 読めないplaceholder keysは 避けましょう もしパラメータを参照するなら 先程お見せした interpolated string placeholdersで 定義されねばなりません これはランタイムで これらのプレースホルダを正しく 読み込むのに必要です さらにアプリショートカットを アプリに取り込む上で 幾らかの限度があります アプリのアプリショートカットは10が上限です アプリを通しトリガフレーズは 1,000までで パラメータの組み合わせをすべて含みます ですので10個の値があるパラメータなら フレーズの数はその10倍になります 限度に達しないようフレーズのパラメータに 可能な値がありすぎないようにしましょう アプリショートカットプレビューでのテストは Flexible Matchingで 既にカバーできるフレーズが 余分にないか確認できます トリガーフレーズには アプリ名かその同意語が必要です アプリ名のシノニムの定義については このビデオのリンクをご参照ください
アプリを起動するアプリショートカットは Spotlightに表示できます もしエンティティでアプリを起動する App Intentがあれば そのApp IntentをOpenIntentプロトコルに 準拠させるべきです
素晴らしいアプリショートカット体験の 作り方の次は iPhone以外のデバイスに どうこの体験を広げられるかです アプリショートカットは Apple Watchでも使用できますが 最高の体験のために多少の限度があります アプリショートカットは デバイスにインストールされた watchOSアプリからのみです 対のiOSデバイスから アプリショートカットは動作できません つまりiPhoneにiOSアプリがあるものの watchOSアプリがなければ アプリショートカットは watchOSで作動しません
SiriのFlexible matchingは Apple Watchでは利用できず フレーズ通りに話さねばなりません Apple Watchサポートは watchOS 9.2で登場し 9.2以降のすべてのデバイスで利用できます
アプリショートカットは Apple Watchで発見できます iOS同様 ショートカットアプリは デバイスで利用可能な アプリショートカットを表示します
次にアプリショートカットを HomePodで使用できます これにはアプリショートカットが可能なアプリが iOS及びiPadOSデバイスに なければなりません iOSやiPadOSではアプリショートカットで アプリを起動できるものの HopePodでは起動しないかもしれません 例えばDemoアプリがiPhoneにあれば HomePodに「Hey Siri Demoで 買い物リストを要約」と命じられます HomePodのアプリショートカットサポートは バージョン16.2以降で利用できます
HomePod用にデザインする場合 これは音声のみのデバイスです 一致するビジュアルがないためSiriの対話が 明確でなくてはなりません IntentDialog classには fullとsupporting stringを受ける イニシャライザがあります HomePodはfull dialogを iPhoneのような視覚デバイスは supporting dialogを使用します これにより視覚的に参照できる場合は簡潔に 画面がない場合は記述的にできます
音声のみの場合を含むアプリショートカットの デザイン方法については WWDC22の「アプリショートカットのデザイン」を ご確認ください
まとめとしてに重要点を繰り返します アプリショートカットはシステムを通して アプリ機能のビジュアライズを助け アプリの習慣的使用を簡単にします
アプリショートカットはSpotlightによる 目立つ配置と より多くのスタイルオプションで 発見しやすくなりアプリの使用を促します
Siriによるアプリショートカットは Flexible Matchingで向上し 声でアプリショートカットを トリガしやすくなりました そしてXcodeの アプリショートカットプレビューで 開発とテストが簡単になりました
App Intentとアプリショートカットについては セッションをもう2つ用意しています
これらの向上でアプリショートカットは アプリとユーザーの 役に立つことでしょう みなさんの創造を楽しみにしています ♪ ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。