Runkeeper APIの使い方
最近よくランニングをするので、運動記録のためにRunkeeperを使っています
走ったコースや速度などの情報を記録してくれるランニング支援アプリは何種類かあるのですが、APIを提供しているということで、Runkeeperを使用してデータをためています(NIKE+もAPIあるっぽいです)
先日ふと、月末にその月の合計走行距離や平均速度、消費カロリーなどの月次サマリーをTwitterにPostしてくれるプログラムを書こうかな、と思いRunkeeper APIを使ってみました
Runkeeper API
RunkeeperのAPIはHealth Graph APIという名前で公開されています
使い方を紹介しているページがないかなー、と思って調べてみたのですが、ほとんど日本語の情報がありません(公式が英語ドキュメントだからかな)公式ドキュメントを読みながら、使ってみることにします
アプリケーションの登録
Applications Portalより、アプリケーションの登録を行います
Application Name, Description, Organization, .. と必要な情報を入れていきます、Permission Requests に関しては必要があれば入れていきましょう、自分のアカウントデータの読み書きに関してはチェックしていなくても可能なので、今回はチェック無しでいきました
Authorization Removal Callback URL, Estimated Date of Publication に関しては空で大丈夫です
登録すると、こんな感じになります
ユーザのAccess Tokenを取得
ユーザのデータにアクセスするには、作成したアプリをユーザに認証させてAccess Tokenを取得する必要があります
Access Token取得のためのOAuth認証は、やったことない人や初心者にはちょっと大変で、APIの使用が盛んなTwitterとかだと GitHub - jugyo/get-twitter-oauth-token: The "get-twitter-oauth-token" is a command to get token/secret pair of Twitter OAuth. なんかのコマンドだけで自分のアカウントのAccess Tokenを取得できるものが存在しています
GitHub - jugyo/get-twitter-oauth-token: The "get-twitter-oauth-token" is a command to get token/secret pair of Twitter OAuth. をtwitterで使ってみて楽だったので、Runkeeper版で似たようなものをつくりました github.com
% git clone https://github.com/jimaoka/runkeeper-auth.git % gem install health_graph -v 0.5.4 % gem install health_graph % ruby runkeeper_auth.rb
Client ID, Client Secretを入力するとブラウザで認証画面が開かれます
認証画面でAllowを押すとワンタイム認証用のAuth Codeが表示されるので、コンソールにコピペすると、Access Tokenが表示されます
データの取得
Access Tokenが取得できたので、データにアクセスしていきます
Health Graph - Third-Party Libraries Health Graphにはいろんな言語のサードパーティライブラリがありますが、Ruby製の GitHub - kennyma/health_graph: Ruby wrapper for Runkeeper Health Graph API を使っていきます
こんな感じでActivity Logを取得することができます
require "rubygems" require "health_graph" ### Get user data user = HealthGraph::User.new(access_token) ### Print activity data user.fitness_activities.items.each do |e| p e end
% ruby runkeeper.sample.rb
#<Hashie::Mash duration=3731.282 entry_mode="API" has_path=true source="RunKeeper" start_time="xxx" total_calories=734 total_distance=10526.1433422139 tracking_mode="outdoor" type="Running" uri="xxx" utc_offset=9>
...
まとめ
Runkeeperなどのヘルス系のサービスAPIは自分のライフログを取得して色々できるので、けっこう楽しいです
APIに関して日本語文献があまり見つからなかったので、参考になればと思います