知っていると何かのときに役に立つかもしれないITに関するマメ知識。「2000年問題(Y2K)」という言葉を聞いて、年明けをサーバルームで緊張しながら過ごしたつらい経験を思い出す方もいるかもしれません。あれから四半世紀が過ぎ、あの大騒動もいまや歴史の1ページとして忘れ去られようとしています。しかし、2038年に再び時刻に関する重大な問題が懸念されていることをご存じでしょうか。
IT業界の時限爆弾「2038年問題」の正体とは?「2000年問題(Y2K)」という言葉を聞いて、年明けをサーバルームで緊張しながら過ごしたつらい経験を思い出す方もいるかもしれません。あれから四半世紀が過ぎ、あの大騒動もいまや歴史の1ページとして忘れ去られようとしています。しかし、2038年に再び時刻に関する重大な問題が懸念されていることをご存じでしょうか。
社会を混乱に陥れかねないITシステムの「2038年問題」について、その背景とリスクを解説します。
「2000年問題」というと既に25年以上も前の話なので、知らない世代も増えていることでしょう。2000年問題とはどんな出来事だったのか、少し振り返ってみましょう。
この問題は、メモリやストレージが高価だった時代の日付処理の実装方法にありました。当時は西暦を「1996」と4桁で記録せず、下2桁の「96」のみで処理する実装が広く使われていました。桁数を減らすことでデータ容量を減らし、メモリ/ストレージ容量の節約を図っていたのです。
この場合、2000年が来たとき何が起きるでしょう。年が繰り上がり「00」となると、システムは上2桁の「19」が省略されていると実装されているので、「1900年」と誤認識してしまうわけです。
こうした年(日付)の誤りは、銀行の利息計算や工場の機械など、日付に依存するあらゆるシステムに波及する恐れがありました。航空管制や電車の運行など、さまざまなインフラにも影響を与えることが懸念されました。
2000年を前にして、世界中でシステムの総点検とプログラムの修正が行われたのです。幸いなことに2000年1月1日に大規模なシステム障害が発生することはありませんでした。多くのシステムエンジニアがサーバルームでほっと胸をなで下ろしたことでしょう。
銀行のシステムを担当していた筆者の知人も「1999年の大みそかから2000年の業務開始まで、24時間体制でサーバルームに待機していた」と言います。
2038年問題は、2000年問題のように日付表示の問題ではなく、コンピュータが時刻を管理する仕組みに由来します。この問題は、多くのUNIX系OSで利用されている「UNIX時間(エポック秒、UNIXタイムスタンプ)」と呼ばれる時間の管理方法に起因するのです。
UNIX時間は、協定世界時(UTC)の1970年1月1日0時0分0秒から経過した秒数で時刻を管理します。この秒数を「32bit符号付き整数(int32)」で扱うシステムでは、扱える上限が「21億4748万3647」になります。つまり、2038年1月19日午前3時14分7秒(UTC)が時刻を表せる上限となるわけです。
この上限を超えた瞬間、値がオーバーフローして、-(マイナス)21億4748万3648秒として認識されてしまいます。その結果、1901年12月13日20時45分52秒という過去に戻ってしまうわけです。
これが「2038年問題」の背景になります。
既に多くのシステムでは「64bit(int64)」へ移行が進んでいます。64bit化することで、およそ西暦2900億年まで対応できるようになっています。
しかし依然として、2000年問題の際と同様、32bit符号付き整数を使っている古いシステムも残っています。
2000年問題は、多くのニュースで取り上げられ、世間の注目を集めましたが、2038年問題は10年以上も先ということであまり話題になっていないようです。
でも思い出してください。2000年問題のときは、インターネットが少しずつ普及し始めた頃です。いまのようにあらゆるものがインターネットにつながり、インターネットでサービスが受けられるという状況ではありませんでした。
安価なPCが提供され、一般の家庭でもPCが使われ始めたという感じでしょうか。当時は、Windows 98 Second Edition(Windows 98 SE)やWindows NT 4.0の時代です。この2つの系統が統合されWindows 2000となるのは、2000年2月のことになります。
いまやPCだけでなくスマートフォンも、一人一台以上の環境となり、公共サービスを含むさまざまなサービスがインターネットを介して受けられるようになっています。
その結果、1つのシステムの誤動作が、さまざまなサービスやインフラに波及してしまう状況となっています。特に組み込み機器では、古いライブラリがそのまま利用されて、エポック秒の64bit化に対応していないものも多くありそうです。こうした機器のプログラムを一つ一つ確認する作業には、多くの時間が必要となります。2000年問題の際の比でなく、確認と修正には多くの時間が必要となりそうです。
10年以上も先とのんびりしていて大丈夫でしょうか?
なお、この2028年問題については、立命館大学情報理工学部の上原哲太郎教授などによる論文「32bitを超えるtime_t型をもつ環境における2038年問題の検出手法の提案」が詳しいので、システム管理者は読んでおくとよいでしょう。
Copyright© Digital Advantage Corp. All Rights Reserved.