オンラインストップウォッチ(ラップ計測付き)
ラップ計測付きの高精度ストップウォッチ、ブラウザのタブ内で動作 — 開始・ラップ・一時停止・リセットをワンクリックで、アプリ不要。
920回閲覧
| ラップ | 区間 | 合計 |
|---|
ただちゃんと動くストップウォッチ
開始を押すと、時計は100分の1秒単位で正確に進みます。いつでもラップを押せば、計測を止めることなく区間タイムを記録でき、各ラップには自身のタイムと合計タイムの両方が表示されます。自由に一時停止・再開でき、新しいセッションを始める準備ができたらいつでもゼロにリセットできます。
インストールするアプリも設定する項目もありません。ページを開いて開始を押せば、30秒間の短いインターバルでも数時間に及ぶセッションでも、必要な時間だけタブ内でタイマーが動き続けます。記録した各ラップはスクロール可能なリストに残り続けるため、タイムを別途メモする代わりに一目で区間タイムを比較できます。インターフェースはスマートフォンでもデスクトップでも同じように動作するため、ランニングマシンに取り付けても、キッチンカウンターに置いても、リハーサル中にノートパソコンで開いても、同じように使えます。
計測の仕組み
実はブラウザはJavaScriptに2種類の異なる時計を公開しています。1つはシステム時計に従うDate.now()で、NTPタイムサーバーと再同期するたびに時刻が前後にジャンプすることがあります。もう1つはperformance.now()で、これは常に前進のみする単調増加の時計であり、ページ読み込みからの経過時間をはるかに高い分解能で計測します。このストップウォッチはperformance.now()を使用しているため、セッションの途中でパソコンの時計が調整されてもラップタイムは正確なまま保たれます。これは、単純にDateベースで実装されたタイマーであれば目に見える形で誤差が生じる状況です。表示自体も、setIntervalのような固定間隔ではなくrequestAnimationFrameによって更新されるため、長時間のセッションでもカクつきやズレが生じることなく、画面のリフレッシュレートに同期して滑らかに数字が描画され続けます。この違いは日常的な使用では意識されませんが、ブラウザベースのストップウォッチが、研究室レベルの計測を除けば専用のハードウェアタイマーと同等に信頼できる理由はまさにここにあります。
- トレーニングやインターバルトレーニング — 各ラウンドをラップとして記録
- 料理 — 全体の時間を見失わずに複数の工程を計測
- プレゼンテーションやスピーチのリハーサル — セクションごとの時間を追跡
- 後で並べて比較したい、はっきりとした段階のあるあらゆる作業
よくある質問
タブを切り替えても精度は保たれますか?
はい。表示は固定間隔で増加しバックグラウンドでずれる可能性のあるカウンターではなく、performance.now()による実際の経過時間を使用しています。ブラウザは省電力のためsetIntervalのようなバックグラウンドタイマーを間引くことがありますが、このストップウォッチは常に実際に経過した時間から再計算するため、タブに戻った瞬間の最終的なタイムは正確です。
ラップは何回まで記録できますか?
1回のセッションで好きなだけ記録できます。リストはスクロールするため、画面上のスペースが足りなくなることはありません。ラップはページのメモリ内にのみ保持され、どこにも永続的に書き込まれないため、ストップウォッチをリセットするかページを再読み込みした瞬間に自動的に消去されます。
計測データはどこかに保存されますか?
いいえ。データはタブが開いている間だけページのメモリ内に存在し、ページを離れたり、更新したり、閉じたりした瞬間に消えます。サーバーには何も送信されず、ローカルにも何も保存されないため、削除すべき履歴も、過去のセッションに関するプライバシー上の懸念もありません。
Date.now()とperformance.now()の違いは何ですか、そしてなぜここで重要なのですか?
Date.now()はシステム時計を反映するため、タイムサーバーと再同期したとき、ユーザーが時計を変更したとき、あるいはデバイスがスリープから復帰したときにジャンプすることがあります。これは何らかの間隔を測定する用途にとっては都合の悪い特性です。performance.now()は単調増加の時計で、後戻りすることは決してなく、ページ読み込みからの経過時間を高い分解能で計測します。そのため、このツールはすべてのラップと合計時間の計算にperformance.now()を使用しています。
なぜストップウォッチはマイクロ秒単位の精度を表示しないのですか?
理論上は可能です。performance.now()は本来ミリ秒未満の精度で仕様が定められていましたが、2018年以降、ブラウザは十分に精密なタイマーが他のプロセスのデータを推測するために悪用されうるSpectre/Meltdown型のタイミング攻撃への対策として、その分解能を意図的に通常0.1〜1ミリ秒程度に制限しています。ここに表示される100分の1秒単位の表示はその安全な範囲に余裕をもって収まっており、トレーニングや料理、リハーサルの用途には、人間の反応速度が必要とする以上にすでに十分な精度です。
関連ツール
問題を報告
オンラインストップウォッチ(ラップ計測付き)
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!