WWDC25:Get to know App Intents

キーノートで、Mac の Spotlight 機能 Shortcuts “Quick keys” に興味が湧いたので見てみた。AI要約+加筆。


0:00 – Introduction

  • App Intents は、アプリの機能を Apple プラットフォーム全体に拡張し、発見性・操作性・連携性を高めるためのフレームワーク
  • アプリのアクションやエンティティをシステム全体で利用可能にし、ユーザー体験を向上

0:45 – App Intents ecosystem

  • App Intents は Spotlight、Action Button、ウィジェット、コントロールセンター、Apple Pencil Pro など多様なシステム機能と連携
  • Spotlight から直接アクションを呼び出すことも可能
  • intent にはパラメタ (input) と戻り値 (output) があり、これらは Swift型 で表現される
  • Intent(動詞)、App Enum や App Entity(名詞)を定義し、アプリの操作やデータをシステムに公開
  • App Shortcuts で主要な Intent を強調し、Spotlight や Siri、Action Button などから即座に呼び出せる

2:47 – Navigating the framework

  • App Intent の実装方法を step by step で紹介
  • Intentはタイトルと perform メソッドが必須で、パラメータや戻り値も柔軟に定義可能
    • 戻り値は IntentResult : ダイアログやSiriが発話する結果を含めることができる
  • supportModesIntentModes.forground を設定し、アクション実行時にアプリを開くことができる
  • AppEnum で定数値、AppEntity で動的なデータを表現
    • AppEnum
      • typeDisplayRepresentation: 型全体の説明
      • caseDisplayRepresentation: 各 case の説明
        • DispayRepresentation(title:image) でアイコン指定も可能
      • これらは定数である必要があり、コンパイル時に使用される
  • パラメータやアイコン、Parameter Summary、質問文などで Shortcuts アプリ上のユーザー体験をカスタマイズ
    • AppIntent 実装に @Parameter 定義
      • Shortcuts app 上でユーザーが変更可能なパラメタとして表示される
      • title に加えて、requestValueDialog によりユーザー選択時に質問文を表示できる e.g. “”Which section?
    • ParameterSummary
      • Shortcuts アプリ上で、パラメタをインラインに埋め込んだ説明文として表示される
      • 定義することで Mac の Spotlight でもアクションが利用できるようになる
  • App Shortcts
    • システム横断して App Intent を自動的に引き出す
    • Siri や Spotlight からの呼び出しを容易にする
    • AppShortcutsProvider で複数のショートカットを一括管理
      • すべてのショートカットを包含する1つの Provider を定義するべき
      • AppShortcut(intent:phrases:shortTitle:systemImageName:)
        • phrases : Siriに呼びかけてショートカットを起動するフレーズ
        • .applicationName を含めなければならない、ひとつまでパラメタを含められる
  • 固定値の AppEnum に対して、AppEntity はIDやプロパティ、クエリ(検索・解決方法)を持ち、動的なデータ連携が可能
    • @Property を持てる(従来)
    • @ComputedProperty が追加された
      • 値の参照を持てるため、コピーする必要がない
    • TypeDisplayRepresentation(name:) DisplayRepresentation(title:) が必要
    • Entity Query が必要
    • EntityQuery:システムからの質問に対してどんなエンティティがあるかを答える
      • EntityStringQuery : この文字列にマッチするエンティティはあるか?
      • EntityPropertyQuery : e.g. この州に存在するすべてのラドマークは?
      • すべてのクエリは “ID” に対するエンティティを特定できなければならない
  • TransferableIndexedEntity プロトコルで画像や Spotlight 連携も実現
  • OpenIntentTargetContentProvidingIntent で Spotlight から直接詳細画面への遷移も可能
  • クエリの suggestedEntitiesEntityString/PropertyQuery などで、柔軟な検索・提案体験を提供
  • すべてがオンメモリなエンティティであれば EnumerableEntityQuery で、すべてを返すことができる

21:15 – How it works

  • App Intents は Swift コードが唯一の情報源 (certain values must be constant) で、ランタイムでなくビルド時に Intent の情報が抽出・格納される
  • 設定ファイル不要で、アプリやフレームワークにIntent情報が自動的に組み込まれる
  • Intentのタイトルやパラメータは定数値である必要があり、ビルド時に検証される
  • 複数ターゲットや Swift Package、静的ライブラリ間で Intent 型を共有できるようになった
    • 型の共有をするには App Intents Package への登録が必要
  • 小さな Intent から始めて、徐々に機能拡張や他のシステム連携を検討するのがおすすめ

「WWDC25:Get to know App Intents」への2件のフィードバック

コメントを残す

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