雑種路線でいこう

ぼちぼち再開しようか

夏時間に考える情報システムに対する期待品質

サマータイムが騒ぎになっている。ちょくちょく起きてきたことなので驚くべきことではないし、懲りないな、ちゃんと勉強してるのかな、そういう問題じゃないんだろうな、という諦めもある。東日本大震災のときは日本経団連サマータイムを提案していたので、システムのことをよく分からず、雰囲気で派手目な施策に飛びついちゃう人というのは官民を問わずいるのであって、何も政治家に限った話でもない。

あれ震災のとき兆単位の費用がかかると諦めてなかったっけ?だから物事を決めるときには記録を残しておかないと同じ轍を踏んでしまうのだと溜息が出る。システム屋としては2年を切ったタイミングで物理的に無理だろ、以上という話でしかないが、それで本来のところ正しいのか?というと割と悩ましい話じゃないかと考え直した。

 プログラミングには様々なお作法があって、時間の取り扱いもその一つだ。いやしくもロケールの載った現代的なシステムの上でプログラミングをするのであれば、タイムゾーンを切り替えても、夏時間にぶつかっても、海外とデータのやり取りをしても正しく動くように実装すべきなのだろう。

それは夏時間を実施している国々でのシステム開発に於いては、スレッドセーフに変数を扱うとか、確保していないメモリにはアクセスしない位の常識は言い過ぎにしても、Unicodeを使っているシステムにおいて文字列を扱う際には文字列関数を使うというくらい当たり前なことではないかな。(日本において誰もが習熟しているかは別として)

日本人の書いた夏時間で不具合を起こすプログラムというのは、いってみれば米国人の書いた日本語を入力できないプログラムのようなものである。実際これが結構残ってて、例えば最近もPixelbookにVSCodeを入れて遊んでみたのだが、立ち上がりはするが日本語を入力できない。

VSCodeもChromeOSもコード自体は日本語に対応しているので、どこかの噛み合わせが悪いんだと思いつつ調べ切れてない。ああ日本語を当たり前のように入力できることを空気のように感じてちゃいけないな、先人の血の滲む努力の上に成り立っているのだなと、ふと亡くなられた樋浦さんの足跡に想いを馳せた。Chrome OSはターミナルも日本語入力がちゃんと動かないので、まだLinux (Beta) で追加された機能に関しては対応が行き届いてないのだろう。閑話休題

分かった、コーディングのお作法において、多言語プログラミングと同じくらい夏時間対応というのが当たり前だとして、僕が手がけた情報システムにおいて、発注の段階で夏時間対応を入れることができただろうか。それを入れるということは、発注仕様書に要件として書き込み、仕様検討やらコードレビューにおいてそういった視点を要求し、テストでタイムゾーンを切り替えたり、時間の切り替わるところ(特に夏時間から標準時に戻すところ)でジョブネットがおかしな動きをしないか、ログやデータベースの中身に矛盾がないか、そういうことをちゃんと調べるということだ。今月以降に発注する分であれば、まあ秋の臨時国会で何が起こるか分からないから念のために仕様書に組み込んでおこうかという判断もあるのかも知れないが、自分が3年前とかに主張したならば何が趣味で過剰品質を追い求めているのかと問われて答えられないだろう。

何十人、何百人のプロジェクトというのは、様々なレベルの人がいて、みんながみんな達人プログラマーという訳じゃない。失敗を繰り返して、互いに補い合いながら、場数を踏んで人は育つのである。コンパイラに怒られて、コンパイラは通ったけどテストで怒られて、テストは通ったけど現場で怒られて、ああ、あんなことやこんなことも気をつけなきゃいけないんだなと学ぶのだし、お釈迦様のように全てを知り尽くすには現代のシステムは複雑過ぎる。

そして日本人プログラマーは幸か不幸か文字に泣かされることはあっても、時間に泣かされる機会は少なかった。「卓越した領導者」様が気まぐれにタイムゾーンを30分動かしたと思ったら隣国の大統領と会うなり戻してみたり、州によってサマータイムがあったりなかったり、どうせ日が照ってるのにEU法で夏時間を押し付けられたり、といった苦労がなかったのはエンジニアとしてだいぶラッキーなことである。テレビをブラジルに輸出しようとすれば電子番組表の夏時間対応が必要になったとか、グローバル企業に入ったり、世界で使われるオープンソースプロジェクトに関われば、どうやら世の中にDSTという厄介なものがあって、お作法が必要らしいと気付くこともあるのだろう。

長い目で見れば、日本のプログラマーも夏時間に対応したプログラムを、欧米のプログラマーも漢字やら縦書きやらBidiを扱えるプログラムを書ける時代を目指すべきで、世の中は明らかにそっちの方に向かっているし、武器としては揃いつつある。いやしかし武器が揃ったところでプログラマーの勉強も想像力も追いついてないし、どのみちテストカバレッジをどう設定するかは悩ましいよね。

そうこう考えると5年くらいかけて意識改革を進めつつ徐々にシステムを改修していけば、莫大な費用をかけずに夏時間を導入できそうな気もするんだけど、そんなに時間をかけるんだったら夏時間よりも創造的で有益な提案があるんじゃないの?だいたい時間を通じて画一的に人々を振り回そうって発想そのものが古いし、もっと個人に寄り添った新しい仕組みをつくった方がいいって、蒸気機関の動きに合わせて工場に出勤する必要があった明治時代とは違うんだし。

不思議なのは来年の春から出勤時間を2時間も早めましょうといわれた日には、会社であれば総ブーイングになりそうなものだけど、オリンピックへ向けて夏時間を導入しましょう!先進国はみんなやってますよ!というと、賛成する有権者の方が多いのって面白い現象だよね、とは感心してしまう。みんな生きている間に体験したことのない変化を望んでるんだろうか。