コラム

2038年問題

2009年8月25日

遅ればせながら、2038年問題というのがあるのを初めて知った。

いわゆる "epoch time" と呼ばれるUNIX/Linux で広く使われている1970年1月1日0時0分0秒からはじまる時刻のカウント方式が、32bit の signed long int (符号付きの整数)だと、2038年に桁あふれして、マイナスの値を示してしまうのそうだ。

例えばC言語のtime_t 型等をつかっている32bit のアプリケーションは、もちろんこの問題にヒットするので、UNIX系だけでなく、Windows やらなにやら全てにヒットする。
C言語を使って無くても、32bit で epoch time を使って仕事をしているようなアプリケーション達は軒並みヒットするだろう。

WikiPedia の 2038年問題の項目を読んでいて、「へぇ」と思ったのは、

また、ファイルシステムext2ext3ReiserFSタイムスタンプも同日付までしか対応していない。

確かにファイルシステムは、ファイルのタイムスタンプを何らかの形で保存する必用があるから、こう言った問題にヒットするのか。。この視点は、ちょっと新鮮だ。
で、この話を持ってきた人は、技術系の人ではなく、現状使っている製品が大丈夫かどうか心配で聞いてきたのだが、

「2038年に32bitアプリケーションが残っていると思えないですけどねぇ。。」

と教えてあげたものの、それでもとても心配していて、

「時間はOSが返すからOSが64bitならアプリが32bitでも、この問題の影響は無いんじゃない?どう?」(ええと。。Epoch time 使っていたら影響はありますよ)

とか、いろいろと思考を巡らせながら、心配を解消しようと苦心されていた。

なので、一応、

「間違いなく、32bit システムは消滅しているので心配無いですよ。」

と断定して念を押してあげたのだが、それでもまだ、不安げだった。

29年後のハードウェアは、 1024bitで100コアのCPU と、その上で動く1024bitネイティブアプリケーションが一般化しているのかもしれないし、人類の欲求が飽和してしまって、意外と、64bitの10コアくらいのCPUと、その上でネイティブで動くアプリケーションで満足していしまっているのかもしれない。

IBM製 POWER3と言うRISCプロセッサーは、64bit CPU だが、このCPUが発表されたのが、1988年なので、10年以上昔になる。10年以上前から、我々は、64bitの恩恵をうけられる足場を作り始めているものの、未だに完全に64bit に移行しきれていない。ようやく業務アプリケーションの一部が、64bit化したはじめたくらいの印象を受ける。

自分の周りでは、64bitにネイティブ対応していないアプリケーションが「古い」という印象をうけるくらいに切り替わってきた。でも、数年前までOSが32bitのWidowsを使って新規に業務環境を作る提案が普通にあった。今でも、まだあるかもしれない。

個人的には、64bit のアプリケーションが必用になるほど、高性能な処理能力を必用とする動機付けがなかったと思うし、CPUのクロックのスピードの進化だけで満足できてしまっていた。とういうのもあると思う。いづれにしても、10年後に、128bitアプリが一般的になっているか。と言うと、過去の10年の変化のスピードを鑑みると、意外と、64bitにとどまっているのかもしれない。(ちなみに、ゲーム機の世界では、PS2が、既に128bit CPUを使用しているのだそうだ。)

29年前の1980年は、1981年に初代IBM PC が誕生し、1982年にNECの初代PC-98が発表された。という時代で、世の中の人はパソコンというものも知らない時代だったらしい。

もちろん、その頃のHWもSWも現在では、完全に無くなってしまっているし、インターネットの概念も無い時代に現在の状況を予測できた人もいないだろう。

これからの29年は、なんとなく予測できそうな気もするが、完全に予測の範疇を超えている可能性もあるかもしれない。そもそもCPUやメモリという概念がどこかに行ってしまってたりして。
想像するとちょっと楽しい。

-コラム

Copyright© エンジニアの何でもメモ帳 , 2021 All Rights Reserved.