八発白中

はてなブログに引越しました。

Mackerelで家族のヘルスチェックをする

5月に入院して1ヶ月くらい療養していました。

健康にも気をつけないとな、と今更ながら反省しつつ、どうすれば健康管理ってできるのかなと考えてみています。

Fitbitログから学ぶ

一年半前からFitbit Charge 2で心拍数と睡眠時間を記録しています。運動量ではなく、主に睡眠時間を計測するためにつけています。

普段は計測するだけして結果を見ることはほとんどないのですが、「今日は頭が働かないな」というときにふとFitbitのダッシュボードを見ると「なんだ睡眠不足か」とかわかるので便利です。

人によって必要な睡眠時間は異なります。僕は週の平均睡眠時間が7時間を切ると体調が悪くなるようです。

入院中に思い立って過去のFitbitのデータをさかのぼって見返してみると面白いことが見つかりました。安静時心拍数が見事に入院まで右肩上がりで推移しています。

単純な心拍数だけだと歩くだけでも上がりますが、これは安静時心拍数。なにもしていないときの平均値です。

もともと自分は安静時心拍数68〜74を推移していたのですが、入院前に88まで跳ね上がっていました。

安静時心拍数が高すぎる場合は頻脈と呼ばれるようです。

頻脈で疑う鑑別疾患は血液疾患(貧血)、精神疾患(緊張、ストレス、不隠、不安)、代謝疾患(甲状腺機能亢進症、脱水)、発熱、呼吸器疾患(低酸素状態)、心疾患(頻脈性不整脈群、心不全、心筋炎:徐脈もあり)等々様々な状態で見られうる。

心拍数 - Wikipedia

要因はおそらく「貧血」か「ストレス」か「発熱」でしょう。

安静時心拍数は異常がなくても上下するのですが、一日の中で出社している時間は高く、家に帰ってくると下がります。

仕事中でも特に上がっている時間帯は会議中だったりして、会議中にストレスかかってるのだな、とか分析できます。

けれど、入院してから頻脈だったことがわかったところで遅すぎます。悪くなる前にこれを知れたらいいのに。

Fitbitの機能として心拍数のアラート通知はありません。

アラートといえばMackerelさん

そこでアラートといえば、と考えに上ったのがMackerelでした。

サーバー監視サービスのMackerelはメトリクスのグラフ化だけでなく閾値での警告通知をしてくれるはずです。そこにデータ投げればいいんじゃない?と思ってやってみました。

Fitbit Web APIを叩いてMackerelに流すだけの簡単なスクリプトを書いて、さくらVPSに設置してcrontabで5分おきにFitbit→Mackerelに心拍数などのデータを流す。

やってみた

↓僕 (Eitaro) の心拍数(左)と睡眠時間(右)

f:id:nitro_idiot:20180531224913p:plain

これは薬の副作用であまり寝られていないときのグラフです。

睡眠時間の折れ線が複数あるのは睡眠レベル別の時間です。Fitbitでは浅い睡眠、レム睡眠、深い睡眠、睡眠中の覚醒時間を計測できます。

f:id:nitro_idiot:20180802105949p:plain:w360

↓これは実際に来ているアラート画面。

f:id:nitro_idiot:20180531224914p:plain

meymao(妻)の睡眠時間アラートも来ています。妻もFitbit Alta HRをつけているので睡眠時間と心拍数を計測しています。

夫婦で普段からSlackを使っているので、MackerelのSlack IntegrationをつけるとSlackにも流れます。

これは5時間程度しか寝られなかったときの通知。

f:id:nitro_idiot:20180802105219p:plain:w360

睡眠レベルを使って熟睡できていないときもアラートが来るようにしています。

さすがに心拍数をSlackに流すとうるさいのでそちらはメールでアラートを飛ばしています。

まとめ

Mackerelのアラートは単純なしきい値だけでなく、過去10個の計測値の平均でアラートできたりします。ので、心拍数のスパイクで無駄にアラートが飛ぶのも抑制できます。

未解決のアラートが続いているときに再アラートする機能も便利です。

たとえば睡眠時間アラートで12時間後に再通知に設定すると夜9時ごろに再度睡眠時間のアラートがSlackに飛ぶので、「今日は早く寝なきゃ」というリマインドとして使えます。

Mackerelの難点は、高いってことでしょうか。プランが「無料」か「月額1800円」しかないです。

無料プランだと24時間しかデータが記録できないので1日1回の睡眠計測では1個しかデータ登録できず、グラフ化ができません。

かといって1800円を個人ユースでは高いな、と思うので間のプランが欲しいところです。