概要
Unix時間について調べていたときに「Unix時間は閏秒が考慮されていない」という説明を見ました。
閏秒ってなんなの?考慮してなくて大丈夫なの?と思ったので調べてみました。
閏秒とは?
閏秒は、地球の自転などによる時間のずれを修正するために、通常の時間制度に追加される1秒です。以下に、閏秒に関する基本情報をまとめます。
定義: 地球の自転速度が不規則であるため、UTC(協定世界時)を調整するために導入される
決定機関: 国際地球回転サービス(IERS)が必要に応じて閏秒を設定する
実施例: 1972年7月1日に初実施。その後,2017年1月1日に27回目が実施され,それ以降の実施はなし(2025年8月現在)
参考:うるう秒実施日一覧
システムへの影響
多くのシステムで使われているUnix時間は1970年1月1日からの経過秒数を示しています。Unix時間は閏秒を考慮していないが,これがシステムにどのように影響するのか調べました。
一般的な影響
多くのアプリケーションはUnix時間を使用していますが,通常の日常的な操作には影響しません。なぜなら,閏秒による時間の調整はUTCにおいて存在しない時間(例:23時59分60秒)を挿入することで実現しており,UTCとUnix時間の対応関係は保たれているからです。ただし,Unix時間では閏秒が挿入された時の「23時59分60秒」と「0時0分0秒」は同じ値として表現されます。
たとえば、ログファイルやデータベースのタイムスタンプは、閏秒の影響を受けにくいです。
特定のシステムでの影響
GPSシステム: 高精度なタイミングが求められるため、閏秒の影響が顕著です。GPSは独自の時間系を使用しており、閏秒を管理する必要がある
金融取引システム: 時間の厳密さが要求される環境では、閏秒がトランザクションやデータの整合性に影響を及ぼす可能性がある
科学研究: 天文学や気象学の分野では、時間精度が極めて重要であり、閏秒を考慮することが求められる
実際,2012年7月1日に挿入された閏秒の影響でLinuxカーネルの不具合などが引き起こされるといった事例もありました。
参考:さくらインターネット株式会社 「うるう秒」挿入実施に伴うサービスへの影響について
閏秒が廃止されるらしい
厳密には「廃止」ではなく、実際の地球の位置関係とのズレの許容を大きくするという方針が示されています。これにより、短期間で1秒を挿入するのではなく、ズレがある程度蓄積された後に一気に時間を調整することになります。
どちらのアプローチが良いのかは分かりませんが、私たちが生きている間は、閏秒について深く考える必要がないのかもしれません。ただし、地球の自転速度が変化している影響により、負の閏秒を挿入せざるを得ない可能性も指摘されています。その場合、「23時59分59秒」が存在しない日が現れることになり,今まで起こらなかった不具合を引き起こす可能性は大いにあります。
まとめ
閏秒が実施される時間に今後立ち会えるかわかりませんが,理解を深めることができました。
Unix時間では表現できない時間があることが分かったので実装する際は気を付けてみようと思いました。
みなさんも,「閏秒が来てもこのシステムは大丈夫か?」といった視点で見つめ直してみるといいかもしれないですね!