SomnoMeter 3.44

KSS × PVT — 環境別ベースライン
環境判定中
未同期
これは医療診断機器ではありません。眠気が強い、居眠りしそう、運転・自転車・危険作業を行う状況では、結果にかかわらず中止してください。

1. 測定方式

履歴分析

端末内の履歴と、クラウド同期で取り込まれた履歴を直接集計します。デフォルトの「得点」は Performance (%) です。

ANALYSIS OVERVIEW
分析の読み方・統計上の注意
時間・曜日曜日は日ごとの平均を先に作ってから日を等重みにするのが既定です。日付は未測定日も実際の日数幅を保ち、時刻は24時間円環上の実時刻に配置します。
睡眠睡眠時間・睡眠効率などの固定値は同じ起床日時を1睡眠エピソードにまとめます。「直近睡眠からPVTまで」だけは各PVTを個別点として扱います。
相関とトレンドPearson r は線形関係、Spearman ρ は順位関係の参考です。回帰線は、横軸に2種類以上の値があり n≥2 なら表示します。n=2〜3は参考線として破線表示し、n≥4では線形回帰を基準にします。2次回帰・LOESSは十分なデータがあり、交差検証誤差が線形より明確に改善した場合だけ採用します。LOESSは描画負荷を抑えるためn≤500の範囲だけ候補とし、それを超える場合も全データを用いた線形・2次回帰は継続します。線は観測されたx範囲内だけに描き、線形回帰では95%平均信頼帯も表示します。
刺激間隔lag 1〜4を同時に扱い、他lag・測定内経過時間・測定ごとの速度差を調整した部分Spearman ρを表示します。利用可能な試行は件数で切らず全件を解析し、95%CIは測定単位bootstrapです。
Performanceの軸棒・円環は差を見やすくするため0〜100固定ではなく観測範囲へ自動トリミングします。表示範囲と絶対値を併記します。
マウス・タップ点や棒にマウスを重ねると詳細が出ます。タッチ端末では点や棒をタップすると詳細を固定表示できます。
重要:測定数が少ない間の相関・曲線・刺激間隔効果は、個人内の探索的分析です。因果関係や医学的な安全判定を意味しません。

2. 睡眠・起床・測定条件

前回測定を確認中…
ベッドに入っていた総時間。hh:mm または hh.mm で入力(例 05:11 / 05.11)。
実際に眠っていた推定時間。hh:mm または hh.mm で入力。SomnoMeterではこちらを睡眠量として扱います。
実睡眠時間 ÷ 就床時間。睡眠段階の割合とは別の指標です。
主睡眠として扱うSomnus記録のスコアを転記。0〜100。
yyyy/mm/dd hh.mm または yyyy.mm.dd hh.mm。時刻の「:」も使用可能です。
ブラウザ標準のカレンダーから日付を選択できます。
カレンダー入力と直接入力は相互に同期します。
端末の現在日時との差を測定開始時に再計算し、履歴・同期データへ保存します。
睡眠日サマリー(二度寝・昼寝を追加)主睡眠は上の入力を自動使用。追加睡眠を登録して睡眠日全体を分析
主睡眠は上の「就床時間・実睡眠時間・起床日時・主睡眠Somnus」から自動取得します。二度寝・昼寝だけ追加してください。Somnusの各睡眠スコアは個別に保持し、SomnoMeter独自の時間加重平均は分析用の派生値として別に計算します。
主睡眠(既存入力から自動)
就床時間—
実睡眠—
Somnus—
起床日時—
—
睡眠日 総実睡眠
—
主睡眠
—
追加睡眠
—
睡眠回数
—
統合睡眠効率
—
直近睡眠から現在まで
—
主睡眠 Somnus
—
直近睡眠 Somnus
—
Somnus時間加重平均(派生)
睡眠時間の長さは hh:mm または hh.mm で入力できます。起床は日付+時刻で記録し、yyyy/mm/dd hh.mm と yyyy.mm.dd hh.mm の両形式に対応します。カレンダー+時刻ピッカーからの選択も可能です。ベースラインでは「就床時間」ではなく実睡眠時間を使います。Somnus各スコアと睡眠日サマリーは任意の補助記録として保存し、PVTの得点計算やベースライン判定には使いません。実睡眠が7時間未満の測定は休息時ベースラインから自動除外し、7〜8時間未満は登録時に注意を表示します。

