Google Home + IFTTT + pythonでライフログのガントチャートを作って，自分の生活習慣を見直す．【構想編】

この記事は，衝動買いしたGoogle Homeを使って，自分のライフログを可視化し，生活習慣を変えるきっかけを得ようと試行錯誤した記録です．

「構想編」と「処理実装編」に分けて投稿しようと思います．

今回は「構想編」です．
前半はほぼポエムみたいなものであるため，サラッと読みとばしてください．
メインの内容は，[2.本題](#2本題)から始まります．
具体的処理の詳細は「処理実装編」に記載します．

2019/11/01追記
直接つながっていない感あるけど，続きはこっちに書きました．
[Google Homeで記録したライフログを，ガントチャート風にグラフ化してくれるWebアプリを作った](https://qiita.com/ssn339/items/1941f8ca2be3943a9eab)

---

## 1.ぼくが行動した理由
### 自分の生活リズム(起床/就寝時間)を言えますか？
ぼくは絶賛サラリーマン中．
そのため，毎朝決まった時間に会社に行かなければいけない．
会社に決まった時間に行かなければいけないということは，決まった時間に起きなければいけないということだ．

まったくもって当たり前のこと．
「オールブラックスは強い」と同じくらい単純明快なこと．
だから毎日の起床時間はだいたいすぐに答えられる．どんとこい．

しかし，就寝時間となると話は別．
「あれっ，昨日何時に寝たっけ？」と記憶の探索が始まる．
先週末のラグビーの試合結果や食事の予定はすぐに思い出すのに．．．

どうやら自分の脳みそには，就寝時間を覚えておくための領域は空いていないらしい．
そして，就寝時間を思い出す作業よりもはるかに楽しいことが世の中には溢れている．
ぼくは，思い出すことをやめた．

### 自分の睡眠時間がわからない．
そもそもなぜ，こんな起床時間/就寝時間を気にし始めたのかというと，**睡眠時間を把握したい**と思ったため．

20何年生きてきて，
「どうやら自分の体調の良し悪しは睡眠時間の多寡が大いに関係していること」に **最近**気づいた．
気づくのに遅すぎることはない，うん．

ということで，自分のライフログ(起床/就寝/睡眠時間)を可視化できれば，
生活習慣を客観視し，生活習慣の改善及び体調不良の予防をできると考えた．

ただ具体策は・・・・・ない．

### 天啓：Google Home っていいんじゃね？
なんとなしにネットを見ていると，なんと"Google Home mini"が増税前で半額になっているではないか！

更に調べてみるとGoogle HomeをIFTTTやDialogflowなどと連携すれば，
ライフログが取れるという情報がゴロゴロ出てくるではないか！

「これこれぃ，このためにGoogle Home買ったんよ」と苦し紛れの後付け理由を，誰に言うでもなくひとり寂しく自分に言い聞かせながら，こいつを活用しようと動き出した．

## 2.本題
### 目的
**「自分のライフログ(起床/就寝/睡眠時間)を可視化することで，生活習慣改善のきっかけ/対応策を考えられるようにする．」**

### 最終的にほしいアウトプット
こんなグラフ(ガントチャートみたいな)がほしい．

- 睡眠時間  
    青Barでプロットされ，睡眠時間がannotateされている．
- 外出時間  
    橙Barでプロットされ，外泊した場合は日をまたぐようにされている．
- 〇〇活動時間  
    より具体的な活動が緑Barでプロットされ，Barの長さに入る範囲で内容/活動時間がannotateされる．
    (下図では"開発"という活動しかないが，例えば"映画"や"飲み会"なども可能)

![output_image](https://user-images.githubusercontent.com/20534543/67062018-0e161b00-f19d-11e9-9d2e-2cee5db7ba46.png)

## 3.どうやって運用するか？
### 継続は始めるより難し
いちばんの問題がここだと思います．

自分はとても面倒くさがりです．
少しでも面倒臭さを感じると使わなくなるのは，目に見えています．

「家族の伝言ボード」，「そこまで仲良くない人たちでのグループライン」，「ランニング記録表」など自分の人生を振り返っても，使わなくなったものは数しれず．

彼らのような多くの犠牲のためにも，できるだけ **NOT 面倒くさい 仕組み (NMS)**にしなければいけません．

### なにが一番面倒なのか？
自分がライフログをつける際に，なにを面倒と感じるのかを考えてみました．

- スマホを開く ： +1面倒 pt  
    特に朝の忙しいときにスマホ開いている暇なんてないですね．
- メモ帳に起床時間を打ち込む ： +38面倒 pt  
    考えただけでも面倒くさいですね．
- IFTTTのDoボタンでそれぞれ「起床」/「就寝」/「外出」/「帰宅」を作っておく ： +50面倒 pt  
    今後どんどん記録したいものが増えていったら，スマホのホーム画面がDoボタンだらけになりそう．

他にも挙げていったらきりがないですが，まとめると **スマホを触ることなく，時間と内容を記録してくれる** のであれば，自分としては苦なく続けられそうです．

### Google Home「待たせたな．」
Google Homeには"ルーティーン"という機能が標準装備されています．
これは，「おはよう」「おやすみ」「行ってきます」「ただいま」という言葉をGoogle Homeが受け取ると，事前に登録したコマンド(例えば，電気をつける，TVをつける，天気を知らせる など．．．)を実行してくれるという，すばらしい機能です．

これのルーティーン機能をフル活用すれば，**スマホに触らずに**時間と内容と記録するというNMS[^1]をつくれそうです．


## 4.大まかにはどうやって処理するの？
起床時間を記録する場合，
1. Google Homeに「おはよう」と声をかける．
2. Google Homeの"おはようルーティーン"が実行される．
   ルーティーン内に設定したコマンド「おはようを記録して」が実行される．
3. IFTTTが「おはようを記録して」の言葉を受け取り，
   現在時刻と"起床"という文字をGoogle Spread Sheetへ追記する．
4. RaspberryPiにて，python scriptをcronで実行．(例えば毎日13:00)
5. python scriptは上記Google Spread Sheetからライフログデータを読み込む．
6. ガントチャートをplotし，Lineに送信する．

![flow](https://user-images.githubusercontent.com/20534543/65947847-0d2e7b00-e474-11e9-944a-84affc622216.png)

上図では「おはよう」のパターンを示していますが，「おやすみ」「いってきます」「ただいま」も同様に，Google spread sheet に記録します．
処理の細部は次編「処理実装編」に記載したいと思います．


## 5.一週間運用した結果wwwwwwwww
なんの問題もなく，運用できています．
3日坊主には自信があったんですけど，簡単すぎて気持ちがいいです．
下に自分が感じた効果を書きました．
効果2の方は全く盲点で，やってみて初めて気づいたので，面白かったです．

### 効果1 : 生活リズムの改善意識が向上．
「昨日は睡眠時間ちょっと少なかったから，今日は早めに寝よう」みたいな意識も出てきました．

### 効果2 : 起床/就寝のメリハリがつくようになった． 
意外な効果として「おはよう」/「おやすみ」を声に出して言うことで，起床/就寝にメリハリを付けることができるようになりました．

今までは「おやすみ」と呼びかけるパートナーもおらず(悲)，なんとなくベッドに入って，なんとなく電気消して，なんとなくスマホいじって，なんとなく眠りについて．．．という感じでした．

しかし，今回の仕組みを作ってから，「Google Homeに「おやすみ」と言った以上，電気消されちゃうし．．．時間記録されちゃうし．．．もう寝るんだ」という意識になり，電気消してからの "スマホいじり on ベッド" が激減しました．
その結果，こころなしか睡眠の質も良くなった気がします． (あくまで個人のかんｓ．．．)

これは，「おはよう」の場合も然りで，「Google Homeに「おはよう」と言った手前，2度寝するわけにも行かない．ライフログには起床時間がすでに記録されちゃっているし，TVもすでにつけてくれてるし．．．起きるしかない」と意識が変わり，2度寝の頻度も減りました．


## 6.構想編の最後に
IFTTTやpythonの具体的処理は，「処理実装編」にて別途書きます．
投稿予定は，TBD[^2]．


[^1]: NOT 面倒くさい 仕組み
[^2]: 魔法の言葉