SiriKitで実装できること6つを試してみた。
実際のイメージと(SiriKitを初めて触ったので、)基本的なことを記述しました。
試してみた6つのドメイン(以下の機能を持つアプリがSiri連携できる)
- audio-video calling(通話機能のあるアプリ)
- messaging(メッセージ、チャット機能のあるアプリ)
- payments(支払い機能のあるアプリ)
- photo-library(写真のライブラリーを使用するアプリ)
- workout(ワークアウトをするアプリ)
- ride-booking(乗車予約を管理するようなアプリ)
#SiriKitはこんな感じで使える
##Audio-Video calling
Siriから通話アプリの電話をかける。
INStartAudioCallIntent
INStartAudioCallIntent pic.twitter.com/9UKchTDVqS
— njcrd (@njc_rd) 2017年2月13日
Audio-Video callingでできること
- 音声通話を開始する
- ビデオ通話を開始する
- ユーザーの通話履歴を検索する
##Messaging
Siriから、チャットアプリでメッセージを友達に送る。
INSendMessageIntent
Messagingでできること(公式ドキュメントより)INSendMessageImtent pic.twitter.com/O5zFLadGhl
— njcrd (@njc_rd) 2017年1月20日
- メッセージを送る
- メッセージを検索する
- メッセージの属性をセットする(既読にするなどのアクション)
##Payments
Siriから、アプリの中の支払処理をする。(ApplePayなど)
INSendPaymentIntent
PaymentsでできることINSendPaymentIntent pic.twitter.com/TYVvFb935w
— njcrd (@njc_rd) 2017年1月20日
- 他のユーザーに支払いをする
- 他のユーザーへ支払い要求をする
##Photo-library
Siriからフォトライブラリーの中の写真をある条件(日付)で探す。
INSearchForPhotosIntent
Photo-LibraryでできることINSearchForPhotosIntent pic.twitter.com/sPntN6GGxb
— njcrd (@njc_rd) 2017年2月13日
- 写真を検索する
- 写真のスライドショーを再生する
##Workout
Siriからウォーキングを開始する。
INStartWorkoutIntent
INStartWorkoutIntent pic.twitter.com/ix9gdbj7zV
— njcrd (@njc_rd) 2017年2月13日
Workoutsでできること
- ワークアウトを開始する
- ワークアウトを中断する
- ワークアウトを再開する
- ワークアウトを終了する
- ワークアウトをキャンセルする
##Ride-booking
Siriから、乗車手配をする。(Mapアプリからも行える。)
INRequestRideIntent
INRideSharingDomainHandling pic.twitter.com/ZxxpTWtDLy
— njcrd (@njc_rd) 2017年1月20日
Ride-bookingでできること
- 利用可能な乗り物のリストを取得する (Mapsアプリのみ)
- 乗車予約する
- 乗車予約のステータスを確認する
#SiriKit基礎まとめ
##SiriKitとは
以下の2つのフレームワークで構成されるAppExtensionの一つ。
- Intents Extension: Siriでユーザーが行いたいことを判断し、処理する(必須)
- IntentsUI Extension: Siri, Mapsアプリのインターフェースをカスタマイズできる(オプショナル)
6種類の機能を含むアプリをSiriから会話を通して処理を行うよう機能拡張できる。
- audio-video calling (通話機能のあるアプリ)
- messaging (メッセージ、チャット機能のあるアプリ)
- payments (支払い機能のあるアプリ)
- photo-library (写真のライブラリーを使用するアプリ)
- workout (ワークアウトをするアプリ)
- ride-booking (乗車予約を管理するようなアプリ)
例えば、自分で音楽アプリを開発していて、「Siriから気分に合わせて、音楽を再生させたい!」など、自由なことはできない。(今のところ)
処理の流れ
- ユーザーがSiriに話しかけた内容を理解する(audio→text変換)。
- ユーザーが言ったことから、その意図(intent)を理解する。
- ユーザーがしてほしいことを処理するためのアクションを行う。
- 視覚、会話の両方でレスポンスを提供する。
アプリ側で用意するもの
- Vocaburaly(語彙):各フェーズで用意しなければならないのは、Siriがユーザーの意図を理解するために必要(1、2)
- App Logic(アプリのロジックの実装):ユーザーの意図する処理を行うために必要(3)
- UI Design(デザイン):アクションのレスポンスをSiri上に表示するために必要(4)
##SiriKit用語
###ドメイン(domain)
Siriはドメインというアイディアの中で全てを考える。
"At a high level, Siri thinks about everything in the idea of a domain."
(Introduction to SiriKit @WWDC2016)
ドメインは、具体的には、SiriKitで実装できる機能のこと。
現在は、SiriKitが実装できるのは以下の6つ。
- audio-video calling(通話機能)
- messaging(メッセージ、チャット機能)
- payments(支払い機能)
- photo-library(写真のライブラリーを使用)
- workout(ワークアウト)
- ride-booking(乗車予約管理)
この他、CarPlayとRestaurant Reservationが用意されているが、使用に制限あり。(詳しくは、AppleのSiriKit公式ドキュメント)
###インテント(intent)
英訳すると、「意図」、「趣旨」といった意味。
インテントとは、Siriが理解、アプリとやりとりできるアクションのこと。
"An intent describes a known action that Siri understands and can communicate to your app."
(Introduction to SiriKit @WWDC2016)
各ドメイン毎にいくつかのインテントが存在し、Siriはユーザーが言ったことからどのインテントを使用するか判断する。
###パラメーター(parameters)
全てのインテントにはパラメーターが含まれている。
実際に処理を行う際に用いる、値のこと。
例えばSiriに以下のように尋ねてみる。
「Hey Siri、UnicornPayでButtercupにrainbow polishの代金**$85**を送って」
SiriはPaymentsドメインの中の支払いを行うためのインテントだと理解し、内容から処理に必要なパラメーターを取得する。
<上の文章から取得できるパラメーター>
UnicornPay → アプリ名
Buttercup → お店の名前
rainbow polish → 支払うサービスの名前
$85 → USドル
##インテントをどう扱うか
Siriは、データを集め、それらを処理するintentsオブジェクトに変化させることでユーザーのリクエストを操作する。
ユーザーが喋った内容から、どのインテントで処理するかの判断はSiriが行うが、Siriを通して実行したい処理は実装する必要がある。
使用するインテント毎に、Resolve、Confirm、Handleメソッドが用意されている。
- Resolve(解決): ユーザーの意味することを理解する段階。
- Confirm(確認): アプリがユーザーがリクエストするインテントを処理することができるか確認する段階
- Handle(処理): ユーザーがリクエストする特定のアクションを処理する段階
使用するインテント毎に、Resolve、Confirm、Handleメソッドが用意されている。
Handleメソッドは必ず実装しなければならないが、Resolve、Confirmは必須ではない。(実装が強く推奨されている)