ハイライト
Siri の底层アーキテクチャは iOS 18 で質的変化——Apple Intelligence の大規模言語モデルにより、開発者は
@AssistantIntent(schema:)Macro で App Intent を定義済み Schema に適合させるだけで、Apple が訓練した自然言語理解能力を無料で利用可能(06:26)。
主要内容
過去の Siri 連携体験は良くありませんでした。ユーザーは固定フレーズを覚える必要があり、一語間違えると Siri は理解できません。開発者の選択肢も限られていました:SiriKit の定義済みドメイン(音楽、メッセージ)か、複雑な自然言語解析を自前で処理するか。
今年 Apple はルールを変えました。大規模言語モデルで Siri の言語理解層を再構築し、App Intent Domains と Assistant Schemas を導入。本質的な考え方:Apple のモデルは特定「形状」の Intent 向けに大量訓練済み——AppIntent をその形状に適合させれば、Siri の自然言語理解を無料で得られます。
Apple は 12 の Domain を公開、Books、Camera、Mail、Photos、Spreadsheets 等をカバー、100 以上の定義済み Schema を含む。Mail と Photos は iOS 18 リリース時に利用可能、残りは順次提供。app の機能がこれら Domain に該当すれば、連携コストは極めて低い——AppIntent の前に @AssistantIntent(schema:) Macro を 1 行追加するだけ。
操作に加え、Apple は In-App Search と Semantic Search を導入。前者で Siri が app 内検索を直接呼び出し結果ページへナビゲート;後者で Siri がコンテンツの意味を理解(「ペット」で検索すると猫犬蛇もヒット)、キーワード一致にとどまりません。
詳細
Assistant Schemas:1 行で自然言語理解
従来の AppIntent は大量のボイラープレートが必要:
struct CreateAlbumIntent: AppIntent {
static var title: LocalizedStringResource = "Create Album"
static var description = IntentDescription(
"Creates a new photo album",
categoryName: "Media"
)
@Parameter(title: "Album Name")
var albumName: String
@Parameter(title: "Photos")
var photos: [PhotosAsset]
var openAppWhenRun: Bool = true
func perform() async throws -> some IntentResult & ReturnsValue<AlbumEntity> {
// 実装ロジック
}
}
Assistant Schema 使用後、コードは次のように簡素化:
@AssistantIntent(schema: .photos.createAlbum)
struct CreateAlbumIntent: AppIntent {
@Parameter(title: "Album Name")
var albumName: String
@Parameter(title: "Photos")
var photos: [PhotosAsset]
func perform() async throws -> some IntentResult & ReturnsValue<AlbumEntity> {
// 実装ロジック
}
}
キーポイント:
@AssistantIntent(schema:)Macro 宣言後、title、description、categoryName等のメタデータは不要——Schema の形状が定義済みopenAppWhenRun等のプロパティも自動処理performメソッドは完全に開発者の制御下——Apple は入出力形状のみ定義、実装は開発者
柔軟性が必要ならオプションパラメータを拡張:
@AssistantIntent(schema: .photos.createAlbum)
struct CreateAlbumIntent: AppIntent {
@Parameter(title: "Album Name")
var albumName: String
@Parameter(title: "Photos")
var photos: [PhotosAsset]
// 拡張パラメータ——Schema 未定義の属性
@Parameter(title: "Album Color")
var albumColor: AlbumColor?
}
Assistant Entity:Siri が理解できるコンテンツに
AppIntents の Entity にも対応 Macro:
@AssistantEntity(schema: .photos.asset)
struct AssetEntity: AppEntity {
var id: PersistentIdentifier
var title: String
var creationDate: Date
var location: Location?
var hasSuggestedEdits: Bool // Schema が要求する属性
static var typeDisplayRepresentation: TypeDisplayRepresentation = "Asset"
static var defaultQuery = AssetQuery()
}
キーポイント:
- コンパイラが Entity が Schema 形状に適合するかチェック——
hasSuggestedEdits欠如はコンパイル失敗(12:18) - Xcode がコードスニペットで必須属性を自動入力
- オプション属性の拡張も可能
Assistant Enum:列挙型を公開
@AssistantEnum
struct AlbumColor: AppEnum {
case red, blue, green, yellow
static var typeDisplayRepresentation: TypeDisplayRepresentation = "Color"
static var caseDisplayRepresentations: [AlbumColor: DisplayRepresentation] = [
.red: "Red", .blue: "Blue", .green: "Green", .yellow: "Yellow"
]
}
キーポイント:
- Assistant Enum は列挙 case の形状を制限しない——完全に自由定義
- 1 行 Macro で必須設定を完了
Siri リクエストのライフサイクル
Assistant Schemas の動作を理解するにはリクエスト全体のフローを見る(05:34):
- ユーザーリクエスト → Apple Intelligence が処理
- モデル推論 → Schema 形状に基づき一致 Intent を予測
- ツールボックスルーティング → 該当 Schema に適合する全 AppIntents から選択
- 実行 → AppIntent の
performメソッドを呼び出し - 結果提示 → ユーザーに返却
AppIntent が Schema に適合することで、モデルが「推論」可能。Schema 形状が重要な理由——モデルは特定形状向けに訓練されている。
In-App Search:app 内検索を呼び出し
ShowInAppSearchResultsIntent を基に、Apple は System Domain の Search Schema を追加:
@AssistantIntent(schema: .system.search)
struct SearchAssetsIntent: AppIntent {
@Parameter(title: "Search Criteria")
var criteria: String
func perform() async throws -> some IntentResult {
// app 内検索結果ページへナビゲート
navigationManager.openSearch(with: criteria)
return .result()
}
}
キーポイント:
- ユーザーは「[app 名] で自転車を検索」と言える(16:24)
- Siri が app を直接開き検索結果 UI へナビゲート
- 現時点は Shortcuts でテスト可能、将来 Siri 音声対応はソフトウェア更新で
Semantic Search:キーワードを超えた理解
Apple Intelligence で Siri が意味を理解:
// ユーザーが「ペットの写真を探して」と言う
// Siri は「ペット」という語だけでなく、猫、犬、蛇などの画像も見つける
この機能をサポートするには Entity を IndexedEntity としてマーク(19:56):
@AssistantEntity(schema: .photos.asset)
struct AssetEntity: IndexedEntity { // IndexedEntity に適合
// ...
}
キーポイント:
IndexedEntityプロトコルでコンテンツがセマンティックインデックスに入る- Siri は「ペット」に猫犬蛇、「風景」に山川湖海を理解
- コンテンツ発見後、Siri が直接操作を実行(共有、編集等)
テストフロー:Shortcuts で検証
現段階(iOS 18 リリース時)、Assistant Schemas は主に Shortcuts app でテスト(19:23):
- Schema に適合する全 AppIntent が Shortcuts アクションリストに自動表示
- ショートカットを作成してパラメータ渡しと実行結果をテスト
- 将来の Siri 音声対応はソフトウェア更新で提供
重要ポイント
1. 写真/メディア系 app に Siri サポートを追加
写真、動画、メディアを扱う app なら、Photos Domain の Schema で低コストに Siri 連携可能。例:「昨日撮った写真をカリフォルニアアルバムに追加」「この写真にフィルターを適用」。ユーザーは音声で複雑な操作を完了、多段タップ不要。
始め方:
- 機能が Photos Domain の 10 以上の Schema(CreateAlbum、OpenAsset、SetFilter 等)に該当するか確認
- 既存 AppIntent に
@AssistantIntent(schema:)Macro を追加 - Shortcuts でパラメータと実行結果を検証
2. app 内検索を Siri に公開
検索機能がある app なら In-App Search Schema で Siri が直接呼び出し可能。メール app(「自転車に関するメールを全部探して」)、メモ app(「プロジェクト計画を検索」)——ユーザーは app を開いて手入力する必要なし。
始め方:
- app に検索 UI と API があることを確認
.system.searchSchema に適合する AppIntent を作成performが検索結果ページへ正しくナビゲートすることを確認
3. IndexedEntity でセマンティック検索可能に
ユーザー生成コンテンツ(写真、メモ、ドキュメント)がある app なら、Entity を IndexedEntity としてマークすると Siri がコンテンツの意味を理解。「旅行の写真を探して」と言われても、写真に「旅行」タグがなくても、場所や時間等の意味から推論可能。
始め方:
- AppEntity で
IndexedEntityプロトコルにも適合 - 豊富な属性(場所、時間、人物、タイプ)を提供
- Spotlight 検索が統合されていることを確認
関連セッション
- Bring your app’s core features to users with App Intents — App Intents フレームワークの核心概念:Intent、Entity、Query の完全ガイド
- What’s new in App Intents — IndexedEntity 等新能力の詳解
- Design for Apple Intelligence — Apple Intelligence 連携時の設計原則
- Meet Apple Intelligence — Apple Intelligence の全体能力とアーキテクチャ
コメント
GitHub Issues · utterances