kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Habitify API で習慣データを取得しよう

2024年から Habitify で個人的な習慣化の管理をしていて,もうとにかく便利で毎日の習慣化を支えてもらっている❗️朝活・読書・サプリメントなどを記録しつつ,Habitify のチャレンジ機能を使って毎日プランクを続けていたりもする💪Habitify は無料でも十分使えるけど,僕は Premium に課金して使っている〜 \( 'ω')/

www.habitify.me

実は Habitify を使うまでは数年間 Google Sheets で習慣化の管理をしていて,例えば朝活を例にすると「その日に取り組んだこと」を必ず記録していた.Habitify にも「習慣メモ」という機能があって記録はしてるけど,振り返りのために定期的に集計したく,今回は Habitify API を試してみた❗️API ドキュメントには以下にある.

docs.habitify.me

準備

まず Habitify API の API Key を取得する.ドキュメントにはウェブとアプリで取得できると書いてあったけど,現時点だとウェブでは取得できなさそうだった.Habitify をウェブで使うことはほとんどなく,普段使っているアプリ (Android) から API Key を取得した.

API: 習慣を取得する

/habits API (GET) で習慣化の一覧を取得できる👌(id は省略)今は4種類の習慣を登録している.ちなみにチャレンジ機能のデータは Habitify API では取得できなさそうだった.

$ curl -s -H "Authorization: ${API_KEY}" \
    https://api.habitify.me/habits | jq -r '.data[] | {id, name, goal: {periodicity: .goal.periodicity}}'
{
  "id": "wwwwwwwwwwwwwwwwwwww",
  "name": "ビタミンを摂る",
  "goal": {
    "periodicity": "daily"
  }
}
{
  "id": "xxxxxxxxxxxxxxxxxxxx",
  "name": "朝活をする",
  "goal": {
    "periodicity": "daily"
  }
}
{
  "id": "yyyyyyyyyyyyyyyyyyyy",
  "name": "1週間を振り返る",
  "goal": {
    "periodicity": "weekly"
  }
}
{
  "id": "zzzzzzzzzzzzzzzzzzzz",
  "name": "本を読む",
  "goal": {
    "periodicity": "daily"
  }
}

docs.habitify.me

API: 習慣メモを取得する

/notes API (GET) で習慣メモを取得できる👌パスパラメータには /habits API (GET) で取得した habit_id を設定する.クエリパラメータには Date Formatfromto を設定する.ただし普通にクエリパラメータを設定すると Only accept the format of from is YYYY-MM-DDThh:mm:ss±hh:mm というエラーになってしまうため,URL エンコードを忘れずに❗️

習慣メモを取得できるのは特に嬉しくて,今日までだと以下のような結果(数値は合計日数)だった.Start building with Next.js に取り組んだり,現場のプロがわかりやすく教える位置情報エンジニア養成講座を読み進めている結果を確認できた👏

$ curl -s --get -H "Authorization: ${API_KEY}" \
    --data-urlencode "from=2024-01-01T00:00:00+09:00" \
    --data-urlencode "to=2024-02-14T23:59:59+09:00" \
     https://api.habitify.me/notes/xxxxxxxxxxxxxxxxxxxx | jq -r '.data[].content' | sort | uniq -c | sort --reverse
  17 Start building with Next.js
  15 位置情報エンジニア養成講座
   8 Bedrock ワークショップ
   2 amazon-s3-multipart-upload-transfer-acceleration
   1 Hasura Tutorial PostgreSQL
   1 CDK x EventBridge Pipes
   1 Bedrock デジタルトレーニング

docs.habitify.me

まとめ

Habitify API の基本的なリソース HabitsNotes の取得を試してみた❗️個人的には習慣メモを取得できるのは助かる👌他にも実装されてる API はあるけど,取得できるデータが微妙に不足してたり,開発が止まってるように見えるのはちょっと気になる😨例えば習慣の「連続記録」などは API では取得できなかったりする💨

docs.habitify.me

今後も Habitify を毎日使っていくぞー \( 'ω')/