WWDC25:Explore new advances in App Intents

Get to know App Intent 」つながりで。AI要約してもらったが、要約されすぎて動画の内容が網羅されてなかったのと、そもそも App Intent 自体に全然馴染みなかったので理解追いつかず、追加で詳解してもらった(Result/Confirmation snippets の更新手順まわり)。なので正しいかわからないが個人的には腑に落ちた。


0:00 – Introduction

  • App Intentsは、アプリの機能をショートカット、Spotlight、Visual Intelligenceなどに統合するためのフレームワーク
  • 本セッションでは、インタラクティブスニペット、新しいシステム統合、ユーザー体験の改善、便利なAPIなど、App Intentsの最新の進化について解説

0:55 – Interactive snippets

  • App Intentの結果や確認画面を、インタラクティブなUI(スニペット)として表示できる新機能
    • 冒頭のスライドでは、Control Center 上のボタンからアクションし、その場で Interactive snippets を表示している
  • Snippet Intentプロトコルに準拠し、パラメータとアプリの状態に基づいてビューをレンダリング
    • スニペット内のボタンやトグルに既存のApp Intentを関連付け、ユーザー操作に応じてアプリの状態を更新し、スニペットを再描画できる
  • Result Snippet の更新手順
    • 最初の app intent が実行され、その結果として、どの情報を表示するかのテンプレート(Parameterized Result Snippet Intent)を返す
    • 次にシステムが、先ほどのテンプレートに具体的なデータ(パラメータ)を埋め込む。例えば「最も近いランドマーク」の情報を、クエリを通じて取得、設定する
    • データが設定されたインテントが perform メソッドを実行し、最終的にユーザーが見るUI(SwiftUI view)を描画する
    • 描画されたビュー内のボタンやトグルには、他の app intent が関連付けられている。ユーザーがこれらをタップすると、新しいアクションが実行され、スニペットが更新される、というサイクルが生じる
  • Confirmation Snippet の更新手順
    • Result Snippet上のボタンをユーザーがタップすると、関連付けられた intent が実行される
    • ↑の intent は、最終的なアクションをすぐに実行するのではなく、requestConfirmation を呼び出して、確認用の新しいスニペット(Parameterized Confirmation Snippet Intent)を返す
    • この Confirmation Snippet の表示以降は Result Snippet と同じ手順
    • ユーザーが最終的な確認ボタン(「検索開始」など)をタップすると、requestConfirmation が完了し、リクエスト元の inten 処理が再開される(チケット検索などの本来の処理)
  • システムは、snippet が表示されている限りアプリを終了しないため、メモリやデータベースに状態を保持しようとする必要はない

8:15 – New system integrations

  • Image Search: カメラやスクリーンショットからの画像検索結果に、アプリのコンテンツを表示可能に。IntentValueQuery に準拠し、SemanticContentDescriptor を入力としてエンティティを返すクエリを実装。
    • さらに検索結果を見たい場合にアプリに遷移する導線の実装:semanticContentSearch schema
    • @UnionValues
      • 従来、1つのクエリは1つの型のエンティティしか返せなかった
      • 「この写真に関連するランドマークと、そのランドマークが含まれるコレクションの両方を同時に表示したい」というニーズが実現できなかった
      • UnionValues により、1つのクエリで複数の型を返せる
  • Onscreen Entities: NSUserActivity を使い、画面上のコンテンツにエンティティを関連付けることで、SiriやChatGPT  (にスクリーンショットを送ることで) がそのコンテンツについて応答できるようになる。Transferable でPDFなどのデータ形式も提供可能。
  • Spotlight: MacのSpotlightから直接アクションを実行可能に。IndexedEntityPredictableIntent を活用し、検索候補の精度や関連性を向上。

15:01 – User experience refinements

  • UndoableIntent: App Intentで実行したアクションを、標準の「取り消し」ジェスチャーで元に戻せるようになるプロトコル。
  • Multiple-choice API: 複数の選択肢を提示し、ユーザーに選ばせるUIを簡単に実装可能。requestChoiceメソッドで選択肢を提示し、結果に応じて処理を分岐。
  • Supported Modes: background foreground(immediate/dynamic/deferred)などのモードをサポートし、Siriからの実行時やアプリ内での実行時で、Intentの振る舞い(UI表示の有無など)を動的に制御。

21:02 – Convenience APIs

  • View Control APIs: UIナビゲーションのロジックを Intent から分離し、SwiftUI ビュー側で onAppIntentExecution モディファイアを使ってハンドリング。コードの関心を分離し、見通しを良くする。
  • ComputedProperty: App Entity のプロパティを、値をコピーするのではなく、元のデータソースから直接算出できるマクロ。
  • DeferredProperty: App Entity のプロパティの値を、必要になるまで(例:ショートカットアプリで表示されるまで)非同期で遅延取得できるマクロ。高コストな処理を効率化。

コメントを残す

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