SlideShare a Scribd company logo
1 of 28
Download to read offline
会社休むために実装する
Siri shortcuts
Kazuhiro Kamakura
たてたて
自己紹介
• Kazuhiro Kamakura
• プログラミングに限らず何か作るのが好き

8月のMFT(Maker Faire Tokyoも出ます)
• twitter: @yoyokkTT (たてたて)
• ブログ: http://www.tatetate55.com/
目次
• WWDC2018で発表されたSiriの進化
• Siri shortcutsの開発準備
• NSUserActivityとintentについて
• NSUserActivityで実装
• Intentsでの実装
WWDC2018で発表された
Siriの進化
• Siri shortcuts機能が追加

Siriから直接アプリの様々な機能を呼び出すことが可能に

shortcutアプリも追加される



設定のAdd to Siriからフレーズを登録する
• Siri suggestionsの強化

習慣などから基づいてsuggestしてくれるように
• keynote (0:31:40 )
今回作りたいサンプル
• Siriに「疲れた」と言ったら勤怠メールを上長に送るアプ
リをsiri shortcutsで作る

(すでに定型文を作ってメールを送るアプリは作成済)
疲れた
今日休みます
開発前の事前準備
• iOSの設定 → developer の「SHORTCUTS
TESTING」からDisplay Recent ShortcutsとDisplay
Donations on Lock ScreenをON に
• ロック画面に最近見たSafariのページなどが表示されるの
で注意!!!(プライベートモード必須)
これ→
これ→
Siri shortcutsを
作成するための方法は2種類
• NSUserActivity
• Intents
NSUserActivity
• 実装は簡単
• Intentsと比べてシンプルなことしかできない

siriでアプリを起動したりspotlightでアプリを表示したり
実装手順
• info.plistにNSUserActivityTypesを追加
• NSUserActivityを追加
• App Delegateでhandleする処理を追加
Info.plistに
NSUserActivityTypesを追加
<key>NSUserActivityTypes</key>
<array>
<string>com.hoge.siri</string>
</array>
NSUserActivityを用意
NDAのため削除しています
AppDelegateに追加
extension AppDelegate {
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == "com.kintai.siri" {
// Restore state for userActivity and userInfo
print(“ここが呼ばれる!")
}
return true
}
}
•
設定のショートカットから
追加が可能に
これだけでsiriからアプリを起動できる!
NDAのため削除しています
デモ動画
NDAのため削除しています><
もっと素早く休みたい
ロック画面で
完結したい
そこでIntents
Intents
• ショートカットのフレーズをカスタマイズできる
• ロック画面にインラインで様々な情報を出せる&そのまま
操作可能
Intentsでの追加
• File → New file → SiriKit Intent Definition Fileで追加
(App groupsの追加忘れずに)
• custom Intentsの追加
• IntentHandler で処理の追加
• Viewを変更する(今回はしない)
File → New file → SiriKit
Intent Definition File
NDAのため削除しています><
custom Intentsの追加
• categoryである程度のパターンは用意されている

OrderやSendなど
• Custom Intet Parameters Shortcut Typesを追加
NDAのため削除しています><
IntentHandlerの修正
• handleのところに何かインラインからやりたい処理を

書く
NDAのため削除しています><
Donate intent ver
let intent = SendMailIntent()
let interaction = INInteraction(intent: intent, response: nil)
interaction.donate() { _ in
print("Donated!")
}
カスタムショートカットを
追加
←増えている
NDAのため削除しています><
デモ動画
NDAのため削除しています><
参考
• 動画 Introduction to Siri Shotrtcut

https://developer.apple.com/videos/play/
wwdc2018/211/
• 動画の下にあるResourceにサンプル等のリンク
• iOS10の時に発表されたSiriKitの内容
おすすめサンプル
&
チュートリアル
• NSUservirity

https://medium.com/@TonyMew/tutorial-adding-
ios-12-siri-shortcuts-to-your-app-easy-way-
edb84fcac66e
• Intents

https://medium.com/flawless-app-stories/
wwdc-2018-for-ios-developers-siri-shortcuts-
e8e4a78f0ad7

More Related Content

What's hot

Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由
Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由
Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由Aimi Nakajima
 
Devとopsをつなぐchat ops
Devとopsをつなぐchat opsDevとopsをつなぐchat ops
Devとopsをつなぐchat opsikikko
 
Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫furusin
 
ノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめ
ノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめ
ノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめ典子 松本
 
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話Shuji Yamada
 
第二十一回Azure もくもく会 LT発表
第二十一回Azure もくもく会 LT発表第二十一回Azure もくもく会 LT発表
第二十一回Azure もくもく会 LT発表Akiyoshi Tsuchida
 
Nulabとawsと私
Nulabとawsと私Nulabとawsと私
Nulabとawsと私ikikko
 
開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能Masaki Suzuki
 
はじめてのOffice Scripts
はじめてのOffice ScriptsはじめてのOffice Scripts
はじめてのOffice Scriptskinuasa
 
