見出し画像

「2025年の崖」よりもっと深刻な「2038年問題」

はじめに

以下のような記事がありました。

昨年末あたりから「2038年問題」を扱う記事が増えてきた印象です。

以前の記事で「2025年の崖」について触れましたが、今回はこの問題について考えていきます。


そもそもどういう問題なのか

2038年問題はどういう問題なのか?については、上述の記事に加え、すでに様々なところで解説がなされています。ここではその引用に留めます。

2038年問題(にせんさんじゅうはちねんもんだい)は、協定世界時(UTC)2038年1月19日3時14分7秒(日本標準時の場合、1月19日12時14分7秒)を過ぎると、コンピュータが誤動作する可能性があるとされる年問題。

https://ja.wikipedia.org/wiki/2038年問題

コンピュータの内部で日付・時刻を表現する主な方法に「UNIX時間」という単位があります。ここで表現できる時刻が、日本時間2038年1月19日12時14分7秒に最大値を迎えてしまうのです。
そもそもUNIX時間は、1970年1月1日0時0分0秒からの経過秒数で時刻を表しています。これが2038年1月19日12時14分7秒になると、日付・時刻を示す値が2進数の32桁目に突入してしまうのです。しかし、32桁目は符号を示す位であるため、1970年1月1日0時0分0秒から「マイナス2の31乗秒(約21億秒)」、つまり1901年12月13日20時45分52秒として認識されてしまうのです。

電車が止まる可能性も?実は深刻な「2038年問題」 社会インフラや家電など広範囲で影響大の恐れ | 東洋経済Tech×サイバーセキュリティ | 東洋経済オンライン
2038年問題の概要
(https://xtech.nikkei.com/atcl/nxt/column/18/00989/121000165/ より)

何故「問題」だと捉えられないのか

これだけ多くの説明がされているのに、2038年問題に関しては、あまり「問題」だと捉えられている印象がありません。それは何故なのでしょうか? 原因としては

  • そもそも用語が難しくて概念が理解できない

  • 概念はともかく、「具体的にどう困るのか」よくわからない

  • 随分先のことなので、今は気にしなくてよい気がする

などが考えられます。しかし、それらをさらに突き詰めると

自分に何ができるのかよくわからない

ということに行き着くと考えます。2038年問題は対象があまりにも根源的かつ広範であるため、目先のTodoとして今の自分に何ができるのだろうと考えてしまいます。この点も大きな問題と言えるでしょう。

「ITの知識をつける」だけでは解決しない

ここで、先ほどのWikipediaなどの文章を改めて読んでみます。これらは確かにすべて内容は正確です。しかし、上記の表現を正しく理解できる人はどれほどいるのでしょうか?

たとえば、「UNIX時間」一つとっても難しいと思われます。1970年の1月1日を起点とする…と言われても

「なぜそんな中途半端な時点を『起点(エポック)』にしたの?」

という素朴な疑問も沸くでしょうし、それらを正しく理解するにはUNIXやC言語などが成立する1970年代の「歴史」を学ぶ必要があります。

また、

またC言語でUNIX時間を扱う「time_t」の変数を64ビットに定義していたとしても、その値を利用する他の変数の定義が32ビットにダウンキャストされていると、2038年問題が発生する。2038年問題に対処するには、time_tだけでなくそれをキャストした他の変数についても64ビットなどに定義し直す必要がある。

対応が難しい「2038年問題」、人気OSSでも対策はまだという不安な実態 | 日経クロステック(xTECH)

この辺をみても、2038年問題を理解させるには、結局「time_t」という概念を理解させることが重要であることがわかりますが、そもそも

「time_t」という概念を理解させること自体が大変

です。さらに言えば、それらの概念を正確に理解しても、その知識はあくまで「前提」であって

この問題のソリューションを導き出すのに直結しているわけではない

ということは非常に重要です。極端に言えば「マニアの知識」であって、現場が欲している解決手段ではないのです。

おわりに ~ 我々はどうしたらよいのか

今回は2038年問題について、何が問題なのかについて考えてきました。2038年問題を「問題」として捉えられない理由は「自分に何ができるのかよくわからない」と示しましたが、あくまで2038年問題はシステム的な問題であるため、究極的には

古い32bitの時計を持つ実装を駆逐すれば解決

という意味では、解決方法はある意味クリアです。

さしあたって、今の自分にできることは、このような記事を共有し、まずはリテラシーを上げていくことからなのかなと思います。この点については引き続き草の根でやっていけたらと考えています。

(つづく)


いいなと思ったら応援しよう!

#ヒデ @hideh_hash_845
課金してくれるととても嬉しいです。シェアしてもらっても嬉しいです。「いいね」も嬉しいですし、フォローも嬉しいです。要するに、どんなことでも嬉しいです。