「10時ちょうどに押したのに、もう売り切れ」の真相
「10時ちょうどに更新ボタンを押したのに、もう売り切れだった」——そんな経験はありませんか? 実はその原因、あなたのスマホやPCの時計がズレているからかもしれません。
チケット販売サイトのサーバーは、正確な時刻に基づいて動作しています。 あなたのデバイスの時計が2秒遅れていれば、「10時ちょうど」に押したつもりでも、 サーバーにとっては「10時00分02秒」。その2秒で、チケットはもう誰かの手に渡っているかもしれません。
あなたの時計、本当に正確ですか?
スマートフォンやPCの内蔵時計は、水晶振動子(クォーツ)で時を刻んでいます。 一般的な水晶振動子の精度は20〜100ppm(parts per million)。 これは1日あたり約1.7秒〜8.6秒のズレに相当します。
「でも、スマホは自動で時刻を合わせているのでは?」と思うかもしれません。 確かにその通りですが、同期はリアルタイムではなく定期的に行われます。 そして、同期の頻度や精度は端末・OS・ネットワーク環境によって大きく異なります。
| デバイス | 同期先 | 同期頻度の目安 | 備考 |
|---|---|---|---|
| iPhone | time.apple.com | 起動時 + 定期的 | 頻度は非公開。環境により変動 |
| Android | time.android.com | AOSPの既定は通常18時間間隔 | メーカー実装で異なる場合あり。失敗時は短間隔でリトライ |
| Windows PC | time.windows.com | 既定で週1回(604,800秒) | 設定で変更可能。同期間に数秒〜十数秒ズレ得る |
| Mac | time.apple.com | 定期的 | 頻度は非公開。環境により変動 |
特に注意すべきはWindows PCです。 初期設定では週に1回しか時刻同期が行われないため、同期間に数秒以上ズレることがあります。
上記の同期頻度はOSのデフォルト設定値であり、実際のズレ幅は端末の水晶振動子の特性、温度、ネットワーク状況によって変動します。
NTP同期とは
NTP(Network Time Protocol)は、ネットワーク経由でコンピュータの時刻を正確に同期するためのプロトコルです。 1985年にデラウェア大学のDavid L. Mills氏によって開発され、RFC 5905(NTPv4)として標準化されています。 インターネットの基盤技術の一つとして、40年以上にわたり使われ続けています。
NTPの仕組み:4つのタイムスタンプ
NTPでは、クライアント(あなたのデバイス)とサーバー(正確な時計を持つマシン)の間で、 4つのタイムスタンプを使って時刻のズレを計算します。
- T1:クライアントがリクエストを送った時刻
- T2:サーバーがリクエストを受け取った時刻
- T3:サーバーがレスポンスを送った時刻
- T4:クライアントがレスポンスを受け取った時刻
この4つから、ネットワークの遅延を差し引いた正確な時刻のズレ(オフセット)を算出します。
オフセット = ((T2 - T1) + (T3 - T4)) / 2
往復遅延 = (T4 - T1) - (T3 - T2)
ポイントは、ネットワークの往復時間を計算して「通信にかかった分」を差し引いていることです。 これにより、単にサーバーの時刻を受け取るよりもはるかに正確な補正が可能になります。
ただし、この計算は往路と復路の遅延が対称であることを前提としています。 実際のネットワークでは非対称な遅延が発生するため、端末が得られる精度はネットワーク品質の影響を受けます。
日本のNTPサーバー:ntp.nict.jp
日本では、国立研究開発法人 情報通信研究機構(NICT)が日本標準時(JST)を維持・管理しています。
NICTは東京都小金井市の本部にセシウム原子時計と水素メーザー周波数標準器を運用しており、
その原子時計に直結したStratum 1のNTPサーバーが ntp.nict.jp です。
NICTによれば、サーバー自体の精度は日本標準時に対して10ナノ秒以内とされています。 ただし、クライアントが得られる精度はネットワーク遅延と非対称性に左右されるため、 サーバーの精度がそのまま端末の精度になるわけではありません。
| NTPのStratum | 説明 | 例 |
|---|---|---|
| Stratum 0 | 原子時計・GPS受信機(直接アクセス不可) | NICTのセシウム原子時計 |
| Stratum 1 | Stratum 0に直結したサーバー | ntp.nict.jp |
| Stratum 2 | Stratum 1から同期するサーバー | time.apple.com 等 |
| Stratum 3〜15 | 上位から順に同期(精度は徐々に低下) | 各種の公開NTPサーバー |
ちなみに、日本のいわゆる「電波時計」もNICTが運用するJJY送信所(福島・佐賀)からの標準電波で時刻を合わせています。NTPと電波時計は、どちらもNICTの原子時計を源としているのです。
なお、NICTの公開NTPサービスにはリクエスト回数の目安(平均20回/時、1日合計480回以下)があります。 必要以上に高頻度でアクセスすることは避けましょう。
手動リロード vs NTP同期の差
手動でページを更新する場合、以下の遅延が積み重なります。
| 遅延の原因 | 手動リロード | NTP同期 + 自動実行 |
|---|---|---|
| デバイスの時計のズレ | 数百ms〜数秒(端末・同期状況に依存) | NTPで補正(精度はネットワークに依存) |
| 人間の反応速度 | 0.2〜0.3秒 | 0秒(自動実行) |
| 接続の確立(DNS/TCP/TLS) | 数十〜数百ms | 削減可能(プレコネクト時) |
| 合計 | 数秒の遅れになり得る | 大幅に削減可能(環境に依存) |
手動操作では複数の遅延が積み重なり、数秒の遅れが生じる可能性があります。 NTP同期 + 自動実行を使えば、これらの遅延要因を大幅に減らすことができます。
ページ更新君での活用
ページ更新君では、以下の流れでNTP同期を活用しています。
- タイマー設定時 — ユーザーが「実行」を押すと、サーバーがNICTのNTPサーバー(ntp.nict.jp)に問い合わせて現在の正確な時刻を取得します。信頼性を高めるため、失敗時は最大3回までリトライします。
- 待機中 — NTPで計算した残り時間をもとに、ブラウザでカウントダウンします。
-
直前の精密制御 — 指定時刻の直前になると、
performance.now()を使った高分解能タイマーに切り替えます。ただし、performance.now()の実際の分解能はブラウザのセキュリティポリシー(サイト分離の状態など)によって変動するため、常にマイクロ秒精度が得られるわけではありません。 - 実行 — 目標時刻に到達した時点で、設定したURLを自動でブラウザに読み込みます。ただし、JSのタイマー発火から実際のリクエスト送信・サーバー到達までには、環境依存の遅延が生じます。
さらにPremiumプランのプレコネクト機能を使えば、実行の数秒前にDNS解決・TCP接続・TLS暗号化を事前に完了させることで、ページ表示までのネットワーク遅延を削減できます。
ご利用にあたっての注意
チケット販売サイトの利用規約には、自動化ツールの使用や過剰なアクセスを禁止する条項が含まれている場合があります。 ページ更新君は指定時刻にページを1回開くだけのツールですが、 ご利用の際は各サイトの規約をご確認のうえ、他のユーザーの迷惑にならない範囲でお使いください。
まとめ
チケット争奪戦で勝つには、正確な時刻に、できるだけ速くページにアクセスすることが重要です。
- スマホやPCの時計は、同期のタイミング次第で数秒ズレていることがある
- NTP同期を使えば、デバイスの時計のズレを大幅に補正できる(精度はネットワーク環境に依存)
- 手動リロードでは反応速度と接続遅延が加わり、不利になりやすい
- ページ更新君は、NTP同期 + 自動実行 + プレコネクトで、これらの遅延要因を削減する