2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Home(おっけーぐーぐる)で漢字テストをはじめよう

Posted at

#はじめに

2017年冬休み明けに漢字テストをするから、しっかり練習しといてねと、小学生のこどもに漢字の宿題がでました。
しかし、答えの書かれたプリントが配布されただけで、練習用のプリントはありませんでした。
問題だけ書いたプリントを自作すればよかったのですが、印刷の手間を考えると、面倒くさかったり、最終的にゴミになると思い、Google Homeで問題を読み上げることにしました。

#前提
 Google Homeは自発的に発声することは標準ではできません。
 「Google Home しゃべらせる」等で検索して、設定しました。
 google-home-notifierをRaspberry Piにインストールし、firebaseの更新をトリガに
 発声させる仕組みにしています。

#概要
kanji.png

「おっけーぐーぐる 漢字テスト」の呼びかけで、「IFTTT」を経由し、Google SpreadSheet内のスクリプトが起動します。
スクリプトで、漢字の問題が記載されたSpreadSheetを1セルずつ読み、出題するという流れです。

#準備
以下のような感じで、問題用のSpreadSheetを用意します。
q002.png

#詳細
IFTTT経由で、スクリプトを実行させます。
「漢字テスト開始ファイル」というファイルに行を追加することで、ファイル変更をトリガーに設定されたスクリプトを実行します。

ifttt002.png

スクリプトのトリガー設定
trigger002.png

以下のようなスクリプトを実行させます。

コード.gs
// 漢字テスト用のファイル
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のレコード更新を検知してしゃべります)

CommonScripts.gs

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楽しいです:grinning:
子どもの知育にもよいのでは!?と勝手に思ってます!

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?