doki is antoher internet time concept

当時35歳 思考

Swatch が 2005 年に Swatch Internet Time を提唱したが、これは 1 日を 1000 ビートに分割するというものだった。1 ビートは 1.44 分で、1 日は 1000 ビートである。世界中どこでも同じとしたが、その標準時をスウォッチ本社所在地としたため、 UTC+1 となっている。

インターネット標準時というコンセプトは良いが実用性がない。そこで doki を提案する。

doki は 1日を 240 doki に分割する。1 時間は 10 doki となる。世界中どこでも UTC を使用する。日本時間13時は UTC 04:00 なので 400 doki となる。慣れれば暗算で容易に相互変換が可能だ。

現在時刻を尋ねるときは、「今何 doki?」と尋ねるものとする。

タイムゾーンがズレることで「昨日なのか明日なのか」という曖昧さが生じるため、1文字のアルファベットで「曜日」を表現することとした。

検索し始めて驚いたが、「1文字で曜日を表現するアルファベット」がなかなか見つからない。2文字までは難なく略せるが1文字はない。
まずすぐ気づくように、Saturday と Sunday がどちらも S である。さらに、これは盲点だったが T も2つある。 Tuesday と Thursday である。私は何ヶ月もこれに気づかないまま doki の仕様策定と実装を進めていた。 parser を書こうとしてあらびっくりである。人間とは愚かなものだ。

あちこち探し回った結果、 strptime のなかに以下の記述を発見したので

  %_a The weekday name shortened to a single character (MTWRFAS)

これを採用した。 他に MTWRFSU という派閥もあるようだ。 Sunday と Saturday のどちらを S とするか、宗教的な論争にもなりそうなのであまり深入りはしたくない。
ところで Thursday が R となるのは割と一般的なようで不思議である。どこか別の言語の由来かと調べたが、よくわからない。

曜日の1文字表現が決まったところで、もっと色々な日時を表現するには、と考えた。1年間の最初から通しの週番号があればいいのではないか?しかし1月1日の曜日が毎年変わるため、暦の仕組みとして少々厄介そうである。と、調べていたら ISO 8601 に厳密な週番号の定義があることを知った。日本ではとんと聞かないが、海外ではビジネスでよく使われているらしい。

仕様の詳細は割愛するが、週は月曜から始まり、毎年1月4日を「第1週」とする。1/4が月曜日の場合、 1/3 は「前の年の最後の週」となる。週番号を使うときは年表記もズレるのである。これは正直気持ち悪い。年末年始はあまり仕事をしないから問題にならないのかもしれない。

doki では ISO 8601 の週番号を使うことにしたが、ささやかな抵抗というか改良として、「第0週」を導入した。 1/4 が月曜日の場合、 1/1~3 は「前の年の最後の週」ではなく「今年の第0週」とするのだ。このルールにより年のズレがなくなる。年末年始はあまり仕事をしないから大きな問題にはならないだろう。

年と週番号を含むフルスペックの doki を full-doki と呼ぶことにした。大きなノッポのあれに因んでいる。