無料オンラインストップウォッチ

ラップタイム付きの正確なストップウォッチ。スペースを押して開始/停止、Lでラップタイム。

00:00.00

キーボードショートカット

機能

仕組み

  1. クロックを開始: 開始をクリックしてストップウォッチを開始, ミリ秒で経過時間を測定します。
  2. ラップタイムを記録: メインのクロックを停止せずにスプリットを記録するために「ラップ」を押します。
  3. 停止してリセット: いつでも一時停止してから、再開またはリセットします。ラップタイムはリセットまで残ります。

ストップウォッチの簡単な歴史

現代のすべてのストップウォッチの祖先である機械式クロノグラフは、Louis Moinetが1816年に発明しました。Moinetは天文観測のために星の見かけの動きを計時するために「Compteur de Tierces」を建造しました; 1/60秒まで測定でき、その時代としては並外れた精度でした。最初の商用クロノグラフは5年後に続きました: Nicolas Mathieu Rieussecは、1821年9月1日にパリのChamp de Marsの競馬で「インクスポット」クロノグラフを実演しました、そして1822年に特許を取得しました。Rieussecのデザインは、計時針の先端に小さなインク貯蔵庫を使用しました; 開始時にボタンを押すとスタート位置にインクのスポットが落ち、停止時にもう一度押すと2番目のスポットが落ち、スポット間の距離が経過時間を示しました。Adolphe Nicoleは1844年にスプリットセカンド(rattrapante)クロノグラフの特許を取得しました、これにより2つのスプリットタイムを同時に測定できるようになり、複数の競争相手が数秒以内にフィニッシュするレースにとって重要な革新でした。HeuerのMikrograph(1916)は、1920年アントワープオリンピックに間に合うように機械式クロノグラフに1/100秒の精度をもたらし、そこで公式タイムキーパーとして使用されました。クォーツ革命はSeikoのアストロンとともに1969年12月に到着しました(最初の商用クォーツ腕時計); 1980年代を通じて、CasioのG-Shock(1983)とF-91W(1989)はクォーツストップウォッチを安価で、耐久性があり、ユビキタスにしました。NIST-F1(1999)NIST-F2(2014)のような現代の原子時計は、3億年で約1秒の精度を達成します、腕時計が必要とするものをはるかに超えていますが、すべての民間時間が校正される基準です。

JavaScript タイミング、Date.now() vs performance.now() vs requestAnimationFrame

ブラウザは時間を測定するための3つの異なるAPIを公開し、それぞれに異なる保証があります。Date.now()は1970年1月1日からのUnixミリ秒を返し、ミリ秒の解像度ですが、システムクロックはジャンプする可能性があり(手動の時刻変更、NTP補正、夏時間の境界)、これにより経過時間の測定には信頼できなくなります。performance.now()はページが開始してからの時間をミリ秒(サブミリ秒の分数精度付き)で返します; 単調です(決して後退せず、システムクロックの変更に対する免疫があります)、これはまさにストップウォッチが必要とするものです。2018年初頭のSpectre/Meltdown開示後、ブラウザはタイミングサイドチャネル攻撃を緩和するために、performance.now()のデフォルト精度をサブマイクロ秒から100マイクロ秒(一部のブラウザは最大1ミリ秒)に減らしました; クロスオリジン分離されたページは、サイトがCross-Origin-Opener-PolicyおよびCross-Origin-Embedder-Policyヘッダーを介してオプトインする場合、まだ5マイクロ秒の解像度を取得できます。ストップウォッチの場合、Spectre後のデフォルト精度は十分以上です、UIコンテキストでは人間は約50msより細かいタイミングの違いを知覚できません。requestAnimationFrameはそれ自体クロックではありません、ディスプレイのリフレッシュごとにブラウザが起動するコールバックです(典型的には60Hzモニターで秒間60回、120Hzで120回)。ストップウォッチUIの場合、requestAnimationFrameはスムーズな表示更新を駆動するものです; 経過時間自体はperformance.now()から来ます。標準パターン: スタート時にstartTime = performance.now()をキャプチャし、各アニメーションフレームでelapsed = performance.now() - startTimeを計算してディスプレイを再レンダリングします。

タブスロットリング問題

