GoogleHomeから声でツイートできるアプリを作った

声でTwitterできるようにならないかな~

というわけでGoogleHomeを使って声でツイートができるアプリを作りました。

この記事は2018年4月13日に行われた新歓LightningTalksで発表した、
「GoogleHomeでTwitter」の内容を記事にしたものです。

 

発表スライドです。

 

ちなみに発表がどんな感じだったかは下の記事を参照してください。
(そんなにうまく発表できなかった)

しくみ解説

図です。(これ作るのめっちゃ時間かかった)

ざっくり流れを説明すると、

  1. GoogleHomeに「OK Google, Twitter (ツイート内容)」と話しかける
  2. IFTTTのアプリが起動、「(ツイート内容)」をWebhookとして自分のサーバにPOST送信
  3. サーバはWebアプリを起動、「(ツイート内容)」をツイート

といった感じです。

詳しく(?)解説していきたいと思います。

IFTTT側

IFTTT(イフト)とは、様々なWebサービスを組み合わせることで、新しいWebサービスを作ることができるWebアプリです。

特徴は何といってもプログラミング無しで完成しちゃうところです。(スマホのアプリで完成しちゃいます。)

詳しくは下の記事を参考にしてください。

ここでは連携サービスに「GoogleAssistant」と「Webhooks」を使うことにして、
GoogleHomeで「Twitter」と喋ったなら、それ以降の文をWebhookとして送信
という風に設定しました。

つまり、「OK Google, Twitter (喋りたい内容)」は

OK Google,(GoogleHomeを起動)
Twitter(IFTTTのアプリを起動)
(ツイート内容)(ツイート内容)

という構成になってるわけです。

Webアプリ側

飛んできたWebhookを処理してツイートする側です。

ここはちゃんと自分でつくりました。

アプリケーションサーバにはUnicornを使い、フレームワークにはSinatraを使ってWebアプリを構成しています。

SinatraはRuby on Railsよりも軽量なフレームワークで、小さなWebアプリケーションを作るのに向いてます。(実際うってつけだった)

ここでやっていることは、

  1. 受け取ったWebhookがちゃんとIFTTTから送られたものなのかを確認して、
  2. 文章からスペースを除去して
  3. ツイートする

といった感じになっています。

実はGoogleHomeから発言した内容というのは、単語ごとに区切られたものになっており、それをそのままツイートするといかにも機械から送ったかのようなおかしな文章になってしまいます。

それを解消するために、スペースを除去してるわけです。

こんな感じでツイートしてます。

おしまい。

質問とか

発表中にTwitterにつぶやかれてた質問とかに回答していきます。

Q. これ大声で「OK Google!」って叫んだら全員のGoogleHomeが起動すんの?

A. 起動することができます(できるとは言ってない)

できるとは言ってないのは、GoogleAssistantには人の声色を認識する機能がついてて、自分の声の「OK Google」にしか反応しないようにすることができます。(さすがGoogle)

しかし、もちろん自分の声を認識させる設定をしないといけないので、設定してないGoogleAssistantは起動できるというわけです。

ちなみに僕は面倒くさがって設定していません()

Q. IFTTTだけでGoogleHomeからツイートできない?

A. ぶっちゃけできます

IFTTT最高だな!

…って思うかもしれないんですけど、
先述した通り、スペースが残って気持ち悪い文章になります。

あとクライアント名が「IFTTT」になってかっこ悪いし、
アプリの起動ワードを前と後ろに置かないと動いてくれません。(例:OK Google, Twitterで(ツイートしたい内容)とツイート)

ちなみに僕のやつのクライアント名は「nagatech on PostTweet」です。
かっこいい

Q. これ使うことある? / 使ってんの?

A. 使ってるわ!!!

作ったのでちゃんと使ってます。

よく「寝るか」とか「おやすみなさい」とかツイートするときに使ってます。

寝る前に電子機器を使わないでTwitterができる…なんて起床にやさしいんだ…

おしまい

気になった人はGitHubからcloneしてがんばって設定して使ってみてください。

GoogleHomeはいいぞ~