App Intentsを通じてApple Intelligence対応について理解する
WWDC24の基調講演でAppleは「Apple Intelligence」を発表しました。
Apple Intelligenceは、iPhoneやMac, iPadに搭載されることになるいわゆるAI機能であり、文章の校正や要約, 画像の生成など多数の機能を提供しています。
その中でもApple Intelligenceのコアとなる価値は、音声アシスタント「Siri」の強化にあり、Siriはより文脈に即した応答ができるようになります。
そんなSiriがApple Intelligenceの力を借りてより適切な提案をするためには、各アプリがApple Intelligenceに対応した実装を施す必要があります。
その実装を正しく行うためには、Siriとアプリを繋ぐApp Intents frameworkへの理解が欠かせません。
本記事では、まずはApp Intents frameworkについて概要を説明した上で、Apple Intelligenceに対応した実装とはどういうものなのか、さらにはApp Intents frameworkによってもたらされるコードの再利用性についてお話しします。
前置き
Apple Intelligenceは2024年夏からまずはアメリカで試験的に利用できるようになり、英語以外の言語については2025年にかけて追加される予定となっています。
またApple Intelligenceは「A17 Pro」を搭載したiPhone 15 Proシリーズを動作対象にしており、つまり、多くのiPhoneでは動作しません。
ということで、Apple Intelligenceはかなり限定的な範囲でのスタートとなることは前置きとして書いておきます。
App Intents frameworkとは?
App Intents frameworkとは、SiriやSpotlightなどのシステム機能とアプリを統合するための共通基盤となるフレームワークです。
例えば、Siriを介してアプリの特定のアクションを実行したり、Spotlightのサジェストや検索結果にアプリ内のコンテンツを表示したりすることを実現するには、このApp Intents frameworkを用いることになります。
Siri | Spotlight |
---|---|
Intents / Entities / App Shortcuts
App Intents frameworkには大きく3つの概念が存在します。
今回はWWDC24のセッションでも取り上げられたハイキングコースのカタログを作成するサンプルアプリを例に、この3つの概念について説明していきます。
Intents
まずはIntentです。
これらは、特定の画面を開いたりアプリの情報を表示するなどのアプリに関連するアクションを実行します。いわゆるアプリの動詞を表す存在です。
例えば、「ピン留めされたハイキングコースの詳細をアプリで開く」というケースを考えます。
この場合、 AppIntent
protocolに準拠した OpenPinnedTrail
を作成します。
perform
メソッド内ではピン留めされたハイキングコースへ画面遷移する処理を実装します。
この新しいIntentはShortcutアプリに表示されるようになります。
ユーザーはShortcutアプリからIntentを選択してショートカットを作成することで、SiriやSpotlightからそのショートカットを実行することができるようになります。
Entities
Entityはアプリ内のオブジェクトです。
Intentが動詞なら、Entityは名詞を表します。
ハイキングコースのカタログを作成するサンプルアプリにおいては、ハイキングコースがEntityとなります。
例えば、「ユーザーがハイキングコースを選択して開く」というケースを考えます。
まず、 AppEntity
に準拠した TrailEntity
を作成します。
そして、それを引数として受け取る OpenIntent
に準拠した OpenTrail
Intentを作成します。
これによりユーザーはShortcutアプリでこのIntentを使用して特定のハイキングコースを表示するショートカットを作成することが可能となります。
App Shortcuts
Intentが動詞、Entityが名詞なら、App Shortcutは文を表します。
App Shortcutは、IntentとEntityを実用的なショートカットにまとめて、SiriやSpotlightから実行可能にします。ユーザーがShortcutアプリでカスタムのショートカットを作る必要はありません。
App Shortcutを実装するには、 AppShortcutsProvider
に準拠したstructを作成し、実行に必要なフレーズ等のメタデータを定義します。
phrases
に渡したフレーズをSiriに話すとこのショートカットが実行されます。
また、Spotlightで検索した場合にもこのショートカットが表示されるようになります。
Apple Intelligenceへの統合
さて、いよいよ本題です。
Apple Intelligenceにより、Siriは会話の文脈を記憶し、今どの画面を開いているかというようなパーソナルコンテキストを理解することができるようになります。
これにより、Siriはより自然で文脈に即したアクションを実行できるようになるのです。
では、どうすればアプリをApple IntelligenceとSiriに統合できるのでしょうか?
Assistant Schemas
Siriがユーザーのリクエストから適切なアクションを実行できるように、Appleはいくつかのアクションの型を定義しました。
それが Assistant Schema です。
例えば、写真アプリでアルバムを作成するというアクションは photos.createAlbum
というAssistant Schemaで表されます。 createAlbum
がSchema、 photos
がDomainと呼ばれます。
Appleは12個のDomainを定義しており、各DomainにはさらにSchemaが定義されています。
すべて合わせると100以上のアクションになります。
このAssistant Schemaに対応したIntentを実装すると、Apple Intelligenceがよしなに推論して文脈に合ったIntentを実行してくれる、というわけです。
Apple Intelligenceと統合されたSiriによるアクション実行の具体的なフローは以下のようになります:
- ユーザーのリクエストを受け取る
- Apple Intelligenceの訓練済みのModelを通してSchemaを推論する
- Schemaを選択してToolboxへルーティングする
- ToolboxはSchemaでグルーピングされたすべてのアプリのApp Intentsから適切なIntentを選択する
- Intentを実行する
実装例
写真アプリでアルバムを作成するIntentを例として取り上げて、具体的な実装について説明します。
実装は簡単で、アルバムを作成するIntentの実装に対して、Schemaを引数として受け取る @AssistantIntent
のMacroを付与します。
この引数には .photos.createAlbum
を指定します。
(他にもEntityをSchemaに対応させたりなどありますが、詳細は割愛します。)
実現できる体験
アプリの各機能がこのような対応をしていくと、例えば以下のような体験が生まれます:
- 写真アプリでゴールデンブリッジの写真を開く
- 「この写真をカリフォルニアのアルバムに追加して」とSiriにリクエストする
- カリフォルニアのアルバムに追加される
- 「この写真をJoshへメールで送信して」とSiriにリクエストする
- メールアプリが開いてJosh宛のメールに写真が添付された状態になる
コードの再利用性
App Intents frameworkを使ってSiriやApple Intelligenceとアプリを統合している場合、そのコードを再利用してWidgetKitと組み合わせてControlやWidgetを作成できます。
再びハイキングコースのアプリを例に取り、ハイキングコースの詳細を開くControlを作成するとしましょう。
この場合、 AppIntentConfiguration
を持つ ControlWidget
を定義します。
この時、すでに定義している OpenTrail
に ControlConfigurationIntent
を準拠させることで、「特定のハイキングコースを開く」という処理を使いまわすことができるのです。
このようなApp Intents frameworkのコードの再利用はControlだけでなく、構成可能なWidgetやLive Activityにおいても可能です。
まとめ
以上がApp Intents frameworkの概要と、アプリのApple IntelligenceとSiriへの統合、そしてApp Intentsの再利用性についてのお話でした。
本記事が、みなさんがApple Intelligenceに対応した実装について理解する上での一助となれば幸いです。
あとがき
App Intentsはこの記事で紹介した以外のさまざまなシステム機能においても利用可能で、そこにはiPhone 15 ProのAction buttonやApple pencil ProのSqueezeも含まれます。
App Intentsは、ユーザーがアプリを切り替えることなくさまざまなシステム機能からアプリの機能に直接アクセスできるようにすることで、ユーザーの感じる摩擦を最小限に抑えることができます。
ゆえにAppleは、アプリのほぼすべての機能をApp Intentに対応することを求めています。
しかしながら、ユーザーがアプリを意識せずとも機能を利用できるようになると、アプリ内で提供したい体験や訴求がユーザーへ届きづらくなる懸念があり、なかなか踏み出しづらい部分があるな、と感じます。
また、App Intentsにすべての機能を対応させるということはアプリ全体の設計から見直す必要があるそれなりに大きな作業のようにも感じました。
この辺りを天秤にかけながら、自分たちのアプリだとどういう価値を提供できそうかについて考えていく必要があるのではないかと思います。
幸いにも時間はあるので、今後の動向をウォッチしながらゆっくり考えていきたいですね。
参考文献
Discussion