2038年問題とは?
2038年問題は、コンピュータシステムにおける時間管理の根本的な制約に起因する問題です。1970年1月1日を起点とする時間は、32ビット符号付き整数で表現される場合、最大値が2,147,483,647秒であり、2038年1月19日03:14:07に到達します。その次の秒でオーバーフローが発生し、値が負数に巻き戻ります。巻き戻ることにより様々な問題が発生します。

影響範囲
32ビットのUnix/Linuxシステム、古いAndroid機器、リアルタイムOS、組込み機器、産業用制御装置、医療機器、車載ECUなどで影響が発生することが考えられます。
発生する問題の具体例
2038年問題が発生すると様々な機器で、異常動作が発生すると考えられます。例えば、日付が巻き戻ることで、AV機器などの予約システムが正常に動作しなくなることが考えられますし、賞味期限を管理しているようなシステムではデータベースが破損する可能性も考えられます。また、IoT機器などでは報告されるデータの日時が誤って報告されるなど、システムに依存しますが様々な異常動作が発生すると考えられます。
2000年問題との比較
以前、2000年問題というものがありました。この頃の機器ではメモリや表示領域の節約のために「年」の部分を2桁で処理するなどを行っている機器があり、2000年を迎えたときに「年」の部分が「00」に巻き戻ることで様々なシステムに影響が発生することが考えられ、メーカ各社では確認作業を行っていました。
この2000年問題は年号の上2桁の管理による形式的な問題でしたが、2038年問題は整数オーバーフローという低レベルの問題であり、より深刻です。
対策と実施状況
2038年問題への対策としては、Linuxなどでは64ビットtime_tへの移行が有効な対策となっています。組込み機器などで使用される32ビット環境ではLinuxのような機能は無いため、別の対策が必要になります。
当社製品でも影響がある製品があり、GR-FILEが該当します。ファイルシステムでは更新日時などタイムスタンプがあり、GR-FILEでも2038年問題は存在します。GR-FILEでの対策は、ベースとなる1970年という年を変更するAPIがあり、動作時にベース年を変更することでオーバーフローの時期をずらすという方法になります。
符号付32ビットで表せる範囲は約68年ですので、例えばベース年を2000年とすることで約2068年まで正常に管理できることになります。

まとめ
2038年問題はその発生時期までまだ時間がありますが、組込み機器では長期間使用されることも多いので、今から計画的に確認された方が良いと思います。時刻という情報は普段はそれほど気にしない情報かもしれませんが、意外な場所で使われていたりします。(問題を起こすかどうかは置いておいても)時期が来れば確実に発生しますので、早めに対策しておく必要があります。
