2038年問題
「2038年にコンピュータの認識する時刻がおかしくなるかもよ」問題だよ
UNIX時間で起きるかもしれない問題だよ
古いコンピュータだとヤバいかもしれないよ
簡単に書くよ
2038年問題(読:2038ネンモンダイ 英:Year 2038 problem)とは
1970年1月1日午前0時0分0秒(UTC
(日本時間から9時間引いた時間))からの経過秒数で日時を表現するやり方(UNIX時間)で出てくるかもしれない問題
であり
「2038年1月19日3時14分7秒(UTC)を過ぎたら、コンピュータさんの認識する時刻がおかしくなっちゃうかもしれないよ」問題のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・OS
・UNIX
・UTC
・UNIX時間
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
OSは「パソコンさんの人格に相当するソフト」です。
パソコンさんは中にOSを入れることで、はじめてパソコンとしての お仕事が できます。
「これが無いとパソコンじゃねーよ」な基本ソフトです。
※「OS」という用語が世間に広まった きっかけがパソコンなので「パソコン」と書きましたが、スマホや その他のコンピュータ類でも同じです。
UNIXは「昔、流行ったOSの名前」です。
いろいろあるOSのひとつです。
UTCは「日本時間から9時間引いた時間」です。
日本語では「協定世界時」と表現されます。
どちらかといえば「UTCに9時間足したのが日本時間」と表現した方が正確ですけどね。
あなたが日本時間に馴染みがあるなら「日本時間から9時間引いたのがUTC」と解釈した方が覚えやすいと思います。
あと
・今、標準時として使っている時間だよ
・セシウム原子の震える様を見て時間を計算するよ
のようなことも大事だったりしますが、今回の話とは関係ないのでスルーします。
興味がある方は他のところで情報を補完してください。
UNIX時間は「UTCで『1970年1月1日午前0時0分0秒』を基準として、そこからの経過秒数で日時を表現するやり方(で表現した日時)」です。
例えば、UTCで「1970年1月1日午前0時0分1秒」であれば、UNIX時間では「1」と表現されます。
UTCで「1970年1月1日午前0時1分0秒」であれば、UNIX時間では「60」です。
UTCで「2020年6月27日午前8時9分10秒」であれば、UNIX時間では「1593245350」になります。
もしもUNIX時間を日本時間に変換したければ
1.「1970年1月1日午前0時0分0秒(UTC)」にUNIX時間(秒数)を足す
2.1の結果に9時間足す
という2段階の手順を踏む必要があります。
実際には、閏秒があったりなんだりで、もう少しややこしいみたいですけどね。
そこら辺の あれやこれやは他のところで勉強してください。
以上を踏まえて、本題に入ります。
繰り返しになりますが、UNIX時間は「1970年1月1日午前0時0分0秒(UTC)」からの経過秒数で時刻を表現します。
ですから、コンピュータさんの中には「1970年1月1日午前0時0分0秒(UTC)」からの経過秒数しか保管されていません。
今の時間がUTCで「2020年6月27日午前8時9分10秒」であれば「1593245350」という数字が、コンピュータの中にある「とある箱」の中に収められているのです。
この「とある箱」ですが、どんな大きさの数字でも入るわけでは ありません。
「これくらいの大きさまでしか入らないよ」な限界があります。
この限界ですが、古いコンピュータだと「2147483647」だったりします。
「2147483648」を入れようとすると、おかしくなります。
これが意味するところは
UNIX時間で表現できるのは「2147483647」秒まで
ということです。
「2147483648」秒になると、おかしくなります。
UNIX時間で「2147483647」は、UTCで表現すると「2038年1月19日3時14分7秒」です。
UNIX時間で「2147483648」は、UTCで表現すると「2038年1月19日3時14分8秒」です。
つまり
UNIX時間で表現できるのは「2038年1月19日3時14分7秒(UTC)」まで
であり
「2038年1月19日3時14分8秒(UTC)」になると、おかしくなる
のです。
この
「2038年1月19日3時14分8秒(UTC)になると、時刻の認識がおかしくなる」問題
をカッコ付けて言ったのが「2038年問題」です。
最近のコンピュータだと「とある箱」に入る数字の限界が「2147483647」より大きくなっている場合も多いですけどね。
昔から使っているような古いコンピュータだと影響が出るかもしれません。
一言でまとめるよ
まぁ「2038年問題」って単語が出てきたら「『2038年にコンピュータの時刻がおかしくなるかもしれないよ』問題なんだな~」と お考えください。






