キーノートで、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が発話する結果を含めることができる
- 戻り値は
supportModes
をIntentModes.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
を含めなければならない、ひとつまでパラメタを含められる
- すべてのショートカットを包含する1つの
- 固定値の
AppEnum
に対して、AppEntity
はIDやプロパティ、クエリ(検索・解決方法)を持ち、動的なデータ連携が可能@Property
を持てる(従来)@ComputedProperty
が追加された- 値の参照を持てるため、コピーする必要がない
TypeDisplayRepresentation(name:)
DisplayRepresentation(title:)
が必要- Entity Query が必要
EntityQuery
:システムからの質問に対してどんなエンティティがあるかを答えるEntityStringQuery
: この文字列にマッチするエンティティはあるか?EntityPropertyQuery
: e.g. この州に存在するすべてのラドマークは?- すべてのクエリは “ID” に対するエンティティを特定できなければならない
Transferable
やIndexedEntity
プロトコルで画像や Spotlight 連携も実現OpenIntent
やTargetContentProvidingIntent
で Spotlight から直接詳細画面への遷移も可能- クエリの
suggestedEntities
やEntityString/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件のフィードバック