こんにちは。アプリケーション共同開発部 開発担当の図子です。
次期 iOS の iOS 10 がもうすぐリリースされるであろうこの時期、iOS アプリケーションエンジニアのみなさんはいかがお過ごしでしょうか。私はこちらのエントリでも書かせていただいたように今年も WWDC に参加して現地でいろんなセッションを見ました。WWDC から帰国したあともセッションビデオをいくつか見ました。そのなかで個人的におもしろいなぁと思った "Proactive Suggestions" について紹介します。
Proactive Suggestions とは何か
Proactive とは辞書によると "先を見越した"、"先回りした" という意味です。Suggestion は "提案"、"忠告" です。つまり Proactive Suggestions とは "先回りした提案" という意味になります。
Proactive Suggestions には大きくわけて以下の2つの機能があります。
- ユーザーの利用状況に応じてメディア系アプリを Lock Screen に表示する "Media App Suggestions"
- ロケーションに応じた動作を提供する "Location Suggestions"
今回は "Location Suggestions" 関連について絞って話します。
Location Suggestions
Location Suggestions にはさらに主に2つの機能があります。
- QuickType による入力補完
- 経路検索アプリへの引き渡し
ここからは架空の店舗検索アプリを作っている想定で機能の紹介をしていきます。この店舗検索アプリは、
- 検索画面
- 調べたい店舗の条件を入力して検索を開始する画面
- 検索結果一覧画面
- 検索画面の条件に応じた店舗の一覧が表示された画面
- 店舗詳細画面
- 検索結果一覧画面に表示された店舗をタップすると、その店舗の住所などの詳細な情報が掲載された画面
- Location Suggestions が有効になる機能が実装された画面でもある
という機能があるものとします。この店舗検索アプリで店舗詳細画面を表示した直後に起こすアクションによって Location Suggestions が効いてきます。
QuickType による入力補完
QuickType というのは入力予測機能で以前からある機能です。主に英字キーボードを利用している時にキーボード上部に現れます。Location Suggestions を利用する事で店舗詳細画面を表示した直後に以下のような操作をするとさっき見ていた店舗の住所が QuickType に表示され簡単に住所を入力できます。
- iMessage.app で特定のキーワードを入力した時
- 住所を入力する必要があるような別のアプリ(ex: 経路検索アプリなど)の住所入力欄に入力しようとした時
iMessage.app の例では、私の検証した範囲では英語で "Let's meet at" と入力した時に Suggestion されます。
住所入力欄の例では、住所入力欄が UITextField で実装されている場合、textContentType プロパティに補完してほしい情報の種別をセットするだけでユーザーがさっきまで見ていた物の中に該当する情報があれば入力補完として表示されます。
経路検索アプリへの引き渡し
さきほどの QuickType による入力補完と同様に、店舗詳細画面を表示した直後に以下のような操作をすると経路を表示してくれます。
- App Switcher (ホームボタンをダブルクリック) の下部に 「マップで"<さっき見ていた店舗名>"への経路を調べる」というバナーが表示され、タップする
- Siri に "Take me there" と話しかける
- Map.app を起動させると入力候補リストにさっき見ていた店舗名が表示され、タップする
App Switcher に表示される経路検索アプリは直近で使っていた経路検索アプリが使われるようです。経路検索アプリは既存の経路検索に関する機能を実装しているアプリであれば動作するようなので Google Map アプリでも期待通りの動作をします。
Suggestions として使われる元情報は
これまでまるで空気を読んで各種の提案を OS がしてくれて入力補完などが出来ているように紹介してきました。実際にはその情報はアプリ実装者が実装することで実現しています。 実装方法は簡単で NSUserActivity に適切な情報を詰めてあげるだけで実装できます。Apple は NSUserActivity を "OS の目" と呼んでいます。NSUserActivity に今アプリで表示している画面の情報を詰め込んであげることで OS は今ユーザーが見ている物を理解し、次のユーザーの行動の時に "先回りした提案" を行えるようになっています。
NSUserActivity 自体は特に新しいものではなく、iOS 8 から提供されていて Handoff, Spotlight Search などで既に使われています。iOS 10 からは mapItem プロパティが追加されここに場所に関する情報を詰めてあげることで経路検索などができるようになりました。
Web の場合
これまではネイティブアプリの店舗検索アプリという例で紹介してきましたが、同様の事は Web サイトでも実現できます。schema.org にある定義に基づいてページにメタデータを埋めこんであると iOS 10 の Safari はその情報を読み取り Location Suggestions 機能が利用出来ます。すでに Yelp にはそのメタデータが埋めこまれているので Location Suggestions が利用出来ます。
参考リンク
くわしくは以下の WWDC 2016 のセッションを見てみてください。
まとめ
今までの iOS アプリは、私たちが提供したいサービスを私たちのアプリ内(私たちが開発したプログラム上)でのみ提供できる "閉じた" 世界であったように感じます。今年の WWDC を見ていて、iOS 10 からは自分達の提供したいサービスが持つ情報を自分達のアプリ以外の場所にも提供して、iOS ユーザーに広くサービスを利用してもらえるように変わってきているよう感じました。Proactive Suggestions と呼ばれる機能群を活用することで
- 自分のアプリが提供する情報を自分のアプリ外で活用してもらう
- 自分のアプリ外の情報を自分のアプリ内で便利に活用してもらう
ということができるようになってきています。実装方法が比較的簡単なわりにこの機能を活用することで、よりユーザーの満足度をあげることができると思いました。
本日深夜(9/8 2:00AM)から Apple のイベントが開催されます。今回取り上げた Proactive Suggestions が実装された iOS 10 についても正式なリリース時期など触れられると思います。なんといってもメインイベントの iPhone の新機種(iPhone 7)の発表は間違いないと思います。個人的には iPhone 以外のサプライズがあればいいなと期待しています。私は今日は仕事から帰ったら仮眠をとってイベントに備えます。
フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!
フェンリルの Facebook ページでは、最新トピックをお知らせしています。よろしければいいね!してください!