はじめに
56歳、フリーランスエンジニアの袴田です。
少し前から血圧が高めになってきて、お医者様から「朝晩、毎日記録してください」と言われました。
App Storeで血圧アプリを探しました。たくさんあります。
でも、どれも僕にはフィットしませんでした。
😖 字が小さすぎる....
老眼でメガネが無いと細かい字が読めません。薄いグレーの文字も結構辛いです。
朝起きてすぐ測って、メガネをかけて、アプリを開いて記録する。その「メガネをかけて」がストレスです。
数字入力のテンキーが小さいのも辛い。
😖 情報量も多すぎる....
グラフは欲しいけど、その下に統計、隣に棒グラフ、さらにコメント欄……。僕が欲しいのはそれじゃない。
シンプルさを求める同じような人は絶対にたくさんいる。
だから作りました。BPLog という血圧記録アプリです。
📱 App Storeで公開中:
この記事は実装の話ではなく、何を作って何を捨てたかの判断の話を書きます。
課題の整理
既存アプリの問題を言語化すると、3つです。
- フォントが小さい — 老眼には読めない
- 機能が多すぎる — グラフ・統計・コメント・リマインダー・クラウド同期・SNSシェア……。使わない機能がノイズになる
- 入力が面倒 — テキストフィールドをタップするとシステムキーボードが出て、数字を打って、次へ移動して……。朝の眠い状態でやりたくない
解決方針はシンプルです。
「朝晩の血圧を記録して、月次リストでお医者様に見せて、グラフで傾向を確認する」——これだけできれば十分。
それ以外は全部捨てる。
技術選定
React Native (Expo SDK 54) + TypeScript
理由は一つです。僕がWebフロントエンドをメインに仕事をしているから。
iOSネイティブ(Swift)で書く選択肢もありました。ただ今回は「使えるアプリを素早く作る」が目的で、「Swiftを学ぶ」は目的ではない。Expoのマネージドワークフローで、ビルド・署名・App Store提出まで完結できます。
なお僕は元々業務系のエンジニアでC#がメイン言語でした。
2025年12月からReactの学習を始めて本当に幅が広がったなと感じています。
TypeScriptは当然の選択です。型があることで、入力値の範囲チェックや測定値の構造定義が自己文書化されます。
AsyncStorage(ローカルのみ)
クラウド同期は作りませんでした。
血圧は医療データです。どこへも渡さない。スマホの中だけにしかデータはない。
App Storeの審査でもプライバシー周りの説明が楽になります。
なお、ローカル保存の裏返しとして機種変更時にデータは引き継がれません。現バージョンではデータの引き継ぎ機能とバックアップ機能は未実装です。将来的な機能拡張候補ですが急ぐ必要はないと判断しました。
技術的なメリットもあります。バックエンドがなければ、ランニングコストがゼロで、サーバー障害もなく、アカウント管理も不要です。
UIの設計判断
テンキーのみ、システムキーボードなし
入力ダイアログではシステムキーボードを一切使っていません。アプリ内にテンキーを実装しました。
理由は2つ。
①操作の予測可能性 — システムキーボードはアニメーションで画面レイアウトが変わります。「次のフィールドにフォーカスが移ったら入力できる」という状態の把握が難しくなる。テンキーなら画面が変わらず、視線の移動が最小限です。
②ボタンを大きくできる — システムキーボードのキーは小指の先ほどの大きさです。テンキーを自前実装すると、キーサイズを自由に決められます。
入力のフィードバック
眠い頭で「130」と連続入力したのに、画面を見たら「3」が押せておらず「10」になっている。0を消して打ち直す……これは絶対に嫌でした。
今の入力を受け付けたよと、数字をタップした後に必ず触覚フィードバック(ハプティクス) expo-haptics を付けています。
// haptics.ts
export function hapticKeyPress() {
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
}
export function hapticSave() {
Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success);
}
コメントに「Haptic feedback must not be removed — it is a core UX requirement for the keypad.」と書きました。忘れて後で絶対に外してしまわないように。
画面を見なくてもキーが押せているか確認できる。これは自分で操作していても気持ちいいです。
「今日」と「昨日」だけ見せる
入力画面に表示するのは今日と昨日の2日分だけです。
最初は直近一週間を表示で実装しました。でも一昨日やそれより前の情報がこの画面で必要か考えてばっさりカットしました。
朝晩の入力という行為において、ユーザーが見たいのは「今日のまだ入力していない枠」だけです。週や月の俯瞰は一覧画面でやれます。
今日のカードには現在の区分(午前/午後)に赤い+ボタンを1つだけ表示します。午前中は午後の枠を — で表示してタップ不可にします。これで「どこを押せばいいか」を考える必要がなくなります。
ダブルタップで編集
過去のデータを修正したい場合、セルをダブルタップ(350ms以内に2回)すると入力ダイアログが開きます。
シングルタップをUIに割り当てないのは、誤タップで編集ダイアログが開くのを防ぐためです。一覧画面では日付の行を縦にスクロールするので、スクロール中の意図しないタップが起きやすい。
捨てた機能
設計で「捨てる判断」をしたものを明示しておきます。
| 捨てたもの | 理由 |
|---|---|
| クラウド同期 | プライバシーリスク・バックエンドコスト・アカウント管理の複雑さ |
| リマインダー通知 | お医者様から言われている人は習慣化している。余計な通知はノイズ |
| 統計・平均値 | お医者様が見るのは生データ。統計はアプリよりお医者様の仕事 |
| コメント・メモ欄 | 情報量が増える。必要な人は別のメモアプリを使えばいい |
| 体重・歩数などの複合記録 | スコープを広げるとUXが濁る |
| マネタイズ | このアプリの目的ではない(後述) |
残した機能(一覧表示)
記録するのは自分で見返したり、医療機関でお医者様へ報告するためです。
まずお医者様へ報告する時に見せる一覧画面は必須で、これも極力シンプルにしました。
エクスポート機能を付けなかった理由
「医療データをお医者様に見せるなら、CSVエクスポートくらい欲しいのでは?」と僕も最初は考えました。でもやめました。
CSVを出力できたとして、エンジニアの僕は良いとしても想定ユーザーのシニアの方がそのファイルをどう扱うのか。「で? これどうしたらいいの?」となるのが目に見えています。表計算アプリで開いてお医者様にメールで送る——そんな複雑な操作を求めるのはこのアプリのコンセプトと違う。
お医者様に見せる方法は、もっと単純に実現できる。
- 対面なら、いつも自分が見ている一覧画面を、そのままお医者様に見せればいい
- 遠隔なら、一覧画面のスクショを撮って送ればいい
どちらもアプリ側の新機能は一切不要です。「お医者様に見せる」という目的のために一覧画面を作り込んだのだから、それを見せれば済む。そう考えエクスポートはカットしました。
残した機能(グラフ表示)
あとはグラフで直感的に見たいです。グラフは react-native-gifted-charts を使っています。
最初はグラフもY軸やX軸のラベルに情報を盛り込んでいました。
でも目標値と比べてどれぐらい高いのか?それだけ分かれば十分と思いカットしてます。
なぜ無料なのか
技術選定と同じく、ビジネス面でも「捨てる判断」をしました。
このアプリは広告もサブスクも一切ありません。完全無料です。
値段を付けてごく僅かな方にしか利用されないよりも、一人でも多くの方に使って頂くことを選びました。
もう一つの理由:営業ツール
「自分が困った問題を自分で解決できる」という証明を、App Storeで動くアプリとして持っておきたかった。発注者に「こういう考え方で、こういう判断をして、こういうものを作りました」と見せられるものが欲しかった。
血圧アプリでお金を稼ぐより、このアプリを作った経緯と判断を話すことで、高単価の受注につながる方が何倍も価値があると考えました。
ソースコード
ソースコードをMITライセンスですべて公開しています。
おわりに
「自分のために作る」は最強の要件定義だと思います。
ユーザーインタビューをしなくても課題がわかる。プロトタイプを見せる相手が自分なのですぐ検証できる。「これは本当に必要か」の判断軸がブレない。
100%自分が欲しいと信じるものが作れます。
56歳のフリーランスエンジニアが老眼のために血圧アプリを作った。
同じような困り方をしている人が使ってくれたら、とても嬉しいです。
袴田 真也 / Masaya Hakamata
フリーランスエンジニア・IPA システムアーキテクト / DB スペシャリスト / 安全確保支援士






