カウントダウンタイマー
カウントダウン作成、カスタム時間とリマインダー対応
時間設定
カウントダウンタイマーとは?
カウントダウンタイマーは、指定した時間からゼロに向かって減っていく時間管理ツールです。集中作業、料理、運動のインターバル、授業、会議、発表練習など、終了時刻よりも「決めた長さを守る」ことが重要な場面で役立ちます。ストップウォッチがゼロから経過時間を測るのに対し、カウントダウンは残り時間と終了点をはっきり示します。残り時間が見えると、ペース配分や切り上げの判断がしやすくなります。このページにはストップウォッチと複数タイマーもあり、ラップ計測や複数作業の並行管理にも使えます。重要な通知ではブラウザのタブを開いたままにしてください。
使い方
使い方
- タブで Countdown、Stopwatch、Multi Timer のいずれかを選択
- Countdown の場合:時・分・秒を入力するか、プリセット時間をクリック
- 「Start」で計測を開始し、「Pause」で一時停止します
- カウントダウン終了時にアラート音が鳴ります
計測に関する注意
- タブがバックグラウンドにあるとき、デバイスがスリープしたとき、省電力モードが有効なときには、ブラウザのタイマーが停止・遅延することがあります。
- 会議、試験、本番作業では、システム時計や専用タイマーを最終的な基準として使ってください。
利用シーン
仕組み
カウントダウンエンジンは信頼できるクロックとしてsetInterval(callback, 1000)を使用しません。その手法はHTML5イベントループ仕様が最小遅延のみを保証し固定間隔を保証しないため、ドリフトが蓄積します。代わりに、ページはDate.now()(またはサブミリ秒分解能のperformance.now())でstartTimeを記録し、各ティックでremaining = targetDuration - (Date.now() - startTime)を計算します。表示の更新はrequestAnimationFrameで駆動され、ブラウザがディスプレイのVSYNCレート(通常60Hz/16.67ms、高リフレッシュのノートPCやスマートフォンでは120Hzの場合あり)にスロットリングします。この自己修正設計により、ガベージコレクションや長いレイアウトによるJavaScriptタスクキューの停滞後でも、表示される秒数が壁時計と整合します。 バックグラウンドスロットリングはタイマーの予期せぬ挙動の主要因です。HTML Living Standardによると、非表示タブのsetInterval/setTimeoutは最低1000msに制限されます(Chrome、Firefox、Safariはそれぞれのヒューリスティックで実装。Chromeはバッテリー駆動時に約5分経過した非アクティブタブを追加でフリーズします)。Page Visibility API(document.visibilityState、document.hidden、visibilitychangeイベント)により、タブ切り替えを検出し、タブが再びフォアグラウンドになった際にDate.now()と内部クロックを照合できます。カウントダウン終了時のサウンドはWeb Audio API(AudioContext + OscillatorNodeまたはプリロードしたAudioBuffer)で再生され、iOS Safariや最新のChromeでは自動再生ポリシーを満たすために事前のユーザージェスチャーによるアクティベーションが必要です。最善の視覚的アラートも描画され、ユーザーが事前に許可を与えていればNotification APIを介したOSレベルのトースト通知も送信できます。 複数タイマーモードでは各タイマーを独立したstartTimeを持つ独自の状態オブジェクトで管理し、単一のrequestAnimationFrameループが各フレームで配列をイテレートします。タイマーごとに別々のインターバルを回すよりもCPU負荷を一定に保てます。リロード間の永続化ではシリアライズされたendTimeをlocalStorageに保存し、マウント時に残り時間を再計算できます。OSによる壁時計補正(手動時刻変更、NTPステップ、夏時間切替)はDate.now()を瞬間的にシフトさせ、復元されたタイマーがジャンプして見える場合があることに注意してください。performance.now()は単調であり、単一ページロード内の経過時間のみが重要な場合に推奨されます。
- Date.now()またはperformance.now()を信頼できるソースとして使用。蓄積されたsetIntervalティックを信頼しないこと。
- requestAnimationFrameはディスプレイVSYNC(60Hz≈16.67ms、120Hz≈8.33ms)にリペイントを制限する。
- 非表示タブではHTML仕様によりsetIntervalが最低1000msにスロットリング。Chromeはバッテリー駆動時に約5分でページをフリーズする場合がある。
- Page Visibility API(visibilitychangeイベント)はタブがフォアグラウンドに戻った際のタイマー照合のためのフック。
- Web Audio APIはiOS SafariとChromeで自動再生ポリシーを満たすために事前のユーザージェスチャーアクティベーションが必要。
- Notification APIはNotification.requestPermission()とセキュアコンテキスト(HTTPSまたはlocalhost)を必要とする。
- performance.now()はNTPステップやDSTジャンプを跨いでも単調。Date.now()はそうではない。用途に応じて選択すること。
使用例
ポモドーロの作業ブロック (25 分集中 + 5 分休憩)
モード : カウントダウン
時間 : 00 : 25 : 00
開始時刻 : 14:00:00
終了時刻 : 14:25:00 (アラーム鳴動)
次 : 5 分間の休憩タイマー (プリセット)料理 - 半熟卵 (6 分 30 秒)
モード : カウントダウン
設定 : 00 : 06 : 30
1:00 で -> 残り時間が視覚的にハイライト表示
0:00 で -> アラーム + ページバナー: カウントダウン完了!ストップウォッチでラップ計測 (1km 走の練習)
スタート -> 00:00.00
Lap 1 -> 04:12.80 (区間 04:12.80)
Lap 2 -> 08:31.45 (区間 04:18.65)
Lap 3 -> 12:48.10 (区間 04:16.65)
ゴール -> 16:55.30 (区間 04:07.20 最速)HIIT 用マルチタイマー (30 秒運動 / 15 秒休憩 x 4 セット)
タイマー A: 00:30 (運動) -> アラーム
タイマー B: 00:15 (休憩) -> アラーム
タイマー C: 00:30 (運動) -> アラーム
タイマー D: 00:15 (休憩) -> アラーム
セッション合計: 3 分。アラームを正しく鳴らすためタブは表示状態を維持試験監督 - 45 分の筆記時間
時間 : 00 : 45 : 00
開始 : 09:15:00
終了 : 10:00:00
ヒント: タブはフォアグラウンドに置く。バックグラウンドだと setInterval が
間引かれ、45 分間で数秒のずれが生じることがあるよくある質問
タブを切り替えてもカウントダウンは動作し続けますか?
最近のブラウザはバッテリー節約のためバックグラウンドタブを約1秒に1回の更新に制限するため、タブに戻った時に表示値が少し遅れて見えることがあります。ただし、内部の計算は絶対時刻に基づいているため、経過時間の合計は正確です。タブにフォーカスするとすぐに正しい値にジャンプします。
タブがバックグラウンドにある時にアラームは鳴りますか?
バックグラウンドタブでの音声再生は、一部のブラウザやOSの省電力設定によって制限されています。アラームはWeb Audio API経由で再生され、事前のユーザー操作が必要です。アラートが重要な場合は、タブをフォーカスするか表示状態に保ってください。
コンピューターがスリープした場合はどうなりますか?
カウントダウンの内部時間計算はDate.now()(壁時計時刻)に基づいているため、システムがスリープしている間も正しく追跡されます。ウェイク時に表示が追いつきます。ただし、システムが一時停止されている間、音声アラームは鳴りません。
タイマーの精度はどのくらいですか?
表示は1秒ごとに更新されますが、内部ではミリ秒精度のタイムスタンプを使用しています。実際の精度はブラウザのタブスロットリング(バックグラウンドタブでは精度が落ちる)と、アラーム音の音声出力レイテンシ(通常100ms未満)によって制限されます。物理学や音響工学の精度が必要な場合は、専用ハードウェアをご使用ください。
プリセット時間を保存できますか?
よく使う時間用にクイックプリセットボタン(5分、10分、25分、45分、1時間)が用意されています。これらは組み込みのショートカットで、ユーザーがカスタマイズできるプリセットではありません。タブを閉じると現在のタイマー状態は失われます。
サマータイムはどう扱われますか?
カウントダウンは壁時計の日付ではなく経過秒数を使用するため、サマータイムへの切り替えの影響を受けません。サマータイム開始(時計を進める)の30分前に開始した2時間のカウントダウンは、正しく90分後に終了します。
何かアップロードされますか?
いいえ。タイマーはすべてブラウザ内で動作します。オプトインした場合のみ、カスタムプリセットと履歴がローカルに保存されます。