前回の内容をコードベースでより掘り下げながら、App Schema への準拠によってアプリ固有アクションを Siri に理解させ自然言語でも実行可能にする方法れていた。App Entity、App Intent、App Schema、色々出てきてこんがらがってきた。
WWDC26:Explore advanced App Intents features for Siri and Apple Intelligence
Build intelligent Siri experiences with App Schemas
0:00 – Introduction
- App Intents によってアプリを Siri に対応させる仕組みを解説
- Apple Intelligence により Siri がより有能・文脈理解・パーソナルに進化
1:06 – What’s new in Siri
- Siri が新たに得た 3 つの能力
- アプリのエンティティへのアクセス(コンテンツの把握)
- インテントを通じたアクションの実行
- オンスクリーンコンテキストの理解
4:06 – Contributing content with App Entities
- アプリのコンテンツを
AppEntityとしてモデル化する AppEntitiesが表現するもの- 何であるか(nouns)
- 識別方法
- 重要なプロパティ(タイトルなど)
- 何であるか(nouns)
- これらを Siri が理解できるようにするために AppSchema に準拠する
- スキーマは
@AppEntity(schema: .messages.message)のように指定
6:21 – Entity resolution and IndexedEntity
- エンティティを特定するにおいても、人は必ずしも正確に話すわけではない(概念や説明を話す)=完全一致ではない
IndexedEntityに準拠し、セマンティック検索やコンテンツ Q&A を実現する@Property(indexingKey: \.textContent)でインデックス対象プロパティを指定
- データセットが巨大など、事前インデックスが難しいデータには
EntityStringQueryを使用entities(matching:)で文字列に基づくリアルタイム検索を実装
9:49 – Making actions available
- App Intents を定義すると、システムにアプリのアクションが公開される
- Shortcuts、Spotlight、Widgets 様ざな場所に表示され、必ずしも Siri がなくともアクションを実行できるようになる
- エンティティを App Schema に準拠させることで、そのアクションを Siri が理解できるようになり、自然言語で実行可能になる(App Schema = App Intent の特化版)
- 複数のインテントを App Schema ドメインにグループ化することで Siri が関連アクションを把握
12:03 – Adopting a schema domain in UnicornChat
- Messages ドメインの
sendMessageスキーマを採用するエンドツーエンドの実装デモ - スキーマドメイン採用により Siri との会話が自然に成立する
15:39 – Moving content across apps
- エンティティに
Transferableを採用することで他アプリがそのコンテンツを操作可能になる IntentValueRepresentationを使って他のアプリへの書き出し・書き込みを制御
16:00 – Working across apps: onscreen awareness
NSUserActivityまたはビューアノテーションでビューをエンティティに紐付けるNSUserActivity:単一のプライマリエンティティをビュー全体に関連付け.appEntityIdentifierモディファイア:リスト内の各行など個々のビューに紐付け
- Siri が「これ」「あれ」などの参照を解決できるようになる
IntentValueQueryでクロスアプリのコンテンツマッチングを実装values(for:)でIntentPersonなどのシステム型から、既存のアプリ内エンティティへマッピング
IntentValueRepresentationにimporting:クロージャを追加すると、一致するコンテンツが存在しない場合に新規作成も可能
21:09 – Best practices
- スキーマセットを完全に採用することで Siri との会話が完結するように設計する
- Xcode がビルド時に不足している関連スキーマを指摘してくれる
24:18 – Testing your integration
- 段階的な検証アプローチ
AppIntentsTestingフレームワークによって、Siri 不要でプログラマティックにロジックのテストが可能- Shortcuts アプリでパラメタや入力の調整をしながら、アクションのユーザーへの見え方(インテントの形)を検証
- Spotlight でエンティティのインデックスされていて発見可能かを確認
- 最後に Siri でエンドツーエンドテスト