app-intents について
app-intentsは、AppleのApp Intentsフレームワークでアプリ機能を公開するSwiftコードの作成・レビューを支援するスキルです。タスク別の案内と、Intent、エンティティ、Siri、Spotlight、テストなどの確認項目を提供します。
主な機能
- 01Intentのプロトコル、パラメーター、戻り値のレビュー
- 02エンティティ、クエリー、Spotlightインデックスの検証
- 03SiriとApple Intelligence連携の案内
- 04ショートカット、ナビゲーション、スニペットの確認
- 05依存関係、実行、テストのパターンを網羅
活用シーン
- 01App Intentを作成して検出可能に登録
- 02SiriやSpotlightからアプリデータを検索可能にする
- 03Siriやショートカットから特定のアプリ内エンティティを開く
- 04Intentのテストや実装上の問題の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ n0an/ app-intents-agent-skill --skill app-intentsインストール後、Claude Code で/app-intentsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/anti-patterns.mdassistant-schemas.mddependencies.mdentities.mdfundamentals.mdlong-running-and-execution.mdonscreen-awareness.mdopen-and-snippet-intents.mdparameters.mdshortcuts-and-siri.mdsiri-intelligence.mdspotlight.mdtesting-intents.md詳細
App Intents フレームワークを通じてアプリの機能を公開する Swift コードを作成・レビューし、プロトコルへの適合、安全なデータフロー、慣用的な検出可能性の設定を確認します。
レビューの手順:
references/fundamentals.mdを使って、インテントの基本(プロトコル、perform()、戻り値の型、ダイアログ)を確認します。references/parameters.mdを使って、パラメーターとパラメーターオプションを検証します。references/entities.mdを使って、エンティティ型、表示表現、クエリを検証します。references/shortcuts-and-siri.mdを使って、AppShortcutsProviderの登録と検出可能性 UI を確認します。references/open-and-snippet-intents.mdを使って、OpenIntentのナビゲーションとスニペットビューの戻り値の型を検証します。references/dependencies.mdを使って、依存関係の注入とデータコントローラーのパターンを確認します。references/spotlight.mdを使って、IndexedEntity、IndexedEntityQuery、属性セットによる Spotlight のインデックス作成を検証します。references/assistant-schemas.mdを使って、@AssistantEntity/@AssistantIntentスキーマの採用を確認します。references/siri-intelligence.mdを使って、Siri/Apple Intelligence との連携(コンテンツの検索、カスタム応答、寄付、確認、所有権)を検証します。references/onscreen-awareness.mdを使って、画面上の認識とコンテンツの転送(ビューのアノテーション、IntentValueRepresentation、システム連携アノテーション)を確認します。- 30 秒を超えて実行されるインテント、キャンセルを処理するインテント、または特定のプロセスを対象とするインテントには、
references/long-running-and-execution.mdを使います。 - インテントのテストを作成またはレビューする場合は、
references/testing-intents.mdを使います(新しいAppIntentsTestingフレームワークを扱います)。 references/anti-patterns.mdを使って、よくある間違いを見つけます。
一部の作業のみを行う場合は、関連するリファレンスファイルだけを読み込みます。
タスク別の参照先
ユーザーの目的に合わせて、読み込む順序を選びます。必要なものだけを読み込みます。
「最初の App Intent を作成する」
references/fundamentals.md- プロトコル、perform()、戻り値の型references/shortcuts-and-siri.md- 表示されるように登録する
「Shortcuts でユーザーが選択するパラメーターを追加する」
references/parameters.md-@Parameter、プロンプト、曖昧さの解消references/entities.md- パラメーターがドメインエンティティの場合
「Siri/Spotlight からアプリのデータを検索できるようにする」
references/entities.md-AppEntity、IndexedEntity、@Propertyreferences/spotlight.md- インデックス作成の方針、属性セットreferences/shortcuts-and-siri.md- 柔軟なマッチング、フレーズのルール
「Siri がインテントを実行したときに概要/インタラクティブビューを表示する」
references/open-and-snippet-intents.md- インラインと間接スニペット、SnippetIntent、Button(intent:)references/fundamentals.md- 戻り値の型とスニペットの設計ルール
「Siri/Shortcuts からアプリ内の特定の項目を開く」
references/open-and-snippet-intents.md-OpenIntent、URLRepresentableIntent、TargetContentProvidingIntentreferences/dependencies.md- ナビゲーター/シーンのルーティング
「アプリのコンテンツやアクションを Siri/Apple Intelligence で利用できるようにする」
references/siri-intelligence.md- 連携モデル、コンテンツの検索(セマンティックインデックス/構造化検索/アプリ内検索)、カスタム応答、寄付、確認/所有権references/assistant-schemas.md- スキーママクロ、ドメイン、複数スキーマの要件、Xcode のスニペットreferences/onscreen-awareness.md- ビューのアノテーション、コンテンツの転送、システム連携アノテーション
「Apple Intelligence と連携する」
references/assistant-schemas.md- スキーママクロ、ドメイン、Use Model アクション、画面上のコンテンツreferences/entities.md-@Property、Transferable(複数のスキーマで必須)
「Siri が画面上の内容を理解できるようにする」
references/onscreen-awareness.md- 4 つのアノテーション API、コンテンツの転送、displayRepresentationsの高速パス、通知/再生中/AlarmKit でのアノテーションreferences/siri-intelligence.md- 画面上のコンテキストが Siri の全体的な仕組みにどう組み込まれるか
「インテントの実行時間を30秒より長くする、またはプロセスを指定する」
references/long-running-and-execution.md-LongRunningIntent、CancellableIntent、allowedExecutionTargets、バックグラウンド GPUreferences/fundamentals.md-ProgressReportingIntent、supportedModes
「大量のエンティティを効率的に処理する/デバイス間で同期する」
references/parameters.md-EntityCollection(識別子のみのパラメーター)references/entities.md- デバイス間の識別にはSyncableEntity、プロアクティブな提案にはRelevantEntities
「Visual Intelligence/画像検索に対応する」
references/assistant-schemas.md-IntentValueQuery、SemanticContentDescriptor、@UnionValuereferences/entities.md-TransferableとOpenIntentの組み合わせ
「インタラクティブなウィジェットまたはコントロールセンターのコントロールを作成する」
references/open-and-snippet-intents.md-Button(intent:)、WidgetConfigurationIntent、ControlConfigurationIntent、ControlWidgetButtonreferences/dependencies.md- App Group の共有ストレージ、プロセス境界
「App Intents を中心にアプリを構成する」
references/fundamentals.md- 正規のアクションレイヤーとしてのインテントreferences/dependencies.md-@Dependency、モジュール間のAppIntentsPackagereferences/entities.md- エンティティを橋渡しにするパターン
「App Intents をテストする」
references/testing-intents.md-AppIntentsTestingフレームワーク(プロセス外の統合テスト)、構造体の直接的な単体テスト、@Dependencyのモック化、テスト専用インテント、テストできない内容
「ビルドエラーや実行時のバグが発生している」
references/anti-patterns.md- 35件以上の問題と修正前/修正後の例
判断ツリー
タスクはわかっているものの、適切な API がわからない場合のクイックガイドです。
どのインテントプロトコルに準拠すればよいですか?
Generic action?
→ AppIntent
Opens the app to a specific entity?
→ OpenIntent (+ TargetContentProvidingIntent on iOS)
→ on iOS 27+, @AppIntent(schema: .system.open) on the OpenIntent, with a legacy sibling intent for older OS
Renders an interactive view only, no business logic?
→ SnippetIntent
Needs to bring the app forward conditionally?
→ AppIntent with supportedModes (iOS 26+)
→ or ForegroundContinuableIntent (iOS 17-18)
Runs longer than 30 seconds (upload, sync, inference)?
→ LongRunningIntent + performBackgroundTask (iOS 27+)
Needs to clean up gracefully when cancelled (with the reason)?
→ CancellableIntent + withIntentCancellationHandler (iOS 26.4+)
Deletes entities with standard confirmation?
→ DeleteIntent
Routes a search query into the app?
→ ShowInAppSearchResultsIntent
Backs widget configuration?
→ WidgetConfigurationIntent (empty conformance, no perform)
Backs a Control Center control?
→ ControlConfigurationIntent
Has a universal-link URL representation?
→ URLRepresentableIntent + OpenIntent (no perform needed)
Matches an Apple Intelligence domain?
→ AppIntent + @AppIntent(schema: .domain.action)
どのエンティティ型を使えばよいですか?
Fixed set known at compile time?
→ AppEnum
Dynamic data with a persistent id?
→ AppEntity
Entity must appear in Spotlight?
→ AppEntity + IndexedEntity
Entity IS a file (scan, voice memo, exported image)?
→ FileEntity
Computed / aggregated data with no stable id?
→ TransientAppEntity
Needs Apple Intelligence schema awareness?
→ AppEntity + @AppEntity(schema: .domain.type)
Supports cross-app sharing?
→ AppEntity + Transferable
エンティティにはどのクエリを使えばよいですか?
Small fixed set, enumerable?
→ EnumerableEntityQuery (also gets a basic Find intent)
Large dataset, searchable by name?
→ EntityQuery + EntityStringQuery
Many queryable properties, user should build predicates?
→ EntityPropertyQuery (auto-generates Find intent with comparators + sort)
Simple id-only lookup, no search?
→ UniqueIDEntityQuery
Indexed in Spotlight and want reindexing support?
→ IndexedEntityQuery (iOS 27+)
Structured Siri search you can't index ahead of time?
→ IntentValueQuery (structured input, returns 1+ entity types via @UnionValue)
Visual intelligence / image search?
→ IntentValueQuery + SemanticContentDescriptor
Siri がコンテンツを見つけられるようにするにはどうすればよいですか?
Content is local and indexable?
→ IndexedEntity + indexAppEntities (semantic index) - the primary path
→ add IndexedEntityQuery for reindexing support (iOS 27+)
Too large / server-side / too volatile to index?
→ IntentValueQuery (structured search input)
User wants to search inside your own UI?
→ @AppIntent(schema: .system.searchInApp) + ShowInAppSearchResultsIntent
Content nobody has found or used yet, but relevant right now?
→ RelevantEntities.updateEntities(_:for:) (iOS 27+)
Teach the system how people use the app (patterns)?
→ IntentDonationManager (donate UI interactions)
エンティティのフィールドにはどのプロパティラッパーを使えばよいですか?
Stored on the entity struct, should appear in Shortcuts/Find/summary?
→ @Property
Derived from an underlying model object (cheap to compute)?
→ @ComputedProperty (preferred over @Property for wrappers around models)
Derived AND should be indexed in Spotlight?
→ @ComputedProperty(indexingKey: \.keyName)
Expensive to compute (network, ML inference, heavy query)?
→ @DeferredProperty (async getter, only runs when system asks)
Internal to the entity, not shown anywhere?
→ plain stored property (no wrapper)
コア指示
- App Intents の最小ターゲットは iOS 16+/macOS 13+ です。
IndexedEntity、OpenIntent、フォーカスフィルター、コントロールウィジェットには iOS 16+ が必要です。@AssistantEntity/@AssistantIntentスキーマには iOS 18.2+ が必要で、アンカー付き相対日付スタイルや多くのアシスタントスキーマには iOS 18.4+ が必要です。27 リリース(WWDC 2026、iOS 27/macOS 27)では、LongRunningIntent、EntityCollection、SyncableEntity、RelevantEntities、IndexedEntityQuery、OwnershipProvidingEntity、allowedExecutionTargets、AppIntentsTestingフレームワーク、ネイティブのDuration/PersonNameComponentsパラメーターが追加されます。CancellableIntentとIntentValueRepresentationには iOS 26.4+ が必要です。supportedModesには iOS 26+ が必要です。Apple は WWDC 2026 の世代を「the 27 releases」と呼んでいます。「iOS 19」ではなく、この呼称を使ってください。 - SwiftData の
@Modelクラスや、その他の参照型データモデルをAppEntityに準拠させることは絶対に避けてください。AppEntityにはSendableが必要ですが、@Modelクラスは sendable ではありません。公開するフィールドを反映した別のstructエンティティを作成してください。 ModelContextをアクター境界の外へ渡すことは絶対に避けてください。ModelContextは sendable ではありません。sendable であるModelContainerを渡し、必要とするアクター内でローカルコンテキストを作成してください。- 型を記述するだけでインテントを Siri/Spotlight に公開することは絶対に避けてください。必ず
AppShortcutsProviderを通じて登録してください。ここに登録されていない型は、ショートカット、Siri の提案、アクションボタンの選択画面に表示されません。 \(.applicationName)を補間せずに Siri の起動フレーズを記述することは絶対に避けてください。アプリ名を含まないフレーズは他のアプリのコマンドと衝突するため、App Intents マクロはコンパイル時にそのようなフレーズを拒否します。- インテント内から SwiftUI の
@Queryにアクセスすることは絶対に避けてください。@Queryが機能するのはView内だけです。代わりにModelContextを通じて単発のFetchDescriptorを実行するか、中央のデータコントローラーを経由してください。 perform()内でサービス、データストア、認証マネージャーをインスタンス化することは絶対に避けてください。@Dependencyを通じて注入し、App.init()で一度だけAppDependencyManager.shared.add(dependency:)を使って登録してください。- ローカライズされたインテントのダイアログに
String(format:)や手動の文字列連結を使うことは絶対に避けてください。LocalizedStringResourceを使い、複数形にはAttributedString内で Foundation の文法一致マークダウン(^[\(count) item](inflect: true))を使ってください。 - アプリのストア/ナビゲーションがまだ存在しない状態(コールド起動、スプラッシュ画面、ルートビューでストアを構築する場合)でもインテントが実行される可能性がある場合は、UI が接続されるまでアクションをキューに入れるメインアクタールーターを経由し、Spotlight の
CSSearchableItemActionTypeユーザーアクティビティも同じアクションに送ってください。references/open-and-snippet-intents.mdを参照してください。 - 「この項目を開いて」といったアクションには
OpenIntentを優先してください。単独で完結する一度きりの要約にはAppIntent & ShowsSnippetViewを使ってください。スニペットにButton(intent:)が含まれ、ボタンの実行後に再描画が必要な場合は、AppIntent & ShowsSnippetIntentと対応するSnippetIntentを使ってください。 - ウィジェットボタン、スニペットボタン、その他のインテントを裏で支えるヘルパーインテントには、必ず
static let isDiscoverable: Bool = falseを設定してください。設定しないと、ユーザーのショートカットライブラリに不要な項目が増えます。 - インテントがウィジェットやコントロールウィジェットに表示されるデータを変更する場合は、
perform()内で戻る前にWidgetCenter.shared.reloadAllTimelines()を呼び出してください。 - ウィジェットビュー内に
Button(intent:)がある場合は、App Group のUserDefaults(suiteName:)または共有ModelContainerの URL を使って、インテント(アプリのプロセスで実行)とウィジェットのタイムラインプロバイダー(拡張機能のプロセスで実行)の間で状態を共有してください。UserDefaults.standardやメモリー内の@Dependency状態は絶対に使わないでください。 - ショートカットフレーズのキーパスにあるエンティティデータが変化した場合(作成、名前変更、削除)、
YourShortcutsProvider.updateAppShortcutParameters()を呼び出して、キャッシュされた候補リストを無効化してください。 - エンティティの全件数が少なく、読み込みも低コストな場合は
EnumerableEntityQueryを優先してください。データセットが大きい場合や検索可能にする場合は、EntityQueryとEntityStringQueryを実装してください。システム生成の検索インテントを利用するには、EntityPropertyQueryを追加してください。すべてのクエリーでentities(for identifiers:)の実装が必須です。これがないと、パラメーターの解決に失敗します。 - ユーザーがフィルター、並べ替え、パラメーター概要での参照に使う可能性があるエンティティフィールドには、保存プロパティなら
@Property、派生プロパティなら@ComputedPropertyを付けてください。通常の保存プロパティは App Intents フレームワークから認識されません。 - オンザフライで計算される戻り値(要約、集計)には
TransientAppEntityを使ってください。偽の ID を付けてAppEntityに無理に当てはめようとしないでください。 - エンティティにユニバーサルリンク URL がすでにある場合は、
URLRepresentableEntityに準拠させ、オープンインテントをURLRepresentableIntentに準拠させてください。そうすれば、perform()を実装せずにシステムが既存のリンクハンドラー経由で開きます。 - 画面上に表示され、Siri が内容を理解できるようにしたいエンティティには、ビューの
.userActivity(_:element:)とエンティティのTransferable準拠を組み合わせてください。識別情報だけでは不十分です。Siri が認識するには、エクスポート可能なコンテンツが必要です。 SnippetIntent.perform()は、ユーザーの操作ごとに複数回(最初の表示、各ボタンのタップ後、外観の変更時、reload()時)呼び出されます。純粋な処理を保ち、状態を読み取り、ビューを組み立てて返してください。スニペットインテントのperform()内でアプリの状態を変更したり、時間のかかる処理を開始したりすることは絶対に避けてください。- 厳格な上限を守ってください。1 アプリあたりの
AppShortcutは 10 個、トリガーフレーズは合計 1000 個(パラメーター展開を含む)です。各ショートカットの配列の最初のフレーズがメインフレーズです。これはショートカットのホームタイルと、Siri が「X で何ができますか?」と尋ねられたときの回答に表示されます。 - 各 App Shortcut には、パラメーター化されていないフレーズを少なくとも 1 つ含めて、初回起動前から見つけられるようにしてください。アプリが一度実行されてパラメーターキャッシュにデータが入るまで、パラメーター化されたフレーズは Spotlight に表示されません。
- 実行時の状態に応じてフォアグラウンド化する新しいコードでは、
ForegroundContinuableIntent/needsToContinueInForegroundErrorよりもsupportedModesとcontinueInForeground(iOS 26+)を優先してください。新しい形式では、1 つのインテントで実行時の状態に応じてバックグラウンドまたはフォアグラウンドで実行される可能性があることを宣言できます。 - スニペットビューの高さは 340 ポイントまでです。それを超えると、スクロールによってひと目で確認できるオーバーレイの仕組みが損なわれます。詳細なコンテンツにはアプリ本体へのリンクを用意し、読み取り距離でも読みやすいように、スニペットのテキストはシステムのデフォルトより大きくしてください。
- Apple Intelligence の「Use Model」アクションから入力される可能性があるテキストパラメーターは、
StringではなくAttributedStringとして宣言し、リッチな書式(太字、斜体、リスト、表)を損失なく保持してください。 - インテントの実行時には、UI が表示されない場合でもアプリの
App構造体のイニシャライザーが実行されます。インテントに必要なセットアップ(ModelContainerの作成、AppDependencyManager.shared.add(...)、ログの配線)は、.taskや.onAppearなどのビュー修飾子内ではなく、init()内で行ってください。 LocalizedStringResourceは、App Intents のあらゆる場所(タイトル、ダイアログ、パラメーターのプロンプト)で使われる標準の文字列型です。SwiftUI と文字列カタログを共有するため、すぐにローカライズできます。- 文法一致(
inflect: true)は、英語、フランス語、ドイツ語、イタリア語、スペイン語、ポルトガル語(両方の変種)で機能します。それ以外のロケールでは、変更前の形式が使われます。 - システムの画面から起動されたインテントの実行時間は約 30 秒です(macOS には厳格な上限はありません)。アップロード、同期、大容量ファイルの操作、オンデバイス推論には
LongRunningIntentに準拠し、performBackgroundTask { ... }内で処理を実行してください。また、進捗を定期的に報告してください。報告が止まると、システムが実行時の拡張機能を終了することがあります。キャンセル理由に応じて後処理するには、CancellableIntentと組み合わせてください。制限を回避するために切り離されたTaskを使うことは避けてください。管理されていないタスクは拡張機能の対象外です。 perform()で主に ID が必要な、多数のエンティティを含む可能性のあるパラメーターには、[Entity]ではなくEntityCollection<Entity>を使ってください。パラメーター処理中にエンティティ全体を解決する処理を省略できます。オブジェクト全体が必要なときだけresolvedEntities()を呼び出してください。- スキーマベースの更新インテントでは、
$parameter.valueState(.set(value)/.set(nil)/.unset)を使って「変更しない」と「クリアする」を区別し、単純なnilチェックは使わないでください。そうしないと、音声コマンドでフィールドをクリアできません。 - デバイスをまたぐ会話で Siri がエンティティを参照する可能性がある場合は、エンティティを
SyncableEntityに準拠させてください。ID がすでにどこでも一貫している(サーバー UUID、CloudKit レコード ID)場合は、プロトコルに準拠させるだけで構いません。それ以外の場合は、ローカル ID と安定した ID をSyncableEntityIdentifierで組み合わせてください。 - 共有可能なエンティティは
OwnershipProvidingEntityに準拠させ、所有権を表すownership(.shared/.public)を最新の状態に保ってください。そうすることで、ユーザーが共有または公開したコンテンツに対するアクションを Siri が確認できます。デフォルトでは、Siri はエンティティを非公開とみなし、確認を省略することがあります。 - 他のアプリが理解できる構造化型(座標、連絡先、名前)を渡すには、エンティティの
transferRepresentationにValueRepresentationビルダーを使ってIntentValueRepresentationを追加してください。FileRepresentation/DataRepresentationが扱うのはファイル形式だけです。エンティティにシステム型がすでに保存されている場合は、キーパス形式(ValueRepresentation(exporting: \.place))を使ってください。 - 画面上の内容を認識させる場合は、形状に応じてアノテーションを選んでください。主要項目が 1 つなら
.userActivity、複数のうちの 1 つなら.appEntityIdentifier(_:)、複数ある場合に遅延読み込みするならList/コレクションで.appEntityIdentifier(forSelectionType:)、カスタムのCanvas/CALayer描画なら.appEntityUIElements(_:)を使います。通知、再生中画面、AlarmKit でアノテーションを使うには、実際のAppEntityが必要です。TransientAppEntityには永続 ID がないため、これらの場面では使えません。データベース全体を取得せずに Siri が画面上のエンティティを解決できるよう、displayRepresentationsクエリーメソッドを追加してください。 - UI 操作は
IntentDonationManagerを使って提供してください(Siri/ショートカットの実行はシステムがすでに提供します)。アクション完了後に提供し、過剰に提供しないでください(システムが無視するようになります)。古くなった提供内容は削除してください。 - 統合対象(インテント、クエリー、
spotlightQuery()、viewAnnotations())のテストには、AppIntentsTestingフレームワーク(プロセス外、XCUITest バンドル内)を使ってください。テスト専用インテント(isDiscoverable = falseと#if DEBUG)を使ってデータを準備し、内部状態にアクセスしてください。純粋なロジックについては、perform()を直接テストする構造体テストも維持してください。
出力形式
ユーザーがレビューを依頼した場合は、ファイルごとに指摘事項を整理します。各問題については、次の内容を記載します。
- ファイル名と該当する行番号を示します。
- 置き換えるべきアンチパターンの名前を挙げます。
- 修正前と修正後のコードを簡潔に示します。
問題のないファイルは省略します。最後に、優先度の高い順に、まず行うべき変更をまとめます。
ユーザーが intent code の作成または修正を依頼した場合は、指摘事項のレポートを返すのではなく、直接変更を加えます。
出力例:
RecentItemsIntent.swift
18 行目:SwiftData の @Model は AppEntity に準拠できません(Sendable ではないため)。
// Before
extension Article: AppEntity { ... }
// After
struct ArticleEntity: AppEntity {
var id: UUID
var title: String
static let typeDisplayRepresentation: TypeDisplayRepresentation = "Article"
static let defaultQuery = ArticleEntityQuery()
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(title)")
}
}
42 行目:Siri のフレーズに \(.applicationName) がありません。ビルドに失敗します。
// Before
AppShortcut(intent: OpenArticleIntent(), phrases: ["Open an article"], ...)
// After
AppShortcut(intent: OpenArticleIntent(), phrases: ["Open an article in \(.applicationName)"], ...)
まとめ
- Sendability(高):
AppEntityとしてのArticleは Swift 6 でコンパイルに失敗します。シャドウ構造体を作成してください。 - Siri のフレーズ(高): すべてのフレーズで
\(.applicationName)が必要です。
例は以上です。
参考資料
references/fundamentals.md-AppIntentプロトコル、perform()、戻り値の型(IntentResult、ProvidesDialog、ReturnsValue、ShowsSnippetView、OpensIntent)、intent ダイアログ、文法上の一致。references/parameters.md-@Parameter、プリミティブ型とエンティティ型のパラメーター、@AppEnum、ダイアログのオプション、パラメーターのプロンプト。references/entities.md-AppEntity、IndexedEntity、シャドウ構造体パターン、表示表現、エンティティクエリ(EnumerableEntityQuery、EntityQuery、EntityStringQuery、UniqueIDEntityQuery)。references/shortcuts-and-siri.md-AppShortcutsProvider、フレーズ(\(.applicationName)のルール)、shortcutTileColor、SiriTipView、ShortcutsLink、パラメーターの表示。references/open-and-snippet-intents.md-OpenIntent、スニペットビュー(ShowsSnippetView)、データコントローラーを介したナビゲーション、用途に応じた使い分け。references/dependencies.md-@Dependency、AppDependencyManager、データコントローラーパターン、ModelContainerとModelContextの Sendability、メインアクターとローカルコンテキストのトレードオフ。references/spotlight.md-IndexedEntity、IndexedEntityQuery(再インデックス)、CSSearchableIndex、attributeSet、セマンティックインデックス、起動時と変更時のインデックス作成、デバウンスによる再インデックス。references/assistant-schemas.md-@AssistantEntity、@AssistantIntent、スキーマの採用、複数スキーマの要件、.system.searchInApp、Visual Intelligence(iPad/macOS、システムのストア)、Xcode のコードスニペット、注意事項。references/siri-intelligence.md- Siri/Apple Intelligence の統合モデル:コンテンツの検索(セマンティックインデックス/構造化検索/アプリ内検索)、カスタム応答、インタラクションの提供、確認とOwnershipProvidingEntity、検証フロー。references/onscreen-awareness.md- 画面上の注釈 API 4 種類、コンテンツの転送(IntentValueRepresentation、解決とインポート)、displayRepresentationsの高速パス、Notifications/Now Playing/AlarmKit でのエンティティ注釈。references/long-running-and-execution.md- 30 秒の実行時間、LongRunningIntentとperformBackgroundTask、CancellableIntent、バックグラウンド GPU、allowedExecutionTargets。references/testing-intents.md-AppIntentsTestingフレームワーク(プロセス外の統合テスト)、perform()の直接的なユニットテスト、AppDependencyManagerを使用した@Dependencyのモック、テスト専用 intent、ユニットテストではできないこと。references/anti-patterns.md- LLM が App Intents コードの生成時によく犯す間違い。
コメント
Markdown 対応