ヘルスケアデータの認証は、モバイルプラットフォームのシステムAPIを通じて医療やフィットネスデータを読み取り、書き込むためにユーザーの明示的な同意を得るプロセスです。iOSでは、HealthKitを通じてHKHealthStoreおよびHKObjectTypeクラスで認証が実装され、AndroidではGoogle Fit APIを通じてOAuth 2.0およびFitnessOptionsで実装されます。Apple HealthKitドキュメンテーション、2025によると、ヘルスケアデータは高度に機密な情報のカテゴリに分類されています。医療的正確さと規制への遵守が不可欠な要件です。
ポイント
ヘルスケアデータ認証は、ユーザーの医療およびフィットネスメトリクにアクセスする前に、明示的かつ書面的なユーザーの同意を必要とするメカニズムです。標準のパーミッション(連絡先、カレンダー)とは異なり、ヘルスケアデータは追加の法的規制によって管理されます:米国のHIPAA、ヨーロッパのGDPR、そしてロシアの連邦法第152-FZです。
iOSでは、ヘルスケア認証はHealthKitを通じて実装されます:ユーザーはアプリケーションがリクエストするすべてのデータタイプを一覧表示する画面を見て、アクセスを許可する特定のカテゴリを選択できます。
App Annie (2025)によると、ヘルスケアとフィットネスアプリケーションは年間28%の成長率で、モバイル市場で最も急成長しているセグメントの一つです。その一方、アプリケーションが収集目的の明確な説明を提供しない場合、71%のユーザーがヘルスケアデータへのアクセスを拒否します。
他のパーミッションとの主な違いは、一部的なアクセスを許可できることです。ユーザーは歩数の読み取りを許可するが、心拍数データや医療レコードへのアクセスは禁止できます。
HealthKitはiOS 8で導入されたAppleのフレームワークで、統合されたセントラルヘルスケアデータリポジトリを提供します。アプリケーションはHealthKitに直接アクセスできず、HKHealthStoreを通じて認証をリクエストし、ユーザーが提供するデータタイプを決定します。すべてのデータはデバイス上で暗号化され、エンドツーエンド暗号化でiCloudを通じてシンクされます。
認証プロセスはHKHealthStoreのインスタンスを作成し、requestAuthorization(toShare:read:)メソッドを呼び出すことから始まります。アプリケーションは2つのタイプセットを渡します:読み取り用タイプ(アプリケーションが読み取りたいHKObjectType)と書き込み用タイプ(アプリケーションが保存したいHKSampleType)です。システムは同意画面を表示し、ユーザーが各タイプを個々に有効または無効にできます。
重要な機能:HealthKitはユーザーが同意画面で許可した特定のタイプを開発者に表示しません。requestAuthorizationを呼んだ後、HKHealthStore.authorizationStatus(for:)を通じて各タイプへのアクセスを個々に確認する必要があります。WWDC Session 11108 (2024)によると、Appleは読み取りまたは書き込みの各操作の前に認証ステータスを確認することを推奨しています。
HealthKitは数百のデータタイプをカテゴリに分けてサポートしています:量(歩数、心拍数、カロリー)、特徴(身長、体重、生年月日)、臨床レコード(アレルギー、接種、検査結果)、症状および月経です。各タイプはHKObjectTypeのサブクラスで表されます:数値測定のためのHKQuantityTypeとカテゴリデータのためのHKCategoryTypeです。
iOS 18では、AppleはFHIRを通じて医療機関からのデータをサポートするようにHealthKitを拡張しました。ユーザーが自分の病院やクリニックをヘルスケアアプリに接続している場合、アプリケーションは構造化された医療レコードへのアクセスをリクエストできます。
Google Fitは、OAuth 2.0認証を使用する、Android上でフィットネスデータを扱うためのプラットフォームです。HealthKitとは異なり、Google FitはOSレベルでシステムに組み込まれていません。これはGoogle Play Servicesの独立したサービスで、Google Play Consoleでの設定とOAuth 2.0クレデンシャルの作成が必要です。
Google Fitにアクセスするには、Google Cloud ConsoleでOAuth 2.0クライアントIDを登録する必要があります。認証はGoogleSignInAccountとGoogleSignIn.requestPermissions()を通じてリクエストされます。ユーザーは、リクエストされたスコープを含む標準のGoolge同意画面を見ます。
Google Fitはデータタイプごとに読み取りと書き込みのパーミッションを区別しています。アプリケーションは書き込みパーミッションをリクエストせずに、歩数の読み取りへのアクセスをリクエストできます。Google Fit API v2からは、すべての認証リクエストにデータ利用目的の説明を含める必要があり、これがないとリクエストはGoogleの審査で拒否されます。
FitnessOptionsクラスを使うと、どのデータタイプにアクセスが必要かを宣言的に指定できます。各タイプについて、アクセスレベルを設定できます。パーミッションセットは、ユーザーアカウントと共にGoolgeSignin.requestPermissions()に渡されます。
利用可能なタイプには歩数、カロリー、心拍数、距離、活動、眠眠があります。各タイプには独自の更新頻度とパーミッション要件があります。
ヘルスケアデータ認証リクエストの実装はiOSとAndroidで大きく異なります。以下は、HealthKitおよびGoogle Fit APIの実践的な例です。
Swiftでは、HealthKit認証リクエストは読み取りと書き込みのタイプを指定してHKHealthStoreを通じて実行されます。
import HealthKit
let healthStore = HKHealthStore()
let readTypes: Set<HKObjectType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!,
HKObjectType.quantityType(forIdentifier: .heartRate)!
]
let writeTypes: Set<HKSampleType> = [
HKObjectType.quantityType(forIdentifier: .stepCount)!
]
guard HKHealthStore.isHealthDataAvailable() else {
fatalError("このデバイスではHealthKitを利用できません")
}
healthStore.requestAuthorization(toShare: writeTypes, read: readTypes) { success, error in
if success {
// 各タイプのステータスを個別に確認
let status = healthStore.authorizationStatus(for: readTypes.first!)
print("HealthKit認証: \(status.rawValue)")
} else {
print("HealthKit認証エラー: \(error?.localizedDescription ?? "不明")")
}
}
Androidでは、Google Fit認証はGoogleSignInとFitnessOptionsを通じて実行されます。
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_CALORIES_EXPENDED, FitnessOptions.ACCESS_READ)
.build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this,
REQUEST_GOOGLE_FIT,
account,
fitnessOptions
)
} else {
// パーミッションはすでに許可されています — データを読み取り中
readGoogleFitData(account)
}
// パーミッションリクエスト結果の処理
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_GOOGLE_FIT && resultCode == RESULT_OK) {
val account = GoogleSignIn.getSignedInAccountFromIntent(data)
account?.let { readGoogleFitData(it) }
}
}
ヘルスケアデータは個人データの特にセンシティブなカテゴリに属します。HealthKitまたはGoogle Fitを使用するアプリケーションの開発者は、ユーザーの在住地域の規制要件を守る必要があります。
米国では、ヘルスケアデータはHIPAAによって管理されており、医療情報の保管、伝送、処理に関する厳密な要件を設けています。
ヨーロッパ連合では、ヘルスケアデータはGDPRの下で個人データの特別なカテゴリとみなされます。このようなデータの処理には、ユーザーの明示的同意と、大多数の場合、データ保護インパクト評価が必要です。
ロシアでは、ヘルスケアデータの収集は連邦法第152-FZによって規制されています。2025年から、ロシア国民の医療データを処理するすべてのアプリケーションは、認証された暗号化ツールを使用し、ロシア連邦内のサーバーにデータを保管する必要があります。
推奨:ヘルスケアデータを扱うアプリケーションを公開する前に、地域の規制に従っているかを確認するために法務部門に相談してください。
FAQ
HealthKitは、ローカルで暗号化されたヘルスケアデータリポジトリを持つ組み込みのiOSフレームワークです。Google Fitは認証にOAuth 2.0を使用します。
はい、両プラットフォームで可能です。iOSでは特定のデータタイプを選択できます。AndroidではGoogleアカウント設定から個々のパーミッションを取り消せます。
HKHealthStoreはiOSのHealthKitフレームワークの中心クラスです。すべてのヘルスケアデータの認証、読み取り、書き込みを管理します。
Google設定からアクセスを取り消せます。
データをサーバーに伝送する場合、HIPAA従従が必須です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。