3. 測定環境(自動確認)

—
OS
—
ブラウザ
—
デバイス種別
Auto
入力方式
未測定
画面更新レート
測定後に確定
ベースライン環境キー
OS・ブラウザ・端末種別・入力方式・リフレッシュレートが異なる測定は、同じベースラインに混ぜません。 本測定の最初の反応で入力方式を確定し、途中で別方式を混ぜると品質警告になります。

4. KSS(測定直前の眠気)

5. 客観テスト(PVT)

画面中央の刺激が明るくなったら、できるだけ速くボタンを押してください。刺激前または100 ms未満の反応は false start です。通知を切り、同じ端末・姿勢・入力方法で測ると比較しやすくなります。

未実施
60秒 familiarization
現在環境 0有効 / 0保存
全環境 0有効 / 0保存
休息時ベースライン
旧版・同期済みベースラインを確認します。
初回は練習を推奨します。練習結果は本測定や履歴に含めません。PVTは反復による練習効果が比較的小さいと報告されていますが、操作理解によるfalse startを減らす目的です。

6. クラウド同期・バックアップ

自動同期には共有クラウド保管庫が必要です。SomnoMeter本体はローカルファーストで動作し、 同期設定をした端末では、本測定の保存直後は必ず自動同期します。さらに設定がONなら、起動時・ベースライン変更後・オンライン復帰時にも自動同期します。 履歴はブラウザ内で暗号化してから送信します。
16文字以上を推奨。パスフレーズ自体はサーバーへ送信しません。
暗号文の不正上書きを防ぐ別鍵です。同期する全端末で同じ値を使用します。
秘密情報の保存はデフォルトOFFです。OFF時も現在のタブでは sessionStorage に保持され、自動同期できます。共有PCでは秘密情報を保存しないでください。 3.25では入力欄の現在値を直接監視するため、ブラウザやPWAの自動入力後も「同期未設定」の表示が残らないようにしています。
同期未設定

7. 手動バックアップ・データ移行

クラウド同期を使わない場合も、JSONでスマホ・PC間の履歴とベースラインを移行できます。同一測定は重複排除して統合します。

これまでの測定結果 履歴を表示

測定していないときでも履歴は保持されます。別端末の測定は、自動同期または「今すぐ同期」の完了直後に統合されます。

履歴を絞り込む 全履歴を表示中
1 / 1
履歴ストレージを確認中…

1ページ50件で表示します。履歴本体はIndexedDBに最大10,000件保存し、条件で絞り込みできます。同期ではrecordIdと削除tombstoneを使って統合します。

この測定が「実証寄り」な理由と限界

基礎 → 測定品質 → 睡眠・分析 → 保存・同期 → 限界の順で整理しています。

PVTを主な客観指標にしている理由

Psychomotor Vigilance Test(PVT)は、睡眠不足・長時間覚醒・概日リズムのずれによる持続的注意の低下に敏感な反応時間課題です。10分PVTでは反応から次刺激まで 2–10秒のランダム刺激間隔と、一般に 500 msを超える反応を lapse とする定義が広く用いられています。

3分版について

Brief PVT(PVT-B)は、3分に短縮する代わりに反応から次刺激までの刺激間隔を 1–4秒にし、lapse閾値を 355 msに下げた検証研究があります。3.15では反応後のフィードバック時間をこのISI内に含め、追加の待ち時間にしません。短時間で実用的ですが、研究によっては10分版との完全な互換性に疑問も示されています。そのため、このHTMLは3分版と10分版を混同せず別モードとして扱います。

結果で何を最重視するか

睡眠不足への感度を考え、Lapses + False starts(LpFS)、mean response speed(1/RT)、slowest 10% response speed、lapse probability を主要指標にしました。平均RTや中央値RTだけでは、長いlapseや反応分布の変化を十分に捉えられないことがあります。

測定内の反応時間推移保存

3.13以降の本測定では、各有効反応を「測定開始からの経過ms」と「RT(ms)」の組として履歴に保存します。30秒timeoutは通常RT線とは分離したイベントとして保存し、false startの発生時刻もms単位で保持します。分析画面で各3分/10分測定の経時変化を再描画できます。3.12以前は個々のRT系列を履歴に保存していなかったため、過去分を後から復元することはできません。

