Upload
gaprot
View
130
Download
4
Embed Size (px)
Citation preview
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitでできること
1
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
2
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
3
Copyright © Up-frontier, Inc. All rights reserved.
これまでのSiri
• デバイスごとに⼀⼈ずつSiriが内包されている
• Siriからアプリの操作が可能(Apple純正のみ) • 「タイマーで3分」→ 時計アプリ
• 「明⽇の天気」→ 天気アプリ
• サードパーティ製のアプリは、Siriとは連携不可
4
Copyright © Up-frontier, Inc. All rights reserved.
これからのSiri
• サードパーティ製のアプリも、Siriと連携できるようになる
• Siriとアプリを連携させるためのものがSiriKit
• 本体アプリに対して、SiriKitのExtensionを追加するイメージ
5
Copyright © Up-frontier, Inc. All rights reserved.
公式アプリは もともと連携できていた
これまでのSiri
6
Copyright © Up-frontier, Inc. All rights reserved.
これからのSiri
7
公式アプリは もともと連携できていた
サードパーティ製のアプリと SiriをつなぐのがSiriKitの役割!
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitが解釈できるドメイン• VoIP Calling
• Messaging
• Payments
• Photos
• Workouts
• Ride Booking
8
• CarPlay
• Restaurant Reservations
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitが解釈できるドメイン• VoIP Calling
• Messaging
• Payments
• Photos
• Workouts
• Ride Booking
9
• CarPlay
• Restaurant Reservations
特定のベンダーのみに 解放されるらしい
(例) ⾃動⾞メーカーなど
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitが解釈できるドメイン• VoIP Calling
• Messaging
• Payments
• Photos
• Workouts
• Ride Booking
10
• CarPlay
• Restaurant Reservations
• メッセージの送信 • 〇〇さんに「おはよう」
• メッセージの検索 • ▲▲からのメッセージを検索
Copyright © Up-frontier, Inc. All rights reserved.
思った以上に限定的
• 恩恵を受けることができるアプリ・サービスは、今の所はかなり限られている
• 以下のようなことはできない • カメラアプリで撮影
• オンデマンドアプリで動画を検索して再⽣
• 今後、利⽤可能な機能が増えることに期待
11
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
12
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitの構成
• SiriKitは、以下の2つのframeworkからなる
• Intents.framework
• IntentsUI.framework
• SiriKit.frameworkというものは存在しない
• ○○○Kitって⼀体…
13
Copyright © Up-frontier, Inc. All rights reserved.
Intents.framework
• ユーザの⾳声⼊⼒を受け取る
• ⾳声を解析し、Intentを⽣成してアプリに渡す
• 実装は必須
14
Copyright © Up-frontier, Inc. All rights reserved.
IntentsUI.framework
• SiriのUI上に表⽰するView関連のクラス
• カスタムUIを利⽤する場合に任意で実装する
• Apple「ちゃんと使うよね?」 チラッ
15
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリの使い⽅
• 必要なワードを含んだ⽂章で話しかけることで、メッセージ送信ができる
• メッセージの場合は「宛先」と「メッセージ」
16
• [アプリ名] で [宛先] に [メッセージ] と送って
• [メッセージ] を [宛先] に [アプリ名] で送って
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
17
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
18
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
19
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
20
Copyright © Up-frontier, Inc. All rights reserved.
ターゲットの追加
• Intent Extension のターゲットを追加する
• Intent UI を同時に追加することもできる
21
Copyright © Up-frontier, Inc. All rights reserved.
ターゲットの追加
• Intent Extension のターゲットを追加する
• Intent UI を同時に追加することもできる
22
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
23
Copyright © Up-frontier, Inc. All rights reserved.
plistの説明<dict>
<key>NSExtensionAttributes</key> <dict>
<key>IntentsSupported</key> <array>
<string>INSendMessageIntent</string> </array> <key>IntentsRestrictedWhileLocked</key> <array>
<string>INSendMessageIntent</string> </array>
</dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string>
</dict>24
• サポートするIntentのタイプ • 今回はSendMessageIntent
Copyright © Up-frontier, Inc. All rights reserved.
plistの説明<dict>
<key>NSExtensionAttributes</key> <dict>
<key>IntentsSupported</key> <array>
<string>INSendMessageIntent</string> </array> <key>IntentsRestrictedWhileLocked</key> <array>
<string>INSendMessageIntent</string> </array>
</dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string>
</dict>25
• プライバシーへの配慮 • デバイスロック中に利⽤させない
場合は、これを追記する
Copyright © Up-frontier, Inc. All rights reserved.
plistの説明<dict>
<key>NSExtensionAttributes</key> <dict>
<key>IntentsSupported</key> <array>
<string>INSendMessageIntent</string> </array> <key>IntentsRestrictedWhileLocked</key> <array>
<string>INSendMessageIntent</string> </array>
</dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string>
</dict>26
Extensionを実装しているクラス
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
27
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
28
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
29
• ⼊⼒パラメータの解決 • ⼊⼒値のバリデーション • ⾜りない場合はSiriが聞き返す
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
30
• 最終確認 • タスク実⾏に向けた最終確認 • ビジネスロジック的なチェックなど
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
31
• タスクの実⾏ • 実際の処理を⾏う • メッセージの送信、検索など
Copyright © Up-frontier, Inc. All rights reserved.
tips
• 実機必須
• 恥ずかしがらずに堂々と
• Extension特有の「なぜか動かない」
32
Copyright © Up-frontier, Inc. All rights reserved.
まとめ
• つかえるDomainは6種類
• ⾳声は、SiriがIntentに変換して渡してくれる
• Resolve, Confirm, Handle の順でタスク実⾏
33