「「サマータイム導入はコンピュータシステム的に難あり」は本当か (1/2)」は本当か

「「サマータイム導入はコンピュータシステム的に難あり」は本当か」という刺激的なエントリーが某界隈を賑わしていますが、技術者以外の人は信じてしまいそうな恐れがあるので、検証してみます。

「導入すべき理由について考えてみる」について考えてみる

サマータイムとは季節により大きく異なる日の出日の入りの時刻に、一定期間の時間をずらして揃えることで、日の当たる時間を有効活用しようとするものです。」と辞書的な意味を述べるだけで、
結局なにも主張していないので、とくに理由はないようです。
つまりは、7月22日から8月9日と言う猛暑でのオリンピックの競技日程および競技時刻とは何の関係もないということです。*1
次に、「コンピュータシステムについて」ですが、「混乱しない」と言い切っています。
これについては別途まとめて指摘します。

「これに触れる前に今回の「サマータイム」についての根本的な問題を指摘しておきます」で根本的な問題を指摘してみる

なぜ7月や8月なのかは、言及されている通りで引用すると、

アメリカ国内のテレビ放送におけるゴールデンタイムにあわせてのことです。莫大な「放映権料」を支払うアメリカの放送局の都合ということ。
また、かつての東京五輪は真夏の猛暑を避けて10月開催でしたが、これまた視聴率を稼げるアメリカのメジャースポーツや、プロサッカーのオフシーズンを避けると7月、8月の開催しかないという台所事情。

いずれにせよアスリートファーストどころかテレビ局ファーストです。このアスリートファーストとは、夜も昼もないブラック企業が、福利厚生としてマッサージ器を設置する程度の話しです。

さて、すでにその競技日程および時刻が決まってしまったわけで、これをもとにIOCは各国のテレビ局に放映権を販売することが基本的なビジネスモデルです。当然花形競技(国によって違うでしょうが)はお高い値段になるでしょう。

枠を買った後でサマータイム導入で競技時刻がずれるなんてことがあったら大問題です。マラソンなんて始まったと思ったら、ゴール直前ですよ。オリンピックが国内の都合だけで調整できる時代はとっくに終わっているのです(それは上記の引用文にもあるとおりでブログ著者も認識していると思われます)。

つまり「サマータイム導入」なる言葉は欺瞞であり、官公庁の目論見と、サマータイムファーストの銭ゲバ共の、ゲスな欲望を糊塗する詭弁に過ぎないということです。

「コンピュータシステムについて」について

ここからは技術的に看過できない記述が続きます。

コンピュータ(システムやプログラム)には「時間経過」の概念がありません。命令を受けた瞬間からの経過時間は、秒単位でカウントアップしていくだけで、つまり「その瞬間」しかコンピュータは認識していません。

今時の計算機は秒単位でカウントアップなんてしていません。内臓のクロックはナノ秒以上の精度でカウントアップしています。CPU自身は時刻を「認識」はしていませんが、プログラムでは時刻情報を元に計算の分岐はしています。そうであるからこそ2000年問題2038年問題が騒がれたのですし、数年に一度挿入/削除される「うるう秒」で世界的に障害が起きたりしているのです。*2

これをプログラミングにより擬似的に、時間経過の概念があるように見せかけているのが、エアコンなどの「タイマー機能」です。

これはその通りですが、時刻情報を扱っているものもあればないものもあります。毎日決まった時刻にエアコンが起動して、決まった時刻に停止するようなタイマーもありますよね。これらのタイマーが具体的にどういう実装になっているかはそれぞれでしょうが、ほとんど人が設定を変えるまでは自動的にサマータイムになるわけではないため、たしかに影響は少ないといえます。

ホストコンピュータなどと接続していて、連続した情報をやりとりしているシステムなら、バチっと電源を落として、その後の立ち上げで日時の変更をすればよいだけのこと。

このあたりから怪しくなってきます。連続した情報をやり取りしているシステムでバチっと電源をとしていいとする発想が理解不能ですよね。

サマータイムとなり自然時間の定義が変われば、コンピュータも同時に変えなければと「思いこみ」ますが、コンピュータが処理に用いているのは、埋め込まれたクォーツが刻む「内部時間」だけです。

これも部分的に正しいのですが、コンピュータでほんものの「内部時間」を生で使うことはほとんどなく、日付、時刻情報を永続化させるために、UTC的なものを用います。売上日などをデータベースに特定のコンピュータの起動日からの「内部時間」として格納してもバチっと電源落としてしまったら、あとでいつの情報かわかりません。
したがって、UTC(協定世界時)やJST(日本標準時)を格納します。
そしてUTCから日本標準時へはタイムゾーン情報(ハードコードかもしれませんが)を使って変換するのです。
現在主に使われているtzdataとよばれるこのタイムゾーン情報はうるう秒や夏時間およびそれらの変遷をすべて包含したもので、暦の歴史ともいえるものです。
このデータはOSのアップデートなどでひっそり更新されています。

