見出し画像

セルフトラッキングのことはじめ #2 いかに楽するか 体重編

体重を記録する

さて、昨日もちらりと話をしたが体重を記録することについて今日は書く。
通常、体重を記録する場合行わなければいけないステップは以下の通りだ。

1. 体重計に乗る
2. スマホを手に取る
3. アプリもしくはショートカットを開く
4. 体重を入力する

なんと4ステップもある!これは煩わしい。絶対に続かないのが目に見える。
私の理想はこうだ。

1. 体重計に乗る

おしまい。これだけでヘルスケアに記録されていれば最高だと思う。これならちょっと続きそうな気がする。

体重計を購入

そこで私は”自動同期”・”ヘルスケアと連動”という言葉に惹かれてWithings Body + という体重計を購入した。

しかし蓋を開けてみると体重を記録するために必要なステップは

1. 体重計に乗る
2. スマホを手に取る
3. アプリを開く

3ステップもある。最悪だ。
なんとこれ、一度アプリ立ち上げないとヘルスケアには記録されないのだった。
1万2千円払って減ったのがたったの1ステップだけだなんて!!
案の定、購入して1ヶ月で私は体重を測らなくなった。

APIを作る

そして昨日、noteを書いた後に何か良い方法はないだろうかと調べた。なんたって型番すらもう記憶になかった。おおよそ1年ぶりに体重計を取り出したのだった。
するとなんとWithings APIなるものが公開されていたのである。しかも私が購入した時にはすでに公開されていた。
なんということだ・・なぜ気づかなかったのだろう。割と・・かなり落ち込みながら自前のAPI作りに勤しむことにした。

想定はこんな感じ。
・日付が変わるまでに体重計に乗る。
・日付が変わったら(あるいは変わる直前に)オートでiPhoneのショートカットが実行されるようにする。
・ショートカットは自前のAPIにアクセスしレスポンスの値をヘルスケアに記録する。
・自前のAPIは、Withings APIで最新の情報を取得し、取り出したデータをreturnする。

Withings APIのアクセストークンの取得方法はたくさん情報が転がっているのでそれらを参考にしてほしい。
今回取得したのは体重と体脂肪率の最新の1件だ。APIはpythonで書いている。

url = "https://wbsapi.withings.net/measure"
headers = {'Authorization': 'Bearer ' + ACCESS_TOKEN }
payload = {'action': 'getmeas '}
data ={
   'meastype': '1,6',
   'category': '1',
   'lastupdate': timestamp
   }
   
res = requests.get(url,headers=headers,params=payload,data=data).json()

# 記録がなかった場合
if(res["status"] != 0): return {"res":False,"weight":0,"fat":0}

get_data = res['body']['measuregrps'][-1]['measures']
weight = list(filter(lambda x:x["type"]==1,get_data))[0]["value"]/1000
fat = list(filter(lambda x:x["type"]==6,get_data))[0]["value"]/1000

return {"res":True,"weight":weight,"fat":fat}

timestampはUNIX時間だ。ショートカットを実行するタイミングに合わせて変更して欲しい。
resがFalseならその日は体重計に乗っていないのだろう。ショートカット上でif分岐させておくと良い。

ショートカット

画像1

画像2

画像3

あとはオートメーション設定時に”実行前に尋ねる”をオフにすれば完璧だ!
ショートカットを実行しましたよという通知が来てしまうが体重計に乗る以外自分がすることはもうない。ある日気が向いたらヘルスケアを立ち上げれば日々の情報が更新されているはず!!!

こうして私は理想にたどり着いた。
最小限のステップだ!
果たしてこれで毎日体重を測ることを習慣化できるだろうか?

この記事が気に入ったらサポートをしてみませんか?