1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HealthKitのデータ、絶対に医療で使えるはずだよね?

Apple Watch をつけて寝ると、睡眠ステージ、血中酸素、心拍、呼吸数が毎晩記録されます。iPhone の中には、何ヶ月分ものデータが溜まっています。

これ、医療に使えるはずですよね。

そう思って会社を作り、睡眠アプリを作り始めました。実際にやってみると、想像していたのとは違うところに壁があった、という話を書きます。

(私が所属するベンチャー、株式会社Medisenseでは、睡眠アプリ「Sleepa」を開発しています。睡眠専門医が設立したベンチャーです)

不眠症の治療は、実質データなしで行われている

意外に思われるかもしれませんが、睡眠専門のクリニックであっても、診断の中心は問診です。

客観的に睡眠を測る検査には PSG(ポリソムノグラフィ)があります。頭に電極をつけて一晩クリニックで寝る検査で、精度は高いのですが、気軽にできるものではありません。

結果として何が起きるか。患者さんの「眠れません」という自己申告だけを根拠に、睡眠薬が処方されるということが普通に起きています。

エンジニアの感覚だと、なかなか衝撃的な話ではないでしょうか。ログを見ずに障害対応をしているようなものです。

さらに「睡眠誤認」という問題がある

もうひとつ厄介な事情があります。

弊社代表(脳神経内科の専門医)によると、不眠症として来院されるケースの半分以上は睡眠誤認だそうです。

睡眠誤認とは、実際には眠れているのに、眠れていないと感じている状態のことです。詳しくはこちらの記事をご参照ください。

正常な睡眠にも短い覚醒は含まれます。多くの人はそれを認識しませんが、睡眠誤認では覚醒だけが記憶に残り、しかも覚醒と覚醒のあいだの記憶がないため「ずっと起きていた」と感じてしまいます。

この場合、睡眠薬は必要ありません。必要なのは「実際には眠れている」と本人が納得することです。そして納得のためには客観的なデータが要ります。

データさえあれば解決に近づく問題なのに、そのデータが現場にない。 ここに HealthKit が入る余地があるはずだ、と考えました。

アプリを作った。しかし壁があった

そこで作ったのが Sleepa です。

HealthKit から睡眠ステージ(レム/コア/ディープ/覚醒)、血中酸素、覚醒回数を取得してグラフにする。あわせて主観的な「眠れた感覚」を記録し、実測と並べて表示する。ズレが見えれば睡眠誤認に気づける。

設計としては筋が通っていた、はずでした。

しかし実際に使ってもらうと、壁がありました。

ユーザーがグラフを読めないのです。

「ディープ睡眠 13%」と表示しても、それが多いのか少ないのか分からない。「覚醒 4回」も同じです。データは出せているのに、意味が伝わらない。以下が、Sleepaの睡眠グラフの画面です。

スクリーンショット 2026-08-19 12.10.48.png

医師はこのグラフを読み解けます。しかし利用者は読み解けません。数値を可視化した時点で仕事が終わったつもりでいましたが、実際には**「数値」と「理解」のあいだに、もう一段の隔たりがあった**わけです。

AIに読み解かせればいいのでは

そこで考えたのが、データの解釈を LLM にやらせるという方法です。

ただし健康データなので、外部のサーバーに送るのは避けたい。プライバシーの説明が難しくなりますし、医療隣接のアプリとしては特に慎重になるべきところです。

そこで iOS 26 の Foundation Models(Apple Intelligence のオンデバイス LLM)を使うことにしました。端末内で完結するため通信が発生せず、追加コストもかかりません。しかも、結構使えます。

作りました

過去30日分のデータを分析し、結果を文章で説明する機能を実装しました。

スクリーンショット 2026-08-19 12.11.28.png

グラフを読む必要はなく、「最近は睡眠時間が普段より短めです」といった文章が返ってきます。分からないことは、その場で質問することもできます。質問への応答も、もちろんApple IntelligenceのオンデバイスLLMを使用しています。

スクリーンショット 2026-08-19 12.12.56.png

仕組み:判断と表現を分離する

ここが、この記事で一番書きたかったところです。

医療に隣接するアプリで LLM を使うとき、LLM に判断させてはいけないと考えました。幻覚が結論に混入するリスクがありますし、判定基準を第三者がレビューできなくなるからです。

そこで、こう分けました。

判断レイヤーは、ごく普通のコードです。血中酸素が90%を下回った夜が全体の何割か。睡眠時間が本人の平均からどれだけ外れているか。こうした計算をルールで行い、「正常/注意/警告/データ不足」の4段階と、その根拠を構造化データとして出力します。

表現レイヤーは、その構造化データだけを受け取ります。生の HealthKit データは渡しません。LLM の仕事は「確定した所見を、やさしい日本語に言い換える」ことだけです。

この分け方には実利があります。

  • 判定基準がコードとして残るので、専門医がレビューできる
  • LLM が使えない端末(Apple Intelligence 非対応)ではテンプレート文にフォールバックできる。判断レイヤーは共通なので、結論は変わらない

最後の点は実装上けっこう効きました。オンデバイス LLM は全端末で使えるわけではないので、フォールバック経路が必ず要ります。判断と表現が分かれていれば、差し替えるのは表現側だけで済みます。

やってみて思ったこと

HealthKit のデータが医療に活かされていない理由は、データが足りないからではありませんでした。データはすでに個人の手元にあって、欠けていたのはそれを解釈する部分だったというのが、作ってみての実感です。もちろん、大前提として薬機法による規制があり、医師が診断の判断基準に用いるものは医療用である必要があります。

そして解釈は、これまで人間の専門家にしかできませんでした。そこを機械が担えるなら、埋まる隙間はかなり大きいのではないかと思っています。

もちろん、アプリが診断をするわけではありません。あくまで「自分の状態を把握して、医師に相談する材料を持つ」ためのものです。この線引きは慎重にやるべきところだと考えています。


Sleepa は App Store で公開しています。Apple Watch が必要です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?