使い方
睡眠は約 90 分の REM / non-REM サイクルが何度か繰り返されることが知られています。サイクルの途中で目覚ましが鳴ると深い眠りのまま起こされて寝起きが重くなるので、「サイクルの切れ目」を狙うのがこのツールの目的です。**就寝 → 起床** モードでは今夜寝る時刻を入力すると、3〜7 サイクル分 (4.5〜10.5 時間) の起床候補が並びます。**起床 → 就寝** モードでは明日のアラーム時刻を入力すると、何時に寝ればサイクルの切れ目で起きられるかを 5 候補表示します。「入眠 (分)」は布団に入ってから実際に眠るまでの時間で、研究の中央値は 14 分ですが、人によって 5〜30 分のばらつきがあります。
詳細解説
睡眠スケジュールは健康状態を示す個人情報
就寝時刻・起床時刻・入眠潜時(布団に入ってから眠るまでの時間)の組み合わせは、その人の睡眠習慣を詳細に表します。「深夜 2 時就寝・午前 9 時起床・入眠 30 分」というパターンは、概日リズム障害・不眠・シフト勤務・夜型ライフスタイルを示唆します。健康保険・生命保険の分野では、睡眠パターンが保険リスク評価の素材として使われるケースが海外で報告されています。
入眠潜時が 30 分以上であることは不眠症の指標とされています。その情報を繰り返し外部サービスに送信することは、健康状態の開示に近い行為です。睡眠サイクル計算という一見無害な操作であっても、入力値の蓄積が健康プロファイリングの材料になりえます。
睡眠アプリに就寝・起床データを送ることのリスク
スマートフォンの睡眠アプリは、就寝・起床時刻・睡眠の質スコアをサーバーに送信してグラフを表示したり、パーソナライズされたアドバイスを提供したりします。蓄積された睡眠データはウェアラブルデバイスのエコシステム・保険会社・研究機関と共有される事例が複数報告されています。
また、就寝・起床時刻は「何時から何時まで自宅にいるか」という行動パターンを示します。位置情報や他の行動データと組み合わせることで、自宅の在宅・外出のパターンを高精度で推定できます。これは防犯上の観点でも機微な情報です。睡眠サイクルの計算は、ブラウザ内で完結させることが合理的な選択です。
REM 睡眠サイクルの算術をブラウザ内で完結させる仕組み
このツールは就寝時刻・入眠潜時・90 分サイクルを Date オブジェクトの加算で処理します。「就寝時刻 + 入眠潜時 + N × 90 分」が N サイクル目の起床候補時刻になります。逆方向(起床 → 就寝)では、「起床時刻 − 入眠潜時 − N × 90 分」を求めます。深夜跨ぎは Date の加算が自動処理します。
外部 API は一切使いません。DevTools の Network タブを開いたまま就寝時刻を変更しても、追加リクエストは発生しません。入力した就寝時刻・起床時刻・入眠潜時はネットワークを経由しません。
睡眠サイクル計算を健康管理に使う場合の注意事項
このツールは 90 分を固定サイクルとして計算しています。実際の睡眠サイクルは個人差があり(70〜120 分の範囲)、加齢・ストレス・アルコール摂取によっても変動します。計算結果はあくまで目安として参考にし、目覚めの感覚をもとに自分に合ったサイクル長を見つけていくことをお勧めします。
推奨睡眠時間(成人 7〜9 時間)に対応する 5〜6 サイクルを「推奨」として表示していますが、年齢・健康状態・活動量によって必要な睡眠時間には個人差があります。慢性的な睡眠不足や過眠が続く場合は、医師または睡眠専門家への相談をお勧めします。
睡眠サイクル計算の時刻演算と深夜跨ぎの実装
睡眠時刻計算の核は深夜跨ぎ処理です。「23:00 就寝 + 14 分入眠 + 4 × 90 分 = 翌 7:14 起床」のような演算で、Date オブジェクトの getTime() ミリ秒値を起点に + totalMinutes * 60000 を加算すれば自動的に日付の進行が反映されます。逆方向(起床時刻から就寝時刻を逆算)では targetWake.getTime() - (latency + N * 90) * 60000 を計算します。toLocaleTimeString で表示する際、Intl.DateTimeFormat の hour: 'numeric' フォーマットは地域別の 12 時間制 / 24 時間制に自動切替されます(en-US は AM/PM、ja / de は 24 時間制)。
サマータイム(DST)切替日を跨ぐ計算では Asia/Tokyo 以外のタイムゾーンで 1 時間ジャンプが発生します。北米の春の DST 切替日(3 月第 2 日曜の 02:00 → 03:00 へジャンプ)の前夜に就寝した場合、機械的な分単位加算では「現地時刻として存在しない 02:30」を返す可能性があります。new Date('2026-03-08T02:30') のような ISO 文字列パースは UTC として解釈されるため、現地時刻として安全に扱うには new Date(2026, 2, 8, 2, 30) のコンストラクタ形式(月は 0-indexed なので 2 = 3 月)を使うか、Intl.DateTimeFormat の timeZone 引数で明示するのが推奨です。
睡眠サイクル理論の研究背景と地域別の睡眠習慣
90 分サイクル理論は 1953 年に Nathaniel Kleitman と Eugene Aserinsky が REM 睡眠を発見したことに端を発し、後の研究で「人間の睡眠は約 90 分の NREM 1 → 2 → 3 → REM サイクルを 4-6 回繰り返す」という Basic Rest-Activity Cycle (BRAC) 仮説が提唱されました。実際には個人差が大きく、サイクル長は 70-120 分の範囲で変動し、加齢・アルコール摂取・ストレスで変化します。本ツールは平均値の 90 分を採用しますが、Polysomnography(PSG、脳波・眼球運動・筋電図の同時計測)で測定した個人差を反映する設計ではありません。
地域別の睡眠習慣には大きな差があります。OECD の調査では日本人の平均睡眠時間は 7 時間 22 分で世界最短、米国は 8 時間 51 分、フランスは 8 時間 33 分です。スペイン・南欧の「シエスタ」文化は午後 2 時間程度の昼寝を伴い、夜間睡眠を 6-7 時間に短縮する設計です。シフト勤務(看護師、製造業の 3 交代制)では Forward Rotation(朝勤 → 昼勤 → 夜勤の順)が概日リズムへの負担が少ないとされ、欧州労働基準では推奨パターンとされています。本ツールは単発の就寝・起床計算ツールであり、シフト勤務の継続的なスケジュール管理には別途専用ツールが必要です。National Sleep Foundation の年齢別推奨時間(成人 7-9 時間、高齢者 7-8 時間、思春期 8-10 時間)は参考値として広く使われています。仮眠時間や昼間の集中ブロックを「25 分作業 + 5 分休憩」で挟みたい場合は pomodoro-timer を、起床予定時刻までの残り時間を就寝前に見せたい場合は countdown を、得られた睡眠時間を PT7H30M のような ISO 8601 期間として記録したい場合は duration-format を併用できます。
よくある質問
- 入力データはサーバーに送信されますか?
- いいえ。すべてブラウザ内で完結します。時刻計算のみで外部 API も使いません。
- 90 分という数字はどこから来たのですか?
- 1950 年代の Kleitman & Aserinsky による REM 睡眠の発見以降、成人の典型的な 1 サイクルは 90 分前後 (個人差で 70〜120 分) とされてきました。サイクルは non-REM 1 → 2 → 3 (深い眠り) → REM の順に進み、サイクルの終わり (REM 終了直後) で目覚めると比較的すっきり起きられるとされています。ツールはこの平均値を使った概算で、個人差は「サイクル長」を 80〜100 分の間で実験して調整してください (本ツールでは現状 90 分固定)。
- 推奨睡眠時間は何時間?
- 成人 (18〜64 歳) は 7〜9 時間が NSF (National Sleep Foundation) の推奨範囲。90 分 × 5 サイクル = 7.5 時間、× 6 = 9 時間がちょうどこの範囲に入るため、5〜6 サイクルが「推奨」表示されます。短時間 (4.5h / 6h) は一時的なショートスリーパー / 仮眠用途、長時間 (10.5h) は休日のキャッチアップ睡眠用途。
- 入眠時間 14 分の根拠は?
- Sleep Latency (入眠潜時) の研究の中央値が約 10〜20 分とされ、健康成人の平均が 14 分前後。30 分以上かかる場合は不眠症の指標とされます。本ツールでは 0〜60 分の範囲で自由に調整できます。
- 夜中の 2 時に寝る場合はどう扱われますか?
- 起床候補は同日 (例: 02:30 → 08:44) として表示されます。逆方向 (起床 → 就寝) でアラームを 07:00 にして 7.5 時間睡眠なら 23:16 (前日) と表示され、「前日」バッジが付きます。日付の境界は自動で処理します。
- サイクル数を増減できますか?
- 現状 3〜7 サイクル (4.5〜10.5 時間) で固定です。短時間仮眠 (1〜2 サイクル) は本ツールの対象外で、専用の仮眠タイマーを使ってください。
「送らない」を確かめるには
このツールは入力データを外部に送信しません。仕組み・監査手順・運営方針は以下で詳しく説明しています。
類似のツール
ポモドーロ・タイマー (作業 25 分 / 休憩 5 分 のサイクル管理)
ポモドーロ・テクニックに基づく作業/休憩タイマー。標準の 25 分作業 + 5 分休憩 + 4 サイクルごとに 15〜30 分の長い休憩 を、ブラウザ完結のシンプル UI で実行できます。作業/短い休憩/長い休憩の時間、サイクル数、完了音の有無を自由に設定可、設定値は localStorage に自動保存。フェーズ終了時に Web Audio で 3〜4 音のチャイムを合成 (作業終了は降下音、休憩終了は上昇音、セット完了は C 大調和音) で区別。`performance.now()` ベースで背景タブでも遷移が正確。タイマー処理・設定保存・音生成すべてブラウザ内で完結し、サーバーへ送信しません。
カウントダウン・カウントアップタイマー — 目標日時までの残り時間
指定した日時までの残り時間 (カウントダウン) または指定日時からの経過時間 (カウントアップ) をリアルタイム表示します。日 / 時 / 分 / 秒 を 1 秒ごとに更新。URL コピーで現在の設定を共有可能 (?to=日時&mode=カウントダウン)。タイムゾーンはブラウザのローカル設定を使用。すべてブラウザ内で処理し、入力日時は外部に送信されません。
期間フォーマット変換 — 秒・mm:ss・hh:mm:ss を相互変換
経過時間 (Duration) を 3 つのフォーマット間で相互変換します。秒数 (5400)、時計表示 (01:30:00)、人間可読 (1h30m) のうち、欲しい出力形式を選ぶだけ。入力は自動判別で、3 形式が 1 行ずつ混在していても OK。複数行を一括変換し、parse できない行は件数だけ表示。1d (= 86400 秒) も含めた d/h/m/s 単位に対応。すべてブラウザ内で処理。
日時計算 — 加算 / 減算 (年・月・週・日・時間・分・秒)
基準の日時に対して年・月・週・日・時間・分・秒の単位で加算・減算します。納期計算、契約満了日、N 日後の予定、N 時間前のミーティング時刻など。月末同士の加算 (1/31 + 1 月 → 2/28 か 2/29) は JavaScript の Date と同様にロールオーバーします。結果は YYYY-MM-DD HH:MM:SS + 曜日 + 基準からの差サマリ + Unix エポック秒で表示。すべてブラウザ内で計算するため、入力した日時は外部に出ません。