Repolode
appeeky

appeeky/expo-healthkit

Apple HealthKitとAndroid Health Connectを共通のJavaScript APIで利用できるExpo/React Nativeモジュール。

代替できる製品:react-native-healthkit

スター
108
フォーク
8
未解決の Issue
1
最終コミット
11 日前

これは何?

@appeeky/expo-healthkitは、Expo Modules APIを基盤とするネイティブモジュールです。ExpoおよびReact Nativeアプリから、両プラットフォームの健康データを共通のJavaScript APIで扱えます。iOSではHealthKit、AndroidではHealth Connectを利用します。アプリのコードでは常にAppleのtype identifierを渡し、ネイティブ層が対応付けを行うため、歩数、心拍数、睡眠、体重、血圧など、マッピング済みのデータ型ごとにプラットフォーム分岐を書く必要はありません。

クエリでは、数量サンプルやカテゴリサンプル、ワークアウト、統計集計、区間ごとの統計を取得できます。また、心電図、アクティビティリング、FHIR臨床記録、ワークアウトのGPSルートなど、iOS専用データにも対応しています。書き込みでは、数量・カテゴリサンプル、ワークアウト、血圧などの相関データを保存でき、削除も可能です。差分同期では不透明なアンカートークンを使用します。Androidでは最初にページ分割してデータを読み込み、その後Health Connectの変更トークンを使います。

Config pluginはHealthKitのentitlementとHealth Connectの権限宣言を書き込み、minSdkを26に引き上げます。Expo SDK 53以降とdevelopment buildが必要です(Expo Goには非対応)。iOS 16.4以降、Android 8以降が必要です。

主な機能

  • 01両プラットフォームで共通のAPI:同じメソッドとAppleのtype identifierをiOSとAndroidで使え、マッピングはネイティブ側で処理されます。
  • 02数量サンプル、カテゴリサンプル、ワークアウト、統計のクエリに対応し、queryStatisticsCollectionで区間ごとの集計も取得できます。
  • 03心電図、アクティビティリング、FHIR臨床記録、聴力図、ワークアウトのGPSルート、心拍系列、相関データなど、iOS専用データのクエリに対応します。
  • 04queryAnchoredによる差分同期に対応し、追加・削除データ、アンカー、hasMoreを返してページ分割での追いつき処理を行えます。
  • 05保存と削除:saveQuantitySample、saveCategorySample、saveWorkout、saveCorrelation、deleteObjectsを利用できます。
  • 06observe、addUpdateListener、enableBackgroundDeliveryによるバックグラウンド配信に対応します。保存済みの監視対象は、アプリが終了した状態から再起動した際に再登録されます。
  • 07Config pluginがHealthKitの利用目的文字列とHealth Connectのuses-permission項目を宣言し、minSdkを26に引き上げます。
  • 08固有のエラーコード(ERR_HEALTHKIT_UNSUPPORTED、ERR_HEALTH_CONNECT_UNSUPPORTED、ERR_HEALTH_CONNECT_ANCHOR_EXPIRED)により、Platform.OSで判定しなくても非対応のUIを非表示にできます。

ユースケース

  • フィットネスアプリで、日々の歩数、心拍数、睡眠データを読み取る。
  • 体重、血圧、体組成の推移を表示する健康ダッシュボードを構築する。
  • アプリ内で記録したワークアウトやサンプルをHealthKitまたはHealth Connectに書き込む。
  • アンカー付きの差分クエリを使い、ユーザーの健康履歴を独自のバックエンドに同期する。
  • 心電図やアクティビティリングなどApple専用データをiOSで表示し、Androidでは非表示にする。

クイックスタート

  1. 1

    Expoでパッケージをインストールする

    npx expo install @appeeky/expo-healthkit
  2. 2

    app.jsonまたはapp.config.tsにconfig pluginを追加する

  3. 3

    ネイティブコードを再ビルドし、development buildで実行する

    npx expo prebuild --clean

使う前に知っておきたいこと

  • HealthデータAPIはExpo Goでは実行できません。development buildが必要です。
  • HealthKit capabilityを有効にしたiOS 16.4以降、またはHealth Connectを搭載したAndroid 8以降が必要です。
  • パッケージのメタデータにライセンスが宣言されていません(NOASSERTION)。使用前にライセンスを確認してください。
  • iOSでは読み取り権限の状態が不透明なため、アプリから読み取りが拒否されたかどうかを判別できません。

収録されている特集

トピック

#react-native#expo#healthkit#health-connect#ios#android#mobile#typescript#health-data#apple-healthkit

よくある質問

expo-healthkit とは?
Apple HealthKitとAndroid Health Connectを共通のJavaScript APIで利用できるExpo/React Nativeモジュール。 @appeeky/expo-healthkitは、Expo Modules APIを基盤とするネイティブモジュールです。ExpoおよびReact Nativeアプリから、両プラットフォームの健康データを共通のJavaScript APIで扱えます。iOSではHealthKit、AndroidではHealth Connectを利用します。アプリのコードでは常にAppleのtype identifierを渡し、ネイティブ層が対応付けを行うため、歩数、心拍数、睡眠、体重、血圧など、マッピング済みのデータ型ごとにプラットフォーム分岐を書く必要はありません。
expo-healthkit は無料で使えますか?ライセンスは?
expo-healthkit は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
expo-healthkit は今もメンテナンスされていますか?
活発にメンテナンス中。expo-healthkit の最終コミットは 2026年10月26日 です。
expo-healthkit は何に使えますか?
フィットネスアプリで、日々の歩数、心拍数、睡眠データを読み取る。 体重、血圧、体組成の推移を表示する健康ダッシュボードを構築する。 アプリ内で記録したワークアウトやサンプルをHealthKitまたはHealth Connectに書き込む。 アンカー付きの差分クエリを使い、ユーザーの健康履歴を独自のバックエンドに同期する。 心電図やアクティビティリングなどApple専用データをiOSで表示し、Androidでは非表示にする。
expo-healthkit のインストール方法は?
Expoでパッケージをインストールする: npx expo install @appeeky/expo-healthkit app.jsonまたはapp.config.tsにconfig pluginを追加する ネイティブコードを再ビルドし、development buildで実行する: npx expo prebuild --clean
expo-healthkit はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/appeeky/expo-healthkit

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト