Google Data Studioで体重測定結果をいい感じに可視化する
ことのキッカケ
今まで使っていたWifi対応体重計を販売していたWithingsがNokiaに買収された。
それにともない、Webのダッシュボードアプリをはじめ、スマートフォン用のアプリも「Nokia Health Mate」というアプリに一新した。
が、しかし、今まで使えた機能が使えなくなったりと、評判が悪い。
特定の製品やサービスに頼ってると、今回のような急な買収等により使い勝手が悪くなったり、最悪データが見れなくなるケースもあるので、出来れば生のデータを手元に保持して扱えるようにしておきたい。
そこで、貧者のデータベースであるところでおなじみ??のGoogle Spreadsheet と、それを使って良い感じにデータ可視化をできるGoogle Data Studioを使うことにした。
データの取得
IFTTTのWithingsインテグレーションを使って、これから体重計では測ったデータは、指定したSpreadsheetに追記するようにする。
で、これまで計測したデータだが、Nokia Healthのウェブ版やアプリからのエクスポート方法が見つからないかと思ったが、ググると以下ページのリンクからエクスポートができた
エクスポートしたzipファイルには数個のcsvファイルが含まれるが、今回はweight.csv
をSpreadsheetに取り込んだ。
日付のフォーマットが2017-07-14 15:22:54
となっているが、IFFFから通知される日付はJuly 03, 2017 at 07:40AM
といった書式となっているので、IFTTTのフォーマットに会うようにTime::Piece
モジュールを使ってサクッと変換をした。
Spreadsheetは、以下のような平凡なフォーマットとなった。
[余談]iOSヘルスケアのデータエクスポート
iOSのヘルスケアアプリの生データもぶっこ抜きたいなー、と思っていたら、普通に自分のデータ表示のページからデータの書き出しが行える。 書き出し先にiCloudDriveが指定できるのでマジで便利だ。
出力したzipファイルを展開するとxmlファイルが2つ入っていたが少々問題が発生した。
iPhoneのヘルスケアで取得している歩数やらのデータをPC上に持っていきたいが、書き出ししても全然データ入ってないやん
— STC (@stc1988) 2017年7月12日
IOS10.3 ヘルスケアデータを書き出す、でデータが取り出せない | 公式 Apple サポートコミュニティ https://t.co/NxiW8rfrOA 設定言語の問題らしく、英語に変更して書き出したらいけた。
— STC (@stc1988) 2017年7月12日
90MBほどのXMLファイルをどうやって処理するか。
— STC (@stc1988) 2017年7月12日
データはXMLだけど、データ構造としての価値はあまり無さそうなので、素直に行単位でGrepするのが手っ取り早い気がする。
Google Data Studioで表示する
新しいレポートを作成し、データソースに先程作成したSpreadsheetを指定する
Spreadsheetの1列がデータ表示のための1フィールドとして認識されている。
既存のフィールドを利用した追加のフィールドもデータソース側を弄ることなく、数式を書いたりして柔軟に追加ができる。
今回は、
- 測定回数として、
データの件数
- 体脂肪率として、
体脂肪量 / 体重
をフィールドとして追加した。
後は、フィールドを指定しながら、グラフやスコアボードを配置していく。
時系列データは、毎日のデータが無いとガタガタのグラフになるので、「スタイル->欠落データ->線形補間」をしておくとよい。
各データ表示は期間を柔軟に指定ができ、現在と直前の期間の差分もすぐに表示できるので、可視化する作業が気持ちいい。
テンプレートも真似しつつ、以下のような形となった。
今後はデータソースをもっと増やしていき、自分の状態を測るダッシュボードとして拡充していきたい。