ブラウザベースのストップウォッチでの有名なバグの原因はバックグラウンドタブのスロットリングです。タブがフォーカスを失うと(別のタブやウィンドウに切り替えると)、ブラウザはsetTimeoutsetIntervalrequestAnimationFrameコールバックの発火率を減らし、要求された間隔に関係なく通常は呼び出し間で1秒にクランプします。Chrome 88(2021年1月)は、ラップトップのバッテリーを節約するために、タブが5分以上バックグラウンドにあった後に1分間隔に減らすさらに積極的な「集中スロットリング」モードを導入しました。これは、各間隔でカウンターをインクリメントするストップウォッチを壊します、カウンターが遅れます。ここで使用される正しいストップウォッチの実装は、各間隔でカウンターをインクリメントするのではなく、各レンダリングで経過時間をperformance.now() - startTimeとして計算することです、2つのタイムスタンプ間の差は、レンダリングがどれだけ頻繁に発火するかに関係なく常に正確です。バックグラウンドタブでは表示が凍結したように見えますが(レンダリングが発火していないため)、タブに戻ると経過時間が正しく計算され、表示は正しい値にジャンプします。本当に正確なバックグラウンドタイミングのために、Web Workerパターン(ワーカースレッドでタイマーを実行する、メインスレッドよりも積極的にスロットルされない)が標準的なソリューションです; このツールのストップウォッチはフォアグラウンドに焦点を当てているため、基本的なperformance.now()アプローチで十分です。

ラップタイムvsスプリットタイム、オリンピックの審判が気にする区別

日常会話で混同される関連するが別個の2つの概念。ラップタイムは単一のラップの期間、前のラップマーカーから経過した時間です。スプリットタイムはチェックポイントでの累積合計、最初から経過した時間です。4×400mリレーでは、各ランナーのラップタイムは彼らが個人的に走ったものです; スプリットタイムは、チームの累積位置がバトンタッチ全体でどのように進化したかを教えてくれます。マラソンでは、5Kスプリットタイムは各チェックポイントでのランナーのペースを教えてくれ、ラップごとの間隔はペースの一貫性を教えてくれます。オリンピックタイミングシステムは両方を並べて表示します。このストップウォッチは両方を記録します: 各ラップエントリーは1つのカラムにラップ間隔(このラップのみ)を、別のカラムに累積合計(開始からのスプリット)を表示するので、気にしているものに応じて一貫性または絶対進捗を比較できます。ラップボタンはマーカーを記録します; 単一の実行中に複数回押すと、無制限の間隔リストが生成されます。

一般的なユースケース

正直な精度の限界

ブラウザストップウォッチは、現代のハードウェアでフォアグラウンドで実行されている場合、約10ミリ秒の精度があり、ワークアウト、料理、プレゼンテーション、教室のゲーム、レクリエーションスポーツに適しています。以下の代替ではありません: 認定された陸上競技クロノメトリー(写真フィニッシュカメラと専用電子タイミングシステムをサブミリ秒の精度と監査トレイルで使用); GPS同期ラップタイミング(モータースポーツ、サイクリング); ワイヤレスBluetoothペアリングレースタイミングシステム; または時間が規制された公式記録になるもの。ウェブプラットフォームのタイミング精度は、サイドチャネル攻撃を緩和するためにSpectre/Meltdown後に意図的に減らされました; ストップウォッチの使用ではこれは見えません(人間は違いを認識できません)が、ベンチマークマイクロ秒レベルの測定にはクロスオリジン分離ヘッダーが必要です。タブがフォーカスを失う可能性のある長期間のタイミングについては、バックグラウンドタブでは表示が「凍結」しますが、戻ったときに正しい経過時間を表示することを期待してください、計算は累積された間隔ではなくタイムスタンプデルタを使用します。

画面をオンにしておく、Wake Lock API

