ToolActToolAct

カウントダウンタイマー

カウントダウン作成、カスタム時間とリマインダー対応

時間設定

00:05:00

カウントダウンタイマーとは?

カウントダウンタイマーは、指定した時間からゼロに向かって減っていく時間管理ツールです。集中作業、料理、運動のインターバル、授業、会議、発表練習など、終了時刻よりも「決めた長さを守る」ことが重要な場面で役立ちます。ストップウォッチがゼロから経過時間を測るのに対し、カウントダウンは残り時間と終了点をはっきり示します。残り時間が見えると、ペース配分や切り上げの判断がしやすくなります。このページにはストップウォッチと複数タイマーもあり、ラップ計測や複数作業の並行管理にも使えます。重要な通知ではブラウザのタブを開いたままにしてください。

使い方

使い方

  1. タブで Countdown、Stopwatch、Multi Timer のいずれかを選択
  2. Countdown の場合:時・分・秒を入力するか、プリセット時間をクリック
  3. 「Start」で計測を開始し、「Pause」で一時停止します
  4. カウントダウン終了時にアラート音が鳴ります

計測に関する注意

  • タブがバックグラウンドにあるとき、デバイスがスリープしたとき、省電力モードが有効なときには、ブラウザのタイマーが停止・遅延することがあります。
  • 会議、試験、本番作業では、システム時計や専用タイマーを最終的な基準として使ってください。

利用シーン

音声通知付きのシンプルなカウントダウンを実行する時・分・秒を設定し、クイックプリセットを使って開始・一時停止し、カウントダウンがゼロになるとブラウザが短いアラート音を再生します。設定した時間はページのローカル状態のみに保持されるため、医療予約や試験時間、サプライズイベントの計画などプライベートな締め切りがタイマー実行中に外部に送信されることはありません。
ストップウォッチでラップタイムやペース配分を記録するストップウォッチモードに切り替えると、練習ラウンドやプレゼン、運動、実験などの計測ができ、ラップごとの合計タイムとスプリット差分、ベスト・ワーストラップが記録されます。固定的なカウントダウンの終了点よりもペース配分が重要な場面に適しています。
1つのページで複数の独立したタイマーを管理する料理やワークショップ、学習ブロック、テスト、ライブセッションなどで個別に開始・一時停止・リセット・削除できる複数タイマーが必要な場合に便利です。1ページにまとめることで複数の短いタスクが重なる際の混乱を軽減し、ログインや同期なしで1セッション中の状態を保持できます。
タブをアクティブにしてアラートが確実に鳴るようにするブラウザはバックグラウンドのタイマーを制限するため、長時間のカウントダウン中はページを表示したままにするか前面タブに配置してください。本番の試験やプレゼン、料理の前に短い10秒のテスト実行で確認しましょう。setIntervalは1分あたり数十ミリ秒のドリフトがありますが、requestAnimationFrameベースのループは表示ジッターのみのため、短いカウントダウンならsetIntervalで問題なく、60分の試験タイマーでは表示タブ上のドリフトループが適しています。
プリセットを使って時・分・秒を入力する手間を省くポモドーロや試験、HIITなど標準的な時間がある場合はプリセットを選ぶことで、実際の手法に合ったタイマー設定が素早くできます。モバイルSafariやChrome Android、Firefoxでのタブ制限がバックグラウンドタイマーの遅延やスキップの最も一般的な原因であるため、重要なイベントではタブを固定してデバイスをスリープさせず、本番前に5秒のテスト実行を行いましょう。

仕組み

カウントダウンエンジンは信頼できるクロックとして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分後に終了します。

何かアップロードされますか?

いいえ。タイマーはすべてブラウザ内で動作します。オプトインした場合のみ、カスタムプリセットと履歴がローカルに保存されます。