超簡単にプログラミングなしでGoogle Home (Mini)のアプリを作って、実機でテストしてみる

株式会社diffeasyの政栄です。主にバックエンド担当です。(Rails)
今日はオフィスにGoogle Home Miniがきたので、戯れてみたことをまとめます。

この記事は [diffeasy Advent Calendar 2018](https://qiita.com/advent-calendar/2018/diffeasy) 13日目の記事です。


# この記事を読んでできるようになるはずのこと
- お手持ちのGoogle Home(Mini)に好きな言葉をしゃべらせる
- 登録した言葉を使って会話できるようにする

### たぶんGoogle Home Miniを使うためのアプリ開発の中で一番難易度は低いんじゃないかなと思います。
### エンジニアじゃなくてもできます！

# 必要なもの
- パソコン
- Googleアカウント
- Google Home (mini)
    - なくてもPC上でテストはできます。

# やったこと
- レンジャー五訓の復唱アシスタントアプリ

# やり方
はじめての用語がたくさんでてきますが、各種用語については下記リンク先のまとめ記事がとても役に立ちますので、こちらを参照ください。
[Dialogflow入門](https://qiita.com/kenz_firespeed/items/0979ceb05e4e3299f313#%E9%87%8D%E8%A6%81%E3%81%AA3%E3%81%A4%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89)

## Actions on Googleにてプロジェクトを作成する

1. [Actions on Google](https://console.actions.google.com)にアクセス
![image.png](https://qiita-image-store.s3.amazonaws.com/0/221884/0cc01b15-48c2-0e87-675b-2157d938834b.png)
1. Add/import projectを選択
1. プロジェクト名と言語等の設定をする
![ 2018-12-13 15.42.27.png](https://qiita-image-store.s3.amazonaws.com/0/221884/c5772aec-5fa3-7a55-50f0-7dd8ba00b388.png)
    - Choose the default language for your Actionsは 'Japanese' を選択
        - これは実行するアクションの言語の設定
    - Choose your country or regionは 'Japan' を選択
1. CREATE PROJECTを選択
1. 下記画面は右側にある skipを選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/221884/673d3163-ae00-eb3e-08f8-54e4122f873d.png)
1. この画面が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/221884/1aebaad2-f8f4-ea01-9ee6-4ca8e89765b7.png)
1. Quick setupにある Decide how your Action is invokedを選択
    1. この項目では作成したアプリの呼び出し方法を決めます。
1. Display nameに記載した文言で呼び出すことができます。
![ 2018-12-13 16.13.49.png](https://qiita-image-store.s3.amazonaws.com/0/221884/01ba8c2d-453e-49e8-9f62-626e6e49d81f.png)
Google Home Miniで話しかける場合は「OK,Goole レンジャー五訓につないで」をトリガーにアプリを起動することができます。
※〇〇につないでがサードパーティ製アプリ起動のトリガーになってます。
1. 呼び出し方法を記入したら右上のSAVEを押してください
1. サイドバーのBUILDの下にあるActionsを選択し、ADD YOUR FIRST ACTIONをクリックしてください。
1. 次に表示されるダイアログではそのままBUILDを選択してください。

※次からdialogflow上の設定をしますが、初回ログインのときはgoogleの認証が表示された気がします。

## Dialogflowで受け付ける言葉と返却する言葉を決める
1. DEFAULT LANGUAGEをJapanese - jaにするして、右上のCREATEをクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/221884/e6ae41a3-724f-f927-6254-86f00dafb42b.png)

1. 初期からある Intentの説明

- Default Fallback Intent
    - アシスタントがユーザーの発言を聞き取れなかったときに返す言葉を設定できます。
- Default Welcome Intent
    - アプリ起動時に発言してくれるセリフを設定できます。

今回は上記2つは初期値のままにしておきます

### Intentの登録
1. CREATE INTENTを選択
2. Intentの登録内容は下記２つを登録します
    - Intent Name
        - これはIntentの名前です。自由に書いてok
    - Training phrases
    - Responses
![ 2018-12-13 17.44.44.png](https://qiita-image-store.s3.amazonaws.com/0/221884/7f8fc275-e378-4b61-3c69-7b387a47eaa4.png)
3. ひとつという言葉を聞くと、五訓の１つ目の飯は食うものと思うなをGoogle Homeがしゃべってくれます。

### Entitiesの登録
1. CREATE ENTITIESを選択
1. ユーザーから抽出したいキーワードを登録する 
![ 2018-12-13 17.54.01.png](https://qiita-image-store.s3.amazonaws.com/0/221884/17059911-1c6c-8c39-1676-4aefa7ded4f3.png)

### さきほど作ったIntentのパラメータにEntitiesをセットする
![ 2018-12-13 17.56.48.png](https://qiita-image-store.s3.amazonaws.com/0/221884/05573e24-bfcd-01fe-12fa-93a7f89cff20.png)

### あとは同じ要領で五訓すべて登録していきます。
ちなみに、レンジャー部隊の五訓は下記の通りらしいです。
1. 飯は食うものと思うな
2. 道は歩くものと思うな
3. 夜は寝るものと思うな
4. 休みはあるものと思うな
5. 教官・助教は神様と思え

## PC上でテスト
- 左サイドバーのIntegrationsを選択し、Google Assistantをクリックする
- Auto-preview changesはONにしておく
- 下部のTESTをクリック
![ 2018-12-13 18.00.27.png](https://qiita-image-store.s3.amazonaws.com/0/221884/18c6c732-db0d-65f2-f306-8eec92fa73ac.png)

### 真ん中の画面上でテストできます。
![FireShot-058---Actions-on-Google_---https___console.actions.google.com_u_0.png](https://qiita-image-store.s3.amazonaws.com/0/221884/d939e115-1487-8c82-2cac-3f709d410b07.png)

- レンジャー五訓につないで
- 一つ

と入力していき下記画面のように反応が帰ってきていれば成功です。
![ 2018-12-13 18.05.29.png](https://qiita-image-store.s3.amazonaws.com/0/221884/07fb55ee-b8be-cdca-af15-3084e8e9dc50.png)


## 実機のGoogle Home Miniでテスト
なんとGoogle Home MiniとActions on Googleで同じGoogleアカウントを設定している場合、PCでテストするのと同時にGoogle Home Miniでもテスト可能な状態になります。
ただし、1アカウントにつき1つしかテストできないので注意してください。


## まとめ
- やってみて、なれると以外と簡単に自分の好きな言葉に任意の言葉を返すアプリケーションの作成ができる
- 簡単なやり方ですが、工夫次第ではプログラミングなしでいろいろできるなぁと思いました。