ストップウォッチ (ミリ秒精度、ラップ計測)
performance.now() を使用しジッター無しで計測。開始、一時停止、再開、ラップ記録、リセット。各ラップは前ラップからの差(スプリット)と累積時間を表示。
仕組み
なぜ正確か
多くのブラウザストップウォッチは Date.now() と setInterval を使い、セッション中に数十ミリ秒のずれが生じる。本実装は単調クロックの performance.now() を使用、システム時計が調整されてもジャンプしない。requestAnimationFrame で表示更新と組み合わせ、誤差±1ms以内。
タブを切り替えると表示は一時的に固まる(ブラウザがバックグラウンド処理を抑制するため)。内部時計は正しく進み続け、戻ると実経過時間に追いつく。
ラップとスプリット
ラップを押すと現在の累積時間が記録される。表示されるスプリットは前ラップからの差: 5×400m走では各スプリットが1区間の時間、累積はスタートからの総経過時間。
多くの利用者はスプリットを重視するが累積も併記。累積を見ると最速区間が一目でわかり、インターバル一貫性のチェックに有用。
用途
スポーツ: ランニング、水泳、自転車のインターバルラップ計測。一貫性はペース感の良さの指標。
料理: 複数工程を同時計時、ラップを「混ぜた」「生地を寝かせ始めた」などのチェックポイントに。
学習・仕事: 集中作業のタイムボックス化。Pomodoroタイマーと組み合わせ規則的な休憩を。
プロセス計測: ソフトビルド、手動データ入力、サポート対応の所要時間。後で確認するためラップ一覧を活用。
よくある質問
›タブを閉じても続く?
閉じるとメモリ状態が消える。長時間計測を残すには稼働中の表示をスクショ、またはラップ一覧を閉じる前にコピー。
›実用上のミリ秒精度は?
performance.now() の解像度はブラウザ依存。多くは1msまたは0.1msに制限(タイミング攻撃緩和)。人間スケールには十分(人間の反応速度は約250ms)。
›60fps更新でなぜミリ秒表示?
内部時計は精密、表示は約60回/秒で更新。各フレームで performance.now() から最新経過を計算し滑らかに表示。
›ラップ記録を保存可能?
現状は手動コピーのみ。ローカル保存はロードマップ。
›スマホのストップウォッチとの違い?
ブラウザ動作、アプリ不要。人間スケール精度は同等。スマホは画面ロックでも動作、ブラウザはタブを開いたままにする必要(フォーカス不要)。
›データは送信される?
送信されない。すべてローカル動作、ラップや時間は外部に送られない。
›ラップが0msになるのはなぜ?
開始直後にラップを押すと表示精度で0に丸められる場合あり。ラップ間に少なくとも数百ms間を空ける。
›サブ秒イベントを計測可能?
約1msまで可。ナノ秒級(チップベンチマーク)は別ツール、人間が観測可能なイベントには十分。
関連ツール
最終更新: