Slide 1

Slide 1 text

App Intents 世 界 の 中 心 で、 AI を さ けぶ App Intents中心設計の実践ガイド #iosdc #c とうよう 藤井 陽介 株式会社グッドパッチ デザインエンジニア 9.12 iOSDC 2026

Slide 2

Slide 2 text

藤井 陽介 / touyou 株式会社グッドパッチ デザインエンジニア (2021 - ) オンライン劇場ZA UXエンジニア (2020 - ) DroidKaigiスタッフ (2025 - ) 2021年新卒として株式会社グッドパッチに入社。iOSを中心に Webフロントエンド、Flutterなどさまざまな技術スタックでの クライアントワークに従事。 直近はクライアントワークの傍ら、デザインシステムSparkle Designの技術面を担当したり、Layermateチームに参画するなどの 活動を通してAI x Designを技術面から探究中。 いいデザインをより良い形で実装するのが好き。 ポータルページ 世界の中 心で、AI をさ けぶ 最近作ったもの 今日の元ネタ

Slide 3

Slide 3 text

とは 顧客体験を起点に企業変革を前進させる デザインカンパニー 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 をさ けぶ

Slide 4

Slide 4 text

アンケート 世界の中 心で、AI をさ けぶ

Slide 5

Slide 5 text

あなたは、 App Intentsについて どのくらい知っていますか? 世界の中 心で、AI をさ けぶ

Slide 6

Slide 6 text

App Intentsなんて 初めて聞いたぞ🔰 世界の中 心で、AI をさ けぶ

Slide 7

Slide 7 text

App Intents 完全に理解したけど 使ってないなー🤔 世界の中 心で、AI をさ けぶ

Slide 8

Slide 8 text

App Intents マスターしてます まさかり持ってきました🪓 世界の中 心で、AI をさ けぶ

Slide 9

Slide 9 text

App Intentsとはなにか? WWDC全関連セッション見て 解説してみ隊🧑🚀 世界の中 心で、AI をさ けぶ

Slide 10

Slide 10 text

App Intentsとは? 世界の中 心で、AI をさ けぶ

Slide 11

Slide 11 text

App Intentsとは? = アプリの機能を アプリの外部から 呼び出すための仕組み 世界の中 心で、AI をさ けぶ

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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 をさ けぶ

Slide 14

Slide 14 text

App Intentsとは? 世界の中 心で、AI をさ けぶ

Slide 15

Slide 15 text

App Intentsの歴史 世界の中 心で、AI をさ けぶ

Slide 16

Slide 16 text

2022年 世界の中 心で、AI をさ けぶ

Slide 17

Slide 17 text

2016年 iOS10 世界の中 心で、AI をさ けぶ

Slide 18

Slide 18 text

SiriKit 世界の中 心で、AI をさ けぶ

Slide 19

Slide 19 text

https://developer.apple.com/jp/videos/play/wwdc2020/10073 世界の中 心で、AI をさ けぶ

Slide 20

Slide 20 text

2022年 世界の中 心で、AI をさ けぶ

Slide 21

Slide 21 text

https://developer.apple.com/jp/videos/play/wwdc2022/10032 世界の中 心で、AI をさ けぶ

Slide 22

Slide 22 text

宣言的フレームワーク 世界の中 心で、AI をさ けぶ

Slide 23

Slide 23 text

https://developer.apple.com/jp/videos/play/tech-talks/10168 世界の中 心で、AI をさ けぶ

Slide 24

Slide 24 text

世界の中 心で、AI をさ けぶ

Slide 25

Slide 25 text

SiriKit≒Storyboard 世界の中 心で、AI をさ けぶ App Intents≒SwiftUI

Slide 26

Slide 26 text

App IntentsとSiriKitの併用が前提 世界の中 心で、AI をさ けぶ

Slide 27

Slide 27 text

2023年 世界の中 心で、AI をさ けぶ

Slide 28

Slide 28 text

App Intentsはウィジェットを動かす 世界の中 心で、AI をさ けぶ

Slide 29

Slide 29 text

App Intentsはウィジェットを動かす Button(intent: addTodoIntent) { Text(“Add”) } Toggle(isOn: $isCompleted, intent: toggleCompleteIntent) { Text(“Completed”) } 世界の中 心で、AI をさ けぶ

Slide 30

Slide 30 text

その他の2023年 ・AppIntentsPackageの登場 ・全件列挙やパラメータ間の依存が表現できるように ・Action Buttonでショートカットが動くように 世界の中 心で、AI をさ けぶ

Slide 31

Slide 31 text

