はじめに
睡眠改善に取り組んでいるのだが、最近 Oura ringに睡眠負債機能があることを発見した. 1 過去14日間の睡眠データから個人の睡眠不足を定量的に評価してくれるらしい。また、調べてみたところ、睡眠負債の追跡に特化したRISEというアプリ2まである。
一方、わたしはFitbitユーザだ。Fitbitには睡眠負債を計算する機能がない。そこで、Fitbit APIから取得した睡眠データで、自分で睡眠負債を計算できないか?と思って検討してみた。
睡眠負債とは?
睡眠負債(Sleep Debt)とは、個人の睡眠必要量に対して実際の睡眠時間がどれだけ不足しているかを示す指標だ。簡単に言えば、「寝不足の借金」のようなものだ。
定義と定式化
まず、この記事で使う重要な用語を整理しておく:
| 用語 | 英語 | 意味 |
|---|---|---|
| HSD | Habitual Sleep Duration | 習慣的睡眠時間 - 日常生活での実際の平均睡眠時間 |
| OSD | Optimal Sleep Duration | 最適睡眠時間 - 個人が最高のパフォーマンスを発揮するために必要な睡眠時間 |
| PSD | Potential Sleep Debt | 潜在的睡眠負債 - 個人が明確に認識していない睡眠不足の状態 |
これらの用語を使って、睡眠負債を以下のように**定式化**できる:
PSD(潜在的睡眠負債) = OSD - HSD
この定式化により、個人の睡眠不足を定量的に評価できるようになる。
科学的背景
Nature Scientific Reports(2016)の研究3が興味深い発見をしている。健常者を対象に実験室で連続して延長睡眠(制約なしで眠る)を行った結果:
- 平均的にHSDはOSDより約1時間短い
- つまり、*多くの人は日常生活で約1時間のPSD(潜在的睡眠負債)を抱えている*
- この睡眠負債は本人が明確に認識していない(“potential” = 潜在的)
さらに衝撃的な事実:
- たった1時間のPSDでも、最適レベルへの回復には*平均4日間*かかる
- 慢性的な睡眠負債は気づきにくく、本人は「慣れた」と感じていても、実際にはパフォーマンスが低下し続けている
これは怖い。自分では気づかないうちに、借金が積み重なっているのだ。
だからこそ、客観的なデータに基づいた睡眠負債の測定が必要になる。
理論から実装へ: 睡眠負債をどうやって計算するか?
前セクションで定式化した `PSD = OSD - HSD` は、概念的な指標だ。これは個人の「平均的な」睡眠不足の状態を示す。
さて、この式を実際のプログラムとして実装するには、以下の2つを求める必要がある:
- HSD(習慣的睡眠時間): 実際のデータから算出できる(簡単)
- OSD(最適睡眠時間): 測定方法の確立が必要(難しい!次セクションで詳述)
まずは簡単なほう、HSDの算出方法から見ていこう。
HSD(習慣的睡眠時間)の算出
HSDは、日常生活での実際の平均睡眠時間だ。過去の睡眠データから以下のように計算する:
# 過去90日間の睡眠時間から中央値を計算
sleep_data = get_sleep_data(days=90)
HSD = median(sleep_data['minutesAsleep']) / 60 # 時間単位
# 外れ値除外(IQR法)
Q1, Q3 = quantile(sleep_data, [0.25, 0.75])
IQR = Q3 - Q1
filtered = sleep_data[
(sleep_data >= Q1 - 1.5*IQR) &
(sleep_data <= Q3 + 1.5*IQR)
]
HSD = median(filtered) / 60
| パラメータ | 値 | 詳細 |
|---|---|---|
| 期間 | 過去90日間 | 十分な統計精度を確保 |
| 統計量 | 中央値(または平均) | 外れ値の影響を軽減 |
| 外れ値除外 | IQR法 | 極端に短い/長い日を除外 |
累積睡眠負債の計算
HSDは算出できたが、OSDの推定は次セクションに譲る。ここでは、実際の睡眠管理で「今、どれだけ睡眠負債が蓄積しているか」を計算する方法を考える。
概念的な定式化(`PSD = OSD - HSD`)を、実際の睡眠データから計算可能な**数理モデル**に落とし込む必要がある。ところが、睡眠負債を計算する数理モデルには確立された標準がない。
そこで、既存の睡眠トラッカーアプリ(Oura Ring、RISEなど)がどのような数理モデルを採用しているかを調査した。結果、両者は**重み付き累積方式**という共通のアプローチを採用していることが判明した。
重み付き累積方式(数理モデル)
Oura RingとRISEは、ほぼ同じ数理モデルで睡眠負債を計算する。概念的な定式化(`PSD = OSD - HSD`)ではなく、過去の実際の不足を**日ごとに累積**する:
累積睡眠負債 = Σ(睡眠必要量 - 実際の睡眠時間ᵢ) × 重みᵢ
i=1〜14日
この数理モデルの特徴は、以下の通り:
| パラメータ | 値 | 詳細 |
|---|---|---|
| 計算期間 | 過去14日間 | 最低5夜分のデータが必要 |
| 重み付け | 最近の日 > 古い日 | 直近の睡眠がより大きく影響 |
| カテゴリ閾値 | 共通 | None(0h) / Low(<2h) / Moderate(2-5h) / High(>5h) |
重み付けの方法
最古の日から最新の日にかけて、線形に重みが増加する:
# 日ごとの不足分を計算(プラス=不足、マイナス=余剰)
daily_deficits = sleep_need - actual_sleep
# 重み付け(線形: 最古0.3 → 最新0.7)
weights = np.linspace(0.3, 0.7, 14)
# 重み付き累積
sleep_debt = np.sum(daily_deficits * weights)
重要な特徴:
- 1週間前の不足は今日より軽く評価される(時間とともに回復)
- 昨晩の不足は大きく影響する
- 余剰睡眠(寝だめ)も考慮され、負債を相殺できる
本実装での採用方式
本プロジェクトでは、この重み付き累積方式の数理モデルを採用した。理由は:
- シンプルで実装しやすい(数式が明確)
- 活動量データがなくても機能する
- 科学的に妥当な重み付け(最近の睡眠を重視)
- Oura RingとRISEの両方で実証済み
最適睡眠時間をどうやって調べるか?
睡眠負債を計算するには、まず「最適睡眠時間(OSD)」を知る必要がある。
もちろん、固定値として平均的な推奨値である**8時間**を使うこともできる。しかし、睡眠必要量は遺伝的に個人差があることが知られている。わたしにとっての最適な睡眠時間は8時間なのか?それとももっと短いのか、長いのか?
できれば、もう少し自分に合った値を算出したい。
ここで問題になるのが、**最適睡眠時間をどうやって測定するか**だ。
手法1:4日間連続実験(柳沢正史方式)
睡眠研究の第一人者である柳沢正史さん(筑波大学教授、オレキシン発見者)は、以下の方法で最適睡眠時間を見つけることを推奨している3:
制約なしで4日間連続で眠る。ほとんどの人は1日目に長く眠る(睡眠負債の返済)が、3-4日目に安定した睡眠時間が自分の必要な睡眠時間となる。
重要な原則:
- 睡眠必要量は*遺伝的に*個人差がある
- 睡眠負債を減らすには「自分で実験して必要睡眠量を理解する」ことが不可欠
- 現代では脳波測定デバイス(S’UIMIN InSomografなど)で客観的に睡眠を測定できる
長所:
- 最もシンプルで直接的
- 特別なデバイス不要(基本的には時間と意志だけ)
- 個人の生理的リズムを尊重
短所:
- 4日間連続で制約なく眠れる環境が必要
- 実施ハードルが高い(休暇など)
- 1回の測定では変動を考慮できない
手法2:統計的ベースライン方式
多くの睡眠トラッカーは、過去の睡眠パターンから個人のベースラインを推定する統計的アプローチを採用している。シンプルだ。
# 過去90日間の睡眠時間から中央値を計算
OSD = median(sleep_duration_90days[filtered]) / 60
つまり、前セクションで説明した**HSD算出方法とほぼ同じ**プロセスで、「過去90日間の中央値 = 最適睡眠時間」とみなす。
問題点:習慣的睡眠時間 ≠ 最適睡眠時間
しかし、ここに大きな落とし穴がある。
この方式には重大な仮定がある:「普段の睡眠時間 = 最適な睡眠時間」
もし、あなたが慢性的に睡眠不足だったら?この方式は機能しない。例えば:
- 仕事で毎晩6時間しか眠れない → HSD = 6時間
- 統計的ベースライン方式で算出 → OSD = 6時間(❌誤り)
- 実際の必要量 → OSD = 8時間(✅正解)
慢性的な睡眠不足を見逃してしまうのだ。これは致命的だ。
長所:
- 実装が容易
- 個人の実際のパターンを反映
短所:
- 慢性的な睡眠不足を見逃す
- 社会的制約(仕事、学校など)の影響を受ける
手法3:リバウンド法(RISE方式)
Nature Scientific Reports(2016)の研究によれば、延長睡眠実験で得られる最適睡眠時間は、習慣的睡眠時間より約1時間長い。
この理論に基づき、RISEアプリでは「睡眠時間が最も長い日 = 睡眠負債からの回復日 = 真の睡眠必要量」として算出している:
# 上位N%(例:4%)の最も睡眠時間が長い日を抽出
n_samples = max(1, int(len(sleep_data) * 0.04))
top_days = sleep_data.nlargest(n_samples, 'minutesAsleep')
# 平均値を計算
sleep_need = top_days['minutesAsleep'].mean() / 60
長所:
- シンプルで実装が容易
- 慢性的睡眠不足を考慮
- 期間非依存で安定
短所:
- 体調不良で寝込んだ日も含まれる可能性
- パフォーマンステストとの検証が必要
データに基づく手法の比較
柳沢方式は実験的アプローチなので、ここではデータに基づく手法(手法2と手法3)をわたしの1年分のFitbitデータで実際に比較してみた。結果は以下の通り:
| 手法 | 推定値 | 信頼度 | サンプル数 |
|---|---|---|---|
| 一般推奨値 | 8.0h | High | - |
| リバウンド法(RISE方式、上位4%) | 8.2h | High | 10日 |
| 統計的ベースライン方式 | 5.7h | ❌ Low | 256日 |
驚くべき結果だ。
統計的ベースライン方式では、わたしの最適睡眠時間は5.7時間と算出された。これは明らかにおかしい。一般推奨値の8時間より2時間以上も短い。
一方、リバウンド法(RISE方式)では8.2時間。一般推奨値の8時間とほぼ一致している。
結論: リバウンド法(RISE方式)の8.2時間が最も信頼性が高い。統計的ベースライン方式は、わたしのような慢性的睡眠不足のケースでは完全に機能しない。
リバウンド法の期間依存性
リバウンド法(上位4%)は、データ期間が長くなるほど安定する:
| 期間 | 上位4%推定値 | 変動 |
|---|---|---|
| 90日 | 8.3h | - |
| 180日 | 7.8h | - |
| 365日 | 8.2h | ✅ 安定 |
統計的安定性:
- 期間が長くなるほど推定値が安定
- 変動係数:2.97%(固定日数手法より40%改善)
検証結果:わたしの睡眠負債は深刻だった
さて、リバウンド法(RISE方式)を使って、わたしの1年分のFitbitデータから最適睡眠時間を算出してみた。
上位4%の日の詳細分析
1年分のデータ(256日)から、最も睡眠時間が長かった上位4%(10日)を抽出してみると:
| 順位 | 日付 | 睡眠時間 | 効率 | パーセンタイル |
|---|---|---|---|---|
| 1 | 2025-05-15 | 9.68h | 84% | P99.6 |
| 2 | 2025-04-05 | 9.40h | 88% | P99.2 |
| 3 | 2025-05-17 | 9.22h | 87% | P98.8 |
| 4 | 2025-12-29 | 8.32h | 71% | P98.4 |
| 5 | 2025-11-27 | 7.72h | 92% | P98.0 |
| 6 | 2025-05-16 | 7.62h | 87% | P97.7 |
| 7 | 2025-08-10 | 7.55h | 77% | P97.3 |
| 8 | 2025-03-24 | 7.53h | 86% | P96.9 |
| 9 | 2025-12-15 | 7.48h | 79% | P96.5 |
| 10 | 2025-12-31 | 7.45h | 90% | P96.1 |
平均: 8.20h
真の睡眠負債
これで、最適睡眠時間(OSD)が分かった。次に、習慣的睡眠時間(HSD)との差を計算してみる。
| 項目 | 値 |
|---|---|
| 最適睡眠時間(OSD) | 8.2時間 |
| 習慣的睡眠時間(HSD) | 5.7時間 |
| 潜在的睡眠負債(PSD) | 2.5時間/日(150分) |
PSD = OSD - HSD = 8.2h - 5.7h = 2.5h
衝撃の事実が明らかになった。
わたしは毎晩平均**2.5時間(150分)**もの睡眠不足を抱えていたのだ!
これは深刻だ。Nature Scientific Reportsの研究によれば、たった1時間の睡眠負債でも最適レベルへの回復には平均4日間かかる。
累積睡眠負債の実測値
前述のPSD(2.5h/日)は平均的な睡眠不足の指標だ。しかし、実際には日々の睡眠時間の変動により、負債はどんどん累積していく。
| 指標 | 値 |
|---|---|
| 累積睡眠負債 | 12.2時間 |
| 平均睡眠時間(過去14日) | 6.6時間 |
| 推定回復日数 | 41日 |
睡眠負債の日別推移(2025/12/31 〜 2026/01/06)
| 日付 | 実績睡眠 | 累積負債 | 増減 | 回復日数 |
|---|---|---|---|---|
| 12/31 | 7.4h | 11.3h | - | 38日 |
| 01/01 | 9.6h | 8.3h | -3.0h | 28日 |
| 01/02 | 6.7h | 9.5h | +1.1h | 32日 |
| 01/03 | 6.4h | 9.8h | +0.3h | 33日 |
| 01/04 | 6.0h | 10.4h | +0.6h | 35日 |
| 01/05 | 6.6h | 10.1h | -0.2h | 34日 |
| 01/06 | 4.8h | 12.2h | +2.0h | 41日 |
なんと12時間の睡眠負債まみれであることが判明した.
おわりに
睡眠負債というのは概念的なものだが、それを実際に計算して毎日の増減を確認することはとてもおもしろい. 負債の返済をできたときは嬉しいが、一方で負債を貯めてしまうとあせる. これはお金の比喩が効果的なのだと思う.
そもそもだが、もう学生のときからずっと睡眠時間は6時間くらいなのだが、自分はいったいJPY換算でどのくらいの借金を抱えているんだろうか?たとえば、睡眠負債でずっとなにかパフォーマンスの足かせのような、プヨプヨ贅肉を背負って生きてきた結果、本来得るはずだった機会費用的な計算だと、本来の力を発揮できれば億稼いで今頃南の島でプカプカしていたかもしれない.
RISEアプリをインストールしたときの導入イントロがとても魅力的だ。「認知パフォーマンスの向上、不安の低減、幸福感の向上… そんなものを手に入れるための魔法の薬があるとしたら… それは睡眠負債の返済です」
わたしは、そんな人間が本来もっているスーパーパワーに憧れて、取り合えず睡眠負債を返済することを今年の目標にしてみよう思う. 実際のところ、ずっと慢性的に睡眠不足なのは、寝ないほうがよい成果を得られるはずだという競争社会の呪い、強力な固定観念があるはずだ。それをデータをとりながら実験的にその信念を打ち砕いきたい。
Immunity to Change!!!4
-
New to the Oura App: Understanding Sleep Debt - The Pulse Blog ↩︎
-
RISE: Sleep Debt & Energy Tracker / What’s the Best Sleep Debt Tracking App? The RISE App ↩︎
-
Estimating individual optimal sleep duration and potential sleep debt | Nature Scientific Reports, 睡眠学者・柳沢正史が教える「よりよい睡眠のための12箇条」 | S’UIMIN / 十分に眠れていると思っていても…睡眠は"何時間が最適"なのか? | 本の話 ↩︎
-
[edX] ライフハックでは人間は変われない!Unlocking the Immunity to Change で早寝早起きに挑戦した | Futurismo ↩︎