collect, analyze, and visualize data
/ produced by Hiroyuki Shinoda
collect, analyze, and visualize data
Article
2015.3.1
体組成データを取得する。

今回は体組成データを取得する手順を見ていきます。

現在、市販で様々な体組成計が販売されているほか、
ヘルスデータ取得用のウェアラブルデバイスやアプリなども充実していることから、
多様な手段で体組成データを取得することができます。

その中でも今回はタニタの体組成計で計測したデータを
APIのOAuth認証でRuby経由で取得する手順を見ていきます。

ちなみにタニタの体組成計は下記のようなものです。

体組成計

OAuth認証は、API連携で良く使われる手段で、
一般的なOAuth認証と同様、tanita APIも下記手順でデータにアクセス可能です。

(1) APIを用いたアプリ/サービス開発のためのClient_ID、Client_Secretをサービス提供者(タニタ)から取得する
(2) 上記サービスのClient_IDを用いて(ブラウザ経由で)ユーザにデータへのアクセス許可を求め、access_codeを取得する。
  ※あるアプリが、API経由でユーザ情報を取得していいか、ユーザごとに確認。
(3) client_ID、client_secret、access_codeを用いて、リクエストトークンを取得する。
(4) 取得したリクエストトークンを用いてAPI経由で情報を取得する。

まずは、タニタの体組成API(Health Planet API)を用いたアプリ開発のための
Client_ID、Client_Secretを取得しておきます。

タニタのAPIは、「Health Planet API」で管理されておりますので、
まずはHealth Planetの会員登録をしておきます。(画面左上から登録)

health planet

ログイン後、右上のメニューから「登録情報の確認・変更」を押して
スクロールしていくと、「アプリ連携」の項目があります。
その中の、「アプリケーション開発者の方はこちら」を押して、
「新規登録」すると、Client_ID、Client_Secretを取得する事ができます。

health planetのログイン画面

OAuth認証に必要なClient_ID,Client_Secret

では、次にOAuth認証の処理をRubyで実装していきます。
なおRubyにはoauth/oauth2などのパッケージがあるのですが、
今回はmechanizeでの実装をしてみます。

まず、必要なパッケージを呼び出します。

次に、「Client_IDを用いて(ブラウザ経由で)ユーザに
データへのアクセス許可を求め、access_codeを取得する。」手順を実装します。

タニタAPI(Health Planet API)は、下記のブラウザで動作するようなので、
以下いずれかのagentに設定します。
Internet Explorer 8及び9、Mozilla Firefox 6、Google Chorme 13、Safari 5

まずは、HealthPlanetにログインし、次に、
API経由での認証許可のためのボタンクリックをします。

以上でアクセスコードが得られますので、
client_id、client_secretとともに、
アクセストークンを取得します。
返り値はJSONで得られるので、アクセスコードのみをparseしておきます。

ここまでで準備が完了しましたので、あとは、用途に応じて必要な期間の値を
適切なフォーマットでcsvに書き出すかサービスに値を渡すとよいでしょう。
ちなみにHealth Planet APIでは下記数値が集計できます。
※値は3ヶ月ごとの範囲のみで指定できますので、もっと長い期間のデータが必要な場合は、
 適宜ループ処理をかませてください。
※値の取得は1時間60回までの制限がありますのでご注意ください。

tag
6021 体重 (kg)
6022 体脂肪率 (%)
6023 筋肉量 (kg)
6024 筋肉スコア
6025 内臓脂肪レベル2(小数点有り、手入力含まず)
6026 内臓脂肪レベル(小数点無し、手入力含む)
6027 基礎代謝量 (kcal)
6028 体内年齢 (才)
6029 推定骨量 (kg)

たとえば、上記処理で得られたcsvを整形し、
得られた結果をRに入れてプロットしたものが以下となります。

体組成データ

体組成データのggplot

以上、今回は、体組成データの取得の仕方を見ていきました。

人気記事: