データ品質

うるう秒、UTC、そしてそれがほとんど関係ない理由

地球の自転は完全に一定ではありません。そして、ほぼすべての常用時の基準である協定世界時は、地球の実際のわずかに不規則な自転ではなく、非常に精密な原子時の標準に基づいて定義されています。時間の経過とともにUTCが地球の実際の自転からずれていかないよう、ときどき1秒、つまりうるう秒が挿入されます。そのため、UTCとその基になっている厳密な原子時の標準は非常にゆっくりと離れていき、その後定期的に補正されて再び揃えられます。

タイムゾーンやタイムスタンプを扱うほぼすべてのアプリケーションにとって、これは実務上の懸念というより雑学の一つです。うるう秒はきわめてまれで、意図的に予定されるイベントです。標準的なオペレーティングシステムの時計の上に構築されたほぼすべてのものを含め、大多数のソフトウェアは、アプリケーションのコードがタイムスタンプを目にするずっと前に、システムレベルで透過的にうるう秒を処理します。特定の科学、金融、衛星測位システムのように、長期間にわたって1秒未満の精度のタイミングが特に求められる分野で作業しているのでない限り、うるう秒のせいで動作が変わるコードを書くことはまずありません。そしてそうした分野は、ソフトウェア全体から見れば本当にごく一部です。

うるう秒が、たいていは小さなものとはいえ、実際のエンジニアリング上の懸念としてときどき表面化するのは、うるう秒の境界をまたいで非常に精密な期間計算を行うシステムです。そこでは、調整を考慮しない単純な時刻計算がちょうど1秒ずれることがあります。通常の業務目的で秒単位以上の期間を計算するような一般的なアプリケーションのほとんどは、決して気づくことはありません。1秒のずれは、事実上すべての日常的なユースケースの許容範囲に十分収まるからです。

ここでこれを取り上げるのは、主に、別の記事で扱っている夏時間の切り替えやタイムゾーンのルール変更という、より実務的に重要なテーマと並んで、常用時が実際にどのように機能しているのかという全体像を補うためです。うるう秒はUTCの維持方法に関する現実的で興味深い特性ですが、当社のタイムゾーン検索を使って位置情報、スケジュール、タイムスタンプを扱うほぼすべてのものを含め、圧倒的多数のアプリケーションでは、それに備えた防御的なロジックを組み込む必要はありません。もしご自身の分野で長期間にわたる1秒未満のタイミング精度が本当に必要なら、それは一般的な位置情報対応ソフトウェアの範囲を大きく超えた専門的な懸念であり、明示的に別途対処する価値があります。