Upgrade to Pro — share decks privately, control downloads, hide ads and more …

世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実...

Avatar for touyou touyou
September 11, 2026

世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド

#iosdc #c
iOSDC Japan 2026 Day 1 Track Cにて話した内容のスライドです。

Avatar for touyou

touyou

September 11, 2026

More Decks by touyou

Other Decks in Programming

Transcript

  1. App Intents 世 界 の 中 心 で、 AI を

    さ けぶ App Intents中心設計の実践ガイド #iosdc #c とうよう 藤井 陽介 株式会社グッドパッチ デザインエンジニア 9.12 iOSDC 2026
  2. 藤井 陽介 / touyou 株式会社グッドパッチ デザインエンジニア (2021 - ) オンライン劇場ZA

    UXエンジニア (2020 - ) DroidKaigiスタッフ (2025 - ) 2021年新卒として株式会社グッドパッチに入社。iOSを中心に Webフロントエンド、Flutterなどさまざまな技術スタックでの クライアントワークに従事。 直近はクライアントワークの傍ら、デザインシステムSparkle Designの技術面を担当したり、Layermateチームに参画するなどの 活動を通してAI x Designを技術面から探究中。 いいデザインをより良い形で実装するのが好き。 ポータルページ 世界の中 心で、AI をさ けぶ 最近作ったもの 今日の元ネタ
  3. とは 顧客体験を起点に企業変革を前進させる デザインカンパニー 2 0 11年 9 設 。2 02

    0年6 本のデザイン 会社 として 初の 東証マ ザ ーズ( 現グロース ) 上場 。 「 デ ザイ ンパ ートナ ー事業」 と 「 デザ インプラ ット フォ ーム 事業 」 2つの ビジ ネス を持つデザインカンパニーです。 「 AI D ri ve n D es ig n C om pany 」を 掲げ、顧客体験 を起点 にした課題解決 と 「 デ ザイ ン×AI 」による 価値創造に 取り組 んでいます。 詳しくは https://goodpatch.com/ へ WWDC関連のイベントを毎年開催! 日 月 立 月 世界の中 心で、AI をさ けぶ
  4. App Intentsとは? struct SampleIntent: AppIntent { static var title: LocalizedStringResource

    { "Sample" } func perform() async throws -> some IntentResult { // 何かしらの処理をする return .result() } } 世界の中 心で、AI をさ けぶ
  5. App Intentsとは? struct SampleEntity: AppEntity { var id: String var

    value: String } struct SampleIntent: AppIntent { static var title: LocalizedStringResource { "Sample" } @Parameter(title: "Value") var value: SampleEntity func perform() async throws -> some IntentResult { // 何かしらの処理をする } } return .result() 世界の中 心で、AI をさ けぶ
  6. App Intentsはウィジェットを動かす Button(intent: addTodoIntent) { Text(“Add”) } Toggle(isOn: $isCompleted, intent:

    toggleCompleteIntent) { Text(“Completed”) } 世界の中 心で、AI をさ けぶ
  7. これまで 2026年 Siri Siri AI Assistant Schemas App Schemas @AssistantIntent

    / @AssistantEntity (2024年) @AppIntent(schema:) / @AppEntity(schema:) iOS Visual Intelligence macOS + schema 2025年 .visualIntelligence.semanticContentSearch テストは特になし AppIntentsTesting 単一デバイスでのシステム連携 SyncableEntity 世界の中 心で、AI をさ けぶ
  8. I think it's just really exciting and I can't wait

    to see how we'll eventually get to this ecosystem where you have all of these apps that are deeply integrated with Siri and Apple Intelligence providing content to the semantic index so that, you know, people can ask natural questions about content from all these di erent kinds of apps and get answers instantly. ー Apple, Daniel Niemeyer 本当にわくわくしますし、最終的にどうやってこのエコシステムが実現するのか、待ちきれない思 いです。そこでは、あらゆるアプリがSiriやApple Intelligenceと深く統合され、セマンティックイ ンデックスにコンテンツを提供できるようになります。そのため、ユーザーはさまざまなアプリ内 のコンテンツについて自然な言葉で質問し、瞬時に答えを得ることができるようになるのです。 ff 世界の中 心で、AI をさ けぶ
  9. UI Siri Spotlight Widget Control Intent + Entity Service Repository

    SwiftData / CloudKit 世界の中 心で、AI をさ けぶ LiveActivity
  10. .toolbar { ToolbarItem(placement: .cancellationAction) { Button("Cancel") { dismiss() } .accessibilityIdentifier("cancelButton")

    } } ToolbarItem(placement: .confirmationAction) { Button(intent: addTodoIntent) { Text("Add") } .accessibilityIdentifier("addButton") .disabled(!isValid) } 世界の中 心で、AI をさ けぶ
  11. iOS - TodoCheckbox.swift Button(intent: ToggleTodoCompletionIntent(todo: todo)) { Image(systemName: todo.isCompleted ?

    "checkmark.circle.fill" : "circle") .font(.title2) .foregroundStyle(todo.isCompleted ? .green : .secondary) .contentTransition(.symbolEffect(.replace)) } watchOS - WatchTodoRow.swift Button(intent: ToggleTodoCompletionIntent(todo: entity)) { HStack { // 割愛 } } 世界の中 心で、AI をさ けぶ
  12. UI Siri Spotlight Widget Control Intent + Entity Service Repository

    SwiftData / CloudKit 世界の中 心で、AI をさ けぶ LiveActivity
  13. TodoService @MainActor public func perform() async throws -> some IntentResult

    & ReturnsValue<TodoAppEntity> { let entity = try todoService.toggleFavorite(todoId: todo.id) return .result(value: entity) } 世界の中 心で、AI をさ けぶ
  14. TodoService 共通でリロード処理を追加 private static func dataDidChange() { WidgetReloader.reloadAllWidgets() AppShortcutParameterUpdater.notifyEntitiesChanged() }

    deferでdataDidChange()を呼び出し public func setCompletion(todoId: String, isCompleted: Bool) throws -> TodoAppEntity { defer { Self.dataDidChange() } let item = try resolve(todoId: todoId) if item.isCompleted != isCompleted { item.isCompleted = isCompleted item.modifiedAt = Date() try repository.update(item) reindexSpotlight(TodoAppEntity(from: item)) } return TodoAppEntity(from: item) } 世界の中 心で、AI をさ けぶ
  15. 対話機能と呼び出し元 確認する場合のIntent struct DeleteTodoIntent: AppIntent { } 確認しない場合のIntent struct DeleteTodoImmediatelyIntent:

    AppIntent { } アプリからrequestConfirmationなどを呼ばない 世界の中 心で、AI をさ けぶ
  16. 実行場所の意識 struct UpdateTodoIntent: AppIntent { public static var allowedExecutionTargets: IntentExecutionTargets

    { [.main] } } 書き込み操作はアプリ側で実行する必要がある 世界の中 心で、AI をさ けぶ
  17. App Intents中心設計Skills $ gh skill install touyou/IntentTodo \ --all --agent

    xxx Claude, Codexのマーケットプレイスからも導入可能 世界の中 心で、AI をさ けぶ
  18. Let s try App Intents Centric Design ! 世 界

    の 中 心 で、 AI を さ け ぼ う ご清聴、ありがとうございました ’ Zenn touyou/IntentTodo touyou.dev