新・闘わないプログラマ No.359

日付と時刻


インプレスのPC Watch「山田祥平のRe:config.sys」という連載コラムがあります。一応連載当初から眺めてはいたのですが、私にはこのコラム、いまいち「何を言いたいのかわからない」感がありまして、熱心に読んでいたわけではありませんでした。けど、2004年11月12日の「データのアリバイ」は、ちょっと必要があってこれから調べようか、と思っていたところと重なるので、初めてじっくり読んでみました。

さて、そのコラムにもあるデジカメで撮影した写真のタイムスタンプ、「そういえば、うちのデジカメにはタイムゾーンの設定のようなのがあったよなあ、あれってどういう仕組みなんだろう」と、調べてみました(CASIO EXILIM PRO P600)。
このデジカメ、「ワールドタイム」という設定項目があって、そこで「自宅」と「訪問先」の場所(都市名)を選ぶことができるようになっています。ここで、

としてあったときに、「ワールドタイム」の設定を訪問先の都市名に設定すると、日時の表示がその都市があるタイムゾーンの標準時に変わります。このあたりはPCでタイムゾーンを設定した場合と同じです。
たとえば、訪問先を“London”に設定すれば、デジカメ上の時刻の表示は自動的にロンドンの現地時刻になりますし、そこで現地時間の朝10時に撮影すれば、撮影したファイルのタイムスタンプも朝10時と表示されます。
このようにして撮影したファイルをPCに持ってきて、PC上で見るとどうなるかと言いますと、タイムゾーンとか一切関係なしで、撮影した現地の時刻、つまり朝10時に撮影したとしればその朝10時ということで表示されます。よくよく考えてみたらデジカメのメモリはFATでフォーマットされているし、FATは確か時刻自体をタイムゾーンに応じて現地時間に変更してくれたりしてなかったような(←このあたりの詳しいところは実はよく知らない)記憶がありますし……。撮影したファイルの中に埋め込まれている情報(EXIF)も現地時間で、そのほかにタイムゾーンの情報は持っていないようです。
まあ、先ほどの山田氏のコラムでも「午前10時の夕焼けというのも何となく気分が悪い」とあるとおり、勝手に撮影時刻がタイムゾーンに応じて変更されてしまうのもアレなので、それはそれでいいのでしょう。ただ、EXIFにはタイムゾーンの情報くらいは載せておいてくれると、より便利なのではないか、とも思います。

さて、PCの日付に関するトラブルと言えば、一番ありがちなのがタイムゾーンの設定を変にして使っている人ですね。自分で使っている分には、何もおかしいところが無く使えちゃったりしているわけなので、気付くのが遅れがちです。メールのやり取りで、未来からメールが来て「おかしい」と気付くことが多いみたいです。私も職場などで、他人のPCのタイムゾーンの設定を何度も直したことがあります。
まあ、最近は、NTPを使ったり、Windowsのドメインにログオンするときに時刻の同期を取れたりして、あまりPCの時刻合わせを気にしなくてもよくなりましたが、昔はこれで結構苦労しました。
プログラムのビルドをするときに、時計が狂っていたせいでコンパイルしなければいけなかったソースがコンパイルされないまま……なんてありがちな話もありました。また、ネットワークでつながっている複数のPCやサーバからなるシステムで何らかのトラブルが起こり、各機器のログファイルを調べて動きを検証しようとしたものの、それぞれの機器の時計が微妙に狂っているため、ログファイルに載っているイベントを時系列に並べるのに非常に苦労した、とか。

ああ、相変わらずとりとめのない話をしているような気がします……けど、まあいつものことということで。
そういえば、昔々、まだ「パソコン」とは言わず「マイコン」などと呼ばれていた昔、国内ではNEC PC-8001が一番売れていた頃のことです。ゲームくらいしかあまり使い道の無かった時代でしたが、当時の大抵のゲームプログラムは、時間を計るのに内蔵時計を毎度毎度「0時0分0秒」にリセットして、そこからの時間を計るのに使う、というかなり強引なことをしていました。
内蔵時計を毎度毎度リセットしてたらまずいだろう、と今なら思いますが、なぜこんな強引がことが許されたかというと、実は当時の「マイコン」の内蔵時計は電池で常時(電源を切っているときでも)動き続けているようなものではなく、電源を切ると止まってしまう代物だったんですね。で、再度起動すると、時計はリセットされている。ですから、内蔵時計をちゃんと使おうとすると、起動するたびに「時計のセット」という行為を行わないといけない、という極めて不便なものでした。ですから、時計としてはあまり使われず、結果として「リセットしたって誰も困らないじゃん」ってなことになっていたわけです。
さて、私がはじめて「マイコン」なるものを買ったのはPC-8001の後継機種であるPC-8801(初代)です。これは、電源を切っても電池によって時計が動き続ける画期的(?)な機能を持っていました。ですので、このPC-8801でPC-8001用のゲームを動かすと、毎度時計が狂ってしまって悲しい思いをしたものです。
で、このPC-8801、時計はずっと動き続けて日付もちゃんと繰り上がって行くのに、なぜか「年」だけは繰り上がらない、という不思議なバグ(ではなくて仕様です、確か)がありました。いくらセットしなおしても、再起動すると「1981年」(確か)に戻ってしまうのです。
これはもしかして、翌年になったら、また新しい製品を買え、ってことだったのでしょうか?

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp