ブログ日記/その他

みなさんこんにちは!こんな季節でも鼻づまりのげんいちです
前回CASIOの時計をレビューしましたが最後におまけとして昔の時計を紹介しました
その時に「2038年問題」と言っていたのを覚えているでしょうか(だれも覚えてねーよ)
そもそも2038年問題を知っていますか?
ガジェッターを見ている人には特に知ってほしい問題です
今回はこの2038年問題を皆さんに知っていただきたいです
そもそも2038年問題とは
結局なんだよと言われてそうなので説明すると
協定世界時(UTC)の 2038年1月19日3時14分8秒(日本時間では12時14分8秒)になると、コンピュータが誤動作する可能性があるとされる問題
です。
もっと詳しく
もっと詳しく紹介すると
コンピューターの時計には「32ビットの符号付き整数」を使うものがあります
簡単にいうと最大値が(2^31 − 1) = 2,147,483,647 の数を使っており、協定世界時における1970年1月1日0時0分0秒(日本標準時では1970年1月1日9時0分0秒)から一秒に1ずつカウントするシステムを使っています
つまり、2038年1月19日3時14分7秒が1970年1月1日0時0分0秒から2,147,483,647秒後にあたるわけです
そのため、2038年に上限へ達し、コンピューターが誤動作する可能性があると言われています
2000年問題
そう聞くと2000年問題を思い浮かべる人が多いのではないでしょうか
2000年問題とは
当時西暦の下2桁を表示していることが多く、2000年になると00になり1900年と誤解しコンピューターが誤作動するのではないかという問題です
この問題は結果として生活に影響がないレベルでアプリケーションの修正程度で終わりました
一見同じような問題ですが2038年問題はもっと深刻だと言われています
どうなる?
ではその時が来たらどうなるのでしょうか
2038年1月19日12時14分8秒になった瞬間、値はマイナスになると言われています
というのも32ビットの符号付き整数を使っているため
01111111 11111111 11111111 11111111の次が
10000000 00000000 00000000 00000000になります
一番左のビットが0=正、1=負を表します
簡単に表すと
+1111111 11111111 11111111 11111111の次が
-0000000 00000000 00000000 00000000になります
そうなると、1970年から約68年前の1901年として解釈されます
一気に約137年前へ、まさにBack to the futureです
影響
まずみなさんが日々使っているスマホ、パソコンなども被害を受けます
他にも電車や飛行機、銀行や電力など、時刻を扱うシステムに影響が出る可能性があります
時間を使う機械全般と思ってもらうとわかりやすいですね
2038年なんて今よりもっと電子化やら機械化が行われていることに違いないので被害の範囲は広いでしょう
もうすでに影響が!?
実はもう影響が出ていました
2004年1月11日に日本の多くのATMで2038年問題の影響による誤作動が起きたりしました
これはちょうど半分が過ぎた時でプログラムの式が特殊で限界が早く来たらしいです
またKDDIでは誤作動で約4万5,866件、総額約1,346万円の過剰請求が行われてしまったらしいです
つまり2038年はこのようになるといっても過言ではありません
しかしご安心を↓
対策
2038年まではあと12年なので、まだ時間はあります
いくつか方法があり主に32ビットを64ビットに変更する方法です
扱える時間の範囲を大きく広げることで、約922京秒=約2922億年(宇宙の年齢の約21倍)まで伸ばせます
しかも現代のスマホなどのOSはすでに対応済みが多いです。聞くだけで一安心
しかし対応できない機械がでてきます。古いのとか
そこで使われる延命処置が32ビット符号なし整数にすることです
従来は負の値にも使っていたビットを日時のカウントに回すことで、2106年まで扱えるようになります
ただメリット・デメリットがあり↓
| メリット | データ量が変わらない→容量が少なくても大丈夫 |
|---|---|
| デメリット | ・1970年以前を使えない ・一時的な延命処置に過ぎない |
あまり推奨できない方法です
そのためうまく使い分けることが大切です
どうすればいい
それでは我々はどうしたら良いでしょうか
それは知ることです
逆にエンジニアでなければすることがありません
それに大体は現在対応済みです
あとは古いシステムを頑張って対応させるぐらいです
なのでここまで分かっていれば当日の被害はほぼないと思われます
ただ確実に大丈夫なわけではありません
なので一人ひとりが知り、全員で乗り越えることが大切です
この記事で一人でも理解してくださる人がいることを願っています
主な引用先↓
ちなみに2038年1月19日まであと
4083日(26/11/15現在)

Wiiとかのゲーム機とか対策しようがないですし...