2024年 世界の中 心で、AI をさ けぶ

Slide 32

Slide 32 text

Apple Intelligence 世界の中 心で、AI をさ けぶ

Slide 33

Slide 33 text

2024年の出来事 ・App Intent Domains(assistant schemas)の登場 ・IndexedEntityによるSpotlightのセマンティック検索 ・ControlWidgetへの対応 ・Apple Pencil Proのスクイーズで動くように 世界の中 心で、AI をさ けぶ

Slide 34

Slide 34 text

2025年 世界の中 心で、AI をさ けぶ

Slide 35

Slide 35 text

https://developer.apple.com/jp/videos/play/wwdc2025/275 世界の中 心で、AI をさ けぶ

Slide 36

Slide 36 text

https://developer.apple.com/jp/videos/play/wwdc2025/275 世界の中 心で、AI をさ けぶ

Slide 37

Slide 37 text

その他の2025年 ・supportedModesの追加で実行の仕方を細かく設定 ・requestChoiceでユーザーへの選択肢を増やす ・@DeferredPropertyでプロパティの非同期取得 世界の中 心で、AI をさ けぶ

Slide 38

Slide 38 text

2026年 世界の中 心で、AI をさ けぶ

Slide 39

Slide 39 text

Siri AI 世界の中 心で、AI をさ けぶ

Slide 40

Slide 40 text

これまで 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 をさ けぶ

Slide 41

Slide 41 text

App Intentsは徐々にその幅を増やしていった Siri AI 2026年 Visual Intelligence 2025年 Apple Intelligence 2024年 Widget 2023年 Siri 2022年 世界の中 心で、AI をさ けぶ

Slide 42

Slide 42 text

世界の中 心で、AI をさ けぶ

Slide 43

Slide 43 text

App Intentsの重要性 世界の中 心で、AI をさ けぶ

Slide 44

Slide 44 text

Liquid Glass 世界の中 心で、AI をさ けぶ

Slide 45

Slide 45 text

https://developer.apple.com/jp/videos/play/wwdc2023/102 世界の中 心で、AI をさ けぶ

Slide 46

Slide 46 text

https://developer.apple.com/jp/videos/play/wwdc2025/219 世界の中 心で、AI をさ けぶ

Slide 47

Slide 47 text

https://developer.apple.com/jp/design/human-interface-guidelines/materials 世界の中 心で、AI をさ けぶ

Slide 48

Slide 48 text

世界の中 心で、AI をさ けぶ

Slide 49

Slide 49 text

Appleはナビゲーションレイヤーを 透明化したかったのでは? 世界の中 心で、AI をさ けぶ

Slide 50

Slide 50 text

AppleはUIを透明化したかったのでは? 世界の中 心で、AI をさ けぶ

Slide 51

Slide 51 text

AppleはUIを透明化したかったのでは? 「様々なデバイスファクタにUI部分を合わせる責任はAppleが持つ」 https://developer.apple.com/jp/videos/play/tech-talks/111466 世界の中 心で、AI をさ けぶ

Slide 52

Slide 52 text

透明になったUIが担う役割はどこへ? 世界の中 心で、AI をさ けぶ

Slide 53

Slide 53 text

App Intents 世界の中 心で、AI をさ けぶ

Slide 54

Slide 54 text

App Intents 世界の中 心で、AI をさ けぶ

Slide 55

Slide 55 text

App Intents 世界の中 心で、AI をさ けぶ

Slide 56

Slide 56 text

App Intents 世界の中 心で、AI をさ けぶ

Slide 57

Slide 57 text

Apple自身も 世界の中 心で、AI をさ けぶ

Slide 58

Slide 58 text

https://x.com/mattcassinelli/status/2084987608107831475 世界の中 心で、AI をさ けぶ

Slide 59

Slide 59 text

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 をさ けぶ

Slide 60

Slide 60 text

これほどまでに重要なら 世界の中 心で、AI をさ けぶ

Slide 61

Slide 61 text

いっそ設計から App Intents中心にしてしまえば いいのでは? 世界の中 心で、AI をさ けぶ

Slide 62

Slide 62 text

App Intents中心設計 世界の中 心で、AI をさ けぶ

Slide 63

Slide 63 text

1. App Intentsから設計する 2. なるべくDRYでいること 3. 色んな動線で使ってもらうこと 世界の中 心で、AI をさ けぶ

Slide 64

Slide 64 text

App Intents Driven Development https://www.avanderlee.com/swift/app-intent-driven-development/ 世界の中 心で、AI をさ けぶ

Slide 65

Slide 65 text