連続入力の120msクールタイム

同じタップやキー入力が端末側で短時間に二重入力として届くことによる、2回目の不要な false start を防ぐため、1つの入力を判定した後120msは追加入力を完全に無視します。PVT-Bでも次刺激まで最短1秒あるため、この120msは次の正規刺激への反応を妨げません。無視された入力は得点・false start・RT・ISIのいずれにも影響しません。

測定内RT推移の複数履歴比較

3.16では測定内RT推移の対象選択をグラフの箱内へ移しました。モード、品質、測定環境、日付、KSS、Performance、メモで絞り込み、条件に一致する測定を件数上限なしで同一の経過時間軸へ重ねて比較できます。大量表示時は線の太さ・透明度と凡例表示だけ自動調整し、測定系列そのものは省略しません。履歴表の「分析」を押すと、その履歴だけを選択した状態でこの箱へ直接移動します。

曜日・日付グラフの基準日

3.20以降、「曜日ごと」「日付ごと」は測定日時ではなく起床日時を基準にします。日付をまたいで測定しても同じ起床後の測定はその起床日へ分類されます。起床日時が未記録の履歴は、この2グラフから除外します。

Performance棒グラフの軸トリミング

Performanceの棒グラフは0〜100固定ではなく、観測値の差が見やすい範囲へ自動トリミングします。最低約5ポイントの表示幅を確保し、0未満・100超にはしません。絶対値は棒上の数値・ツールチップで確認できます。

主睡眠データの開始前警告

3.24では主睡眠の就床時間・実睡眠時間・起床日時・主睡眠Somnusのいずれかが未入力の場合、開始ボタン直前に不足項目を表示します。本測定開始時にも不足項目を再確認し、明示的に了承した場合のみ未入力のまま開始できます。入力形式が不正な場合は測定を開始しません。

Somnusスコアを入力できる睡眠時間

3.27以降、実睡眠時間が1時間未満の睡眠エピソードはSomnus対象外として扱い、Somnusスコア欄を無効化します。1時間以上へ変更すると入力可能になります。Somnus時間加重平均も1時間以上のSomnus対象睡眠だけを使い、1時間未満の睡眠は総実睡眠時間・追加睡眠時間・睡眠回数には含めますがSomnus加重平均には含めません。

分析グラフの軸トリミング

3.28以降、理論上負の値を取らない指標では、自動余白によって負の目盛りが表示されないよう軸を理論下限でトリミングします。3.29で「時刻ごとの得点」を24時間円環へ変更し、3.30で時間帯背景・時間目盛り・バー表現を調整、3.33でPerformance円環を大型化して値軸目盛りを0時方向・棒より前面へ配置しました。3.34では全グラフへ共通ツールチップを追加し、3.40では円環の固定時間帯背景を明瞭化するとともに、交差検証不能時でも数学的に可能な線形回帰を表示するよう改善しました。3.41ではlag 1〜4の区間表記を明確化し、3.42では分析・測定・結果・説明の表示順を全域で再整理、3.43ではlag結果カードを時間順表記と4区分の統計表示へ再設計し、3.44では「測定内RT」の各反応点にも共通ツールチップを実装しました。反応時間・response speed・睡眠時間・起床後時間・睡眠効率・Somnusなどが対象です。一方、「環境別ベースライン比 RS (%)」のように負値自体に意味がある指標は負側を残します。

睡眠日サマリーとSomnusの扱い

主睡眠と追加睡眠を別々に保存し、総実睡眠・主睡眠・追加睡眠・睡眠回数・統合睡眠効率・直近睡眠からPVTまでの時間を派生させます。Somnusは主睡眠・直近睡眠・SomnoMeter独自の時間加重平均を別指標として保持します。

睡眠エピソード単位の分析

睡眠日サマリーとの関係では、同じ wakeDateISO(同じ主睡眠の起床)に属する複数PVT測定を先に平均し、同じ睡眠の後に何回測定したかで過剰に重くならないようにします。同じ睡眠の後に何回測ったかでその睡眠が過剰に重くならないようにしています。

相関曲線の自動選択

