2038年問題とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > 2038年問題の意味・解説 

にせんさんじゅうはちねん‐もんだい〔ニセンサンジフハチネン‐〕【二〇三八年問題】


2038年問題

企業活動のほかの用語一覧
コンピュータシステム:  1Uサーバー  2000年問題  2036年問題  2038年問題  5250  TSS  TCO

2038年問題

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/10 04:15 UTC 版)

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

経緯

上から、2進・十進・問題のある時刻・正しい時刻。(GIFアニメ)3時14分7秒を超えたところで負の値となり、時刻に狂いが生じる恐れがある。

コンピュータおよびコンピュータプログラムにおける時刻の表現として「UNIX時間」《協定世界時における1970年1月1日0時0分0秒からの経過秒数[注釈 1]》を採用しているシステムがある。

UNIXおよびUNIX派生のオペレーティングシステム (OS) における基幹ソフトウェア部品の多くはC言語で書かれているが、前述の経過秒数を表現する型は、現在の標準では、「time_t型」である。C言語の標準である「ISO/IEC 9899:1999」では、time_t型の範囲や精度はいずれも実装定義としている[1]。UNIXの標準 (POSIX) には「shall be integer or real-floating types.」とのみ記述があり、ビット幅および値の範囲については何らの定めも無い。

伝統的な実装ではtime_tintまたはlongtypedefによる型エイリアス(別名)とし、その型は符号付き32ビット整数型であった。このため最大値は (231 − 1) = 2,147,483,647 となり、取り扱えるのは2,147,483,647秒(≒ 68年)までに限られていた。これを前提として作成されたプログラムは、協定世界時における1970年1月1日0時0分0秒日本標準時では1970年1月1日9時0分0秒)から2,147,483,647秒を経過した、2038年1月19日3時14分7秒(日本標準時では2038年1月19日12時14分7秒、閏秒は考慮していない)を過ぎると、この値がオーバーフロー[注釈 2]、もし時刻を正しく扱えていることを前提としたコードがあれば、誤動作する。

ある実装におけるtime_tの型を変更することだけであれば、プログラム中のたった1箇所 (typedef) を書き換えるだけであるが、実際の運用では、アプリケーションプログラムにおける時刻の扱い全てが正しくある必要がある。また、すでにあるデータ構造中で32ビット固定長として割り当てられていれば、問題が発生する。たとえば、Linuxのファイルシステムであるext2ext3ReiserFSタイムスタンプは同日付までしか対応していない。

この期日以前でもプログラムで内部的にこの制限を超えた時刻データを扱おうとすれば同様のエラーが発生するため、たとえばちょうど半分を経過した2004年1月11日にはすでにATMの誤動作といったトラブルが発生した[2]。この事例ではプログラム中のある時刻と別の時刻の中間の時刻を求めるような処理で、相加平均を単純に求める


2038年問題

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/13 01:55 UTC 版)

UNIX」の記事における「2038年問題」の解説

詳細は「2038年問題」を参照 Unixでは、システム時刻の値を1970年1月1日午前0時0分0秒からの秒数で表しており、これをUNIX時間と呼ぶ。この値のデータ型time_t で、歴史的に符号つき long」と定義されている。32ビットシステムでは、2038年1月19日にこの値が1個の0に31個の1が続く最大値 (0x7FFFFFFF) となり、1秒後には1個の1と31個の0が続く値 (0x80000000) となる。するとシステム時刻は、実装によって(符号ビット無視するか否かによって)1901年または1970年リセットされる。 1970年より前の時刻UNIX時間で表すことは滅多にないため、time_t符号なし32ビット整数定義し直すという対策考えられる。しかし、それでは単に問題2106年2月7日遅延させるだけであり、時刻の差を計算するソフトウェアバグ生じ可能性がある。 この問題対処しているバージョンもある。例えば、SolarisLinux64ビット版では、time_t64ビットとなっており、OS自身64ビットアプリケーション群も約2920億年間正しく動作する64ビット版Solaris既存32ビットアプリケーション動作させることもできるが、その場合は問題残ったまである一部ベンダー標準time_tそのままにして、64ビット代替データ型とそれを使用するAPI別途用意している。NetBSDでは、次のメジャーバージョンである 6.x で32ビット版でも time_t64ビット拡張することを決定した従来32ビットtime_t使用しているアプリケーションは、バイナリ互換レイヤー作って対応する

※この「2038年問題」の解説は、「UNIX」の解説の一部です。
「2038年問題」を含む「UNIX」の記事については、「UNIX」の概要を参照ください。

ウィキペディア小見出し辞書の「2038年問題」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「2038年問題」の関連用語

2038年問題のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



2038年問題のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【2038年問題】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの2038年問題 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのUNIX (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS