Apple Vision Pro の検索体験を改善する

こんにちは!visionOS Developer の kato です!

みなさんは Apple Vision Pro を購入しましたか?私は発売日に購入し、毎日 Apple Vision Pro をつけて生活しています。今日は、Apple Vision Pro での検索体験を改善するためにアプリを開発したため、お話ししようと思います。

Apple Vision Pro での検索について

みなさんは普段どのように検索していますか?私は検索が大好きで、個人開発でも検索に関係するアプリをリリースしています。 そこで、今日は Apple Vision Pro での検索方法について考えてみました。

現在の検索フロー

Apple Vision Pro で検索する場合、以下のようなステップが必要です。

  1. Digital Crown を押す
  2. アプリ一覧を左右にスワイプし、Safari を探す
  3. Safari アイコンを見つめてタップする
  4. 検索バーにフォーカスを合わせてバーチャルキーボードで検索する(もしくは注視して音声入力する)

このプロセス、ちょっと複雑で面倒に感じませんか?

Siriに「Safariで〇〇を検索して」と依頼することもできますが、私が検索したい単語群では認識精度が低いことが多く、複数の単語の入力もしにくく、私の用途には最適と言えません。

せっかくの Apple Vision Pro の体験をもっとスムーズにする方法がないかと考えました。

より快適な検索体験の提案

そこで、私が考えたのは「検索バー」を使った新しい検索体験です。

Apple Vision Pro では空間にアプリを配置できます。 空間に常に表示しておく「検索バー」アプリを開発し、素早く検索できるようにしました。 この方法を使うと、以下のような検索体験が可能になります。

  • あらかじめ検索バーを空間に配置しておく
  • バーチャルキーボードで最初の数文字だけ入力し、サジェスト機能で続きのワードを入力する
  • 検索バーを注視して最初のワードだけ音声入力し、サジェスト機能で続きのワードを入力する

これにより、Digital Crown を押す必要もなく、キーボードもほとんど使わずに検索ができるようになります。

実装方法

TechBlog なので、実装のポイントについても触れておきますね。

.windowStyle(.plain) を指定する

まず、検索バーだけのミニマムな Window を作るために、.windowStyle(.plain) を指定しています。これにより、小さなサイズのアプリが作れるようになり、UI がシンプルになります。

WindowGroup {
    ContentView()
}
.windowStyle(.plain)

「注視して音声入力」を使用するために、UISearchBar を使用する

「注視して音声入力」の API は現状公開されておらず、現時点では UISearchBar を使用するのが最適です。SwiftUI の SearchBar を使うには NavigationStack とあわせて searchable を使用する必要があり、単体では使用できないため、今回は UIKit の UISearchBar を活用しました。

visionOS では APIKitが使えない

私は APIKit が大好きで愛用しているのですが、今日時点では visionOS に対応しておらず、ビルドすることができません。

toshi0383 さんが visionOS 対応したブランチを公開してくれていたため、使わせていただきました! ありがとうございます!

上記のforkについて、場当たり的な対応を入れただけのものが多いので本家へのPRにはしていませんが、しばらく置いておくと思うのでご自由にどうぞ!

qiita.com

github.com

おわりに

Apple Vision Pro を使っての検索体験がより快適になるように考えたこの方法、いかがでしたか? 数ヶ月前からシミュレータは触っていたのですが、実機を触って初めてわかることも多く、非常にワクワクしています。

「空間に配置する」という新しい体験を考えると、同様にAIアシスタントなども簡単に作れそうですね。今回実装したアプリにボタンを1つ追加すれば、「注視して音声でAIアシスタントに相談」できそうです。

現時点ではリリースする予定はありませんが、iOS Developer の方なら非常に簡単に作れると思うので、みなさんもぜひ試してみてください。Apple Vision Pro を使う楽しさが広がることを願っています!


Goodpatchではデザイン好きなエンジニアの仲間を募集しています。 少しでもご興味を持たれた方は、ぜひ一度カジュアルにお話ししましょう!