Linux全般こんにちは。2で取得したライフログにAPI経由でアクセスする』です。最近、オンラインショップだけでなく家電ショップでもアクティブトラッカーの販売が目に付くようになりました。健康意識の高い人のための特別なガジェットだったアクティブトラッカーがより身近な存在になってきているのかなという印象を受けました。今回はfitbit社がアクティブトラッカーを用いて取得したデータをAPI経由で取得してみます。APIへのアクセスアクティブトラッカーって?アクティブトラッカーと聞いてもピンと来ない方のために簡単に説明すると、アクティブトラッカーとは腕等に装着することで心拍数や歩数、消費カロリー、睡眠時間を記録してくれるデバイスです。ウェアラブル端末の一種であり、スマートウォッチのカテゴリーとして扱われることもあります。(スマートウォッチの定義自体が曖昧なのですが・・・)アクティブトラッカーへの事業に参入していくるメーカーも増えてきており、家電ショップで見かけるだけでもJAWBONE,fitbit,GARMIN,Xiaomi,EPSON,SONY,Withings(現NOKIA)等のメーカーが凌ぎを削っている状態です。2を使ってみたアクティブトラッカー(活量計)が市場に出回り始めたのは2013年ごろであったと思いますが、その頃は健康意識が高かったり、ITガジェットに敏感な一部の人のためのものという感じがあり、あまり一般的ではなかったような印象を持っていました。2017年現在では大手家電ショップでもスマートフォン売り場や、ヘルスケア商品棚に陳列され一般市民にも浸透してきた感があります。本体のレビューは本題から逸れるので割愛しますが、睡眠時のログがレム睡眠を含めて詳細に取れるのが非常に気に入っています。[画像のリンク先はAmazonの商品ページです]fitbit製のトラッカーは「無理のないフィットネスを応援する」というコンセプトのもとに日常生活の心拍数や運動量を高い精度(秒単位での測定)で把握できる能力を持っています。フィットネスに特化したエクササイズモード(機種によってはマルチスポーツモード)があり、運動時には更に緻密な測定も可能になります。このような特徴から、きめの細かいライフログを取得したい方にはオススメできるメーカーだと思います。筆者が本記事を書こうと思った経緯はfitbitのハード的な魅力よりもむしろ充実したAPIに魅力を感じたからです。fitbitの公式アプリでは心拍数は5分間隔で表示されますが、自作のプログラムからAPIにアクセスすれば秒刻みの心拍データを取得ることも可能です。(後述しますが、日中の細かいデータにはデベロッパー本人のデータにしかアクセスできません。)筆者の場合は健康意識からよりもプログラミングで遊べるという動機からfitbitを触ってみました。他のメーカーではJOWBONEやWithigns等のメーカーがAPIを公開していますが、APIリファレンスを見た限りではfitbitほどの機能は提供されていない印象です。時間があれば他メーカーのAPIも触ってみたいですね。fitbitアカウントを作成まずはfitbitアカウントを作らないと始まりません。https://www.fitbit.com/loginにアクセスしてアカウントを作成しましょう。メールアドレスとパスワードだけで簡単に作れます。このアカウントとfitbit端末を結びつけて装着することでアカウントにデータが蓄積されていきます。運動するも良し、ダラダラするも良し、fitbit端末がバイタル情報を取得して作成したアカウントにデータを蓄積してくれます。登録の種類は3種類アプリケーション登録の種類は以下の3種類があります。ServerClientPersonalこのカテゴライズが非常に分かりづらいのですが、ServerとClientは認証時の秘密鍵の有無(OAuth2.0の機密クライアントとパブリッククライアント)の違いですが、Personalだけはちょっと他の二つとは異なります。APIで詳細な「日中データ(秒単位や分単位のデータ)」にアクセスできるのはプログラム開発者本人のアカウントのデータのみです。(※1)たとえ家族や友人の同意があっても開発用のアカウントと異なる場合はアクセスできません。自分自身のデータにアクセスするにもアプリケーションタイプをPersonalにしないといけないという2重の制限がついています。それだけライフログをプライベートな情報と考えていると言うことですね。今回はPersonalでアプリケーションを登録し、自分自身の心拍データを秒間単位で取得してみます。フォームに必要事項を記入するだけなので難しくはありません。URL」は”http://127.0.0.1:8080/”としておきます。ご自身でOAuth認証を実装する場合は適宜変更して下さい。登録が完了すると以下の様な画面になります。クライアントIDやクライアントシークレットは後ほど必要になるのでメモしておきます。OAuth認証OAuth2.0での認証となりますので、一般的な方法で認証すれば良いのですが、ここではpython-fitbitというライブラリを用いて簡単に行いたいと思います。Linuxですが、適宜ご自身の環境に合わせて読み替えていただければ結構です。準備が整ったのでgather_key_oauth2.pyを使って認証を行います。以下のコマンドを実行します。secret>ウェブブラウザで以下のようなページがひらきますので先程アプリケーションを登録したアカウントでログインします。下図のような画面になるので「許可」をクリックします。これで認証は終わりました。ウェブブラウザ上には以下のような画面が表示されます。以下のような画面がターミナルに表示されるのでアクセストークンとリフレッシュトークンは後ほどAPIにアクセスする際に必要になるのでメモしておきます。APIは機能がとても多く、ここで全ての説明することは困難です。APIリファレンス(英語)をご覧いただいて興味のある機能を使ってみるのでも面白いと思います。Seriesの機能を使用します。Pythonでコードを書いてみるAPIにアクセスしてJSONを取得するだけであればCRULコマンドやRESTクライアントを用いれば十分なのですが、もう少し遊びたいのでPythonでアクセスして表形式で出力する簡単なコードを書いてみます。今回はサンプルコードなのでトークンの更新処理は省きました。トークン更新についてはhttps://dev.fitbit.com/docs/oauth2/#refreshing-tokensをご覧ください。先程紹介したpytohn-fitbitを使用する手もあるのですが、HTTPリクエストしてJSON取得するだけの簡単なコードですので自作します。今回は取得したJSONをパースしてtexttableモジュールを使って表にしてみたいと思います。サンプルコードは以下のようになります。標準出力に表形式で出力するだけでなく、CSVファイルを作成したりプロット用のモジュールを使うともっと面白いことが出来ると思います。一部ですが、こんな感じに出力されます。APIが沢山あり大変便利になっています。プログラミングの文法は一通り勉強したけどイマイチ何を作っていいか分からないという方は、いろいろな企業や団体が公開しているAPIを調査してみるのも1つの道だと思います。APIが提供するサービスを上手く取り入れて素敵なWEBアプリやモバイルアプリを作ってみてはいかがでしょうか。コメントをキャンセルメールアドレスが公開されることはありません。10をインストールするタイル型ウィンドウマネージャXmonadを使う(カスタム編)→もっと見るクロのプロフィール映画と読書愛するプログラマー。Androidな人だったけど気がついたらサーバーサイドへ。Dataを主宰しています。