今年の2/29日は、4で割れるのでうるう年だが、100で割れるのでうるう年でなく、でも、400で割れるのでやっぱりうるう年だよんっ、という日です。
取引先の営業さんから、うちに収めたハンディーターミナルで、2/29日に時刻再設定をすると問題が出るという連絡を今日もらいました。なんでも、2/29に時刻設定をしなければちゃんと、2/28,29,3/1と遷移するらしいのですが、2/29にメニューから時刻設定をしたとき、問題が出るそうで……。営業さんも大変ですよね。矢面に立たなきゃいけないし。今日はいろんなところに電話しまくりでしょう、きっと。
え、収めたハンディーターミナルは大丈夫かって?
全然問題なしですよ。………… だって、まだつかってないんだもん(苦笑)*291
* でも……
皮肉なことに、今回の問題って、充分に手を抜いて4で割るロジックしか入っていないプログラムってちゃんと動くんですよ。結局のところ1900年代に作成したプログラムは、2100年以降に稼動する可能性がある場合だけ、100で割ったときの考慮をする必要があり、2400年を超えて使用する可能性がある場合、400で割る考慮をしないといけない、ってことです。100年近く生き残るプログラム以外は、単に4で割るのが余計な計算をせずにすむという意味でもコストが最小だってのは、ちょっと無常ですよね……。*292まあ、どうせ実装するなら中途半端に実装しないでちゃんと実装しないと正しい動きをしないという意味では、教訓にはなるかもしれませんけど。100で割るところまでで考慮が終わってる場合にだけ問題が出ますから。
*291:顧客都合諸々で開発がおくれに遅れ、いまだに基本設計が終わってないのです。
*292:当然、こういう実装がきれいなのかどうかは別問題ですよ。