HabitRPGと万歩計アプリFitbitを連携する

はじめに

日本でもFitbit Charge HRが発売されました。 その記念(?)にFitbitとHabitRPGを連携する方法を紹介します。 Fitbitのデバイスがなくても、Fitbitスマホアプリでも大丈夫です。

「Fitbitで一日の目標歩数をクリアしたら、HabitRPGの経験値が上がる」という仕組みを作ってみます。

準備するもの

仕組み

こんな感じです。

  1. Fitbitで一日の目標歩数をクリアする

  2. クリアしたことをトリガーにしてIFTTTでGoogle Spreadsheetに追記

  3. Google Spreadsheetへの追記をトリガーにしてZapeirでHabitRPGのHTTP POST呼び出し

  4. HabitRPGで経験値が上がる

仕組みづくり

上の仕組みの2と3を作る必要があります。4についても説明します。

一日の目標歩数をクリアしたらGoogle Spreadsheetに追記されるようにする(via IFTTT)

以下の公開RecipeをIFTTTで登録します。 IFTTT Recipe: If daily step goal achieved, then add row to spreadsheet in Google Drive. connects fitbit to google-drive

Recipeを登録する段階で、Google DriveやFitbitについてアクティベートが求められます。 登録が終わったら、歩いて目標をクリアして、Google Driveに新しいSpreadsheetが作成されることを確認しましょう。

外部からHabitRPGの経験値を上げるには

HabitRPGのあるURLをPOSTで呼ぶことで、指定したHabitが実行されたことを通知できます。 詳しくは https://habitrpg.com/static/api が参考になります。リンク先にあるように、curlで叩いて確認するとより納得できると思います。

肝心のGoogle Spreadsheetの追記からPOST発行へつなげるには、Zapierを使います。

Google Spreadsheetが追記されたらHTTP POST呼び出す(via zapier)

Zapierとは?

何かイベントが発生したときに何かアクションを起こすことができるウェブサービスです。 こちらの記事が分かりやすいです。 nulab-inc.com

Zapierのアカウント登録をこちら(http://zpr.io/pVqh)からしてもらうと、あなたの(私のも)月間可能Task数が100増えるそうなので、よろしければ。 今回 IFTTTだけでなくZapierも併用しているのは、標準のIFTTTでは任意のURLにPOSTリクエストが発行できないからです。 一方でZapierだけでなくIFTTTも使っているのは、ZapierがFitbitに対応していないためです。面倒ですね...

Zapを作る

ZapはIFTTTでのRecipeのようなものです。IFTTTのRecipeと違って、作ったZapは共有できないようなので、以下の流れで作ってください。

1 大枠を指定する

Zapierにログインして Make a Zap! を選択します。 "WHEN THIS HAPPENS..."に Google Sheets と Updated Spreadsheet Rowを、 "...DO THIS"に Webhook と POST を選択します。 f:id:nkn_khr:20150429164534p:plain

2 Googleアカウントを登録する

IFTTTに登録したものと同じGoogleアカウントを登録します。 f:id:nkn_khr:20150429164738p:plain

3 WEBHOOKについてはここでは指定することはありません

4 対象のシートを指定します。

前に紹介したIFTTTのRecipeをそのまま使った場合には、SpreadsheetにDaily step goal achievedを、Worksheetにシート1を指定します。 f:id:nkn_khr:20150429165601p:plain

5 POSTする内容を定義します。

まずURLを指定します。https://habitrpg.com/api/v2/user/tasks/walk/up です。 ここでの "walk" がHabit名です。 存在しない場合は自動的に生成されるので事前に作る必要はありません。 f:id:nkn_khr:20150429194555p:plain

次にヘッダを定義します。(それ以外のパラメータは編集する必要はありません。) ヘッダとしてx-api-userとx-api-keyを、各valueに自分のUserIDとAPI Tokenを入力します。 値はHabitRPGのAPIページから確認してください。 f:id:nkn_khr:20150429200701p:plain

6 テストをクリックします。

このあとHabitRPGをリロードして、新しくwalkが追加されることを確認してください。 f:id:nkn_khr:20150429201440p:plain

もしエラーが出たら

  • WEBHOOKトリガーまで至っていない場合は、Spreadsheet側を手で更新して新しい行を追加してみてください。

  • WEBHOOKでエラーになる場合は、ヘッダの値やURLが間違っていないか確認してください。

7 Zapに名前を付けて保存して終了です。

まとめ

IFTTTとZapierとGoogle Spreadsheetを使って、FitbitとHabitRPGを連携させました。

現実世界のタスクをロールプレイングゲームにして遊びながらこなせるWebサービス「HabitRPG」 - DNA

万歩計アプリやそういう体を動かす系アプリなんかとの連携が今後は期待できそうです。

というわけで期待には応えられたんではないかと思います。

今回の方法を応用すれば、睡眠時間を十分摂っていればUp、足りなければDown、といったこともできそうです。 また、IFTTTがJawboneWithingsに対応していますので UPやWithings Activitéを使っている人も、似た方法で連携させられるかと思います。