料理とか旅行とかの備忘録

料理とか旅行とか勉強したこととかいろんなことの備忘録

2000年問題の話をしよう

今週のお題「うるう年」


うるう年というと、とりあえずこち亀の日暮さんが思い出されるわけですが。

それはさておき。
私は1984年生まれです。具体的には、ロサンゼルスオリンピックの年ですね。
………薄々お気づきの方もおられるかもしれませんが、今年36です。年女で、本厄です。

うわーん!うるう年なんてきらいだー!

 

おしまい


……話題を変えて。

うるう年といえば、私くらいの歳だと2000年問題の話題は切って離せません。
もちろん、2000年問題は『下二桁だけ見てるプログラムが1900年と誤認する』問題もあったわけですが、この場合はもう一つの問題の方。

ご存知ない世代もおられるでしょうから解説します。
まずうるう年の定義から。『4で割り切れるが100で割り切れない』もしくは『400で割り切れる』です。
普通は『4で割り切れる』だけ覚えとけば特に問題ないわけですが、コンピュータの世界ではそうも言っていられません。きちんと全ての定義が満たされてないと過去の日数計算が狂ってしまいます。
しかし。
『4で割り切れるが100で割り切れない』だけのプログラムだったとしたら、2000年はうるう年じゃないことになってしまいます。

ちなみに、似たポカをあのExcelがやらかしてまして。
詳細は別のときに話題にするつもりですが、オプションにある謎の項目『1904年から計算する』のやつです。
オフのままだと、昔の日付を扱うときに『1900年2月29日』が存在することになってしまうんですよ……なんでこれデフォルトでオフなんだろう。いや理屈は知ってるけど、知らない人が負の日付扱ってバグらせること考えると納得できない。

年越しの瞬間(もちろん実質一時間おきに世界のどこかしらで)は、世界中のエンジニアが頑張っていたわけです。
実際は大きなトラブルは起こらずにすんだわけですが、保守にあたっていた方々の苦労を想像すると……恐ろしい。
当時はまだ子供でしたから想像しきれなかったけど、今思うと恐ろしすぎる。


で。
2038年問題UNIXの秒数がオーバーフローする)まで、あと18年ですよ。