ludwig125のブログ

頑張りすぎずに頑張る父

GoogleHomeに話しかけてメモを記録したりメモを読み上げてもらう

GoogleHomeでやりたいこと

やりたいこと(ぱっと思ったこと)

  • 「シャンプー買わないと」とか「歯医者の予約しないと」とか、ぱっと頭に浮かんだことを言うだけでメモっておければ便利
  • さらに、そのメモを読み上げてもらえれば嬉しい
  • ドラクエ3で、主人公に他のキャラクターが言ったセリフを思い出すことができる特技があったので、ここから着想を得た
    • ドラクエ3の主人公の特技
      • おもいだす 会話を3つまで思い出す 会話を32個まで思い出す
      • もっとおもいだす 会話を10個まで思い出す
      • ふかくおもいだす 会話を32個まで思い出す

やりたいこと(より具体的に)

  • GoogleHomeに話しかけることでメモの記録をしたい  - 「Ok Google, メモって "シャンプー買う"」
  • GoogleHomeに話しかけることで、記録したメモを読み上げてもらいたい  - 「Ok Google, メモを読んで」→ 「シャンプー買う」

メモを記録

_in

メモを読み上げる

_out

こだわり

Raspberryがあればもっと色々できるが、GoogleHome以外は お金をかけず無料で 作ることを目指した

登場する単語

GoolgleAssistant(Googleアシスタント

公式 - https://assistant.google.com/intl/ja_jp/

概要 - https://ja.wikipedia.org/wiki/Google%E3%82%A2%E3%82%B7%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%88

GoogleアシスタントGoogleが開発したAIアシスタント

IFTTT

公式 - https://ifttt.com/discover

概要 - https://ja.wikipedia.org/wiki/IFTTT

IFTTT(イフト)とは「レシピ」と呼ばれる個人作成もしくは公に共有しているプロフィールを使って数あるWebサービスFacebookEvernote、Weather、Dropboxなど)同士で連携することができるWebサービスである。

  • 様々なアプリやGPSの位置情報とかを使って、プログラミングせずに他のアプリにデータを連携したりすることができる
  • 今回作るものでは、GoogleAssistantからGoogleSpreadSheetにデータを連携するのに使う

GoogleSpreadSheet(Googleスプレッドシート

公式 - https://www.google.com/intl/ja_jp/sheets/about/

概要 - https://ja.wikipedia.org/wiki/Google_%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88

Googleが無料提供する、ウェブブラウザ内で動くオフィスソフト。

  • オンラインで使えるエクセルみたいなもの
  • PCやスマホからも見られるので外出先でも閲覧・編集できるのが良い点

Actions on Google

公式 - https://developers.google.com/actions/extending-the-assistant?hl=ja

アプリは、アクションを開発できるようにすることで、Google アシスタントを拡張するものです。アクションにより、ユーザーはあなたの製品やサービスを使用して物事を行うことができます。

  • Googleアシスタントから呼び出すアプリのプラットフォーム
  • 今回は後述のDialogflowを使ったアプリを管理する

Dialogflow

公式 - https://dialogflow.com/

Give users new ways to interact with your product by building engaging voice and text-based conversational interfaces powered by AI. Connect with users on the Google Assistant, Amazon Alexa, Facebook Messenger, and other popular platforms and devices.

  • GoogleAssistantなどから受け取ったユーザが発声した言葉やテキストベースの入力に対して、自然言語処理して決められたメッセージを返したり、外部のWebサービスと連携したりすることができる
  • 今回作るものでは、GoogleAssistantからの入力を解析してHerokuのアプリケーションに必要な値を渡し、返却値をGoogleAssistantに返す役割を担う

Heroku

公式 - https://www.heroku.com/platform

Heroku is a cloud platform based on a managed container system, with integrated data services and a powerful ecosystem, for deploying and running modern apps.

  • PAASのWebサーバを作ることができる
  • pythonなどの様々な言語に対応
  • 今回作るものでは、Dialogflowからのリクエストを元にGoogleSpreadSheetの値を必要な件数だけ取得して返す役割を担う
  • 使うにあたって最低限のgitの知識は必要(commitとかpushとか)

Django

公式 - https://docs.djangoproject.com/ja/2.0/intro/overview/

Django は変転の激しいニュースルーム環境で開発された経緯から、よくある Web 開発タスクを迅速かつ簡単化するように設計されました。ここでは Django による データベース中心の Web アプリケーション開発をざっと見てみましょう。

アプリ作成開始時のスキル

  • python: 仕事でちょっと書いている
  • git: 仕事で使っている
  • vim: 仕事で使っている
  • IFTTT: 試しに使ったことはある
  • GoogleSpreadSheet: 試しに使ったことはある
  • Dialogflow: よくわからない
  • Heroku: 知らない(PAASとか触ったことない)
  • Django: 知らない(Webフレームワークとか触ったことない)

全体の構成

方針設計

0. やりたいことの整理と設計(このページ)

アプリ作成に向けて必要なことを調べる

1. Herokuのチュートリアルをする

2. Djangoのチュートリアルをする

3. 実際にHerokuでアプリを作ってみる

アプリ作成

4. IFTTTを使ってSpreadSheetにメモを入力

5. HerokuアプリでSpreadSheetの中身を取得する

6. GoogleHomeに呼びかけてSpreadSheetのメモを読み上げてもらう

7. 使い勝手を良くする