2014年10月13日月曜日

謎多きHealthKitのWorkouts - 1


iOS8のヘルスケア。

盛り上がりもあり、残念感もあり... という状態ではありますが、まだまだあまり見えていない機能があります。

それは Workouts (ワークアウト)。

MyFitnessPalや、Humanなどを使われた方は、Healthの許可にWorkoutsという項目があったのを気づいた方もいらっしゃるかと思います。


標準の"ヘルスケア" アプリでActive Caloriesなどが確認できますが、唯一見えない項目が、Workouts です。

Workoutsは、ランニング、ウォーキング、サイクリング、ボクシング....などの運動種類毎に消費したカロリー、距離、時間を登録できる機能です。

私の想像ですが、来年の Apple Watch リリースとともに、新たなWorkouts専用標準アプリがでてくるのでは? と思っています。
そして、そこでヘルスケアの第二の注目時期がやってくるのではないか! と。(思いたい)

そんな謎多きWorkoutですが、今できる内容を探ってみました。

まずはどんな情報を保存できるのか、クラス構成から。


Workoutsは、Stepなどと兄弟レベルでのクラスです。
Stepなどではその値(数値)を登録する単純なものですが、Workoutsでは
・ワークアウトした時間
・消費カロリー合計
・距離合計
などの値が登録出来ます。

これだけだと、イメージにしくいので、実際のWorkoutをイメージしながら考えてみましょう。


こんな感じの運動したとします。
これを、いまヘルスケアアプリで見えている情報だけで表すと、


こんな感じの情報が並びます。
Active Calories, Distanceは簡略化のためまとめて書きましたが、本来ではもっと細かい時間単位で登録する形の方がBetter。
いま、iPhoneで自動登録されているStepやDistanceのように...。多分、Apple Watchではそう入れてくるはず。

さて、この情報から、たくさん動いたという結果はわかるものの、これだけの情報では、どんなワークアウトをしたのか?というのははっきりわかりません。

そこで、Workoutの情報を加えてみます。


・何時から何時までワークアウトしたのか。
・消費した全体のカロリーはどれくらいだったのか。
などがわかるようになり、ワークアウトの全体像が見えるようになります。
言い方を変えると、Workoutsの情報は全体像のみが登録された情報になっています。

ここでポイントとなるのが、
Active Calories, Distanceなどと、Workoutsの情報を紐付けて登録ができる
ということです。
逆に言うと、紐付けて登録してくれるか、してくれないか はアプリ依存です。
※いまWorkoutsを対応しているHuman, Argusのデータは紐付けていないようです...
また、Workoutsの情報のみ登録し、Active Caloriesなどは登録しない ということももちろん可能。

実際に紐付ける処理はこのメソッドを使用します。
Workoutsの情報と紐付けて登録できる項目は、APIを見る限りは何でもOKそうな感じです。

紐付けて登録されることにより、ワークアウトの全体像が見えると、
前回のランニングでは時速○キロで走っていたけど、今回は○キロになった! とか、
前回の心拍数の増加は150%だったのが、140%になった! とか 
がわかるようになるわけですね!!

Workoutsの種類(workoutActivityType)は、HKWorkoutActivityType に定義されています。自分で独自にTypeを作成することは出来ないようです。
また、そのActivityTypeの運動強度はどれくらいか? も特に定義が無いようなので、消費カロリーなどは自分で計算する必要があります。

今回は、Workoutsで登録できる内容を見てみました。
次回は、検索する方法について書こうと思います!

• • •