全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / 現場の実装ノート / Vol.44 現場の実装ノート Vol.2 見えないところの、ほころび

記事 05

時刻だけのはずが、百年以上前になっていた——表計算が覚えている、見えない日付

受け取り希望の時間を、お客様に選んでもらう。「13:00」とか「16:30」とか。それを表計算シートに記録して、あとで通知に載せる。単純な話のはずだった。

2026-07-04 公開

受け取り希望の時間を、お客様に選んでもらう。「13:00」とか「16:30」とか。それを表計算シートに記録して、あとで通知に載せる。単純な話のはずだった。

ところが、シートから読み出した時間を通知に流すと、妙なものが出てくる。時刻の前に、見覚えのない古い日付がくっついている。百年以上前の、遠い昔の年。時刻だけを扱っているつもりが、いつのまにか日付になっていた。

「13:00」が、日付を連れてくる

シートのセルには、確かに時刻だけを入れていた。

画面で見ても、そこに並んでいるのは時刻だ。日付など、どこにも入力していない。なのに、プログラムで読み出すと、時刻ではなく、日付と時刻がセットになったものが返ってくる。しかもその日付は、自分では一度も打っていない、大昔の日付だった。

表計算は、基準の日を持っている

調べていくと、これは表計算ソフトの流儀だった。

時刻だけを入れたつもりでも、内部では「ある基準の日の、この時刻」として扱われる。基準になる日は、ずっと昔の、決められた一日。人の目には時刻しか見えないが、裏側では、その基準日に時刻をぶら下げた形で覚えている。

だから読み出すと、隠れていた基準日が一緒に出てくる。時刻だけを取り出したつもりが、日付つきの中途半端なものになっていた。

日付を捨てて、時刻だけ取り出す

直し方は、二つあった。

一つは、そもそも時刻を文字列として扱うこと。「13:00」という文字の並びとして持てば、裏に日付が忍び込む余地はない。もう一つは、読み出したあとで日付の部分を捨て、時と分だけを取り出して整えること。

今回は、読み出したものから時と分だけを拾い、「13:00」の形に組み直した。裏についてきた基準日は、使わずに落とす。これで、通知には時刻だけが、きれいに載るようになった。

見た目の型を、信じない

この件で、身についた警戒がある。

画面に時刻しか見えないからといって、中身も時刻だけだとは限らない。表計算ソフトは、人に見えないところで、日付や数値の都合を勝手に決める。見た目と、内部の持ち方は、しばしば食い違う。

だから、シートから読んだ値は、そのまま信じない。何の型で返ってきているのか、余計なものがくっついていないか、一度確かめる。見えているものと、実際に入っているものは、別だと思っておく。

便利な道具ほど、裏で気をきかせる

表計算ソフトは、よくできている。

数字を入れれば数として、日付らしきものを入れれば日付として、気をきかせて解釈してくれる。その親切が、たいていは助けになる。けれど、こちらの意図と違う解釈をされると、今回のような食い違いになる。

道具が気をきかせるほど、こちらは、それが何をしているかを知っておく必要がある。裏で何を補われているのかを分かったうえで使えば、親切は味方になる。分からないまま使うと、見えない日付に、そっと足をすくわれる。