apple-health — Expo向け Apple HealthKit バインディング

Library

概要

apple-health は、Expo を使った iOS アプリから Apple の HealthKit を簡単に扱えるようにするモジュールです。HealthKit の読み取り/書き込み、リアルタイムの更新購読、アクティビティリングの表示など、アプリで必要となる主要機能をカバーします。TypeScript で型定義されており、React 用のフック群(例:usePermissions、useHealthKitQuery)を通じて直感的に利用可能。HealthKit が提供する多数の量的・カテゴリ・ワークアウトタイプを網羅し、単位変換・権限フロー・ネイティブのクエリ実行を抽象化することで、Expo/React Native 開発者が OS レベルのヘルスデータとスムーズに連携できるように設計されています。

GitHub

リポジトリの統計情報

  • スター数: 5
  • フォーク数: 0
  • ウォッチャー数: 5
  • コミット数: 30
  • ファイル数: 17
  • メインの言語: TypeScript

主な特徴

  • 70+ の量的データ、40+ のカテゴリ、80+ のワークアウトタイプをサポート
  • Expo モジュールとしての導入が容易(config plugin 想定)、TypeScript 型付き
  • React フックで権限管理・クエリ・購読を簡潔に扱える
  • リアルタイム更新(サブスクリプション)やアクティビティリング表示などのユーティリティ

技術的なポイント

apple-health は iOS の HealthKit API を Expo/React Native アプリから利用できるようにするラッパーです。技術的な核は以下の点にあります。

まず権限モデルの取り扱い。HealthKit は読み取り/書き込みごとに明示的な許可が必要であり、本モジュールは usePermissions のようなフックで権限の取得・状態確認を行える API を提供します。これによりアプリ側は許可ダイアログの表示や許可拒否時の挙動を簡潔に実装できます。

次にデータモデルとクエリ。量的データ(例:歩数、心拍数、消費カロリー)やカテゴリデータ(睡眠解析、症状など)、ワークアウトサンプルに対応する型を用意し、単位変換や日付レンジ指定、サンプル取得のための抽象クエリを提供します。内部的には HKSampleQuery、HKAnchoredObjectQuery、HKObserverQuery といった HealthKit のネイティブクエリを用いており、アンカー(最後に取得した位置)を使った差分取得や、過去データのページングも可能です。

リアルタイム更新は HKObserverQuery/背景配信を利用した購読機能で実現され、アプリはデータ変更時にコールバックを受け取って UI を更新できます。Expo 環境に合わせ、ネイティブモジュール側は expo-modules の仕組みを想定して実装されており、TypeScript の型定義を通じて JavaScript 側とシームレスに連携します。

また、ワークアウトの種類やヘルスデータのタイプを豊富に列挙しており、アプリ固有のロジックでタイプを選んで読み書きできる点が利便性を高めます。Expo フローへの統合性を考え、必要な Info.plist 設定や config plugin の導入手順が想定されているため、ネイティブ設定に不慣れな開発者でも導入しやすい設計です。

最後にテストや型安全性。TypeScript による型定義で API ミスを抑え、ネイティブと JS 間の契約を明確化しているため、実装時の安全性が高く保たれます。総じて、ネイティブな HealthKit 機能を Expo ワークフローに落とし込むための実用的なツールセットを提供しています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .claude: dir
  • .eslintrc.js: file
  • .gitignore: file
  • .npmignore: file
  • CLAUDE.md: file

…他 12 ファイル

まとめ

Expo 環境で HealthKit を扱う際の導入コストを下げる実用的な TypeScript モジュールです。

リポジトリ情報:

READMEの抜粋:

apple-health

An Expo module for interacting with Apple HealthKit on iOS devices. Read and write health data, subscribe to real-time updates, display activity rings, and more.

Features

  • 70+ quantity types - Steps, heart rate, calories, distance, sleep, nutrition, and more
  • 40+ category types - Sleep analysis, symptoms, mindfulness, reproductive health
  • 80+ workout types - Running, cycling, swimming, yoga, and more
  • React hooks - usePermissions, useHealthKitQuery, ...