すべての記事

【TECH】MonoPump のローカルファーストな健康データ設計

MonoPump が心拍履歴を役立てながら、個人の測定データをクラウドデータや医療判断にしない設計です。

プライバシーローカルファースト健康データiOS
【TECH】MonoPump のローカルファーストな健康データ設計

心拍アプリには、反対方向に引っ張る二つの責任があります。履歴を残さなければ役に立ちません。一方で、個人の健康データを普通の分析データのように扱ってはいけません。MonoPump はローカルファーストを選びます。

ローカルで保護されたファイルとして表現された心拍履歴
ローカルファースト設計は、標準の測定経路をプライベートでシンプルに保ちます。

測定アルゴリズムは注目されやすいですが、結果画面が消えた後に信頼を決めるのはデータ層です。

記録は小さく保つ

1 回の心拍記録を医療カルテのように大きくする必要はありません。MonoPump は日時、BPM、ユーザー、任意のコンテキスト、品質、信頼度、測定時間、ソース、メモだけを保持します。

Entity relationship diagram Preparing diagram
View diagram source
erDiagram
    USER ||--o{ HEART_RATE_RECORD : owns
    USER {
        uuid id
        string name
        string avatar
    }
    HEART_RATE_RECORD {
        uuid id
        date measuredAt
        int bpm
        double qualityScore
        double confidenceScore
        string context
        string source
    }

必要以上に集めないことは設計です。体験を改善しないフィールドは、簡単に取れるからという理由だけで集めません。

ローカル保存が境界を変える

MonoPump は Application Support 内の JSON ファイルに記録を保存し、原子的に書き込み、完全なファイル保護を使います。UserDefaults は軽い設定と移行互換にとどめます。

Flow diagram Preparing diagram
View diagram source
flowchart LR
    A[測定結果] --> B[HeartRateViewModel]
    B --> C[JSON にエンコード]
    C --> D[原子的に書き込み]
    D --> E[Application Support]
    E --> F[iOS file protection]

標準の流れにアカウント、サーバー、同期容量、ネットワーク権限が不要になります。

傾向は診断ではなく記述

分析層は控えめです。平均、中央値、最小、最大、最近の窓の比較、活動日、品質要約を計算します。HRV、ストレス、睡眠品質、疾病リスク、治療助言は推論しません。

Flow diagram Preparing diagram
View diagram source
flowchart TD
    R[保存された BPM 記録] --> S[日付で並べる]
    S --> A[平均と中央値]
    S --> M[最小と最大]
    S --> W[最近と前回の窓を比較]
    S --> Q[品質要約]
    A --> O[記述的な洞察]
    M --> O
    W --> O
    Q --> O

消費者向けカメラアプリはパターンに気づく助けにはなれますが、医師のふりをすべきではありません。少なく集め、ローカルに保存し、慎重に説明し、明示的に出力する。これが MonoPump の基準です。

MonoWare より

MonoPump にはこのノートの背景があります。

製品サイトを開くか、MonoPump のノートを続けて読めます。

ニュースレター

プライバシーと製品技術ノートを、ときどき送信します。