2025年問題、2038年問題など時刻処理に関わる年問題の原因や影響をまとめてみた

はじめに

ハコザキです。

システムやソフトウェアは、
私たちの生活やビジネスにおいて欠かせない存在となっています。

これらのシステムが正確に動作するためには、日付や時刻の処理が非常に重要です。
しかし、システムの設計やプログラムの実装において、時折見落とされがちな問題が存在します。
それが「年問題」と呼ばれるものです。

本記事では、コンピュータの時刻処理に関わる主な年問題をまとめました。

時刻処理に関わる年問題とは?

年問題とは、問題となっている年や日付に到来すると、
社会や日常生活に大きな影響を及ぼす問題のことです。

システムやソフトウェアがその問題に対応していない場合、
日付を正しく処理できなくなり、データベースの誤作動等でシステムの不具合が発生し、
私達が生きていくうえで重要なインフラシステムがストップするリスクがあります。

主な年問題

2000年問題

2000年問題は、2000年を”00年”と認識し、
1900年の扱いになって不具合が起きるかも?という問題です。(Y2K問題)

古いシステムやソフトウェアでは、
慣例的に年月日の年号を下二桁で処理しているものが多かったそうです。
このような仕様の場合、2000年になった際は00と表記されることで、
1900年と認識され、誤作動を起こす可能性が指摘されました。

想定された影響
日付を使用するすべてのシステム(金融・交通・医療・公共など)
具体的には、製造業の製品保証期間が終了したものとみなされる、クレジットカードの有効期限が期限切れになるなど、様々な分野にわたって影響を及ぼすのではないかと話題になったそうです。

実際の影響
公には報告されていないだけかもですが、実際に重大な事故は発生しなかったそうです。
ただ、システムの改修を行うために膨大な時間と労力を費やしたといわれております。
改修したものが正常に動作しているか確認するために、1999→2000年の年越しを会社で迎えた人もいるらしいです…

2025年問題(昭和100年問題)

2025年問題は、2000年問題同様、
年数処理に起因するシステム障害が懸念される問題のことです。
この問題は昭和100年問題とも呼ばれております。

ざっくり説明すると、システム上昭和が現在まで継続しているものとして扱った際、
2025年は昭和100年にあたることになり、2桁を超えてしまい、
昭和0年と認識し誤作動を起こす可能性がある問題のことです。

想定される影響
和暦は日本固有の文化であることから、影響範囲は世界ではなく日本にとどまります。
現在でも和暦での表示が求められる、公官庁や金融機関などで導入されているシステムで対応できていない場合、混乱が発生するかもしれません…!

2038年問題

2038年問題は、UNIX時間が32ビットの上限を超えると、システムの時刻が1970年にリセットされて誤作動する可能性がある問題です。

UNIX時間とは、UTCで「1970年1月1日午前0時0分0秒」を基準として、
経過した秒数を元に日時を表現した時間
のことです。(経過した秒数はエポック秒と呼ばれる)

そのUNIX時間は、32ビットの符号付き整数で表現されております。
この32ビットの符号付き整数は最大値が2147483647と決まっています。(2の31乗-1)
つまりUNIX時間は、
UTCで2147483647秒経過した「2038年1月19日3時14分7秒」が最大値となっています。(日本時間の場合、2038年1月19日12時13分7秒)

この日時を経過した場合、表現できる日時を超え、正しい時刻が表示できなくなります。

※ 32ビットの符号付き整数とは??
32ビットの符号付き整数がわからない方のために、ChatGPTさんに質問してみました。
5歳児向けに解説してくれるのでイメージできるかと思います!

32ビットの符号付き整数についてChatGPT(GPT-4o)に聞いてみた

想定される影響
UNIX系のシステムや、それに依存するシステムで誤作動が発生するおそれがあります。
これらの影響を防ぐために、32ビットから64ビットへの移行を行う必要があります。

2004年に、34年早く2038年問題が発生した事例もありました。
電話サービスの誤請求やATMが利用できなくなるなど、影響が発生したそうです。
「西暦2038年問題」でトラブル相次ぐ | 日経クロステック(xTECH)

その他の年問題

2000, 2025, 2038年問題は比較的知っている人もいるかも知れません。
その他調べてみて気になった年問題をまとめてみました。

2022年問題

日時をyymmddHHMMの形式で扱っているシステムで、
この値を32ビット符号付き整数(最大値は2,147,483,647)に変換した場合、
2022年1月1日(2,201,010,001)にオーバーフローする問題です。

これにより、Microsoft Exchange Server(マイクロソフト製のグループウェア/電子メール製品)で不具合が発生し、一時的にメール配信が不可能となったそうです。
「2022年問題」でメール配信不能に~Microsoft Exchangeの不具合 – iPhone Mania

2036年問題

コンピュータの時刻を同期するためのプロトコルであるNTPが、2036年にオーバーフローを起こしてしまう問題です。2038年問題ではUNIX時間のオーバーフローだったのに対し、2036年問題はNTPという方式が原因となります。

~~~

10000年問題

4桁で管理していた西暦が5桁になるタイミングの問題です。
Excel,Google スプレッドシートの日付処理で不具合が生じるそうです。その他多くのシステムで影響は出そうです。

2922億7702万6596年問題

64ビットの符号付き整数の最大値です。
現在のシステムで表現できる日時の最大値だそうです。
(太陽系の寿命よりも遥かに長いことから、ここまで考慮しなくて良いと思ってます。)

おわり

今回は年問題についてまとめてみました!
10000年問題や2922億~~年問題は少々現実的ではないですが、
それ以外は割と起こるかもしれない問題だなと調べていて思いました。

日時処理はシステムにとって重要なものであり、
特定の年や日付に対しても設計・実装の段階から対策を練っておくことが必要です。