ハイライト
iOS 18 は App Intents の設計原則を変更:「最もよく使う操作を公開」から「アプリが行う全てのことが Intent であるべき」へ — Spotlight、Action Button、Siri、Controls などのシステムエントリーポイントが機能を呼び出せるように。
主要内容
昨年の App Intents の位置づけは明確:アプリ内で最も頻繁に使う操作を選び、Shortcuts と Siri に公開。この戦略の問題は、アプリに Intent が 3 つしかなければ、Shortcuts での組み合わせ余地が非常に限られること。
iOS 18 がこれを解決 — 戦略が「少数厳選」から「全面カバー」へ。Apple はこのセッションで明言:アプリが行う全てのことが App Intent であるべき。理由はシステムエントリーポイントが増え続けている:Spotlight、Action Button、Siri、Controls、Widgets、Squeeze… 各エントリーポイントに豊富な Intent が必要。
しかし「多い」≠「乱れ」。セッションの大部分は設計原則、核心は 3 つの質問:
-
どの機能を Intent として公開すべきか? 動詞から始める — 開く、作成、検索、設定、削除。細分化を避け、同じことを行う複数 Intent はパラメータ付き 1 Intent に統合。
-
パラメータをどう設計するか? パラメータ要約は任意のパラメータ組み合わせで自然に読めること。パラメータが二値状態(トグル類)なら Toggle をデフォルトパラメータとして必ずサポート、さもないと毎回ユーザーに尋ねる。
-
いつアプリを開くか? 以前は開かないことが目標、今は「開くのが一般的」。Intent がアプリ内で変化を起こす(新しいボード作成など)なら、結果を見せるため直接アプリを開く。
OpenIntentプロトコルまたはopenWhenRunオプションで実現。
詳細
Intent タイプ:動詞から始める
App Intent 設計時、これらの基本動詞から着手(00:35):
- 開く(Open)— 特定ビュー、フォルダ、ファイルを開く
- 作成(Create)— ノート、イベント、下書きを作成
- 検索(Search)— アプリコンテンツ内を検索
- 設定(Set)— トグル、状態を調整
- 削除(Delete)— 項目、下書きを削除
これらの動詞が大多数のアプリの核心機能をカバー。各機能は 1 Intent に対応、各 UI 操作ごとに個別 Intent を作らない。
Intent の細分化を避ける
セッションが繰り返し警告する誤りは「細分化」— 同じことに複数 Intent(00:50)。例:「異なるタイプのリマインダーを開く」ごとに Intent を作らず、「リマインダーを開く」Intent 1 つにリマインダータイプをパラメータに。
正しいアプローチは機能を構造化し、可変部分をパラメータに:
❌ 仕事リマインダーを開く
❌ 個人リマインダーを開く
❌ 重要リマインダーを開く
✅ リマインダーを開く(パラメータ:リマインダータイプ)
パラメータ要約は自然に読めること
Intent のパラメータ要約は任意のパラメータ組み合わせで一文として読めること(04:16)。例:カメラの「特定モードでカメラを開く」Intent、どのモードを選んでも一文として読める要約。
パラメータタイプの選択
組み込みパラメータ:日付、テキスト、数値など単純タスク向け(04:42)。
静的パラメータ(Static Parameter):アプリタブなど固定オプション(04:55)。
App Entity:ユーザーが新フォルダを追加するなど動的に変化するオプション、リスト自動更新が必要(05:10)。
オプションパラメータ vs 必須パラメータ
オプションパラメータ優先(05:24):ユーザーがパラメータ未指定なら Intent は直接実行、完全なアプリ内選択体験を提供。「特定フォルダのノートを開く」でフォルダ未指定ならフォルダ選択 UI を開き、毎回尋ねない。
必須パラメータ:パラメータ空で Intent が完全に意味をなさない場合のみ。「メール検索」は検索語必須(06:04)。
二値状態は Toggle をサポート
Intent が 2 状態(オン/オフ)のみなら Toggle をデフォルトパラメータとして必須サポート(06:32)。例:「懐中電灯を設定」Intent は毎回オン/オフを尋ねるのではなく Toggle をサポート。
いつアプリを開くか
iOS 18 の大きな変化はアプリを開くことが一般的な動作になったこと(06:49)。2 ケース:
OpenIntent プロトコル:Intent の本質が特定ビューへアプリを開くこと。例:「ストップウォッチを開く」Intent。
openWhenRun オプション:Intent 実行後にアプリ内で変化が生じ、ユーザーに見せるべき。例:「Freeform ボード作成」完了後、新規ボードに直接開く(07:59)。
このオプションはデフォルト有効、Shortcuts で無効化可能、複数 Intent を連続実行する Shortcut に適合。
バックグラウンド実行サポート
Live Activity、音声再生、録音をサポートするアプリでは対応 Intent もバックグラウンド実行をサポート(06:39)。アプリを開かずに操作完了可能。
重要ポイント
1. 既存 Intent の細分化問題を監査
既に App Intent があれば、複数 Intent が同じことをしていないか確認。「友達に送信」「グループに送信」「チャンネルに送信」は「メッセージ送信」Intent に統合、受信者をパラメータに。統合後 Shortcuts での柔軟性が大幅向上。
2. 二値状態に Toggle サポートを追加
2 状態のみの Intent(トグル類)を全て確認、Toggle をデフォルトパラメータとしてサポート。「おやすみモード」「集中モード」「再生/一時停止」Intent は毎回選択ダイアログではなく 1 回の切り替えを期待。
3. 「アプリを開く」戦略を再考
Intent がアプリ内で変化を起こす(作成、変更、削除)なら openWhenRun 動作を検討。「ノート作成」「イベント追加」操作は完了後に直接開くと体験がより一貫。
関連セッション
- What’s new in App Intents — App Intents 全面紹介、システムからアプリ機能を呼び出す方法
- Build a great Lock Screen camera capture experience — LockedCameraCapture API でロック画面からカメラアプリ起動
- Evolve your document launch experience — ドキュメントベースアプリの起動体験とカスタム操作のカスタマイズ
- Integrate Smart Recollections into your app — アプリコンテンツをシステム Smart Recollections 体験に統合
コメント
GitHub Issues · utterances