2026年7月12日(日)掲載 2,537本日 0
HN4855

【技術者必読】史上初の「負のうるう秒」が来る!あなたのシステムは耐えられますか?

Ask HN: Are systems ready for the first negative leap second?

Asmod4n5日前

議論

11
0Asmod4nスレ主485日前

前回のうるう秒挿入から10年が経過し、ついに史上初となる「負のうるう秒(negative leap second)」の導入が現実味を帯びてきました。現在稼働中のシステムは、この未知のイベントに対して準備ができているのでしょうか?

1wmf5日前

システムは全く準備できてないよ。うるう秒なんて悪手だし、負のうるう秒ならもっと最悪だ。そんなことせずに、ドリフトが打ち消し合うように放置しておけばいいんだよ。

2Bender5日前

Googleの提案はごまかしでしかない。[1] ほとんどのタイムサーバーはスミアリングを使ってないし。サブ秒単位の時間が重要な場所で、どんな挙動を引き起こすか見当もつかない。こういうバグ[2]が「時間を逆行させること」に対処するためだけに修正されたのか気になるな。

[1] - https://developers.google.com/time/smear

[2] - https://rivassec.com/leap-second-chaos-2012.html

3al_borland5日前

正と負のうるう秒があるなら、そもそも何のためにやってるんだ?10年後に1秒戻すために、わざわざ1秒進めるってどういうことだよ…

4dgrin91約23時間前

実際に気にしてるシステムってどれくらいあるんだろう?主要なNTPサーバーはうまく処理してるだろうし、ほとんどのシステムはそこから供給を受けてるだけじゃないか?

GPS衛星も問題ないだろうけど、コンシューマー向けや産業用のGPS受信機はどうかな?トレーディングシステムとかは怪しいかも。暗号システムあたりはあまり気にしてなさそうだけど。

5aomix約22時間前

そういうシステムには責任持てないな。

前回この話が出た時、1日かけて秒を「スミア(引き伸ばし)」すれば、時計が突然±1秒ズレる問題は解決するんじゃないかと思ったんだけど。

6thomashabets2約22時間前

個人的には準備できてると思う。gettimeofday()は時間の測定に使うべきじゃないけど[1]、負のうるう秒なら単調増加は維持できるしね。

お粗末なコードが100msの処理を1100msかかったとか判定するようになるだろうけど、-900msになるよりはマシだろ。

まあ、そうは言ってもリンク先にある通り、F5のロードバランサーは少なくとも以前はgettimeofdayでTCP接続を追跡してたし、libpcapがメタデータをウォールクロックで出しちゃうのはイライラするね。

[1] https://blog.habets.se/2010/09/gettimeofday-should-never-be-used-to-measure-time.html

7BadBadJellyBean約22時間前

どうせうるう秒システム自体が2035年までには廃止されるんだから、わざわざテストする人がいるとは思えないな。たかだか1秒のために波風立てる必要なんてないでしょ。

9jaggederest約21時間前

実際の恒星日と合わせる調整なんてやめて、純粋なUTCにしてほしい。16時に起きて8時に寝る生活になったとしても、それはそれで構わないし。

10_alternator_約20時間前

安心させてあげるけど、Unixエポックタイムにはこの問題はないんだ。でも、その理由を知ったらゾッとするかもしれないよ。

まず、エポック秒は「1970年1月1日からの秒数」じゃない。あれは子供向けの嘘だ。実際には「1970年1月1日からの日数×86400」に「深夜からの秒数」を足したものなんだよ。

エポックタイムにとってうるう秒は存在しない。二重カウントされてるのか、12時間や24時間かけてスミアリングされてるのか(しかもGoogle、Microsoft、Oracleでその時間枠が違うというデタラメぶり)。結局のところ定義されてないから、実装ごとにバラバラなんだ。

負のうるう秒ならもっと簡単かもしれない。仕様上はうるう秒のせいで1日の秒数が86400未満になるから、まともな実装なら単にスキップするはず。もちろん、スミアリングしてる組織はそこでも強引にスミアするだろうけどね。

じゃあ2つのエポック間の秒数が本当に知りたい時はどうするか?エポック秒を引き算するだけじゃダメなんだ。その間のうるう秒の分を補正しないとね。あとスミアリングの分も忘れずに。