Action Centered App Design https://blog.viditb.com/action-centered-design/ 世界の中 心で、AI をさ けぶ

Slide 66

Slide 66 text

発想は新しいものではない 世界の中 心で、AI をさ けぶ

Slide 67

Slide 67 text

ただ、知られてなかった😭 世界の中 心で、AI をさ けぶ

Slide 68

Slide 68 text

App Intents中心設計 世界の中 心で、AI をさ けぶ

Slide 69

Slide 69 text

←DBのモデルなど ←DBの処理の呼び出し ←アプリの中核 世界の中 心で、AI をさ けぶ

Slide 70

Slide 70 text

UI Siri Spotlight Widget Control Intent + Entity Service Repository SwiftData / CloudKit 世界の中 心で、AI をさ けぶ LiveActivity

Slide 71

Slide 71 text

Button(intent:)を必ず使う 世界の中 心で、AI をさ けぶ

Slide 72

Slide 72 text

.toolbar { ToolbarItem(placement: .cancellationAction) { Button("Cancel") { dismiss() } .accessibilityIdentifier("cancelButton") } } ToolbarItem(placement: .confirmationAction) { Button(intent: addTodoIntent) { Text("Add") } .accessibilityIdentifier("addButton") .disabled(!isValid) } 世界の中 心で、AI をさ けぶ

Slide 73

Slide 73 text

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 をさ けぶ

Slide 74

Slide 74 text

Button(intent:)の例外・限界 https://developer.apple.com/documentation/widgetkit/adding-interactivity-to-widgets-and-live-activities https://developer.apple.com/documentation/appintents/donations-and-discovery 世界の中 心で、AI をさ けぶ

Slide 75

Slide 75 text

実際のロジックの置き場所 世界の中 心で、AI をさ けぶ

Slide 76

Slide 76 text

UI Siri Spotlight Widget Control Intent + Entity Service Repository SwiftData / CloudKit 世界の中 心で、AI をさ けぶ LiveActivity

Slide 77

Slide 77 text

TodoService @MainActor public func perform() async throws -> some IntentResult & ReturnsValue { let entity = try todoService.toggleFavorite(todoId: todo.id) return .result(value: entity) } 世界の中 心で、AI をさ けぶ

Slide 78

Slide 78 text

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 をさ けぶ

Slide 79

Slide 79 text

TodoService let todoService = TodoService.swiftDataBacked(container: modelContainer) AppDependencyManager.shared.add(dependency: todoService) 世界の中 心で、AI をさ けぶ

Slide 80

Slide 80 text

TodoService @Dependency var todoService: TodoService @Dependency var navigationModel: NavigationModel 世界の中 心で、AI をさ けぶ

Slide 81

Slide 81 text

実装方法 ・UseCaseのようなものは置かずApp Intents + Serviceで ・Button(intent:)を極力つかえるところには使って共通化 ・App Intentsを直接外部とのインターフェイスになることを意識 ・それ以外は実は自由🙌 世界の中 心で、AI をさ けぶ

Slide 82

Slide 82 text

App Intents中心設計を さらにすすめる 世界の中 心で、AI をさ けぶ

Slide 83

Slide 83 text

AppIntentはアプリの動詞 AppEntityはアプリの名詞 世界の中 心で、AI をさ けぶ

Slide 84

Slide 84 text

App Intentsから設計する = アプリの動詞と名詞を棚卸しする 世界の中 心で、AI をさ けぶ

Slide 85

Slide 85 text

https://www.shoeisha.co.jp/book/detail/9784798182681 世界の中 心で、AI をさ けぶ

Slide 86

Slide 86 text

ユースケース中心設計 世界の中 心で、AI をさ けぶ

Slide 87

Slide 87 text

誰が何を行動できる構文 世界の中 心で、AI をさ けぶ

Slide 88

Slide 88 text

誰が何を行動できる構文 名詞 動詞 AppEntity 世界の中 心で、AI をさ けぶ AppIntent

Slide 89

Slide 89 text

デザイナーと一緒に IA(情報設計)をする 世界の中 心で、AI をさ けぶ

Slide 90

Slide 90 text

App Intents中心設計の理念 App Intents中心設計の実装 App Intents中心設計と連携 世界の中 心で、AI をさ けぶ

Slide 91

Slide 91 text

App Intents中心設計の実践 世界の中 心で、AI をさ けぶ

Slide 92

Slide 92 text

つまづきポイント 世界の中 心で、AI をさ けぶ

Slide 93

Slide 93 text

サイレントに失敗する 世界の中 心で、AI をさ けぶ

Slide 94

