「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

2038年問題

pointこの用語のポイント

point「2038年にコンピュータの認識する時刻がおかしくなるかもよ」問題だよ

pointUNIX時間で起きるかもしれない問題だよ

point古いコンピュータだとヤバいかもしれないよ

スポンサーリンク

簡単に書くよ

2038年問題(読:2038ネンモンダイ 英:Year 2038 problem)とは

1970年1月1日午前0時0分0秒(UTC(日本時間から9時間引いた時間)からの経過秒数で日時を表現するやり方(UNIX時間)で出てくるかもしれない問題
であり

「2038年1月19日3時14分7秒(UTC)を過ぎたら、コンピュータさんの認識する時刻がおかしくなっちゃうかもしれないよ」問題のこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

OS
UNIX
UTC
UNIX時間


について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

OSは「パソコンさんの人格に相当するソフト」です。
パソコンさんは中にOSを入れることで、はじめてパソコンとしての お仕事が できます。
「これが無いとパソコンじゃねーよ」な基本ソフトです。

2038年問題

※「OS」という用語が世間に広まった きっかけがパソコンなので「パソコン」と書きましたが、スマホや その他のコンピュータ類でも同じです。

UNIXは「昔、流行ったOSの名前」です。
いろいろあるOSのひとつです。

2038年問題2

UTCは「日本時間から9時間引いた時間」です。
日本語では「協定世界時」と表現されます。

2038年問題3

どちらかといえば「UTCに9時間足したのが日本時間」と表現した方が正確ですけどね。
あなたが日本時間に馴染みがあるなら「日本時間から9時間引いたのがUTC」と解釈した方が覚えやすいと思います。

あと

・今、標準時として使っている時間だよ
・セシウム原子の震える様を見て時間を計算するよ


のようなことも大事だったりしますが、今回の話とは関係ないのでスルーします。
興味がある方は他のところで情報を補完してください。

UNIX時間は「UTCで『1970年1月1日午前0時0分0秒』を基準として、そこからの経過秒数で日時を表現するやり方(で表現した日時)」です。

2038年問題4

例えば、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」という数字が、コンピュータの中にある「とある箱」の中に収められているのです。

2038年問題5

この「とある箱」ですが、どんな大きさの数字でも入るわけでは ありません。
「これくらいの大きさまでしか入らないよ」な限界があります。

2038年問題6

この限界ですが、古いコンピュータだと「2147483647」だったりします。
「2147483648」を入れようとすると、おかしくなります。

2038年問題7

これが意味するところは

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年問題8

この

「2038年1月19日3時14分8秒(UTC)になると、時刻の認識がおかしくなる」問題

をカッコ付けて言ったのが「2038年問題」です。

2038年問題9

最近のコンピュータだと「とある箱」に入る数字の限界が「2147483647」より大きくなっている場合も多いですけどね。
昔から使っているような古いコンピュータだと影響が出るかもしれません。


image piyo2

一言でまとめるよ

まぁ「2038年問題」って単語が出てきたら「『2038年にコンピュータの時刻がおかしくなるかもしれないよ』問題なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像065
書籍画像064


書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
あたえる人があたえられる
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践