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

測定アルゴリズムは注目されやすいですが、結果画面が消えた後に信頼を決めるのはデータ層です。
記録は小さく保つ
1 回の心拍記録を医療カルテのように大きくする必要はありません。MonoPump は日時、BPM、ユーザー、任意のコンテキスト、品質、信頼度、測定時間、ソース、メモだけを保持します。
This diagram could not be rendered. Its source is still available below.
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 は軽い設定と移行互換にとどめます。
This diagram could not be rendered. Its source is still available below.
View diagram source
flowchart LR
A[測定結果] --> B[HeartRateViewModel]
B --> C[JSON にエンコード]
C --> D[原子的に書き込み]
D --> E[Application Support]
E --> F[iOS file protection]
標準の流れにアカウント、サーバー、同期容量、ネットワーク権限が不要になります。
傾向は診断ではなく記述
分析層は控えめです。平均、中央値、最小、最大、最近の窓の比較、活動日、品質要約を計算します。HRV、ストレス、睡眠品質、疾病リスク、治療助言は推論しません。
This diagram could not be rendered. Its source is still available below.
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 の基準です。