エンジニア目線での対外ブランディング ~ヌーラボ編~
エンジニア目線での対外ブランディング ~ヌーラボ編~エンジニア目線での対外ブランディング ~ヌーラボ編~
エンジニア目線での対外ブランディング ~ヌーラボ編~ikikko
 
Azure もくもく会 @ 東京 #18 LT
Azure もくもく会 @ 東京 #18 LTAzure もくもく会 @ 東京 #18 LT
Azure もくもく会 @ 東京 #18 LT裕康 井上
 
チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版Ikada Kaori
 
OsakaArchVizCamp#1 - UE4 Introduction
OsakaArchVizCamp#1 - UE4 IntroductionOsakaArchVizCamp#1 - UE4 Introduction
OsakaArchVizCamp#1 - UE4 IntroductionTatsuya Sumisaki
 
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~ikikko
 
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話akatsuki174
 
ソーシャルログイン5分クッキング
ソーシャルログイン5分クッキングソーシャルログイン5分クッキング
ソーシャルログイン5分クッキングSaiki Iijima
 

What's hot (20)

Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由
Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由
Alexaスキル開発にデザイン・スプリントをおすすめする3つの理由
 
Devとopsをつなぐchat ops
Devとopsをつなぐchat opsDevとopsをつなぐchat ops
Devとopsをつなぐchat ops
 
Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫Sansan androidチームが取り組む コードレビューを早くまわす工夫
Sansan androidチームが取り組む コードレビューを早くまわす工夫
 
ノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめ
ノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめ
ノンコーディングでサーバーレス体験。Azure Logic Apps のすゝめ
 
Azure周りの振り返り
Azure周りの振り返りAzure周りの振り返り
Azure周りの振り返り
 
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話
 
第二十一回Azure もくもく会 LT発表
第二十一回Azure もくもく会 LT発表第二十一回Azure もくもく会 LT発表
第二十一回Azure もくもく会 LT発表
 
Nulabとawsと私
Nulabとawsと私Nulabとawsと私
Nulabとawsと私
 
Swift instagram viewer
Swift instagram viewerSwift instagram viewer
Swift instagram viewer
 
開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能開発チーム管理で役立ったVSCode拡張機能
開発チーム管理で役立ったVSCode拡張機能
 
QA@IT on Heroku
QA@IT on HerokuQA@IT on Heroku
QA@IT on Heroku
 
React meetup 3_eight
React meetup 3_eightReact meetup 3_eight
React meetup 3_eight
 
はじめてのOffice Scripts
はじめてのOffice ScriptsはじめてのOffice Scripts
はじめてのOffice Scripts
 
エンジニア目線での対外ブランディング ~ヌーラボ編~
エンジニア目線での対外ブランディング ~ヌーラボ編~エンジニア目線での対外ブランディング ~ヌーラボ編~
エンジニア目線での対外ブランディング ~ヌーラボ編~
 
Azure もくもく会 @ 東京 #18 LT
Azure もくもく会 @ 東京 #18 LTAzure もくもく会 @ 東京 #18 LT
Azure もくもく会 @ 東京 #18 LT
 
チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版
 
OsakaArchVizCamp#1 - UE4 Introduction
OsakaArchVizCamp#1 - UE4 IntroductionOsakaArchVizCamp#1 - UE4 Introduction
OsakaArchVizCamp#1 - UE4 Introduction
 
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
 
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
 
ソーシャルログイン5分クッキング
ソーシャルログイン5分クッキングソーシャルログイン5分クッキング
ソーシャルログイン5分クッキング
 

Similar to Siri shortcutlts LT

部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装Fumiya Sakai
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめできるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめFumiya Sakai
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
RxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップRxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップFumiya Sakai
 
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Fumiya Sakai
 
Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Yuki Igarashi
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集Fumiya Sakai
 
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介Fumiya Sakai
 
ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできることTomoaki Imai
 
Unity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsUnity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsYutoNishine
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークMaehana Tsuyoshi
 
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方Fumiya Sakai
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)Fumiya Sakai
 
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介Masaru Takahashi
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescriptHiroyuki Ohnaka
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録Fumiya Sakai
 
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪Kazumi IWANAGA
 
メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察Fumiya Sakai
 
高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道Kazumi IWANAGA
 
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみるiOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみるFumiya Sakai
 

Similar to Siri shortcutlts LT (20)

部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめできるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
RxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップRxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップ
 
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
 
Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方Visual Studio 拡張機能の作り方
Visual Studio 拡張機能の作り方
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集
 
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
 
ユーザーを待たせないためにできること
ユーザーを待たせないためにできることユーザーを待たせないためにできること
ユーザーを待たせないためにできること
 
Unity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsUnity + PlayFab + Azure Functions
Unity + PlayFab + Azure Functions
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
 
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescript
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
 
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
観たいセッションがかぶった!なんて心配ご無用。今年は、興味の赴くままにあれもこれも♪
 
メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察
 
高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道高さ比べじゃない、キャリアは歩んできた道
高さ比べじゃない、キャリアは歩んできた道
 
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみるiOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
 

Siri shortcutlts LT