WWDC26:Build intelligent Siri experiences with App Schemas

前回の内容をコードベースでより掘り下げながら、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 が表現するもの
    1. 何であるか(nouns)
      1. 識別方法
      2. 重要なプロパティ(タイトルなど)
  • これらを 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 などのシステム型から、既存のアプリ内エンティティへマッピング
  • IntentValueRepresentationimporting: クロージャを追加すると、一致するコンテンツが存在しない場合に新規作成も可能

21:09 – Best practices

  • スキーマセットを完全に採用することで Siri との会話が完結するように設計する
  • Xcode がビルド時に不足している関連スキーマを指摘してくれる

24:18 – Testing your integration

  • 段階的な検証アプローチ
    • AppIntentsTesting フレームワークによって、Siri 不要でプログラマティックにロジックのテストが可能
    • Shortcuts アプリでパラメタや入力の調整をしながら、アクションのユーザーへの見え方(インテントの形)を検証
    • Spotlight でエンティティのインデックスされていて発見可能かを確認
    • 最後に Siri でエンドツーエンドテスト

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です