GoogleCloudPlatform
素数大富豪
GoogleAssistant
GoogleHome
dialogflow

素数大富豪がはかどる素数判定Botをビルドしてみた(Google Assistant 編)

前回、Slack から素数判定できれば素数大富豪がはかどりそうなので試しにつくって実戦投入してみました。投入してみた結果、課題がいくつか見えてきました。この記事では、それら課題の解決にむけて検討したアップデートです。

課題

第2回社内素数大富豪で Slack アプリを導入してみた結果、つぎの課題が見えてきました。

  • 真偽値だけでなく素因数分解した結果が知りたい。
  • 場に出したカードの枚数が判定履歴から正確にはわからない。
  • 素数判定のための(肉体的)負荷が高い。

ここでは、最重要課題である3つめの課題について検討したいと思います。

スタック

各プレイヤーが自分のターンで場に出した数字が素数かどうかを、
Google Home Mini に問い合わせることにより、素数判定に伴う(肉体的)負荷軽減を期待したいと思います。素数判定 API バックエンドと Dialogflow エージェントは前回構築したものを再利用します。

stack-with-google-home-mini.png

前回からの変更点

  • DialogflowGoogle Assistant をインテグレーション。
  • プレイヤーの入出力端末は、スマホではなく Google Home Mini にリプレイス。

実装

実装はつぎのステップを踏みます。実装といってもコンフィグレーションだけです。

  1. Actions on Google プロジェクトの追加
  2. DialogflowGoogle Assistant のインテグレーション
  3. 会話終了 Intent の追加
  4. Assistant app の登録
  5. Google Home Mini のセットアップ

1. Actions on Google プロジェクトの追加

Actions on GoogleGoogle Assisstant にサードパーティ機能を追加するためのデベロッパープラットフォームです。 Actions on Google コンソールにログインしたら、GCP のプロジェクトを指定(ここでは前回同様 prime-daifugo を指定)して Actions on Google にプロジェクトを追加します。

add-project-to-actions-on-goolge.png

project-overview-on-actions-on-goolge.png

2. DialogflowGoogle Assistant のインテグレーション

Dialogflow コンソールにログインして、前回つくったエージェントを選択します。左メニューから Integerations をクリックします。

integrate-with-google-assistant.png

Google AssistantINTEGRATION SETTINGS をクリックします。ダイアログが表示されたら、つぎのように設定します。素数判定前回追加した Intent です。

Key Value
Explicit invocation* Default Welcome Intent
Implicit invocation 素数判定
Auto-preview changes OFF

manage-assistant-app.png

設定できたら、MANAGE ASSISTANT APP をクリックします。Actions on Google コンソールに移動します。ActionsDialogflow actions になっていることを確認しておきます。

dialogflow-actions.png

引き続き Dialogflow コンソールで、アプリとの会話を終了するための Intent を設定します。

3. 会話終了 Intent の追加

Google Home Mini からアプリ(レイチェルさん)を呼んで素数判定させるのですが、一度アプリを呼ぶと、一定時間ユーザからの入力を待ち続けたのち、入力がなければ終了します。素数判定してもらったら、アプリを明示的に終了できるようにしておきましょう。

Google Assistant とインテグレーションした Dialogflow エージェントでは、会話を終了するための Intent を追加できます。

Key Value
Intent name 会話終了
User says ありがとう
Response こちらこそ
Google Assistant End conversation をチェック

end-of-conversation-intent.png

User saysResponse には、複数のセンテンスを登録しておきましょう。

この Intent を追加することで、たとえば、ユーザから「ありがとう」と入力があると「こちらこそ」などと返答させつつ、アプリを終了することができます。

4. Assistant app の登録

Actions on Google コンソールにログインして、さきほど追加したプロジェクトをクリックします。

dialogflow-actions.png

App Information を選択して、EDIT をクリックします。
つぎのような内容で設定してみてください。設定が済んだら SAVE をクリックします。

Key Value
Assistant app name レイチェル
Pronunciation レイチェルさん
Assistant app introduction [このアプリでできること] 素数判定
Assistant app voice Female 1 (JA)
Match user's language setting チェックなし
Short description 与えられた数が素数かどうか判定できます。
Full description 与えられた数が素数かどうか判定できます。
Sample invocations [Ok Google,] レイチェル につないで
Large banner image (1920 x 1080) 任意のイメージ
Small square logo (192 x 192) 任意のイメージ
Developer name (optional) 開発者名
Email 開発者メールアドレス
Privacy Policy プライバシーポリシー掲載URL
Category Games & fun
For Families No
Testing Instructions (optional) (入力不要)
Transactions チェックなし

app-information.png

Sample invocations は5つまで設定できます。Google Home Mini に聞き取ってもらえないときのことを考慮して、上限まで設定しておきましょう。

Privacy Policy には公開するアプリのプライバシーポリシーを記載したサイトURLを入力します。Google にアプリの公開を申請する場合は、きちんとしたものを用意する必要があります。ここではアプリの公開申請はスキップします。

App informationSAVE したら、Location targeting を選択して、NEXT をクリックします。Surface capabilities を選択して、つぎのように設定します。

Key Value
Does your Assistant app require audio output No
Does your Assistant app require a screen output No

ここまで設定したら、シミュレーターでテストしておきましょう。左メニューから Simulator をクリックします。
click-simulator-menu.png

オプションはつぎのように設定します。

Key Value
Surface Speaker (e.g. Google Home)
Language Japanese (Japan)
Location (現在地などの適当な場所)

画面左下の Input に「レイチェルさんにつないで」と入力して、Return(Enter) キーを押します。

simulate-app.png

これで、先ほど登録したレイチェルさんアプリを呼び出せるはずです。

素数判定させてみます。Input から適当なセンテンスを入力してみます。

では、最後に Google Home Mini からレイチェルさんを呼び出して素数判定してもらいましょう。

5. Google Home Mini のセットアップ

Google Home Mini(以下 GHM)をセットアップしていきます。ちなみに筆者は、大阪日本橋のイヤホン屋さんで購入しました。

開封したら同封されている手順にしたがってセットアップしましょう。セットアップには、Google Home アプリ(Android/iOS)とセキュアな WI-FI 環境が必要です。

GHM デバイスと gmail アカウントを忘れずにリンクしておきましょう。セットアップが済んだら、早速アプリを呼んでみます。

筆者Ok Google,レイチェルさんにつないで
GHMわかりました。 テストバージョンのレイチェルさんです。
レイチェルさんこんにちは!
筆者1729は素数ですか?
レイチェルさん素数じゃないわ。
筆者1009は?
レイチェルさん素数ね。
筆者ありがとう
レイチェルさんこちらこそ

このようなやりとりが実現できるはずです。ちなみに、レイチェルさんのイントネーションはとてもフラットで不自然な感じです。1

また、入力値と判定結果が正しい組み合わせになっているかは、Google Home アプリのマイアクティビティから確認できます。

まとめ

スマホと Slack に替えて、Google Home Mini と Google Assistant で、素数大富豪のための素数判定環境を実装してみました。

今回の実装が腰痛フリーなゲーム進行をどこまで実現できたのかは、次回、第3回目となる社内有志による素数大富豪大会2での評価を待ちたいと思います。

以上です。最後まで読んでいただきありがとうございます。


  1. イントネーションのチューニング方法があるのか、本記事執筆時(2017年12月21日)では未調査。 

  2. 開催時期未定。