Slide 94 text

AppIntentsTesting 世界の中 心で、AI をさ けぶ

Slide 95

Slide 95 text

① AppIntentsTesting ② ショートカットアプリ ③ Spotlightの検索 ④ Siri 世界の中 心で、AI をさ けぶ

Slide 96

Slide 96 text

実際の ビルドは通る 例外も出ない ただ動かなかった例 世界の中 心で、AI をさ けぶ

Slide 97

Slide 97 text

動かなかった例 ・AppShortcutsProviderがSPMに置くとショートカットが消える ・返したdialog/snippetが呼び出し経路に応じて出ない ・requestConfirmationを含むIntentがUIから呼べない 世界の中 心で、AI をさ けぶ

Slide 98

Slide 98 text

できる対策 ① メタデータを直接確認 ② 呼び出し元を変えて比べる 世界の中 心で、AI をさ けぶ

Slide 99

Slide 99 text

設計の注意点 世界の中 心で、AI をさ けぶ

Slide 100

Slide 100 text

対話機能と呼び出し元 確認する場合のIntent struct DeleteTodoIntent: AppIntent { } 確認しない場合のIntent struct DeleteTodoImmediatelyIntent: AppIntent { } アプリからrequestConfirmationなどを呼ばない 世界の中 心で、AI をさ けぶ

Slide 101

Slide 101 text

実行場所の意識 struct UpdateTodoIntent: AppIntent { public static var allowedExecutionTargets: IntentExecutionTargets { [.main] } } 書き込み操作はアプリ側で実行する必要がある 世界の中 心で、AI をさ けぶ

Slide 102

Slide 102 text

donationと呼び出し元 https://developer.apple.com/documentation/appintents/donations-and-discovery perform内でdonationをしない 世界の中 心で、AI をさ けぶ

Slide 103

Slide 103 text

donationと呼び出し元 Button(intent:)がdonationをしてくれる🎉 ※シミュレータのBiomeストリームで実測 IntelligenceEngine.Interaction.Donation App.Intents.Transcript 世界の中 心で、AI をさ けぶ

Slide 104

Slide 104 text

AI時代のiOS開発 世界の中 心で、AI をさ けぶ

Slide 105

Slide 105 text

App Intentsでやるべきこと 世界の中 心で、AI をさ けぶ

Slide 106

Slide 106 text

AppSchema @AppIntent(schema: .system.searchInApp) struct ShowTodoSearchResultsIntent: ShowInAppSearchResultsIntent { } 世界の中 心で、AI をさ けぶ

Slide 107

Slide 107 text

https://developer.apple.com/jp/videos/play/wwdc2026/8011 世界の中 心で、AI をさ けぶ

Slide 108

Slide 108 text

Xcode 27 beta時点でのバグ? 世界の中 心で、AI をさ けぶ

Slide 109

Slide 109 text

ここまでは使われるためのAI連携 作る側のAI連携は? 世界の中 心で、AI をさ けぶ

Slide 110

Slide 110 text

世界の中 心で、AI をさ けぶ

Slide 111

Slide 111 text

サイレントに壊れるなら AIに任せにくい? 世界の中 心で、AI をさ けぶ

Slide 112

Slide 112 text

今から試行錯誤をするのも大変 世界の中 心で、AI をさ けぶ

Slide 113

Slide 113 text

だからこちらをご用意しました 世界の中 心で、AI をさ けぶ

Slide 114

Slide 114 text

App Intents中心設計Skills $ gh skill install touyou/IntentTodo \ --all --agent xxx Claude, Codexのマーケットプレイスからも導入可能 世界の中 心で、AI をさ けぶ

Slide 115

Slide 115 text

App Intents中心設計Skills 世界の中 心で、AI をさ けぶ

Slide 116

Slide 116 text

App Intents中心設計ナレッジ とうようの記事一覧 / Zenn 世界の中 心で、AI をさ けぶ touyou/IntentTodo

Slide 117

Slide 117 text

まとめ ・App Intentsは2022年から着実にアップデートされ成熟してきた ・Liquid GlassやAppleの様々な発表がその重要性を示している ・App Intentsを棚卸しすることがデザインプロセスと直通する ・注意点はあるが中心設計を徹底することが将来への投資になる ・使う側でも作る側でもAIをフル活用して新しいアプリ開発を 世界の中 心で、AI をさ けぶ

Slide 118

Slide 118 text

Let s try App Intents Centric Design ! 世 界 の 中 心 で、 AI を さ け ぼ う ご清聴、ありがとうございました ’ Zenn touyou/IntentTodo touyou.dev