View in English

  • Apple Developer
    • 今すぐ始める

    「今すぐ始める」を詳しく見る

    • 概要
    • 学ぶ
    • Apple Developer Program

    最新情報

    • 最新ニュース
    • Hello Developer
    • プラットフォーム

    プラットフォームを詳しく見る

    • Appleプラットフォーム
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    特集

    • デザイン
    • 配信
    • ゲーム
    • アクセサリ
    • Web
    • Home
    • CarPlay
    • テクノロジー

    テクノロジーを詳しく見る

    • 概要
    • Xcode
    • Swift
    • SwiftUI

    特集

    • アクセシビリティ
    • App Intent
    • Apple Intelligence
    • ゲーム
    • 機械学習とAI
    • セキュリティ
    • Xcode Cloud
    • コミュニティ

    コミュニティを詳しく見る

    • 概要
    • 「Appleに相談」イベント
    • コミュニティによるイベント
    • デベロッパフォーラム
    • オープンソース

    特集

    • WWDC
    • Swift Student Challenge
    • デベロッパストーリー
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Center
    • ドキュメント

    ドキュメントを詳しく見る

    • ドキュメントライブラリ
    • テクノロジー概要
    • サンプルコード
    • ヒューマンインターフェイスガイドライン
    • ビデオ

    リリースノート

    • 注目のアップデート
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • ダウンロード

    ダウンロードを詳しく見る

    • すべてのダウンロード
    • オペレーティングシステム
    • アプリ
    • デザインリソース

    特集

    • Xcode
    • TestFlight
    • フォント
    • SF Symbols
    • Icon Composer
    • サポート

    サポートを詳しく見る

    • 概要
    • ヘルプガイド
    • デベロッパフォーラム
    • フィードバックアシスタント
    • お問い合わせ

    特集

    • アカウントヘルプ
    • App Reviewガイドライン
    • App Store Connectヘルプ
    • 近日導入予定の要件
    • 契約およびガイドライン
    • システムステータス
  • クイックリンク

    • イベント
    • ニュース
    • Forum
    • サンプルコード
    • ビデオ
 

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • Summary
  • コード
  • AppIntentsTestingによるApp Intentの利用状況の検証

    AppIntentsTestingは、Siri、ショートカット、Spotlightで利用されているインフラストラクチャを使ってApp Intentの検証を行うための、新しいフレームワークです。このセッションでは、Intentの実行、結果の調査、エンティティやクエリのテストを、UIの自動化を必要とせずに実行する方法を解説します。ビューの注釈付けやSpotlightでのインデックス作成などの統合を検証し、開発ワークフローの初期段階でバグを検出する方法もカバーします。

    関連する章

    • 0:16 - Introduction
    • 2:01 - Meet CometCal: your first test
    • 2:29 - How AppIntentsTesting works
    • 9:39 - Testing entity queries
    • 13:49 - Combining multiple intents
    • 16:27 - Test-only intents
    • 18:22 - Testing Spotlight indexing
    • 20:56 - Testing view annotations
    • 24:00 - The App Intents testing workflow
    • 25:19 - Next steps

    リソース

    • Testing your App Intents code
    • App Intents Testing
      • HDビデオ
      • SDビデオ
  • このビデオを検索
    • 6:48 - Your first test: execute an intent

      import AppIntentsTesting
      
      func testCreateCalendar() async throws {
          let definitions = IntentDefinitions(bundleIdentifier: "com.example.apple-samplecode.CometCal")
          let createCalendar = definitions.intents["CreateCalendarIntent"]
          let result = try await createCalendar.makeIntent(
              name: "Occupy Saturn",
              color: "red"
          ).run()
          XCTAssertEqual(try result.value.title, "Occupy Saturn")
      }
    • 12:25 - Test an entity string query

      // Testing Entity string queries
      func testEventStringQuery() async throws {
          let results = try await eventEntityDefinition
              .entities(matching: "Cosmic Ray")
      
          XCTAssertEqual(results.count, 1)
          XCTAssertEqual(try results[0].title, "Cosmic Ray Calibration")
      }
    • 13:00 - Implement the EntityStringQuery under test

      // Updated query implementation
      struct EventEntityQuery: EntityStringQuery {
          func entities(for identifiers: [EventEntity.ID]) async throws -> [EventEntity] {
      
          }
      
          func suggestedEntities() async throws -> [EventEntity] {
      
          }
      
          func entities(matching string: String) async throws -> [EventEntity] {
              try calendarManager.fetchEvents()
                  .filter { $0.title.localizedCaseInsensitiveContains(string) }
                  .map(\.entity)
          }
      }
    • 15:42 - Chain multiple intents in one test

      // Test event creation followed by update
      func testCreateAndUpdateEvent() async throws {
          let createResult = try await createEventDefinition.makeIntent(
              title: "Asteroid Dodgeball Practice",
              startDate: Date(),
              isAllDay: false,
              calendar: "Deep Space"
          ).run()
      
          XCTAssertEqual(try createResult.value.title, "Asteroid Dodgeball Practice")
      
          let updateResult = try await updateEventDefinition.makeIntent(
              title: "Asteroid Dodgeball Rules Overview",
              event: createResult.value
          ).run()
      
          XCTAssertEqual(try updateResult.value.title, "Asteroid Dodgeball Rules Overview")
      }
    • 17:45 - Make an intent test-only

      // Test-only intent: SeedSampleEventsIntent
      #if DEBUG
      struct SeedSampleEventsIntent: AppIntent {
          static let isDiscoverable = false
      
          func perform() async throws -> some IntentResult {
              // Create known list of events
              return .result()
          }
      }
      #endif
    • 20:27 - Test Spotlight indexing

      // Testing Spotlight indexing
      func testNewEventIndexedInSpotlight() async throws {
      
          let before = try await eventEntityDefinition.spotlightQuery("Supernova Viewing Party")
          XCTAssertTrue(before.isEmpty, "Event should not exist in Spotlight yet")
      
          // ... Create "Supernova Viewing Party" Event
      
          let after = try await eventEntityDefinition.spotlightQuery("Supernova Viewing Party")
          XCTAssertEqual(after.count, 1)
          XCTAssertEqual(try after[0].title, "Supernova Viewing Party")
      }
    • 22:33 - Test view annotations

      / Testing view annotations
      func testEventViewAnnotation() async throws {
          try await openEventDefinition.makeIntent(target: "Morning Launch Briefing").run()
      
          // Confirm correct event page
          let app = XCUIApplication()
          let title = app.staticTexts["Morning Launch Briefing"]
          XCTAssertTrue(title.waitForExistence(timeout: 5))
      
          let annotations = try await eventEntityDefinition.viewAnnotations()
      
          XCTAssertEqual(annotations.count, 1, "Expected exactly one view annotation")
          XCTAssertEqual(try annotations[0].entity.title, "Morning Launch Briefing")
      }
    • 0:16 - Introduction
    • AppIntentsTesting, a new framework for testing App Intents, which power Siri, Shortcuts, Spotlight, and Widgets. Outlines the agenda: getting started, framework overview, testing intents and entities, and system integrations.

    • 2:01 - Meet CometCal: your first test
    • Introduces the CometCal sample calendar app and writes a first test for CreateCalendarIntent: create a UI testing bundle, build an IntentDefinitions from the bundle id, call makeIntent with parameters, run() it on-device, and assert on the returned entity via dynamic member lookup.

    • 2:29 - How AppIntentsTesting works
    • An integration testing framework that runs your tests in a standard XCUITest bundle while the app runs in a separate process, executing intents through the full App Intents stack, with no mocks and no app-code imports (just a bundle id), giving stable, CI-friendly tests.

    • 9:39 - Testing entity queries
    • Test-driven development of an EntityStringQuery: call entities(matching:) on the entity definition, watch it fail, implement the entities(matching:) conformance on EventEntityQuery, and rerun to green, verified against Shortcuts on device.

    • 13:49 - Combining multiple intents
    • Chain intents in one test as people compose Shortcuts: run CreateEventIntent (with the runtime resolving a CalendarEntity from a string), then pass the returned EventEntity straight into UpdateEventIntent and assert the updated title.

    • 16:27 - Test-only intents
    • Focused intents that exist only for tests, to seed known state, jump directly to a view, or wrap not-yet-adopted functionality. Make any intent test-only with isDiscoverable: false and an #if DEBUG guard.

    • 18:22 - Testing Spotlight indexing
    • Write a regression test for Spotlight: spotlightQuery() returns nothing before the event exists, create it with CreateEventIntent, then assert exactly one indexed result, catching the real bug where indexing was commented out.

    • 20:56 - Testing view annotations
    • Verify the entity Siri sees on screen: open an event via OpenEventIntent, use XCUI to confirm the page, call viewAnnotations(), and assert the single ViewAnnotation's entity, surfacing a bug where the wrong EntityIdentifier (calendar id) was used.

    • 24:00 - The App Intents testing workflow
    • Where AppIntentsTesting fits: unit-test the fundamental types (actions, data, queries) first, then integration-test deeper system reaches (view annotations, Spotlight, cross-app), and still test manually with Siri and Shortcuts.

    • 25:19 - Next steps
    • Download the CometCal sample project and its full test suite, consult the AppIntentsTesting documentation for the complete API, and explore the talk on building Siri experiences with App Intents.

Developer Footer

  • ビデオ
  • WWDC26
  • AppIntentsTestingによるApp Intentの利用状況の検証
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • Apple Intelligence
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • Mini Apps Partner Program
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    最新ニュースを読む。
    Apple Developerアプリを入手する。
    Copyright © 2026 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン