Kick Out the World

技術的なメモとかポエムを書きます。

Google Data Studioで体重測定結果をいい感じに可視化する

ことのキッカケ

今まで使っていたWifi対応体重計を販売していたWithingsがNokiaに買収された。

Withings is now Nokia

それにともない、Webのダッシュボードアプリをはじめ、スマートフォン用のアプリも「Nokia Health Mate」というアプリに一新した。

が、しかし、今まで使えた機能が使えなくなったりと、評判が悪い。

特定の製品やサービスに頼ってると、今回のような急な買収等により使い勝手が悪くなったり、最悪データが見れなくなるケースもあるので、出来れば生のデータを手元に保持して扱えるようにしておきたい。

そこで、貧者のデータベースであるところでおなじみ??のGoogle Spreadsheet と、それを使って良い感じにデータ可視化をできるGoogle Data Studioを使うことにした。

データの取得

IFTTTのWithingsインテグレーションを使って、これから体重計では測ったデータは、指定したSpreadsheetに追記するようにする。

で、これまで計測したデータだが、Nokia Healthのウェブ版やアプリからのエクスポート方法が見つからないかと思ったが、ググると以下ページのリンクからエクスポートができた

support.health.nokia.com

エクスポートしたzipファイルには数個のcsvファイルが含まれるが、今回はweight.csvをSpreadsheetに取り込んだ。

日付のフォーマットが2017-07-14 15:22:54となっているが、IFFFから通知される日付はJuly 03, 2017 at 07:40AMといった書式となっているので、IFTTTのフォーマットに会うようにTime::Pieceモジュールを使ってサクッと変換をした。

Spreadsheetは、以下のような平凡なフォーマットとなった。

f:id:stc1988:20170717203552p:plain

[余談]iOSヘルスケアのデータエクスポート

iOSのヘルスケアアプリの生データもぶっこ抜きたいなー、と思っていたら、普通に自分のデータ表示のページからデータの書き出しが行える。 書き出し先にiCloudDriveが指定できるのでマジで便利だ。

出力したzipファイルを展開するとxmlファイルが2つ入っていたが少々問題が発生した。

データはXMLだけど、データ構造としての価値はあまり無さそうなので、素直に行単位でGrepするのが手っ取り早い気がする。

Google Data Studioで表示する

新しいレポートを作成し、データソースに先程作成したSpreadsheetを指定する

f:id:stc1988:20170717204514p:plain

Spreadsheetの1列がデータ表示のための1フィールドとして認識されている。

既存のフィールドを利用した追加のフィールドもデータソース側を弄ることなく、数式を書いたりして柔軟に追加ができる。

今回は、

  • 測定回数として、データの件数
  • 体脂肪率として、体脂肪量 / 体重

をフィールドとして追加した。

後は、フィールドを指定しながら、グラフやスコアボードを配置していく。

時系列データは、毎日のデータが無いとガタガタのグラフになるので、「スタイル->欠落データ->線形補間」をしておくとよい。

各データ表示は期間を柔軟に指定ができ、現在と直前の期間の差分もすぐに表示できるので、可視化する作業が気持ちいい。

テンプレートも真似しつつ、以下のような形となった。

f:id:stc1988:20170717205402p:plain

今後はデータソースをもっと増やしていき、自分の状態を測るダッシュボードとして拡充していきたい。