これは 日本情報クリエイト Engineer's Advent Calendar 2017 の4日目の記事です。
#はじめに:
わたしが**「スマート.+」**ということばに最初に触れたのは、たぶんファンタジーゾーン(FANTASY ZONE SEGA 1986)というシューティングゲームです。
YouTube 「初代ファンタジーゾーン ワンコインクリア」プレイ動画
https://www.youtube.com/watch?v=45YStRIDVpY
このシューティングゲームにはなぜかパーツショップがあって、そこで売られている **「SMART BOMB」**が、弾幕回避が下手くそなわたしには、とても素敵な存在でした。
で、当時のわたし(10歳)は上の画像より**「SMART BOMBとは、ほっそりとすらっとしたスタイルのボムのことなんだ」**と、理解していました (だってFIRE BOMBはふとっちょじゃん)。
さて、時は流れ、スマートフォン・スマートウォッチ・スマートメーター・スマートセンサーなどいろんなスマートがあふれる時代。
ようやく今、スマートとは**「賢い・高性能」**という意味で使われる言葉だと理解しました。ちなみに、スマートボムとは誘導爆弾のことだそうです。
そして今わたしの目の前にあるのは「スマートスピーカー」。このスマートなスピーカーで、なんかやってみましょう。
#スマートスピーカーでスマートホーム:
Google Home では、おうちの赤外線リモコンを制御したり、おうちのコンピューターのトリガーを引くことができます。
やりかたは、以下のような方法が考えられます。
- Google Home -> IFTTT -> おうちのiRKit -> おうちのテレビ
- Google Home -> IFTTT -> ngrok -> おうちのHTTPListener -> おうちのApp
- Google Home -> IFTTT -> beebotte(MQTTへpublish) -> おうちのApp(MQTT Subscribe)
#登場する要素のスマートな説明:
https://ifttt.com/discover
IFTTT(if this then that)は、「きっかけ」と「行動」をつないだ「レシピ」を作ることができるWebサービスです。
「this」に**「Google Home で[部屋のあかりをつけて]と呼びかける」、「that」に「Webhookで自宅のiRKitにメッセージを送信する」としたレシピを作れば、「ねぇgoogle 部屋のあかりをつけて」**と話して制御できる赤外線リモコンができます。
http://getirkit.com/
iRKitは、無線LANに接続できる赤外線リモコンデバイスです。Amazonで¥8,000ぐらいです。
おうちに設置したiRKitを外部(インターネット)から呼び出す方法が標準で用意されており、iPhoneのアプリと組み合わせれば出先から自宅のエアコンをON/OFFできます。
https://ngrok.com/
ngrokは、LAN内のPCでリッスンしているポート(外部に開放していない)に、グローバルからアクセスするトンネルを作るツール・Webサービスです。
おうちで動いているPCでWebサーバーを動作させただけではインターネット側から見ることはできませんが、ngrokで HTTP 80 のトンネルをおうちのPCにつなぐと、ルーター等にはなんの手を加えることなくインターネット側からアクセスできるようになります。
MQTT(Message Queue Telemetry Transport)は、IoTなどでよく使われる、メッセージ配信プロトコルです。
送信側は、受信側の都合は気にせず、送りたい内容だけ意識して送信すればよい。受信側は、送信側の都合は気にせず、欲しい情報を好きな時に受信すればよい。そういう、ゆるく(?)て軽量なコミュニケーションができます。
https://beebotte.com/
beebotteは、MQTTのプロトコルが使えるブローカーサービスです。
beebotteのよいところは、REST to MQTTブリッジサービスが用意されている点で、普通の HTTP POST でメッセージを送信することができます。
#おうちのコンピューターのトリガーをひいてスマートなことをする:
Google Home 特徴は、何と言っても**「ずば抜けた音声認識精度」です。
テレビがついて音が鳴っていても、5m離れたところからでも、「ねぇgoogle、外の温度は?」と呼びかければ「新宿の気温は15度です」**と答えてくれます。
###たとえばその1。
あらかじめ、自分の通勤経路で使用する鉄道会社の運行情報をWebで調べて問題があればそれを読み上げるアプリを作っておきます。
このアプリを、上記の Google Home トリガーで動作するようにしておき、**「ねぇgoogle、今日は出社できるかな」と話しかけると、「残念ながら無事出社できそうですよ、今日もお仕事頑張ってくださいね」**とPCから喋る音声ソリューションができます。
※本当は Google Home が喋るのが良いのですが、できるけどすごく面倒なのでPCで喋らせるのが現実的です。どうしてもやりたい場合は、以下が参考になります。
Google Homeで時報を知らせる
https://qiita.com/udon11/items/fef44cec7b243f93151b
###たとえばその2。
NHKは、NHK番組表APIという番組表の情報をJSONで受け取ることができるサービスを公開しています。**「次の直虎のタイトルは何?」とか、「今日のNHKの放送終了時刻は何時?」**とか、やや便利そうなものがつくれます。
NHK番組表API
http://api-portal.nhk.or.jp/
###ほかにも。
PCゲームをプレイ中に**「ねぇgoogle、録画を開始」**という音声キーワードでプレイ動画を撮れるようにしておくと、両手はゲーム操作を続けたままで、音声入力という新しいチャネルでアクションが実行できます。
※もちろん、あらかじめトリガーを受け取るアプリを作っておく必要があります。
#まとめ
これまでの音声入力のいちばんの問題は、**「しゃべってんのにうまく認識されねー!」**でした。
ここが、かなり良い感じに解決されているのが今年のスマートスピーカー。
やっとくとよいですよ。