コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

なぜ、UTCにおける1970年1月1日0時0分0秒がUNIXTIMEの始点なのかをざっと調べてみた

気になったのを調べてみた系雑記です。

『UNIXTIMEの0って1970年の元旦0時でしょ?』という知ってる人は知っている、知らない人は覚えてね的なネタ。なんでその日なのか…と思ってしっかりとした出典調べたんですが、ざっと見た限りだと何故かを説明したものはなく、ただただ仕様という感じ。

その中で日本語の記事だとWIREDでデニス・リッチー2000年問題に関してインタビューした記事の和訳があり

UNIXのエポックは、1970年1月1日の午前0時。ただし、この日がUNIXの誕生日というわけではない。UNIXのOSは、まだ荒削りだったとはいえ、1960年代には存在していた。70年代の初めの日付をシステムにプログラムしたのは、ひとえに、そうするのが都合がよかったからだと、デニス・リッチー氏は説明する。リッチー氏は、UNIXの黎明期にベル研究所UNIXの開発に取り組んだ技術者の1人だ。 「当時は、テープもなかったし。複数のファイルシステムが稼動していて、われわれは、元となる時間を常に変更していた」とリッチー氏は言う。「とうとう、『当分オーバーフローしないような起点を設定しよう』ということになった。1970年1月1日が一番よさそうに見えた」

2000年問題は「問題なし」 1970年1月1日午前0時から10億秒目を刻むUNIX|WIRED.jp

ということで当時の時代背景 + ビットあふれのバグこわいよねーから1970年が設定されている様子だった。(UTC策定もだいたい1970年代あたり)

たまに1969年とか設定して意図しないことが起きたりする(CookieのExpireとかであった)ので、こんなトリビアエピソードも含めて、頭にしっかり残すようにしたい。