10年前に終わったことじゃないんだな

PlayStation Networkの障害が解消 原因はうるう年の誤認識 – ITmedia News

ゲームハードであるPlayStation3が、2月28日から障害のため使用自粛を訴えているという話が飛び込んできたときは、最初はネットワーク障害という話だったのが、ふたを開けてみたらうるう年計算の問題だったことがわかったとのこと。

コンピュータソフトウェアに携わる人間なら、一度や二度はもちろん、毎日やってるよという人もいるくらい、うるう年計算というのはメジャーで当然理解しているべきものだと、私は思っていた。
あの2000年問題を通過してきた者なんかは特に。

知らない人のために、簡単に説明するとうるう年というのは、もとはといえば太陽暦でいう1年が実際には約365.242199日であることから、4年に1度くらい1日余計にしてみて(閏日)一致させようというもの。その4年に1度という計算をするのがうるう年の基本的な計算方法なのだが、実際にはもうちょっと細かいルールがある。

  1. 4で割り切れる年がうるう年である。
  2. 4で割り切れるが100で割り切れる年は、うるう年ではない。
  3. 100で割り切れても400で割り切れる年は、うるう年である。

てかんじ。今年の年(たとえば2010)をもって、上の順番で計算判定してみれば、うるう年かどうかがわかる、ということですね。

しかしどうだ、この2つ目、3つ目の計算式がなかったからうるう年判定を間違う、なんてのは問題としてはありえることとは思う。でも、今年2010はそもそも4で割り切れないぞ・・・。このニュースでぞっとしたことは、つまりこういうこと。ソニーの技術者が、何を思ってうるう年計算のコードを書いたのか、普通の技術者からしてみたらまったく理解できないこと。

そして、そのことはつまりPlayStation3のOSコードには、普通の技術者が理解できないコードがほかにも含まれているかもしれない、ということだ。