2021年5月27日木曜日

2021/05/25

【Google Home班】

 今日はスプレッドシートに記録されたデータをグラフとして表示させようと取り組みました。まず、ブログに掲載されていた例(体温)を実際に作成することで理解を深めました。そのプログラムを応用して身長のグラフの表示にとりかかりました。もう少しで完成しそうですが、横軸の表示に苦戦しています...。 次回は、続きを!

 

【LINE班】 

まず前回記述したプログラムの整理と改善を行い、その後はお薬の一覧を表示するためのカルーセルの作成に引き続き取り掛かった。

本日はスクレイピングという技術を用いて、薬品名を自動検索し必要な情報をとってくる方法を理解した。(参考:「くすりのしおりスクレイピング」)

Webページから必要な情報をとってくるために、まずページの解析を行った。GoogleやFirefoxには開発者ツールというものがあるので、これを用いてページ内にどのような要素があるのかやネットワークの通信の動きを見ていった。

次にプログラムで、実際に情報を受け取ってみた。UrlFetchApp.fetchgetContentText('UTF-8')を用いてHTMLを取得し、その後正規表現をうまく活用することで欲しい情報が手に入った。

次回までに、実際にカルーセルにて画像の表示やURLの記述ができるようプログラムしていきたいと思う。


2021年5月20日木曜日

Google Homeがしゃべらなくなった

 2021.5.19の朝、突然Google Homeがしゃべらなくなった。前日までは確かにしゃべっていた。「朝の食後のお薬を飲んでください」と。ところが5/19の朝は時間が来たら「ぴょろろん」といういつもの音は出るけれどもしゃべらない。

そこで、curlコマンドを入力して発話サーバに発話を依頼したがダメ。日本語だけでなく、英語でもやってみたがダメ。

Google Homeを再起動(電源抜いて再び差し込む)したがダメ。YakuShare.jsをいったん停止(forever stop YakuShare.js)してから開始(forever start YakuShare.js)したが、やはりダメ。ログには正常に発話した旨表示される。エラーは起きていない。

以前、突然、Google Homeがしゃべらなくなることがあった。Google Home自体のアップデートがあってか、それまでのgoogle-home-notifierがエラーを吐いてしゃべらなくなることが。その場合は、Nodejsのgoogle-home-notifierのライブラリをアップデートすることで直った。

今回もその類ではないかと疑っているが、情報がない。そんなとき、今朝の新聞にGoogleがAndroidの新しいバージョンを公開したとの記事が。また「自然な対話「LaMDA」など登場 」といったニュースがネットで飛び交う。

きっと何かあったんだ。google-home-notifierは3rdパーティのライブラリなので、置いてかれたのだ。そう思った。Googleが何かするたびにGoogle Homeがしゃべらなくなる。これからもあるだろう。google-home-notifierのようなGoogleがサポートしない3rdパーティのライブラリは使うのをよそう。強制発話ができなくなってしまうが、やむを得ない・・・。

2021年5月18日火曜日

2021/05/18

(Google Home班)

今日は急遽予定を変更して、身長と体重のシートを分けてそれぞれで記録できるようにしました。苦戦しましたが、何とかスプレッドシートに記録されるようになりました。

身長、体重を別々に記録されるようにしたので、以前のように身長と体重を同時に記録することはできなくなりました。

次回こそは、スプレッドシートの最新の記録(間違えて認識されたものや数字を間違えたもの)を削除するところから進めたいと思います。(一応)グラフの作成に取り掛かろうと思います(Chart.js)。

2021/05/20追記

最新の記録のみ削除できるようにしました。

(LINE班) 

前回カレンダーから取り出した薬の情報を、さらに医薬品の名称のみ取り出すプログラムを作成した。

薬品名の前には「*(アスタリスク)」、後には半角スペースと容量が付いている。これらを『正規表現』を用いることで薬品名のみ取り出すことができる。

【今回使用した正規表現】 
    文字列.match(/^\*(.+?)\s(.+)$/)[1]
・"^" 文字の先頭にマッチする
・"." 任意の一文字にマッチする
・"+" 直前の文字の1回以上の繰り返しにマッチする 
・"?" 直前の文字の 0 回か 1 回の出現にマッチする
・"$" 文字の最後にマッチする
・"\s"  ホワイトスペースにマッチする
・丸かっこ() かっこの中の文字列を記録する
             配列内の2行以降に 記憶されるので、[1]などで取り出せる。

 理解するのに時間がかかったが、なんとか取り出すことができた。

次回は、配列内に同じ薬品が入らないためのプログラムを作成していきたい。 

2021/5/24追記

同じ薬品名が配列内に複数入らないようになった。

また、配列に保存した薬剤名をカルーセルとしてLINEで表示できるようにした。

カルーセルは、どうやら10個ほど表示できる模様。

使いやすさも考えながら、表示の仕方を考えていきたい。

2021年5月12日水曜日

2021/05/11

(Google Home班)

    前回の修正をしました。血圧は血圧のシートに、身長・体重は身長・体重のシートにデータが保存されるように修正をしました。

 続いて、間違えて認識されたデータを削除するプログラムの作成にとりかかりました。Google Homeとのやり取りは完成しましたが、問題のシート削除ができませんでした。

次回はシート削除を完成させるところから取り掛かります。

(LINE班)

 Googleカレンダーから薬の情報を取得し、リッチメニューを作成するためのプログラムについて取り掛かりました。

 今回はカレンダーの中から、閲覧当日のイベントを取得し、薬の情報が入っている「説明」部分を取り出すところまで完了。この際、薬の情報とその他の情報を区別できるよう、「QR3.カレンダーに登録.gs」のプログラムを一部変更し、薬剤名の前に「*」が付くように変更しました。次回は取り出したイベントの「説明」部分から薬の情報だけを抽出して、配列として保存し、リッチメニューとして表示できるところまで完成できるよう目指します。

(検証)

検証結果をグループLINEのノートに貼り付けた。

2021年5月2日日曜日

2021/04/27

 【Google Home班】

「OK Google テスト用アプリにつないで」と呼びかけて起動していましたが、「OK Google 薬シェアにつないで」と呼びかけると起動できるようにしました。

その時に、”薬シェア”という言葉が聞き取りにくいのか、「よくわかりません」という返事が多かったので、呼び出すときに利用者の好きな名前で呼び出せるようにしようかなと考え中です。

スピーカーに言った数値をスプレッドシートに記録するようにしました。

血圧、身長、体重完了!!


次回は、間違えた数値を削除できるようにします。

  

【LINE班】

カレンダーに服薬スケジュールを登録する機能を作成しました。

 

〈プログラムの説明〉 (詳しくはこちら

・処方オブジェクトの中の”RPs配列”を用い、「用法」部分から、服薬のタイミングを判断している。

・朝・昼・夕・就寝の4つの服用タイミングに分けて、イベントを作成している。その際、食前、食後なども判断し、イベント時刻を調整している。

・ スプレッドシートの「設定」シートにて食事の時間を指定した際、その時間を基準にイベントが作成される。もしシートがないならデフォルトの時間でイベントが作られる。


今回で、「お薬の登録」機能の基本的な一通りの流れは作成することができました。あとはユーザインタフェースにも気を配りつつ、使いやすいシステムを作成できるようこれから頑張りたいです。

【検証】

Google アシスタントをスマホにインストールすれば、Google Homeを使う代わりにGoogleアシスタントでActions on Googleアプリのデバッグができる。以下の動画はそれを利用して「血圧入力」を行ったところ。



このアプリを利用して血圧入力したところ、スプレッドシートの「血圧」シートではなく、「身長・体重」シートにデータが追加された。