IPよもやま話
I(愛)ちゃんとP(パパ)とO(小野田君)の会話が続きます。
今日は「コンピュータの2038年問題」の話よね。
今から20年以上先の話ですね。
何が問題なの?
はいはい。
愛ちゃんは知らないかもしれないが、コンピュータには年代に応じて問題があったんだよ。図1には2038年問題も一緒に書いたがね。
1つぐらい知ってるかな?
図1 コンピュータの年度問題
2000年問題は聞いたことがあるけど中身は忘れたし、2025年は勿論2038年問題は、まるっきり分りません。
小野田君はどうかな?
いいえ、私も子供時代でしたし、よく分りません。
そうか、ジェネレーションギャップだね。
2000年問題とはね、
1980年代までの古いコンピューターやプログラムでは、年計算などの負担を軽くする目的で西暦の表記を下2桁でのみ行っていたんだ。
そのために、2000年になると「00年」となり、1900年と誤って認識されるため、データの新旧の比較が正しくできなかったりすることで、誤動作する恐れがあったのさ。最悪はエラー終了となってコンピューターが動作不能になる可能性もあったんだ。
それって、IPv4が32ビットで出来ていてアドレスの枯渇を招いて、128ビットのIPv6にしたように「設計者の見通しの甘さ」だったのと、似て非なるような現象ですね。
うん、そうともいえるね。
それにね、また、2000年は閏年なんだが1900年は閏年ではないため、2000年2月29日が正しく処理されない恐れもあったんだよ。
私は、まだ係長時代だったが、職場で大騒ぎしたのでよく覚えているんだが、不測の事態に備えて年末年始に会社に泊まりこんだ記憶があるよ。
図2 2000年問題は
エーッ、本当?
それでどうだったの?
いやいや、「大山鳴動、ねずみ一匹も出ず」だったね。
それ「大山鳴動してねずみ一匹」(*1)でしょう?
大騒ぎしたのにねずみ一匹出ただけでしょう?
どうして解決したの?
多くの企業や研究所で早めに対策を取ったこともあったし、すでに4桁もしくは他の方法で年を入力していたケースも少なくなくてね、特に大きな事件や事故は起こらなかったんだ。
2025年問題は、どんなことですか?
一般的に「2025年問題」と言うと、いわゆる団塊の世代が後期高齢者(75歳以上)になり、国民の3人に1人が65歳以上、5人に1人が75歳以上と言う超高齢化社会が訪れて、いろいろな社会問題が起こることを指していますよね。
図3 2025年=昭和100年
うん、そうだね。
ヒントを出そう。2025年は昭和何年になるのかな?
昭和100年です!
ほほう、凄いね、即答だね。
いま西暦と和暦ではどちらが多く使われているかな?
殆どの分野で西暦ではないかしら。
今年はカレンダーをいくつか買ったけど多くは西暦だったし、和暦など書いてなかったものもあったわ。
うん、そうだね。
でも、行政関係の書類や保険・金融関係の書類は、今でも和暦が使用されているので、関連データも和暦の下2桁で入力(昭和からの通算年で入力。例えば平成29年なら昭和92年なので『92』と表記。))していることが少なくないんだね。
あー、そうか。
そのために、西暦の下2桁で入力していた企業が2000年問題を抱えたように、昭和100年を迎える2025年に『2025年問題』またの名を『昭和100年問題』を抱えてしまうのではと心配しているんだ。
しかし、これもすでにほとんどの企業や個人で対応済みのことが多いとされているからあまり心配ないともいえるんだ。2000年問題が持ち上がった時点で昭和100年問題に気付き、2桁表記から4桁表記もしくは他の方法による表記に切り替えているケースが多いからね。
なんだ、それじゃ「2025年問題も大山鳴動」の口なのね。
いやいや、行政機関や金融機関のデータやアプリケーションソフトウェアは膨大な数なんだ。ハードウェアは定期的に更新している団体も、ソフトウェアやデータはそのまま継続使用していることが多いので、対応に相当な時間と費用がかかる場合があるから、心配は心配なんだよ。
まあ、時間があるから早目の対策をすれば大丈夫だろう。
2038年問題は、どうなのでしょう?
図4 2038年問題は?
2038年問題は「コンピュータの一部のOSやプログラミングの問題」なんだよ。
2000年問題や2025年問題は、いずれもデータやアプリケーションソフトウェアの問題だったので、2桁表示の暦を書きかえれば(2000年問題は、2000年がうるう年とカウントされないことによる問題も含んでいたが)、ほとんどのケースはクリアすることができたんだ。
しかし、2038年問題は、そのような『書き換え』によって回避できる問題ではないんだ。
古いパソコン(UNIXやC言語)では、時刻管理が1970年1月1日午前0時からになっているんだよ。
このように一部のOSやプログラミング言語処理系の仕様によって、西暦2038年以降の日付や時刻を正しく扱えなくなる、と言うことなんだね。
経過秒数がこの上限を超えるのは具体的には2038年1月19日午前3時4分8秒(日本時間午後12時14分8秒なんだよ。
じゃ、どうしたらいいの?
一番簡単なのは、2038年までに新しいパソコンに変える事だ。
32ビットマシンは64ビットマシンに移行すれば対策になるんだよ。
最近のOSや言語処理系では、対策として時刻の管理を64ビットの符号付整数を利用しており、これを1970年1月1日午前0時からの経過秒数として使えば西暦3000億年程度までは、このような問題は起きないんだ。
そうかぁ。
でも、20年も先の話だから、その頃は今使っているパソコンは、当然買い換えているでしょうから気にしないでもいいんじゃないの?
うん、そうとも言えるが、問題があることは十分認識していないとね。
2038年を待たずに問題を起こしているケースもあるんだよ。
うそー!
どういうこと?
うん、君達のパソコンの世界ではなく、企業のLANネットワークの話だが、2004年に起きて広く報道もされたんだ。23行もの銀行でソフトの内部に、時刻の2倍に足し合わせる処理があって、ちょうど1970年と2038年1月19日の2分の1を超えた2004年1月11日の朝から、2038年問題が顕在化して、システムが正常に稼動しなくなったんだね。
この他にも20行の銀行でATMが一部正常に利用できなったのも2038年問題だったそうだ。
そうでしたか。
企業のネットワーク管理者は注意しないといけないですね。
突然思い出しましたが、古い話ですがPBXの世界でも「大容量PBXのシステム構成」で、メモリが高価だった初期の頃に、二重化構成(2N)ではなく、オーバーレイ方式(N+1)の構成にした例もあったと先輩から聞きました。
その「N+1方式」は、NTT(電電公社)の局用交換機で採用されていましたね。
そうだ。
ハードの節約をソフトでカバーした例だね。
IPv4の問題も、PBXのシステム構成も、コンピュータの2000年、2025年、2038年問題もそうだが設計者は神様ではないので、遠い未来まで予見しきれないことがあるということだね。
よかった。
私のパソコンは2025年問題は大丈夫だし、2038年には当然新しいのに変えてるから問題ないってことが分ってホッとしました。
ホッとしたところで、次回のテーマですが、小野田君何かリクエストは無い?
そうですね。
先日「遠隔操作家電」という用語を聞きました。
何のことか知りたいです。
そうか。
それは小野田君が調べて報告して欲しいところだが、4連投は気の毒だから、仕方がない、私が担当しよう。
有難うございます。