睡眠効率・実睡眠時間を含む散布図にはトレンドラインを表示します。散布図の回帰は、横軸に2種類以上の値があればn≥2で線形回帰を表示します。n=2〜3は少数データの参考線として破線表示し、n≥4では線形回帰を基準モデルとして評価します。2次回帰はn≥10かつ横軸3種類以上、LOESSはn=16〜500かつ横軸5種類以上で候補にします。複雑なモデルは交差検証の予測誤差を線形より10%以上改善した場合だけ採用し、過学習を抑えます。n≤200ではLOOCV、n>200では全観測を1回ずつ検証に回す決定的10-fold CVを使い、描画停止を防ぎます。回帰線・曲線は観測されたx範囲内だけに描き、線形回帰では95%平均信頼帯も表示します。Pearson rに加えSpearman ρも併記します。

時間帯グラフの集計間隔

「記録値精密」は各測定を平均せず、測定した時刻(秒まで)に対応する24時間軸上へ棒として配置します。10分・30分・1時間では、それぞれの固定区間内に複数測定があれば選択中の指標を平均します。どの表示でも24時間の横軸位置は一定で、測定がない時間帯を詰めません。

分析グラフの書き出し

各グラフはSVGまたは2倍解像度PNGで個別保存できます。「分析HTMLを書き出す」では、現在のフィルター・集計結果・表示中グラフを自己完結HTMLとして保存します。

同期protocol v2:削除・競合・不正上書き対策

3.15では履歴を暗号化chunkに分割し、Durable Objectのrevision commitで同じSync IDの同時更新を直列化します。削除はtombstoneとして同期するため、別端末の古い履歴から削除済みデータが復活しません。書き込みにはSync IDとは別のWrite Secretを使い、WorkerにはそのSHA-256 verifierだけを保存します。既存KVの旧single-blob暗号データは初回3.15同期時に自動移行します。

10,000件の履歴保存

履歴本体はlocalStorageではなくIndexedDBへ保存し、最大10,000件を保持します。3.15以降は各測定の反応時間推移を経過msとRT(ms)の整数ペアとして保存し、ストレージ永続化状態と使用量も表示します。旧版のlocalStorage履歴は初回起動時に自動移行します。ページ上では負荷を抑えるため最新50件を表示し、JSON/CSVには保存済み履歴全件を書き出します。RT系列により長期同期データは大きくなるため、定期的なJSONバックアップを推奨します。

ブラウザ版で追加した品質対策

刺激提示は requestAnimationFrame に合わせてRTの起点を置き、30秒無反応を30,000 msのlapseとして記録します。また、測定中のタブ離脱・画面非表示を検出し、その測定を品質注意として表示します。専用PVT機器と完全に同等ではありません。特にPVT-Bの355 ms閾値は元研究でもハードウェア依存の可能性が限界として挙げられているため、端末間の絶対RT比較には使わず、同一端末での個人内比較を重視してください。

KSSを併用する理由

Karolinska Sleepiness Scale(KSS)は 1–9 の主観的眠気尺度で、反応時間・PVT lapse・EEG指標と有意に関連することが示されています。主観だけ、反応時間だけのどちらか一方に依存せず、両方を並べて表示します。

なぜカメラでPERCLOSを自動測定しないのか

PERCLOS(眼が約80%以上閉じている時間割合)は有力な眠気指標ですが、Webカメラだけの単一HTMLで眼瞼開度を十分な精度・標準化で推定するには端末差、照明、眼鏡、カメラ位置などの影響が大きいです。精度を装うより、今回は検証しやすいPVTとKSSに限定しました。

重要な限界
  • 端末の画面更新、OS、ブラウザ、タッチ遅延が反応時間に加算されます。同じ端末での縦断比較が最も有用です。
  • 絶対値には個人差と端末差があります。休息時ベースラインは、同じ端末・同じモードで3〜7回集めます。この版では測定品質が良好、KSS≤5、実睡眠7時間以上を有効候補とし、7時間未満は自動的に比較基準から除外します。
  • 万人共通の独自「危険点数」は使いません。KSSは主観尺度としてそのまま示し、PVTは複数回の個人ベースラインとの差を中心に解釈します。
  • 結果が良くても、眠気を感じる状態での運転や危険作業の安全を保証しません。

主要な根拠

PVT03:00