#はじめに
2017年冬休み明けに漢字テストをするから、しっかり練習しといてねと、小学生のこどもに漢字の宿題がでました。
しかし、答えの書かれたプリントが配布されただけで、練習用のプリントはありませんでした。
問題だけ書いたプリントを自作すればよかったのですが、印刷の手間を考えると、面倒くさかったり、最終的にゴミになると思い、Google Homeで問題を読み上げることにしました。
#前提
Google Homeは自発的に発声することは標準ではできません。
「Google Home しゃべらせる」等で検索して、設定しました。
google-home-notifierをRaspberry Piにインストールし、firebaseの更新をトリガに
発声させる仕組みにしています。
「おっけーぐーぐる 漢字テスト」の呼びかけで、「IFTTT」を経由し、Google SpreadSheet内のスクリプトが起動します。
スクリプトで、漢字の問題が記載されたSpreadSheetを1セルずつ読み、出題するという流れです。
#準備
以下のような感じで、問題用のSpreadSheetを用意します。
#詳細
IFTTT経由で、スクリプトを実行させます。
「漢字テスト開始ファイル」というファイルに行を追加することで、ファイル変更をトリガーに設定されたスクリプトを実行します。
以下のようなスクリプトを実行させます。
// 漢字テスト用のファイル
var spreadsheet = SpreadsheetApp.openById('1_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
var sheet = spreadsheet.getSheetByName('問題');
// 問題の記載された列
var questionColumn = 1;
function readTest() {
// 読上げ開始位置
var currentRow = 1;
// 問題
var questionStr = "";
// 問題の読上げ
questionStr = sheet.getRange(currentRow,questionColumn).getValue();
while ( questionStr != "") {
Logger.log(questionStr);
CommonScripts.sendGoogleHomeLiving(questionStr);
// 問題を出したあとは30秒待機
Utilities.sleep(30000);
currentRow = currentRow + 1;
questionStr = sheet.getRange(currentRow,questionColumn).getValue();
}
}
Google Homeにしゃべらせるためのメソッドは外だしにしていて、以下のように実装しています。(Firebaseのレコード更新を検知してしゃべります)
function sendGoogleHomeLiving(message){
var url = "https://hogehogehoge.firebaseio.com/test.json";
var payload =
{
"message" : message
};
var options =
{
"method" : "PUT",
"contentType": "application/json",
"payload" : JSON.stringify(payload)
};
Logger.log(JSON.stringify(payload));
UrlFetchApp.fetch(url, options);
// 同じ命令を繰り返した時に発声しないので、DBの値をクリア
if( message != "" ) {
sendGoogleHomeLiving("");
}
}
#まとめ
こいつのおかげか、漢字テストには合格したようでした。
子どもも、目新しいせいか、進んで「おっけーぐーぐる 漢字テスト」と言っては、
漢字の練習をしていました。
ただ、実装にあたりいくつか課題(気づき)もありました。
・Google Action Scriptの実行時間に制限(6分)があり、超えると途中で止まってしまう。
→今回、漢字を書いている時間を考慮して、途中でsleepを入れています。そのことで、どうしても処理時間が長くなってしまいます。
https://developers.google.com/apps-script/guides/services/quotas
・「市場(いちば)」が問題なのですが、漢字で入力しておくと、Google Homeは「しじょう」と読みました。この辺りは、ひらがなで入力するなどの対策が必要でした。
Google Home、GoogleAppsScript楽しいです
子どもの知育にもよいのでは!?と勝手に思ってます!