#055 2000年問題を生んだ真の原因?

1999/03/31

<前目次次>


 2000年問題という言葉がようやく世間一般にも浸透してきたようだ。知らない人のために一応説明しておくと、西暦2000年を迎える前後に、コンピュータやマイクロチップなどが誤動作を起こし、それが連鎖反応的に現在の人間社会に深刻な影響を与える可能性がある、という問題である。なぜそうなるかと言うと、こういった機器を動かしているプログラムの一部が、時間の西暦表記を2桁で処理しているために、桁上がりが生じる2000年を迎えたときに1900年と誤解し、時刻順序判断や日数計算に誤りが生じるためである。

 さてここまでは色んな書籍や雑誌などで説明されているだろうから納得してもらうとして、問題はそのあとに来る当然の疑問、すなわち「なんで2桁なんかにしたんだ。こんなことは前からわかっていたことだし、初めから4桁にしておけばすんだことではないか」ということである。これに対する答えとしては、よく「当時はメモリなどが高価であったため記憶装置を節約するため云々」という説明が書いてあることが多いが、この説明は何となく腑に落ちない。いかにも「仕方がなかった」と言ってるようで言い訳がましいし、メモリ環境がそれほどシビアでなくなって以降もなお2桁でコーディングされたプログラムがよく見られる。どうして世の中のプログラマが4桁にすればいいところをわざわざ2桁の数字で扱うようにプログラムを書いたか。私はこれにはもう少し根の深い心理的な理由があるように思えてならないのである。それは以下のことである。

 人間には2桁の数字が一番わかりやすいのである。

 これだけでは何のことやらわからないので、具体例を挙げて説明してみる。

 身近な例では学校の試験の採点などがそうだ。大抵の場合満点は100点となっている。そしてそれに満たない点数は概ね2桁の数字で表されることになる。

 割合を表す単位でもっともよく使われているのは%(パーセント)であろう。日本語で言えば百分比である。物事を100に分けて、その割合を見るというのは一番わかりやすいためであろう。

 物理単位でも、だいたい100段階、つまり2桁になるように適当な単位を使うようになっている。たとえば我々がよく使う摂氏という温度単位は、もともとは水の融点を0度、沸点を100度として決めたものである。また、アメリカなどでよく使われている華氏の場合は、制定当時の地球上の最低気温と最高気温をそれぞれ0度と100度としたものであり、いずれの場合でも、人間の生活する環境の気温が大体2桁で表されるようにして決めてある。

 気圧の単位は現在ではヘクトパスカルというわかりにくい単位を用いている。もともと「パスカル(Pa)」が、圧力を表す標準の単位で、「ヘクト(h)」が100倍を表す接頭語なのだが、平均海面気圧をこれで表すと1013という数字になる。これは一見4桁であるが、通常の気圧の変動幅を見るとせいぜい940〜1040であり、全体で100刻みくらいの幅になっている。実際業界では、頭の1000を省いて「13ヘクトパスカル」という言い方ですませる場合も多い。

 そして年以外の時刻表現をみても、月は1〜12、日は1〜31、時は0〜23、分と秒は0〜59と、みんな2桁を越えない数字になっている。

 これらからわかるように、人間はいろんな数値を2桁ですませるように単位を決めたりするようなのである。また、たとえ4桁で表記されているものでも、下2桁だけを取り出してそれで話を簡単にしようとするがあるのである。プログラムを記述するプログラマも人の子であるが故に、メモリが高価だとか云々言う以前に、おのずと無意識に年を2桁に省略してプログラムを書いてしまうケースが多かったのではないだろうか。そしてその結果、あまたのプログラムが2000年になると何が起きるかわからない、という2000年問題を招いたのであろう。以上が私の持論である。

 まあそんなことを言ってみたところで結局何の救いもないばかりか、この2000年問題に対してますます無責任な言い方になってしまうのだが、ともかくそういう次第で2000年になると何が起きるのかわからないけど、何かが起きることは間違いないのである。しかも実は問題となるのは、2000年1月1日に限った話ではなく、今後さまざまな時点でこういったコンピュータの日付処理に起因する誤動作が起きる可能性があるのである。次回は2000年以外にも存在する「X-Day」となる可能性のある日付についていくつか紹介してみようと思う。


<前目次次>