2038年問題は何が起きるの?世界中で誤作動?預言者もいた?

コンピュータが誤作動を起こす可能性があるとして「2038年問題」が話題となっています。UNIX系OSで発生すると言われている「2038年問題」の原因や対策、その他2038年付近に発生すると言われている様々な予言などについてご紹介したいと思います。

2038年問題を分かりやすく解説!2038年1月19日に世界中で誤作動?

geralt / Pixabay

2038年問題とは一体何なのでしょうか?ここでは2038年1月19日に世界中で誤作動が発生すると言われている「2038年問題」の仕組みについて紹介したいと思います。

2038年1月19日にコンピューターの誤作動?

geralt / Pixabay

2038年問題とは、2038年1月19日を過ぎてしまうとコンピュータ内の時刻がマイナスとなり、時刻を条件として動作しているコンピュータが誤作動を起こしてしまう可能性があるという問題です。

「UNIX時間」を使用しているシステムのエラー?

geralt / Pixabay

2038年問題は「UNIX時間」と呼ばれる、協定世界時における1970年1月1日0時0分0秒からの経過秒数を採用しているコンピュータにて発生する恐れがあります。

2,147,483,647秒経過するとオーバーフロー?

Alexas_Fotos / Pixabay

UNIX時間は32bitで構成されています。bitとは0と1で構成される2進数であり、32bitの場合は32個の0または1で数を表します。nbitで表現することができる数字の最大は2^n-1です。

UNIX時間は「time_t型」が使われています。1桁目が正負を表すbitであり、2桁目以降が値を示すbitとなっています。つまり、time_t型で表すことができる数の最大は2^31-1となります。

これを計算すると2,147,483,647秒となります。この値を超えてしまうと1桁目のbitが変わってしまい(オーバーフロー)、マイナスの値となってしまいます。

日本時間だと2038年1月19日3時14分7秒

cegoh / Pixabay

オーバーフローの閾値である2,147,483,647秒に到達するのは日本時間では2038年1月19日3時14分7秒です。

この時間を過ぎてしまうとオーバーフローが発生してしまいコンピュータが誤作動を起こしてしまう可能性があるのです。

Linuxのファイルシステムは対応できない?

ここまで読んで聡明な読者であれば「なんだ、bit数を増やせばいいだけではないか」と思われているかもしれません。対策としてはその通りですが、実際にはそう簡単にいきません。

例えば、既にあるデータ構造中で32ビット固定長として割り当てられてしまっている場合に問題が発生してしまいます。

Linuxのファイルシステムを例に挙げると、ext2、ext3、ReiserFSといったタイムスタンプは同日付までしか対応していません。こうしたものまで含めて全て対応する必要があるのです。

Javaの場合はどうなる?

jamesmarkosborne / Pixabay

Javaの時刻はlong関数を利用しています。これは符号付64bitなので、time_t型よりもはるかに大きな値まで取り扱うことが可能です。

UNIX時間よりも細かなミリ(1000分の1)秒単位で管理していますが、それでも関数がオーバーフローするのは約3億年後であり、全く問題ないと言えます。

これにより何が起きてしまうのか予想がつかない?

RobinHiggins / Pixabay

では2038年問題が発生した場合、具体的にどのようなことが起こってしまうのでしょうか?実は2038年問題が与える影響の詳細を皆把握することができていないのです。

2038年から突然1970年に変わってしまうため、パスワードの有効期限が切れてしまい利用することができない、などは想定されています。

しかし、もっと深刻な例では銀行の預金がおろせない、預金残高が0となってしまうといった問題まで発生する可能性があると言われています。

2038年問題をわかりやすく言うと時計が1周してしまう?

obpia30 / Pixabay

time_tが2038年でオーバーフローしてしまう、というのはどういうことでしょうか?これは時計が1周してしまうことに似ています。23:59から1分進むと0:00になりますよね?

当然日付が1日進むので「次の日」ということが分かりますが、もし日付という概念がなかったらどうでしょう?「いきなり1日前にタイムスリップしてしまった」と思ってしまうはずです。

1970年~2038年という非常に長い時計が一周し、「1970年に戻っちまったぜ!」とコンピュータが勘違いするのが2038年問題です。(実際は負の符号をもつため、1970年に戻ったあと時が遡ります)

2038年問題の対策や解決策はあるの?

qimono / Pixabay

かつて話題となった2000年問題をはるかにしのぐ影響を与える可能性がある「2038年問題」ですが、対策・解決策はあるのでしょうか?

ここでは2038年問題の対策・解決策についてご紹介したいと思います。

32ビットから64ビット整数型に変更?

ralfsfotoseite / Pixabay

2038年問題の仕組みはbit数が不足していることによりtime_tがオーバーフローしてしまうことに起因するものでしたね。つまり、bit数を増やすことによって回避することが可能です。

32bitから64bit整数型に変更することではるかに多くの数を表すことができるようになります。

それにより西暦3000億年まで使用できる?

3093594 / Pixabay

64bit整数型を利用することでどこまでオーバーフローせずに利用が可能となるのでしょうか?64bit整数型の場合、6^63-1=9,223,372,036,854,775,807秒まで表現可能です。

これを西暦に換算すると約西暦3000億年ごろまでオーバーフローせずに利用することが可能です。そのため、オーバーフローに関する問題は考える必要がなくなります。

