🚀

App Intentsの未来について研究しよう! #iosdc

2024/08/23に公開

はじめに

本記事はiOSDC2024におけるポスターセッションの補足記事です。

Proposalはこちら
https://fortee.jp/iosdc-japan-2024/proposal/3bae1d6b-76d5-412d-8842-3fa3d2354a60

ポスターセッション

App Intentsとは?

App Intentsは、アプリの機能やデータをシステム(iOS)に公開し、伝えることができる機能です。

App Intentsとは?

これによりSiriやSpotlight, Shortcutなどの様々なシステム体験(=iOSが提供してくれるアプリにアクセスするための体験)を通じて、アプリのコンテンツやアクションを発見し、利用しやすくするためのものです。

具体的な例を見ていきましょう。みなさんお手元のiPhoneを開いて、Spotlightで「clock」と入力してみてください。

clock_shortcut

「時計(clock)」アプリとともに「タイマーを設定」「アラームを追加」というサジェストが出てきました。これが時計アプリのShortcutです。

Shortcutによってアプリの「よく使う機能」にダイレクトに遷移して利用することができます。そしてその機能はApp Intentsを通じて実現されています。

App Intentsがなぜ今熱いのか?

App Intentsは特にとても新しい機能というわけではありません。

App Intents自体はiOS16から使えるようになったフレームワークです。また、「システム(iOS)にアプリの機能を伝える」という発想そのものはiOS12のSiriショートカットのときから継続的に発展・拡張されてきました。

しかし、まだまだ大多数のユーザーが使っている状態ではなく、App Intents / App Shortcut を実装しているアプリはかなり少ないと感じます。特に、アメリカと違ってSiriを積極的に使いにくい環境である日本ではより注目度が低そうです(代わりにUIのあるWidgetの方が注目されている印象です)。

ところが、今年のWWDC24でにわかに注目集めています。なぜ今App Intentsが熱いのでしょうか?

App Intentsがなぜ今熱いのか?

それはApple Intelligenceの登場に大いに夢を見たからだと私は考えています。

App Intentsはシステム(iOS)にアプリの機能を教えておいて、システム体験(=iOSが提供してくれるアプリにアクセスするための体験)を通じて、アプリのコンテンツやアクションを発見し、利用しやすくするためのものでした。

つまり、Apple IntelligenceでiOSが大進化を遂げれば、今まで大多数のユーザーが使える状態になかったApp Intentsに関連する機能がキャズムを超える・・・そんな期待(妄想)を抱いたため、App Intentsが熱い🔥と感じたのではないでしょうか。

私の困りポイント

さて、iPhoneの黎明期と違い、膨大な数のアプリに囲まれていて困っていることがあります。

私の困りポイント

①アプリが多すぎるアプリのアイコンを探すのが辛い・・・😑

インストールしているアプリが多すぎてアプリを起動する際に探すのが辛かったりします。
きちっとフォルダ分けをしたり、いつも起動するアプリのアイコンの位置を整理している方もいらっしゃるかもしれませんが、私には無理な話です・・・

結果的に私はアプリの起動をほとんどSpotlightに頼るようになりました。

②スーパーアプリの使いたい機能がいろんなところにあって辛い・・・😑

また、最近は1つのアプリにたくさんの機能がある、いわゆるスーパーアプリも増えてきました。
スーパーアプリは便利な一方、自分には不要な機能もたくさんあり、いちいち画面遷移をして目的の機能を使うのにめんどくささを感じることが多かったりします。

これについてもShortcutに対応しているアプリであればSpotlightからダイレクトにアクセスできてめちゃ便利です。

しかし、あまりShortcutが使われていない現状から鑑みるにまだ足りないようです。

私の期待する未来

ということで私の期待する未来です。

App Intentsは登録しておくので、AI(Apple Intelligence)でなんとか超便利にできませんか🙏

超便利になればApp Intentsに対応するアプリも増えてみんなハッピーです。

私の期待する未来

私の期待するイメージの1例

雑に期待しすぎたのでもうちょっと具体的なイメージについて話していきましょう。

