Bug Collection
Software Bugs

2000 年対応のインチキ

西暦 2000 年になるとコンピューターが誤作動してしまうというのが、いわゆる西暦 2000 年問題 (y2k) であるが、既存のソフトウェアに対して施されるその対策、すなわち「2000 年対応」とはどんなものか。 2000 年問題の原因は、そうしたソフトウェアがこれまで本来 4 ケタの西暦年号をその下 2 ケタだけを用いて表現してきたことにあるのだから、単純に考えるならば、西暦年号を本来の 4 ケタで表現するように修正すればよいということになる。 しかし、世間で実際におこなわれている「2000 年対応」と称する修正の多くは、そのような抜本的な修正ではない。

既存のソフトウェアに対して 2000 年対応と称して施されている実際の修正は、どう考えても「インチキ」としか言いようのない実に姑息なものである。 すなわち、西暦年号は依然として下 2 ケタのままなのである。 西暦年号を 4 ケタにせず 2 ケタのままで、いったいどうやって 2000 年問題を回避するのかと思われるかもしれないが、そこがまさに「インチキ」なのだ。

まず、1900 年代の "紀元" を適当に決める。 たとえば 1970 年とか 1985 年とか 1990 年とか、とにかく切りのいいと思われる年を適当に決め、その年から 1900 年代が始まるものとする。 ここでは仮に 1970 年をその "紀元" にしたとして話を進めよう。 そうすると、1900 年代というのは 1970 年から 1999 年までということになる。 プログラム内部では年号は 2 ケタしかないのだから 70 から 99 までである。 そして、2 ケタで表現できる数値の残り、0 から 69 までは 2000 年代を表わすものとする。 すなわち、2000 年から 2069 年までである。 これで、2 ケタの数値で 1970 年から 2069 年までが表現できることになる。 要するに、これまで 1900 年から 1999 年までを表現してきた 2 ケタの数値を、適当に定めた "紀元" を基に解釈し直すことによって、2000 年が誤って 1900 年と認識されてしまう問題を回避しようというわけである。

このような修正の仕方は、しかし、問題を先送りにするだけの「その場しのぎ」のものでしかない。 根本的には何の解決にもなっていない。 100 年と経たぬうちに、まったく同じ問題が起こることは火を見るよりも明らかである。

しかも、1900 年代の途中に "紀元" をおいて解釈し直すだけの修正によって先送りにされた問題は、その "紀元" がソフトウェアごとに異なるため、2000 年問題のような一斉に起こる問題ではなくなっているのである。 2000 年問題の場合は 2000 年という分かりやすい年に起きることがはっきりしていて、早くから世間に喧伝もされたため、対策の腰を上げるのも比較的容易であったと言えよう。 これに対して、先送りにされた問題は、今度は一斉に起きるものではないために世間への周知が難しく、そうしたソフトウェアを抱えている企業が問題をどれだけ認識できるか甚だ疑問である。 2000 年問題へのインチキ対応は、単に問題を先送りにしただけではなく、問題の解決をさらに難しいものにしてしまった可能性が高いのである。

現在使われているソフトウェアの寿命はそんなに長くはない、問題が起こる前にすべて新しいものに置き換えられるから大丈夫だ——と言う人がいるかもしれない。 だが忘れないでいただきたい。 そうした考え方が 2000 年問題の原因の一つとなったことを。 ソフトウェアの寿命は予想外に長いのである。 こう考えていくと、プログラム内部で扱う西暦年号を 4 ケタに拡張するだけでは不十分であることが分かる。 なぜなら、すぐに西暦 10000 年がやってくるのだから。

うがった見方をすれば、2000 年問題へのインチキ対応は、ソフトウェア業界の陰謀なのかもしれない。 2000 年対応でひと儲けしたソフトウェア業界が、その際に修正した同じ部分を、今度は 20xx 年から 21xx 年までと解釈し直すように修正することで、再び儲けようという企みである。 もっとも、2000 年対応の費用を、そんな問題のある製品の製作者が負担しろという訴訟が起こされているから、その訴訟の行方によっては、この企ては期待どおりの結果にはならないかもしれないが。

(1999/08/09)

【追記】

上の文章の公開より 4 か月以上も前に、すでに西暦 10000 年問題 (y10k) を扱った RFC が公開されていたということを、かなり後になってから知った。 今回、その RFC を翻訳したのでリンクしておく。

RFC 2550: Y10K and Beyond (日本語訳)

この RFC 2550「Y10K and Beyond」は、1999年4月1日、つまりエイプリル・フールに発表されたいわゆる「ジョーク RFC」ではあるが、その内容は必ずしもふざけたものとは言い切れない。

(2001/01/14)



1999/08/09 公開
2006/03/21 更新
面独斎 (Mendoxi)
mendoxi@cam.hi-ho.ne.jp