なにより、今の時点からでも即座に対応できる程度のことです。2018年8月8日の読売新聞は「元号の変更とあわせてシステム改修が間に合わない」と書いていましたが、あまりにも無知。

突然元号の話にもなっていますが、元号についてはtzdataではなくOSや言語ランタイムの地域情報になるので全く別の話。それも行儀よく使っていればいいのですが、Javaが広く使われるようになったのが平成になってからであることを考えるとあまりにも無知。

コンピュータの内部は西暦で処理されていますが、元号表記が必要な場合、「1989年1月8日からは平成」と変換しているだけのことです。それが次は「2019年5月1日からは○○」と新元号の処理を一行加えるだけです。

それをどこで加えるかが問題で、行儀よく作られているなら、calendars.propertiesなどで定義すればよいでしょうが、そうでない場合にはプログラムの数だけやらないといけないので大変だというのが「システム改修が間に合わない」の論旨なのに。

サマータイムも同じく、「サマータイム」のフラグが立っていれば、サマータイムの開始日時を参照し、その切り換え日ならば、必要な時間調整をするというだけのもの。プログラミング初心者でもできる程度の処理です。

サマータイムのフラグはどうやって立てるのでしょうね。tzdataしかないでしょうが、個別でやるなら大変なことになります。サマータイムは一度始めたら影響は永遠に残るし、ルールは変わるのです。

たとえばアメリカは2007年からは3月8日以降の日曜日の午前2:00から、11月の第一日曜日2:00までが夏時間になります。その前は1987年からは4月の第一日曜日2:00からでした。
サマータイムを導入するということは、そういうことを未来永久に記録することになります。そのため、サマータイム導入済みの国では廃止論も出ています。*3
日本でも1948年5月第1週の日曜日2:00から1時間、9月第二週の日曜日2:00までサマータイムを実施しています。翌年の1949年には4月第一週の日曜日になり、1950年と1951年は5月第1週日曜日にもどっています。そしてそのまま1951年9月第二週日曜日で終了となりました。

すべての情報に時刻がついてまわり、それが延々と蓄積され続けている現代の社会では、そのような恣意的な暦の操作はもはや現実的ではありません。それがヨーロッパでの廃止論になっています。

一方で、ここがサマータイム導入の議論が日本で難しいところに直結します。この記事を書いた記者のように、コンピュータへの無理解と、同時にコンピュータへの過大な期待が、日本社会の一部にはあるからです。

つまり、アスリートファーストなどの詭弁では無く「不便なのは開始と終了の二日だけ。あとは慣れようよ」と、開き直ったアナウンスを政府がしてしまえば、勤勉でいてイベント好きな日本人なら、勝手に盛り上げてアジャストすることでしょう。

過去にサマータイムを導入した日本では、 制度が定着しなかったこと廃止の理由ですが、現在も健康面への影響などが懸念されているので、日本人ファースト的な考え方なら、導入しないほうがよいでしょう。この記事を書いた人は誰ファーストなのだろうか。
*4

「平成サマータイム議論」の推進は、冒頭にも記述し、この記事を書いた人も指摘しているように、オリンピックは関係ないという前提なら、全く必要のないことばかりか、社会混乱を招き、国民の健康を損なう天下の悪法を推進することになるのです。

さらに、月替わりではなく「週末」や、やたらと増えた「三連休」をサマータイムの切り換え日に当てれば、寝不足や時間調整のイベント化だってできます。

そういうのであれば、サマータイムなどで公的に導入するのではなく、勝手にシフト勤務なり営業すれば良いでしょう。自分が平気なら人も平気というのはあまりにも無神経な考え方と言えます。
変更したいなら、それなりの根拠を丁寧に説明する必要があるのに、それを怠り、「できるからやるのだ」というのは、暴論もいいところです。

その他の影響

日本標準電波(JST=UTC+9)を受信して時刻調整をしている時計は、調整をオフにしない限り、サマータイムに対応できません。標準電波のフォーマットでは予備ビットがあり、それによって夏時間の有無を定義するという仕様も予備ビットの拡張例として記載されていますが、何時間ずらすかは記載がありません*5。今回2時間ずらすので、拡張例を実装していても無理。カシオのG-Shockも日本時間だけ合わないという切ないことに。
テレビやビデオのチューナーもずれるでしょうね。まぁ今時テレビなんかみないから関係ないかな。

まとめ

炎上を狙って自分のサイトへの流入量を増やしたいとかそういう下世話なことを勘ぐってしまいます。
だって、得する人がいないんだもの。いや、いるなら教えて欲しい。
SIer元号対応やみずほ統合作業中で空前の人不足でこんなことやってる場合じゃない。
オリンピック目的は、IOCから怒られるだけだろうし。
政府は、歴史に名を残せるというのはあるでしょうけど、これは良い意味じゃないと思うんだけどいいのかな。