私の期待するイメージの1例

例えば「フリマ」「支払い」「暗号資産」などの機能があるアプリがあったとします。

現状では、「支払い」機能を使いたい場合に、アプリを開き、支払いタブをタップして・・・など自分で操作をしていく必要があります。

App Intents / Shortcutに対応すれば使いたい機能に1アクションでアクセスすることは実現できます。ただし、実装する側にもユーザー側にもうまく使いこなすにはテクニックが必要です。

Apple Intelligenceにはそのあたりの難しさを吸収し、必要な実装はシンプルなApp Intentsの実装だけ、ユーザー側は「自然言語でふわっとやりたいことを入力したら精度良く使いたい機能が開く」ようになることを期待したいですね!

App Intentsの概念

さて、もう一度最初の図に戻ってみましょう。

App Intentsの概念

右上の「・・・」に注目です。App Intentsはアプリの機能をシステムに公開するものでした。
そして、それを使えるシステム体験はどんどん増えていくようです。

直近のWWDC24ではコントロールやApple PencilのスクイーズなどからもApp Intentsの活躍の場が広がったと発表がありました。

つまり、App Intentsを定義しておけば、今後iOSが進化し、アプリにアクセスする新しい仕組み・体験があらわれたときにもきっと恩恵を受けやすくなるということが期待できるのではないでしょうか?

やる気が湧いてきますね。

App Intentsの仕組みと実装

やる気が湧いたところでApp Intentsに対応するための実装を見ていくことにしましょう。

App Intentsの仕組みと実装

App Intentsを使うには AppIntent プロトコルに準拠したStructを定義すればOKです。
プログラムというよりかはSwiftで書ける設定ファイルに近い印象ですね。

本当に最低限の実装としては titleperform() 関数を実装するのみです。

Intent実行時にアプリを起動したい場合は openAppWhenRun にtrueを設定します。

import AppIntents

struct MinimumIntent: AppIntent {    
    static var title: LocalizedStringResource = "Minimum Intent"
    static var openAppWhenRun: Bool = true
    
    @MainActor
    func perform() async throws -> some IntentResult {
        return .result()
    }
}

あわせて、Shortcutも作っておきましょう。こちらも AppShortcutsProvider プロトコルに準拠したStructを定義すればOKです。10個まで設定できますが、とりあえず1個だけ。

intentには先ほど定義した MinimumIntent を指定します。

import AppIntents

struct Shortcut: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: MinimumIntent(),
            phrases: [
                "\(.applicationName)を開いて",
            ],
            shortTitle: "Shortcut",
            systemImageName: "folder"
        )
    }
}

これだけでSpotlightやShortcutアプリからShortcut / Intentを確認できるようになります。

Spotlight Shortcutアプリ
Spotlight Shortcutアプリ

他にもApp Intentsでできる細かい実装についてはこちらの記事にとても簡潔でわかりやすくまとまっていたのでぜひ参考にして実装してみてください!こういうのは実際に自分で実装して動かしてみるのが一番理解が深まります。

https://zenn.dev/naoya_maeda/articles/bd6cc7d3cb6154

このメッセージをどう捉えるか?

最後にApp Intentsに関するWWDC24のセッションで印象的だった言葉を置いておきます。

このメッセージをどう捉えるか?

「Anything your app does should be an App Intent.」(あなたのアプリが行うことはすべてApp Intentであるべきである。)

なかなか強力なメッセージではないでしょうか?私はこの強いメッセージに乗っかり、App Intentsを使っていきたいと考えるようになりました。

まとめ

まとめ

まとめです。

「iOS/Apple Intelligenceの進化に期待してApp Intentsを仕込んでいこう🙌」

まだApple Intelligenceが具体的にどんなものであるか、どのように進化していくかは未知数ですが、妄想だけですごくわくわくすることができました。

ぜひ、みんなでApp Intentsを盛り上げて、iPhoneの新しい体験を増やしていきましょう!

ありがとうございました。

※QRコードは本記事へのリンクです。

参考資料

Discussion