ブラウザは、非アクティブ期間の後にモバイルデバイスの画面を自動的に暗くし、最終的にオフにします、これはストップウォッチを使ってワークアウトを計時し、実行の途中で画面が暗くなる場合に役立ちません。W3C Screen Wake Lock APIは、ウェブページが使用中に画面をオンに保つことを要求できるようにします、Chromeで84(2020年7月)以来、Edge、Opera、Safariで16.4(2023年3月)以来サポートされ、Firefoxは126(2024年5月)で追加されました。ストップウォッチの場合、典型的なパターンは、タイマーが開始するときにウェイクロックを取得し、タイマーが停止するかページが可視性を失うときに解放することです; これにより、ユーザーのディスプレイ設定を恒久的に上書きすることなく、長時間の実行中の画面の暗化が防止されます。モバイルファーストのストップウォッチはWake Lock統合から大きく利益を得ます; このツールのフォアグラウンドユースケースではめったに必要ありませんが、自己構築のストップウォッチには知っておく価値があるオプションです。

機能

よくある質問

タイミングはどれくらい正確ですか?

ディスプレイは1秒間に10回更新され(センチセカンドの精度)、基礎となる計算はperformance.now()を使用します、これは単調で、現代のブラウザで約100マイクロ秒の精度です(Spectre/Meltdown緩和後の一部の構成では1ミリ秒)。ワークアウト、料理、プレゼンテーション、レクリエーションスポーツの場合、これは十分以上です、人間はUIコンテキストで約50msより細かいタイミングの違いを知覚できません。規制された陸上競技クロノメトリー、GPS同期モータースポーツタイミング、または公式記録になるものの代替ではありません。

タブを切り替えるとなぜ表示が凍結するのですか?

ブラウザタブスロットリング。タブがフォーカスを失うと、ブラウザはrequestAnimationFrameとタイマーコールバックの発火率を減らし、通常は呼び出し間で1秒にクランプし、Chrome 88+(2021年1月)はバッテリーを節約するために5分の非アクティブ後にさらに1分に減らします。発火されたコールバックなしでは、ディスプレイは更新できません。良いニュース: 経過時間自体は、このツールが累積された間隔ではなくタイムスタンプデルタ(performance.now() - startTime)を使用するため、正しく計算されます、タブに戻ると、ディスプレイは正しい経過時間にジャンプします。本当に正確なバックグラウンドタイミングのために、Web Workerパターンが標準的なソリューションです。

ラップタイムはどのように機能しますか?

Lapを押すと2つの値が記録されます: ラップ間隔(前のラップから、または最初のラップの場合はスタートから経過した時間)と累積合計(開始から経過した時間、「スプリット」とも呼ばれる)。両方がラップテーブルに並べて表示されます。区別は陸上競技で重要です: ラップ間隔はセグメントごとのペースの一貫性を伝え、累積合計はターゲット時間に対する絶対進捗を伝えます。Lapを必要なだけ押してください; 制限はありません。

経過時間を失うことなく一時停止できますか?

はい、Stopは現在の値でタイマーを一時停止します; 停止した場所から再開するにはStartを再びクリックします。Resetはすべて(経過時間とすべてのラップ記録)をクリアし、ゼロに戻ります。ラップテーブルは停止と再開のサイクル全体で保持されるので、マルチセグメントタイミングセッションからラップを確認してエクスポートできます。

長いワークアウト中に画面をオンに保つことができますか?

電話での長時間のスポーツタイミングの場合、ブラウザのデフォルトの動作は画面を暗くし、最終的にオフにすることです、これはワークアウトの途中で役に立ちません。W3C Screen Wake Lock API(Chrome 84+ 2020年7月、Safari 16.4+ 2023年3月、Firefox 126+ 2024年5月)を使用すると、ウェブページが使用中に画面をオンに保つように要求できます。このストップウォッチは現在Wake Lockを自動的に呼び出していません、今のところ、回避策は電話の画面スリープタイムアウトを手動で調整するか、長時間のスポーツ使用にデバイスのネイティブストップウォッチアプリを使用することです。

私のタイミングデータはどこかに送信されますか?

いいえ。ストップウォッチは完全にブラウザで実行されます。タイミングデータ、スタートタイム、ラップタイム、現在の経過値はネットワークを越えることはありません。ストップウォッチが動作中にDevToolsのネットワークタブで検証するか、ロード後にページをオフラインに(機内モードに)してもストップウォッチは完璧に動作します。機密性が重要なタイミングコンテキストに役立ちます: 閉じたトラックスポーツトライアル、内部パフォーマンスベンチマークなど。

関連ツール