Slide 1

Slide 1 text

OK Google, iOSアプリをデプロイして 2019/03/26 GCPUG Sendai #1 Akira Shimizu / asmz 1

Slide 2

Slide 2 text

2 誰なのか? ● Akira Shimizu / asmz (@_asmz) ● https://asmz.beer/ ● 株式会社ビデオマーケット 仙台オフィス ● iOSエンジニア ● GCP周辺技術が割と好き ○ Firebase、Actions on Google etc...

Slide 3

Slide 3 text

3 今回やってみたこと

Slide 4

Slide 4 text

4 今回やってみたこと 開発中のアプリベータ 版、最新版が欲しいんだ けど... う〜ん、 起きたくない...zzZ

Slide 5

Slide 5 text

5 今回やってみたこと OK Google, iOSアプリをデプロイし て〜 ワカリマシタ

Slide 6

Slide 6 text

6 今回やってみたこと Zzz... デプロイガ オワリマシタヨ きたきた〜 わ〜い

Slide 7

Slide 7 text

7 本日の材料

Slide 8

Slide 8 text

iOSアプリCI/CD 本日の材料 Actions on Google 物理デバイス 8 Google Home Raspberry Pi Cloud IoT Core Cloud Datastore Cloud Functions Bitrise Google Assistant Dialogflow

Slide 9

Slide 9 text

9 下ごしらえ

Slide 10

Slide 10 text

10 下ごしらえ ● まずはiOSアプリCI環境を構築します Push Hook delivery (development) upload - Code signing - Provisioning - Build (production) download 省 略

Slide 11

Slide 11 text

11 下ごしらえ ● デプロイに必要なもの ○ 対象ブランチ ○ BitriseのWorkflow ● Workflowとは ○ ビルドに必要な一連の作業フ ローを定義したもの ○ 開発用、本番用などビルドの 種類分用意する

Slide 12

Slide 12 text

12 下ごしらえ ● 対象ブランチとWorkflowが決まれば、Webhook URLでCIタスクをKickすることが可能!

Slide 13

Slide 13 text

13 システム構築

Slide 14

Slide 14 text

14 User Devices Mobile App CI/CD Google Home Actions on Google Raspberry Pi Cloud IoT Core Cloud Datastore Cloud Functions Cloud Functions Bitrise Google Assistant Dialogflow 全体構成

Slide 15

Slide 15 text

15 【往路】 Google Home→ デプロイ開始

Slide 16

Slide 16 text

16 Google Home→ デプロイ開始 16 User Devices Mobile App CI/CD Google Home Actions on Google Cloud Datastore Cloud Functions Bitrise Google Assistant Dialogflow POINT!

Slide 17

Slide 17 text

● Dialogflowとは ○ 自然言語解析エンジン ○ 人間の普通の会話形式の言葉を聞き取り、解析 ○ Googleアシスタント用アプリの開発プラットフォーム「Actions on Google」に統合 17 音声アシスタント接続、言語解析 Google Home Google Assistant Server Dialogflow

Slide 18

Slide 18 text

音声アシスタント接続、言語解析 ● Entity定義 ○ 発話内容をパラメータ値にマッピング 18 発話内容 パラメータ値

Slide 19

Slide 19 text

音声アシスタント接続、言語解析 ● Intent定義 ○ 音声アシスタントのメインフローを定義 19 音声アシスタントが POSTに必要なパラメー タ値を聞き出す

Slide 20

Slide 20 text

音声アシスタント接続、言語解析 ● Fulfillment定義 ○ 必要なパラメータ取得後に行う処理を定義 20 今回はCloud Functionsへ Webhookするよう設定

Slide 21

Slide 21 text

21 解析したパラメータをBitriseへPOST 21 User Devices Mobile App CI/CD Google Home Actions on Google Cloud Datastore Cloud Functions Bitrise Google Assistant Dialogflow ① パラメータ: branch, workflow ② Webhook URLへ POST ③ Bitriseレスポンスの「ビ ルド番号」保存

Slide 22

Slide 22 text

22 【復路】 デプロイ終了 → Google Home

Slide 23

Slide 23 text

23 デプロイ終了 → Google Home User Devices Mobile App CI/CD Google Home Raspberry Pi Cloud IoT Core Cloud Datastore Cloud Functions Bitrise POINT!

Slide 24

Slide 24 text

Cloud IoT Coreとは 24 ● GCPから各種IoTデバイスと接続・管理・データ取り込 みなどを行えるフルマネージドサービス ○ クラウド⇔デバイス双方向通信が可能 Cloud IoT Core 各種IoTデバイス・センサー HTTPS / MQTT

Slide 25

Slide 25 text

Cloud IoT Coreとは 25 ● レジストリ作成 利用するプロトコル 端末からの上りイベント を流すPub/Subトピック

Slide 26

Slide 26 text

Cloud IoT Coreとは 26 ● 端末定義 デバイス側でキーペアを 作成し、公開鍵をコン ソールに設定

Slide 27

Slide 27 text

Cloud IoT Coreとは 27 ● デバイス側MQTTクライアント設定(ex. Node.js)

Slide 28

Slide 28 text

Cloud IoT Coreとは 28 ● デバイス側MQTTクライアント設定(ex. Node.js) ● これでクラウド⇔デ バイス双方向通信 が可能に!

Slide 29

Slide 29 text

29 デプロイ終了通知をIoT Coreへ伝達 User Devices Mobile App CI/CD Google Home Raspberry Pi Cloud IoT Core Cloud Datastore Cloud Functions Bitrise ① パラメータ: ビルド番号 ② ビルド番号存在 チェック ③ メッセージ(ビルド番 号)送信

Slide 30

Slide 30 text

30 Raspberry Piで通知受信、発話 User Devices Mobile App CI/CD Google Home Raspberry Pi Cloud IoT Core Cloud Datastore Cloud Functions Bitrise

Slide 31

Slide 31 text

Raspberry Piで通知受信し発話 31 ● 「google-home-notifier」で同一ネットワーク内のGoogle Homeへ発話指示 ○ https://github.com/noelportugal/google-home-notifier

Slide 32

Slide 32 text

32 完成!

Slide 33

Slide 33 text

成果物 33 ビルド番号 373 番の デプロイがおわりましたよ 約10分後

Slide 34

Slide 34 text

34 感想・まとめ

Slide 35

Slide 35 text

35 やってみての感想 ● 定型的な作業向き ○ ベータ版アプリの再配布 ○ 環境違いのベータ版の配布 など ● リスク低な作業向き ○ リリースビルドなど間違えたくないデプロイは音声より文字 での確認の方がしやすい

Slide 36

Slide 36 text

36 やってみての学び ● アイデア次第でいろんなことに応用できそう ● Cloud IoT Coreを使った、クラウドから物理デバイス との双方向通信は、結構応用が効きそう ○ 重度障害発生時に音で知らせる、パトランプ回す ○ Webからの家電操作(ラズパイ+赤外線リモコン) 便利な使い方あれば、 ぜひGCPUG Sendaiで発表を!

Slide 37

Slide 37 text

37 Enjoy Engineering! 2019/03/26 GCPUG Sendai #1 Akira Shimizu / asmz

Slide 38

Slide 38 text

38 [PR] 個人開発アプリのご紹介 ● ITイベント・勉強会検索アプリ「EVENTech」 ○ connpass検索機能使えなくて不便ですよね... ○ あります、検索機能。 ○ https://eventech.asmz.beer/