見出し画像

オートラップ計測ロボットを作る ー VUI編

今回が最終回となります。前回でオートラップ計測ロボット単体としては完成し、練習中のラップタイムがどんどんクラウドに蓄積されています。

このデータはCloud Firestore(NoSQL Database)に保存されていて、コンソールから閲覧、検索することができます。

これでも十分なんですが、これにVUI(Voice User Interface)を付加して、いままででもっとも速かったタイムをGoogle Assistantから教えてもらえるようにします。

先にどんな会話になるかイメージ画像でお伝えします。本当はGoogle Home Miniへ問い合わせる様をムービーにしようかと思いましたが、テストバージョンは日本語では動作しないようで、英語で発話しないといけないが私のブロークンな英語を披露するもの気が引けるので、イメージだけにします。

Google AssistantアプリはiOS/Androidでも利用できるので、これで十分といえば、十分です。まず、コースマネージャを呼び出します。

次に、コースマネージャにコースレコードを聞いてみましょう。Dialogflowのintentには以下のような文に反応するように設定しています。

では、「コースレコードを教えて?」と発話してみます。

コースマネージャがさきほどのCloud Firestoreのデータを検索して、もっとも速かったラップタイムを教えてくれます。

これぐらい長い返答になると、やはりアプリのGoogle Assistantの方が文章が残るので確認しやすいですね。

返答部分のプログラムは以下のようになっています。

function replyCourseRecord(courseRecord) {
  let reply = '';
  if (courseRecord.exists) {
    const best = courseRecord.data();
    let recordedAt = convertRecordedAt(best.lapTime.recordedAt);
    reply = `もっとも速かったラップタイムは${recordedAt}${parseFloat(best.lapTime.time).toFixed(2)}です。`;
    recordedAt = convertRecordedAt(best.totalTime.recordedAt);
    reply += `もっとも速かったトータルタイムは${recordedAt}${parseFloat(best.totalTime.time).toFixed(2)}です。`;
    return reply;
  } else {
    return 'いまのところ、記録はありません。';
  }
}

FulfillmentのAPIはV2を利用しています。今後はV2を使うほうがいいでしょうね。すべてのソースコードはGitHubにて公開済みです。

こうやって自分の練習結果がいつでも閲覧、問い合わせできることで、より練習に励むことができるようになりました。

IoTを使ってなにかやってみたいと思っても、じゃあ何作る?ってなることが多いですが、自分の趣味に役立つものを作るのは、こんなに楽しいものかと感じました。当然仕事より楽しかったです。まあ、私の場合は仕事でもプログラミングは楽しいんですけどね。

Google Assistantのプログラミングは、プログラミング言語の習得・教育にも最適ではないかと思います。

ぜひ、みなさんも挑戦してみてください。

この記事が気に入ったらサポートをしてみませんか?