Home サイテックジャーナルTOP

2000年問題(その1)
1999年8月22日午前9時に何かが起こる!?


 コンピュータの2000年問題については,テレビや新聞でみなさんご存じだと思います。簡単に説明すると(ご存じの方は適当に読み飛ばしてください),例えば,私たちが1999年8月18日をあらわすときに,よく先頭の「19」を省略して「’99.8.18」と書きますね。コンピュータでも同じように「990818」と6桁の数字で日付を管理する場合があります。

 この書き方で来年2000年8月18日を表すと「000818」となります。人間の場合,「’00.8.18」を見ると,これは2000年8月18日を表していると認識します。周りの状況や話の流れから,省略されている先頭の2桁は「19」ではなく「20」だな,と判断するわけです。

 コンピュータはこんな判断が苦手です。うまく2000年だと判断できない場合があります。1900年8月18日と判断してしまうことがあるのです。コンピュータは全く融通がききません。「つうと言えばかあ」とか「あうんの呼吸」とか「いつものあれ」なんてことを期待してはいけないのです。

 コンピュータが間違えて判断した場合いったい何が起こるのか。停電になるとかお金がおろせなくなるとかエレベータが止まるとか飛行機が落ちるとか……,いろいろいわれていますが,これについてはいつか(2000年になる前に)レポートすることにします。


なぜこんなことになったの?

 2000年問題の話をすると必ずと言っていいほど同じ質問をされます。西暦2000年が来ることは分かっていたはずのに,なぜ今になってこんな問題がでてくるの?,という質問です。正しい質問です。2000年が来ることはみんな知っていたし,「年」を2桁で管理していては2000年になったら困ることも,そんなに想像し難いことではないように思えます。少なくとも,プログラマ全員が,2000年になる前の年の夏に空から何とかの大王が降ってくるので2000年以降のことは考えなくても良いと考えていた,ということはないでしょう。

 ところが,この質問に対する納得できる回答を聞いたことがありません。昔(だいたい1980年代以前)のコンピュータは,処理能力が低く,またデータを記憶するメモリーの値段が高かったので,できるだけデータ量を減らす必要があったため,本当は8桁で管理したかったのだけれども先頭の「19」を省略した6桁で管理することにした,というのが一般的に言われている原因です。

 しかし本当の理由は,2000年のことは現実の問題として考えていなかった,というところではないかと思います。夏休みは8月31日までだということはみんな知っているのに,毎年お盆が過ぎてからあわてて宿題を始めるのと同じです(私だけ?)。

 さらに悪いことに,夏休みの宿題は必ずやらなければならないことを全員知っていますが,自分が作ったプログラムが西暦2000年以降も使われつづけて2000年を迎えるときに問題が発生するということは,全員が認識していたわけではないようです。2000年まで使われるなんて思っていなかったとか,2000年になる頃には誰かがなんとかしてくれるだろうとか,そのころには新しい技術が開発されて問題にはならなくなっているだろうとか,そのように考えていた人が多かったのではないでしょうか。私たちが特に意識せずに「’99.8.18」と書くように,あまり深く考えずに6桁で管理するプログラムを書いていた人もいたかも知れません。

 でもみなさん,プログラマの人たちを責めないでくださいね。夏休みの宿題と同じで,問題が起きてからいろいろ言うのは簡単ですが,当時この問題を実感し対処することは,理屈では分かっていても簡単ではなかったのですから。


1999年8月22日午前9時に何かが起こる!?

 来ることが分かっているのに対処できなかった問題は,夏休みの宿題や2000年問題だけではありません。今,カーナビ問題が話題になっています。

 カーナビはGPSというシステムを使っています。非常に簡単に説明すると,複数の人工衛星から送られてくるデータを自動車に付けたアンテナで受信し,そのデータから自動車の現在位置を計算しています。人工衛星から送られてくるデータには日付に関するデータが含まれています。

 この日付データ,通常私たちが使っている××年××月××日という形式ではなく,ある基準日から第○○週目,という形式になっています。この第○○週目の○○は,本来無限に続くはずなのですが,GPSでは0(ゼロ)から1023までしか数えることができないようになっています。1023の次は,1024ではなく,0に戻り,1,2,…,とまた1023まで増えていくのです。第0週目から第1023週目までを1周期として繰り返し数えていくのです。

 ある基準日とは1980年1月6日です。1023週目,つまり1周期の最終週が1999年8月15日の週です。この最終週の翌日,つまり1999年8月22日に第0週目に戻ります。このときデータの不整合が起こります。本当は第1024週目なのにデータが第0週目になってしまうからです。この日付データはグリニッジ標準時を基準にしています。日本標準時はグリニッジ標準時より9時間進んでいるので,問題となる時間は1999年8月22日午前9時なのです。

 この時間になると,古いカーナビに問題が発生する場合があります。例えばパイオニアの「カロッツェリアナビゲーション「マイコンIC」交換実施について」によると,全く起動できないものもあるようです。8月22日は日曜日です。カーナビを使って旅行に行く人は,途中で迷子にならないよう,使っているカーナビが大丈夫かどうかホームページなどで確認されることをおすすめします。

 ところでこのGPSシステム,カーナビ以外にも広く使われています。船舶や航空機にも使われていますし,ミサイルにも使われています。もともとこのシステムは米国国防総省が開発したもので,1991年の湾岸戦争では巡航ミサイル「トマホーク」等が使っていました。

 8月22日日曜日の午前9時,なにも起こらなければいいのですが...。


 このレポートに対する問い合わせ等は,サイテックシステム 大坪までお願いします。


参考文献
   「何がどうなる? どうする? 2000年危機」(日本実業出版社)
   日本経済新聞 平成11年8月17日朝刊
   佐賀新聞 平成11年8月9日朝刊

1999.8.18 Reported by 大坪和久

Home サイテックジャーナルTOP