32ビット整数型を符号なしにしても回避できる?

422737 / Pixabay

もしもbit数を32から増やすことができない場合、「1桁目は正負を表すbit」である「符号あり整数型」から、「1桁目も値を表すbit」とする「符号なし整数型」とすることで回避可能です。

たかだか1桁しか増やしていないように見えますが、表現できる数がおよそ倍まで増えるため符号あり整数型に比べて多くの値を表現することが可能です。

しかし、2106年2月7日までしか使用できない?

Alexis / Pixabay

しかし、符号なし整数型を持ってしても表現できる値の最大は2^32-1=4,294,967,295秒までです。

これを西暦表記とすると2106年2月7日6時28分15秒まで表現可能であり、100年後のエンジニアはまた同様の問題を解決しなければいけません。

家のパソコンはどうなる?

Pexels / Pixabay

家のパソコンも32bitOSを利用している場合は同様の現象が発生します。そのため、2038年問題を解決するためには2038年までに64bitOSへのバージョンアップが必要となります。

現在のOSはほとんどが64bitOSであるため、通常利用している分には家のパソコンが2038年問題を引き起こすことはないと思われます。

ちなみに、WindowsXPやWindows7などの32bitOSでシステム日付を2038年1月20以降に変更するとマウスなどが全く利用できないという不具合が発生します。

2038年問題により起きる影響とは?

darksouls1 / Pixabay

2038年問題により、コンピュータが誤作動を起こすことで一体どのような問題が発生するのでしょうか?想定される影響についてご紹介したいと思います。

ミサイルの誤発射?

SpaceX-Imagery / Pixabay

ミサイルの発射を検知する「早期警戒システム」の誤作動により、迎撃用としてミサイルが誤発射されてしまうという問題です。これにより他国からも迎撃用ミサイルが発射され、戦争に発生する可能性があります。

たった一桁の2進数が世界戦争に発展するかもしれないと考えると非常に恐ろしいですね。2000年問題の際も同様の問題が提起されており、戦略安全センターが一時的に設立されました。

世界の流通システムがストップする?

Tama66 / Pixabay

今や世界中の流通はコンピュータ頼りになっています。2038年問題が発生することにより配達日などが全て狂ってしまい世界中の流通がストップしてしまうかもしれません。

スマホも使えなくなる?

nvtrlab / Pixabay

androidやiOSはUNIXベースOSであるため2038年問題を引き起こしてしまいます。現にこれらのOSを採用しているスマホでは2038年1月1日以降を選択できないようになっています。

2038年までには解決されるとは思いますが、仮に解決されなかった場合、2038年問題が発生してスマホが利用できなくなってしまうと思われます。

地デジも見れなくなる?

manbob86 / Pixabay

地デジを視聴するために必要不可欠な「B-CASカード」も32bitで日付が設定されているため、2038年問題により地デジが視聴できなくなります。

2038年までには地デジに変わる形態を提供できないとテレビを見ることができなくなります。かつての地デジ移行の時のように買い替えが必須となるのでしょうか?

windosで日付を2038年1月20日にすると誤作動になる?

12019 / Pixabay

前述のとおり、32bitOSであるWinodws XPやvista、7の32bit版ではシステム日付を2038年1月20日に設定すると誤作動を起こします。

日付を変更したとたん、画面がフリーズしマウスもボタンも聞かなくなってしまうという現象が発生するようです。復旧に数十分を要するそうなので、気軽に試してみるのはやめましょう。

2036年問題も発生してくる?

geralt / Pixabay

また、2036年問題というのもあります。これは世界中のコンピュータが時刻同期しているNTPの時間によるものです。

NTPは1900年1月1日を起点とした32bitの符号なし整数です。4,294,967,295秒までカウントすることが可能となりますが、これを換算すると2036年2月6日6時28分16秒となります。

この時刻を過ぎてしまうと1900年1月1日にリセットされてしまいますが、これによる影響は全く未知であり何が起こるか分かりません。

2000年問題よりも深刻?

TheDigitalArtist / Pixabay

2038年問題はOSに組み込まれている仕組み自体が問題であること、中途半端な時間であるためイメージが付きにくいことなどから対応難易度が2000年問題と比べて非常に高いです。

対策に必要な人員も2000年問題より多いと言われており、2000年問題よりも深刻な課題であることが分かります。

すでに2004年1月11日に誤作動が起きていた?

Tumisu / Pixabay

MAX値の半分は「1,073,741,824秒」であり、これは2004年1月10日13時37分4秒です。そのため「期間を2で割る」ような処理が発生するシステムでは2004年問題が発生しました。

ATMの誤作動トラブルがあった

3dman_eu / Pixabay

2004年1月11日にATMの誤作動が発生しました。これは上記の2004年問題が原因であると言われています。

KDDIの誤請求もあった

JESHOOTS-com / Pixabay

2004年問題に関連してKDDIでも電話サービス料金を一部誤って請求してしまったというケースが発生しました。

他にもいろいろ話題に!Siriが予言?未来からの予言者?地震?

johnhain / Pixabay

ここでは2038年問題とも絡んだ予言についてご紹介します。あのSiriまでもが人類滅亡を予言しているというから恐ろしいですね。

NEXT Siriが人類が滅びる日を予言?