スポンサーリンク

FitbitのAlta HRを使ってプログラミング無しでゲーム中の心拍数を見る

Web

この記事は、PC Gaming Advent Calendar 1日目の記事です。PCゲームが関連していればなんでもOKなので、ご参加お待ちしております!

さて、2ヶ月前にFitbitというメーカーから販売されているAlta HRを買いました。

503 Service Temporarily Unavailable

Alta HRはアクティビティトラッカーと呼ばれているバンドで、右手か左手に装着する事で心拍数や睡眠ステージの分析(レム睡眠・浅い睡眠・深い睡眠)がおこなえるガジェットです。

fitbit-sleep-analysis

睡眠分析結果の一例

本来は、健康維持を目的として使う物なんですが、睡眠の質をスマートフォンアプリよりも正確に見てみたかったので買ってみました。Amazonで1万7000円で販売されています(2017年11月現在)。自分の睡眠データはもちろん、同世代の平均的な睡眠時間との比較が出来るので重宝しています。

心拍数のトラッキングも出来るので長時間付けている訳ですが、もちろんゲーム中も付けたままにしています。という事は、ゲーム中の心拍数も後から確認できるという訳です。

今回は、プログラミング無しで心拍数のデータをFitbit側から取得し、そのデータをcsv形式にしてグラフ表示にする所までやってみました。その方法を紹介します。(結果が見たい人は目次から飛んじゃってどうぞ)

利用したもの

Postmanを簡単に説明すると、Web APIの開発に使われるツールです。これを利用し、認証情報をFitbit側に送る事で、ChromeからでもFitbit側にあるデータを受け取る事が出来ます。

受け取ったデータはjsonと呼ばれるデータ形式で返ってくるので、これをcsvというカンマ区切りのデータ形式に変換します。変換後は、Googleスプレッドシートを利用してグラフに変換しました。

Fitbitの心拍数をグラフで表示する方法

Fitbitで開発者登録

はじめに、Fitbitで開発者登録をおこないます。既にAlta HRなどの製品のために作ったアカウントがあれば、それでログインすれば完了です。

Fitbit Development: Fitbit SDK
You'll fit in here. Using JavaScript, CSS, and SVG, developers now have a fast, easy way to build apps and clock faces for Fitbit OS.

Fitbitでアプリケーション登録

Fitbit側に蓄積された個人データにアクセスするために、アプリケーションとして登録します。

Login
description
入力項目意味入力内容
Application Nameアプリの名前適当
Descriptionアプリの説明適当
Application Websiteアプリのサイトhttp://localhost/
Organization組織名適当
Organization Website組織のサイトhttp://localhost/
Oauth 2.0 Application Type認証形式Personal
Callback URLAPIで指定するURLhttp://localhost/
Default Access Typeアクセス形式Read-Only

入力が終わったら登録ボタンを押して登録完了です。登録が終わると登録されたアプリケーションの説明が出てきますが、後ほど利用します。

Postmanで認証情報の作成

Chromeウェブストアから入手したPostmanにログインし、先ほどのアプリケーションの情報を利用して認証情報を作成します。この方法については、以下の記事を参考にやってみてください。自分もここ読みました。

FitbitのOAuth 2.0 APIをPostmanで試してみる方法(Qiita)

ゲームのプレイ時間に合わせてデータを取得する

Postmanを利用してFitbit APIを利用出来る様になったら、ゲームのプレイ時間に合わせてデータを取得していきましょう。

今回は以下のAPIを利用します。

GET https://api.fitbit.com/1/user/-/activities/heart/date/2024/11/23/1d/[detail-level]/time/[start-time]/[end-time].json

このAPIは、dateに日付(yyyy-MM-dd)、detail-levelに1sec、start-timeとend-timeに時刻(HH:mm)を入力することで、その日付の時間内の5秒毎の心拍数のデータを取得出来ます。たとえば、2017年11月01日の0:00~01:00のデータが取得したければ以下になります。

GET https://api.fitbit.com/1/user/-/activities/heart/date/2017-11-01/1d/1sec/time/00:00/01:00.json

こうして作成したら、実際にデータが受け取れるかPostmanで試してみましょう。もし、エラーが出たり、データが帰ってこないという場合には公式ドキュメントや上記のQiita記事を見直してみてください。

https://dev.fitbit.com/reference/web-api/heart-rate/

ゲームのプレイ時間の開始時刻と終了時刻さえ抑えておけば、利用できるという訳です。

実際にデータを受け取る事が出来れば、成功です。

fitbit-web-api-result-postman

受け取ったデータをcsvに変換する

Postmanを利用して受け取ったデータをcsvに変換します。konklone.ioにアクセスして、受け取った全てのデータをコピーペーストで入力します。convert-json-to-csv

利用したいデータは、時間とその時の心拍数の表示なので、“activities-heart”:からはじまる括弧の中身を消して、最初が “activities-heart-intraday”となるようにします

convert-json-to-csv-2

こんな結果になっていればOKです。下側に表示されている表の上の「Download the entire CSV」をクリックして保存します。

Google ドライブにアップロード

保存したcsvファイルをGoogle ドライブにアップロードします。アップロードすると、スプレッドシートで開くことが出来ます。

csv-open-google-spreadsheet

後は、Excelと同様にCtrl+Aで全選択して、グラフ表示機能を利用すれば完了です!

ゲーム中の心拍数推移のグラフ一覧

Fitbitによると安静時の心拍数は65~70です。ゲーム中ではどうなっているのかというと、

PUBGの場合は、敵と接敵すると一気に跳ね上がるものの、倒すことさえできれば、落ち着ける感じになっている事が分かります。最後に向けてじわじわと心拍数が上がっているのは、最後の生き残りを目指す緊張感の現れと言えそうです。

Arma 3のCoopの場合は、PUBGとは違って90前後で安定している感じでした。Coop自体、ずーっと動き回るというよりはポイント毎に休憩したり偵察したりしている事が反映されていると思われます。

Project Realityはかなり上下している感じになっています。これは歩兵分隊でのプレイですが、状況把握・接敵・偵察のループになっている対人戦だという事を踏まえると、納得行きます。

おわりに

というわけで、今回はFitbitから発売されているAlta HRを利用してゲーム中の心拍数を見てみました。今回は良く遊んでいるゲームでやってみましたが、たとえばもっとe-Sports寄りのFPSだったり、ホラーゲームで見てみると結果は違ってくると思います(今度試したい)。

現実まで視野を広げると(?)、満員電車の車内でぎゅうぎゅう詰めの状態、叱責を受けたり、なんらかの発表をしているときとか、そういった時の心拍数を後から見るだけでも話のネタになりそうです。

一度環境さえ整えれば、スマートフォンアプリで見るよりも詳細に心拍数の推移を見ることが出来るので、Fitbitのアクティビティトラッカーを持っている人は試してみてはいかがでしょうか。

タイトルとURLをコピーしました