Slide 1

Slide 1 text

© 2023 Wantedly, Inc. / 207 日付時刻 A to Z 2023-04-13, 2023-04-20, 2023-04-27 - Masaki Hara 1

Slide 2

Slide 2 text

© 2023 Wantedly, Inc. / 207 この発表の目的 ● 日付時刻は人類が直面する現実を反映したシステムです ● それを規則と計算の世界に落としこむために、様々な工夫や 妥協が行われています ● それによって生じる様々な不整合や落とし穴との向きあい方 を多種多様な事例から学ぶのが、この発表の目的です。 2

Slide 3

Slide 3 text

© 2023 Wantedly, Inc. / 207 おことわり ● 残念ながら、私は天文学・歴史・物理・コンピューターの全てに 精通する学者ではありません。 ○ それでも沢山の事例を挙げることは有益だと思い、幅広い分野のトピックを揃えました。 ● 少なくとも内容の整合性は確認しているつもりですが、誤りや 誤解をまねく表現があれば指摘していただけると助かります。 3

Slide 4

Slide 4 text

© 2023 Wantedly, Inc. / 207 本発表の流れ ● 第1部 日付編 ○ §1 天体の周期 ○ §2 暦 ○ §3 紀元と通日 ● 第2部 時刻編 ○ §4 時間と分 ○ §5 秒 ○ §6 相対性理論 4

Slide 5

Slide 5 text

© 2023 Wantedly, Inc. / 207 本発表の流れ ● 第3部 コンピューティング編 ○ §7 コンピューティング – 文字列表現 ○ §8 コンピューティング – 数値表現 ○ §9 コンピューティング – 時刻同期 5

Slide 6

Slide 6 text

© 2023 Wantedly, Inc. / 207 §0 時間と時刻 6

Slide 7

Slide 7 text

© 2023 Wantedly, Inc. / 207 時間と時刻 抽象概念としての 時間 (time) = 1方向に進む因果の流れ全体 10時 9分 10時 10分 10時 11分 10時 12分 10時 13分 時間 7

Slide 8

Slide 8 text

© 2023 Wantedly, Inc. / 207 時間と時刻 時間 (duration) = 相対的な長さ 広義の 時刻 (time) = ある瞬間の絶対的な同時性をあらわす尺度 10時 9分 10時 10分 10時 11分 10時 12分 10時 13分 2分 時刻 瞬間 時間 8

Slide 9

Slide 9 text

© 2023 Wantedly, Inc. / 207 時間と時刻 日付 (date) = 広義の 時刻の日数成分 狭義の 時刻 (time) = 広義の 時刻の1日内の成分 単位としての 時間 (hour) = 狭義の 時刻の最上位成分 2023-04-12 15:00:00 日付 時刻 時刻 時間 9

Slide 10

Slide 10 text

© 2023 Wantedly, Inc. / 207 第1部 日付 10

Slide 11

Slide 11 text

© 2023 Wantedly, Inc. / 207 §1 天体の周期 11

Slide 12

Slide 12 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● 天体は一定周期で回っている? ● 地球は1日かけて自転する? ● 星座は季節で決まる? 12

Slide 13

Slide 13 text

© 2023 Wantedly, Inc. / 207 日付 暦を支える3つの基本的な周期 ● 年 — 太陽が回る高さの周期 ● 月 — 月の満ち欠けの周期 ● 日 — 太陽の出没周期 13

Slide 14

Slide 14 text

© 2023 Wantedly, Inc. / 207 日 暦を支える3つの基本的な周期 ● 年 — 太陽が回る高さの周期 ● 月 — 月の満ち欠けの周期 ● 日 — 太陽の出没周期 14

Slide 15

Slide 15 text

© 2023 Wantedly, Inc. / 207 日 — 目的 1日で移ろいゆくもの ● 明るさ ● 地温と気温 ● 潮汐 ● etc… 15

Slide 16

Slide 16 text

© 2023 Wantedly, Inc. / 207 日 — 周期 ● 太陽の出没 = 約1日 ● 地球の自転 = 約0.997日 16

Slide 17

Slide 17 text

© 2023 Wantedly, Inc. / 207 日 — 周期 ● 太陽の出没 = 約1日 ● 地球の自転 = 約0.997日 自転周期 日の周期 公転の寄与分 17

Slide 18

Slide 18 text

© 2023 Wantedly, Inc. / 207 日 — 周期 ● 太陽の出没 = 約1日 ● 地球の自転 = 約0.997日 1日 = これを均したもの 18

Slide 19

Slide 19 text

© 2023 Wantedly, Inc. / 207 日 — 位相 1日の始まりは? ● 太陽の南中時刻 (正午) — 天文時 ● 真夜中 (正子) — 常用時 ● 一定ではない始点 ○ 日の出 ○ 日没 19

Slide 20

Slide 20 text

© 2023 Wantedly, Inc. / 207 年 暦を支える3つの基本的な周期 ● 年 — 太陽が回る高さの周期 ● 月 — 月の満ち欠けの周期 ● 日 — 太陽の出没周期 20

Slide 21

Slide 21 text

© 2023 Wantedly, Inc. / 207 年 — 目的 1年で移ろいゆくもの ● 平均地温と平均気温 ● ↑にともなう天気の変化 ● 星座 ● etc… 21

Slide 22

Slide 22 text

© 2023 Wantedly, Inc. / 207 年 — 周期 ● 太陽の高さの変化 (太陽年) = 約365.242日 ● 地球の公転周期 (恒星年) = 約365.256日 太陽の動き 星座の動き 22

Slide 23

Slide 23 text

© 2023 Wantedly, Inc. / 207 年 — 周期 ● 太陽の高さの変化 (太陽年) = 約365.242日 ● 地球の公転周期 (恒星年) = 約365.256日 1年 = これを均したもの 23

Slide 24

Slide 24 text

© 2023 Wantedly, Inc. / 207 年 — 周期 ● 太陽年と恒星年の差 (一般歳差の寄与分) = 約20分 →年越しに見る星座は毎年少しずつ違う そもそも閏日の挿入タイミングの問題で毎年少しずつ違うだろうみたいな話は置いておく 24

Slide 25

Slide 25 text

© 2023 Wantedly, Inc. / 207 年 — 周期 ● 赤道の歳差 ○ 自転軸の向きが変わる ○ これにより地球が太陽の周り を1周するより前に 季節がめぐる 春 夏 秋 冬 次の春 25

Slide 26

Slide 26 text

© 2023 Wantedly, Inc. / 207 年 — 位相 1年の始まりは? ● 春分 / 春の始まり頃 ○ いわゆる西暦も元々は春分始まりだったが、 Jan. とFeb. が手前に挿入されたことで後 退が起こった ● 秋分 / 秋の始まり頃 26

Slide 27

Slide 27 text

© 2023 Wantedly, Inc. / 207 月 暦を支える3つの基本的な周期 ● 年 — 太陽が回る高さの周期 ● 月 — 月の満ち欠けの周期 ● 日 — 太陽の出没周期 27

Slide 28

Slide 28 text

© 2023 Wantedly, Inc. / 207 月 — 目的 1ヶ月で移ろいゆくもの ● 月の形 ● 夜の明るさ ● 潮汐の大きさ ● etc… 28

Slide 29

Slide 29 text

© 2023 Wantedly, Inc. / 207 月 — 周期 ● 月の満ち欠け = 約29.5日 ● 月の公転周期 = 約27.3日 29

Slide 30

Slide 30 text

© 2023 Wantedly, Inc. / 207 月 — 周期 ● 月の満ち欠け = 約29.5日 ● 月の公転周期 = 約27.3日 1ヶ月 = これを均したもの 30

Slide 31

Slide 31 text

© 2023 Wantedly, Inc. / 207 月 — 位相 1朔望月の始まりは? ● 新月(朔) ○ 新月が終わって、月が少し見え始めたタイミングを使うケースもある ● 満月(望) ○ ヒンドゥー暦の一部などで使われているらしい 31

Slide 32

Slide 32 text

© 2023 Wantedly, Inc. / 207 非周期性 暦を支える3つの基本的な周期 ● 年 — 太陽が回る高さの周期 ● 月 — 月の満ち欠けの周期 ● 日 — 太陽の出没周期 これらは一定ではない! 32

Slide 33

Slide 33 text

© 2023 Wantedly, Inc. / 207 非周期性 天体運動の周期は一定ではない ● 月…… 1朔望月はおよそ29.3日〜29.8日 ● 年…… 太陽年(のある種の平均) は少しずつ短くなっている (1年あたり0.0001秒くらい) ● 実際の平均周期の計算は安定化のために色々やってるらしい 33

Slide 34

Slide 34 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● 日、月、年は天体運動の周期に由来する ○ 1ヶ月 = 約29.5日 ○ 1年 = 約365.242日 ● 天体運動の周期は完全に一定ではない 34

Slide 35

Slide 35 text

© 2023 Wantedly, Inc. / 207 §2 暦 35

Slide 36

Slide 36 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● 1年は12ヶ月? ● うるう年は規則的に挿入される? ● 1712年10月1日は土曜日である? 36

Slide 37

Slide 37 text

© 2023 Wantedly, Inc. / 207 暦 暦を支える3つの基本的な周期 ● 年 — 太陽が回る高さの周期 ● 月 — 月の満ち欠けの周期 ● 日 — 太陽の出没周期 暦 = 年, 月(など)をもとに 日を整理するシステム 37

Slide 38

Slide 38 text

© 2023 Wantedly, Inc. / 207 暦 暦を支える3つの基本的な周期 ● 年 — 太陽が回る高さの周期 ● 月 — 月の満ち欠けの周期 ● 日 — 太陽の出没周期 暦 = 年, 月(など)をもとに 日を整理するシステム 38

Slide 39

Slide 39 text

© 2023 Wantedly, Inc. / 207 暦 暦の目的 ● 市民暦 = 生活・産業等における行動サイクルを規定する ○ 農業暦、会計暦などもある ● 宗教暦 = 宗教行事のサイクルを規定する ○ 同じ地域で宗教暦と市民暦が異なることも少なくない 39

Slide 40

Slide 40 text

© 2023 Wantedly, Inc. / 207 太陰太陽暦 日を朔望月でグループし、朔望月を年でグループする ● 1朔望月 = 約29.5日 → 大の月 (30日) / 小の月 (29日) ● 1年 … 約12.4朔望月 (≈ 235/19) → 閏月(うるうづき) の挿入 ○ 閏月のある年は閏年(うるうどし)と呼ばれる ● 月の大小の決定や置閏法などで様々なバリエーション ○ E.g. 天保暦 (日本の旧暦) 40

Slide 41

Slide 41 text

© 2023 Wantedly, Inc. / 207 太陽暦 日を年でグルーピングする (年を12分割して月とする) ● 1日 = 約365.242日 → 閏日(うるうび) の挿入 ○ 閏日のある年は閏年(うるうどし)と呼ばれる ● 暦月 = 30日か31日 ○ 西暦ではなぜか28日の月がある 41

Slide 42

Slide 42 text

© 2023 Wantedly, Inc. / 207 太陽暦 太陽暦をいくつか紹介 ● ユリウス暦 ● グレゴリオ暦 ● ヒジュラ太陽暦 42

Slide 43

Slide 43 text

© 2023 Wantedly, Inc. / 207 ユリウス暦 ユリウス暦: 天体観測に依存しない暦 ● 閏年 = {4の倍数} → 1年は平均して365.25日 (太陽年は365.242) ● 西暦4年〜西暦1582年までは少なくとも有効 ○ 導入は紀元前45年だが、 初期のユリウス暦は不規則な運用だったと言われている ● 約130年で1日ずれる 43

Slide 44

Slide 44 text

© 2023 Wantedly, Inc. / 207 グレゴリオ暦 グレゴリオ暦: ユリウス暦の改良版 ● 閏年 = {4の倍数} ∖ {100の倍数} ∪ {400の倍数} → 1年は平均して365.2425日 ● 導入時期は地域によってまちまち ● ユリウス暦の3世紀まで遡及して補正 ● 約3200年で1日ずれる 44

Slide 45

Slide 45 text

© 2023 Wantedly, Inc. / 207 ヒジュラ太陽暦 ヒジュラ太陽暦 ● 春分の実測値を基準に年の長さを決定する ○ 春分点の周期性は高くないため、置閏にはムラがある ● ヒジュラ(西暦622年)を紀元に置く ● ヒジュラ暦/イスラム暦とは別 (後述) 45

Slide 46

Slide 46 text

© 2023 Wantedly, Inc. / 207 改暦 グレゴリオ暦への改暦 ● 日付をスキップしないといけ ない ● この時点では10日差 M T W T F S S 1 2 3 4 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Oct 1582/10 ← Sep Nov → 46 右のカレンダーは当時の日付を再構したイメージ

Slide 47

Slide 47 text

© 2023 Wantedly, Inc. / 207 改暦 グレゴリオ暦への改暦 ● 地域ごとにタイミングは異 なっていた ○ 特に、非カトリック地域では導入が遅 かったらしい ● 月をまたいだ例も M T W T F S S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 9/2 Aug 1612/08 ← Jul Sep → 47

Slide 48

Slide 48 text

© 2023 Wantedly, Inc. / 207 改暦 ● 色々あって ユリウス暦に戻ったり ● →は18世紀なので 差は11日に広がっている Oct 1710/10 ← Sep Nov → 48 M T W T F S S 1 2 3 4 5 6 7 8 9 10 11 12 13 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Slide 49

Slide 49 text

© 2023 Wantedly, Inc. / 207 改暦 スウェーデン暦 ● 1日ずつ近づけようとして大 混乱 ● 一旦巻き戻すために 2/30が発生 M T W T F S S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3/1 3/2 Feb 1712/02 ← Jan Mar → 49

Slide 50

Slide 50 text

© 2023 Wantedly, Inc. / 207 改暦 アラスカ購入による改暦 ● 日付変更線も一緒に変更 ○ 金曜日が2回あったらしい M T W T F S S 1 2 3 4 5 6 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Oct 1867/10 ← Sep Nov → 50

Slide 51

Slide 51 text

© 2023 Wantedly, Inc. / 207 改暦 ● ギリシャ: 100年前に改暦 ● 最後のユリウス暦 (推定) ○ 教会暦としては今でも使われている M T W T F S S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3/1 3/2 3/3 3/4 Feb 1923/02 ← Jan Mar → 51

Slide 52

Slide 52 text

© 2023 Wantedly, Inc. / 207 グレゴリオ暦の拡大適用 ● グレゴリオ暦を未適用地域に対して使うこともある ○ 明治の始まりは1868年10月23日 (当時の暦[天保暦]では9月8日) ○ ロシア2月革命は1917年3月8日〜12日 (当時の暦[ユリウス暦]では2月) ● 暦を明示するほうがよい場合も ○ O.S. = Old Style, N.S. = New Style 52

Slide 53

Slide 53 text

© 2023 Wantedly, Inc. / 207 遡及グレゴリオ暦 遡及グレゴリオ暦 ● 1581年以前もグレゴリオ暦で表記すること ○ どの地域でもグレゴリオ暦はまだ使われてない ○ 計算機・電気通信や天文学などでは便利なためよく使われる ● 遡及ユリウス暦もある ○ ユリウス暦の導入は紀元前45年、安定的に運用されはじめたのは 4年頃 ○ たとえばユリウス通日の基準点は遡及ユリウス暦に基づいて定義されている 53

Slide 54

Slide 54 text

© 2023 Wantedly, Inc. / 207 Excel暦 Lotus 1-2-3の暦 ● 閏年 = {4の倍数} ● 1900年2月29日が存在する ● ユリウス暦ではない ○ 1901年〜2099年がグレゴリオ暦と等しくなる ○ ユリウス暦とちょうど13日異なる Lotus 1-2-3の挙動を調べたわけではないが、 Excel側の記述からはこのように推定される 54

Slide 55

Slide 55 text

© 2023 Wantedly, Inc. / 207 Excel暦 Excelの暦 ● 閏年 = {4の倍数} ∖ {100の倍数} ∪ {400の倍数}     ∪ {1900} ● Lotus 1-2-3 との互換性のための意図的な仕様 ● Google Spreadsheet や Numbers には無い 55

Slide 56

Slide 56 text

© 2023 Wantedly, Inc. / 207 Excel暦 Excelの暦の2つの解釈 ● グレゴリオ暦1900年1月1日 = Excel暦1900年1月1日 ○ 年月表示を真とする ○ 曜日・通日計算はズレる ● グレゴリオ暦1900年1月1日 = Excel暦1900年1月2日 ○ 曜日・通日計算を真とし、年月は別として扱う 56

Slide 57

Slide 57 text

© 2023 Wantedly, Inc. / 207 純粋太陰暦 日を朔望月でグループする ● 12ヶ月を1暦年とすることがある ○ 太陽年とは11日ほどのずれが生じるが、補正せずに使う ● ヒジュラ暦 (イスラム暦) が代表的 ○ ハッジ (聖地巡礼) などの宗教行事の季節が一定でないのはこのため ○ サウジアラビアでは2016年まで市民暦としても使われていたらしい 57

Slide 58

Slide 58 text

© 2023 Wantedly, Inc. / 207 週 週: 日と月のギャップを埋める人工的な周期 ● 周期は5日、6日、7日、8日、10日など色々 ● 7日からなる週が一番メジャー ○ 古代バビロニアに由来するとされる ○ 天体に由来する7つの名前[日月火水木金土]が与えられている (7曜) ○ 年月日との同期は取らない 58

Slide 59

Slide 59 text

© 2023 Wantedly, Inc. / 207 週 ● 安息日 ○ ユダヤ教の安息日: 土曜日 ○ キリスト教の礼拝日: 日曜日 ○ イスラム教の休日: 金曜日 ● 週の始まり ○ 土曜始まり … 中東など ○ 日曜始まり … アメリカ、インドなど ○ 月曜始まり … ヨーロッパ、中国など 59

Slide 60

Slide 60 text

© 2023 Wantedly, Inc. / 207 週 週ベースの年表記 ● 週にあわせて年の区切りをずらしたもの ● 2019年12月30日 = 2020年第1週火曜日 60

Slide 61

Slide 61 text

© 2023 Wantedly, Inc. / 207 日付の演算 ● 「1ヶ月後」「1年後」はいつ? ○ 2023年1月31日 + 1ヶ月 = ??? ○ 2023年1月31日 + 1ヶ月 - 1ヶ月 = ??? ○ 「1年」でも同じ問題が起きる (閏年) ● 妥協して使う ○ 年月表記で演算してから丸める ○ 幅にあわせてshrink/growする ○ 固定日数として扱う (30日、365日など) ● 2月29日誕生日問題 ○ 誕生日メール、誕生日のイースターエッグなどの実装も要注意 61

Slide 62

Slide 62 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● 暦 = 年や月などにもとづいて日を整理する仕組み ● 1ヶ月=29.5日、1年=365.242日 の非整数性と折り合いをつ ける必要がある ● グレゴリオ暦以外の暦が出てくることがある ○ ローカライズや、古い日付を扱うときなど 62

Slide 63

Slide 63 text

© 2023 Wantedly, Inc. / 207 §3 紀元と通日 63

Slide 64

Slide 64 text

© 2023 Wantedly, Inc. / 207 紀元 紀元 = 暦のカウント (紀年法) のスタート地点 ● 西暦紀元: イエス・キリストの生誕に基づく ○ 史実の誕生年とは異なる ● ヒジュラ紀元: ムハンマドの聖遷に基づく ● 大日本帝国でも紀年法が使われていた (神武天皇即位紀元) ● コンピューター用の紀元については後述 64

Slide 65

Slide 65 text

© 2023 Wantedly, Inc. / 207 紀元 紀元 ≠ 暦法 ● グレゴリオ暦の暦法 + ○○紀元 ○ グレゴリオ暦、和暦(明治以降) ● ○○ + ヒジュラ紀元 ○ ヒジュラ暦、ヒジュラ太陽暦 65

Slide 66

Slide 66 text

© 2023 Wantedly, Inc. / 207 0年問題 ● 西暦0年は存在しない ○ 他の紀年法でも起きるらしい ● 前3 → 前2 → 前1 → 1 → 2 → 3 ● 計算で注意が必要 ○ 年の引き算 ○ 遡及グレゴリオ暦・遡及ユリウス暦における閏年の計算 ○ 表示するときだけ `紀元前${1-n}年` とするのが楽 66

Slide 67

Slide 67 text

© 2023 Wantedly, Inc. / 207 元号 元号: 単一の紀元を用いず、たまにリセットする方式 ● 日本で使われている ● 改元は1月1日とは限らない ○ 同じ年でも複数の元号に属することがある ○ 2019年4月30日 = 平成31年4月30日 ○ 2019年5月1日 = 令和1年5月1日 67

Slide 68

Slide 68 text

© 2023 Wantedly, Inc. / 207 通日 通日 = 紀元からの日数で日付をあらわす ● ユリウス通日 ○ 遡及ユリウス暦で紀元前4713年1月1.5日を0日目とする ○ 天文時のため半日ずれる! ● 修正ユリウス日 ○ 1858年11月17日を0日目とする ● Excel通日 ○ Excel暦1900年1月1日 (グレゴリオ暦1899年12月31日) を1日目とする ● Unix time (後述) 68

Slide 69

Slide 69 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● 年の基準点はまちまち ● 0年に注意 69

Slide 70

Slide 70 text

© 2023 Wantedly, Inc. / 207 第2部 時刻 70

Slide 71

Slide 71 text

© 2023 Wantedly, Inc. / 207 本日の流れ ● 前回は「日付」に注目して紹介した ● 今回は「日」より細かい単位を見ていく ○ 時間・分 ○ 秒 ○ 秒より小さい単位…… ○ それぞれに困難がある 71

Slide 72

Slide 72 text

© 2023 Wantedly, Inc. / 207 §4 時間と分 72

Slide 73

Slide 73 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● 1日は24時間? ● ローカル時間からUTC時間は一意に定まる? 73

Slide 74

Slide 74 text

© 2023 Wantedly, Inc. / 207 再掲: 1日の始まり 1日の始まりは? ● 太陽の南中時刻 (正午) — 天文時 ● 真夜中 (正子) — 常用時 ● 一定ではない始点 ○ 日の出 ○ 日没 74

Slide 75

Slide 75 text

© 2023 Wantedly, Inc. / 207 1日の分割 ● 定時法 1日を均等に分割する ● 不定時法 日中と夜間をそれぞれ分割する ○ 日中の1時間は夏ほど長くなり、夜間の1時間は夏ほど短くなる 75

Slide 76

Slide 76 text

© 2023 Wantedly, Inc. / 207 時間 現代の24時間制 ● 1日を24等分し、1時間とする ● 0時 = 真夜中(正子) 76

Slide 77

Slide 77 text

© 2023 Wantedly, Inc. / 207 時間 ● 12時間表記 = 昼と夜に同じ数を使う ● 真夜中と真昼の表記ゆれ問題 ○ 下の表のうち h12 と h23 が一般的 真夜中 真昼 真夜中 h11 0 AM 1 AM …… 11 AM 0 PM 1 PM …… 11 PM 0 AM h12 12 AM 1 AM …… 11 AM 12 PM 1 PM …… 11 PM 12 AM h23 0 1 …… 11 12 13 …… 23 0 h24 24 1 …… 11 12 13 …… 23 24 77

Slide 78

Slide 78 text

© 2023 Wantedly, Inc. / 207 アナログ時計盤 ● 北半球の日時計の動きに由来 ○ ただし、元々の日時計(コマ型)は1時間に1/24周進む ● 24時間表示の時計もある 78

Slide 79

Slide 79 text

© 2023 Wantedly, Inc. / 207 本初子午線 ● 東西に移動すると太陽も動く → 観測される時刻が変わってしまう (ローカルタイム) ● 時間の基準となる経度 (本初子午線) を地域ごとに決めて 統一する ○ 有限個のローカルタイムだけを扱えばよくなる ● グリニッジ天文台の平均時 (GMT) が基準になった ○ ローカルタイムはGMTとの差分で表示 (オフセット) ○ 日本では明石 (東経135°) で12時がちょうどになる ○ 現在はGMTではなくUTCを使い (後述)、本初子午線も再計算されている ちなみにグリニッジはGreenwichと綴る 79

Slide 80

Slide 80 text

© 2023 Wantedly, Inc. / 207 夏時間 ● 季節にあわせて時計をずらす仕組み ● 夏と冬で異なるオフセットを観測する ○ タイムゾーン ≠ オフセット ○ オフセット = ローカルタイムとUTCの差 80

Slide 81

Slide 81 text

© 2023 Wantedly, Inc. / 207 夏時間 例: 山岳部時間 ● ユタ州: 山岳部時間 (MT) → 夏: 山岳部夏時間 (MDT) → 冬: 山岳部標準時 (MST) ● アリゾナ州: 山岳部時間だが夏時間を使わない (MST) ○ ナバホ族の土地を除く 81

Slide 82

Slide 82 text

© 2023 Wantedly, Inc. / 207 06:00 UTC 07:00 UTC 08:00 UTC 09:00 UTC 10:00 UTC 夏時間 夏時間による時刻のスキップ 23:00 00:00 01:00 02:00 03:00 04:00 05:00 MST MDT (2023-03-12) 82

Slide 83

Slide 83 text

© 2023 Wantedly, Inc. / 207 06:00 UTC 07:00 UTC 08:00 UTC 09:00 UTC 10:00 UTC 夏時間 夏時間による時刻の重複 23:00 00:00 01:00 02:00 03:00 04:00 05:00 MST MDT (2023-11-05) 83

Slide 84

Slide 84 text

© 2023 Wantedly, Inc. / 207 タイムゾーン ● 「タイムゾーン = (オフセット, 夏時間の有無)」? 84

Slide 85

Slide 85 text

© 2023 Wantedly, Inc. / 207 タイムゾーン ● タイムゾーン ≠ (オフセット, 夏時間の有無) ● オフセットは人為的に決まるもの → 様々な事情で変化する ○ オフセットを変えようという政治的判断があるかもしれない ○ 夏時間制度の設立・廃止 ○ 夏時間の開始日と終了日のルールもまちまち ○ 征服、合併、移管、独立、etc. 85

Slide 86

Slide 86 text

© 2023 Wantedly, Inc. / 207 タイムゾーン 結局、タイムゾーンの良い定義とは? ● ある時点でのオフセットを一意に決定したい ● そのために必要十分な地域情報 = タイムゾーン ○ 少なくともtzdbはこの定義 (ただし1969年以前の多様性は同一視する) ● 例: Asia/Tokyo と Asia/Seoul ○ 現在は同じ UTC+9 ○ 過去には異なるベースオフセットや異なる夏時間規則が使われていた 86

Slide 87

Slide 87 text

© 2023 Wantedly, Inc. / 207 タイムゾーンと国と言語 ● タイムゾーンと国は対応しない ○ アメリカは本土だけでも大きく4つのタイムゾーンに分かれる ○ 逆に Europe/Berlin はデンマーク、ノルウェー、スウェーデン等でも使われる ● タイムゾーンと言語は対応しない ○ 言わずもがな 87

Slide 88

Slide 88 text

© 2023 Wantedly, Inc. / 207 タイムゾーンの未来 ● タイムゾーンが将来どうなるのかはわからない ○ それはその地域の人達が決めることなので ● tzdbは現在わかっていることを反映しているだけ ○ 未来の情報には注意 88

Slide 89

Slide 89 text

© 2023 Wantedly, Inc. / 207 tzdb ● タイムゾーンごとのオフセット情報をまとめたデータ ● 有志の協力によって成り立っている (すごい) ○ ICANNの支援はある ● Asia/Tokyo のような表記はtzdbに由来 89

Slide 90

Slide 90 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● 本来の時刻は経度に依存する → 地域ごとに特定のオフセットに揃える運用 ● 夏時間: 季節によりオフセットが変わる ○ 切り替わりのタイミングの地方時にはジャンプが発生する ● オフセットは政治的な判断で変わることがある ○ 将来のことはわからない ○ これらの歴史を引っくるめて「タイムゾーン」として考える必要がある 90

Slide 91

Slide 91 text

© 2023 Wantedly, Inc. / 207 §5 秒 91

Slide 92

Slide 92 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● UTCなら1日は86400秒だよね? 92

Slide 93

Slide 93 text

© 2023 Wantedly, Inc. / 207 物理現象と時間 ● 天体による計時 ○ 太陽の動き ○ 月の動き ○ 恒星の動き etc… ● 物理現象による計時 ○ 水時計 ○ 振り子時計 ○ 水晶時計 ○ 原子時計 etc… 93

Slide 94

Slide 94 text

© 2023 Wantedly, Inc. / 207 秒 ● 1秒 = 1/86400日 だった ● 時計の精度が高くなった → 地球の回転のほうが精度が低い → 秒の再定義 (ET, TAI) ● 太陽と地球の動きの単位 から 原始的な物理現象の単位 へ 94

Slide 95

Slide 95 text

© 2023 Wantedly, Inc. / 207 秒と日 ● 逆に、1日を86400秒と定義すればよいのでは? ○ そういうスケールもある (TAI; 後述) ● しかし、日は昼夜に根ざした単位である ○ 昼夜と同期しない「日」を使うのはそれはそれで問題がありそう ○ そんなわけで、我々はUTCの定義 (後述) のもとで生活している ● とはいえ…… ○ 本初子午線を決めるということは太陽高度とのずれを許容するということだし、 ○ 夏時間も実際の太陽の動きとは違う時刻を観測するということだし、 ○ 実はそんなに困らないのでは…… という気もしないではない ○ 以降ではこの疑問は脇に置いて、 UTCを解説します 95

Slide 96

Slide 96 text

© 2023 Wantedly, Inc. / 207 世界時 ● 世界時 (UT): 地球の回転にもとづく時刻 ○ 平均太陽日を計測していたGMTの改良版 ○ 天体観測によって決まる ○ 地球の回転の不規則性に影響を受ける ● UT0, UT1, UT2 がある ○ 補正方法の異なる3つのバリエーション ○ UT0 = 各地点での観測値 (旧GMTはここに含まれる) 経度補正はするが、それでも誤差が残る ○ UT1 = UT0 - 観測地点ごとの差(主に極運動に由来) ○ UT2 = UT1 - 季節変動 96

Slide 97

Slide 97 text

© 2023 Wantedly, Inc. / 207 暦表時 ● 暦表時 (ET) ○ 地球の自転に依存しない時刻系 ○ 天体観測に基づく点は同じだが、力学的な観点での時間を観測する ● 「86400秒」が日の動きと連動しなくなった ● SI秒の定義 (1956〜1967) ○ その後、原子時計にその座を譲った 97

Slide 98

Slide 98 text

© 2023 Wantedly, Inc. / 207 TAI ● 国際原子時 (TAI) ○ 地球上の原子時計で測定 → 天体の動きには依存しない (正確な議論は後述) ○ ジオイド上の固有時が使われる (後述) ● 日付時刻表示 ○ 1958年1月1日0時にUT2と一致するようにカウントしている ○ 基準点が決まっているため、1日=86400秒として日付換算して表示できる ○ UTCとの差は37秒 (2022年時点) 98

Slide 99

Slide 99 text

© 2023 Wantedly, Inc. / 207 UTC UTC (協定世界時) ● TAI (秒の測定) と UT1 (日の測定) の調停による時刻 ● TAIとの関係 ○ TAIとの差は整数秒でなければならない ● UT1との関係 ○ UT1との差は0.9秒以内でなければならない ● 解は一意ではない ○ 1.8秒区間に入ればいいので、2つの解がある可能性がある ○ IERSという団体が決定する 99

Slide 100

Slide 100 text

© 2023 Wantedly, Inc. / 207 閏秒 ● UTC = TAI ± 整数 ● この「整数」部分を変えるときにジャンプが必要 → 閏秒 ● 秒の追加のほかに、秒の削除もある ○ 削除も閏秒と呼ばれる ○ 追加されるか削除されるかは地球の回転しだい ○ 削除した例はまだない 100

Slide 101

Slide 101 text

© 2023 Wantedly, Inc. / 207 閏秒のルール ● 閏秒の挿入・削除はUTCの月末に行われる ○ 原則として6月末または12月末 ○ 日本時間では7/1または1/1の8時末になる ● 閏秒の挿入: 23:59:59のあとに23:59:60が追加 ○ 日本時間では8:59:60 ● 閏秒の削除: 23:59:58のあとの23:59:59を除去 101

Slide 102

Slide 102 text

© 2023 Wantedly, Inc. / 207 閏秒の挿入 2016年末 (日本では2017年初) の閏秒 UTC TAI UTC - TAI 2016-12-31 23:59:58 2017-01-01 00:00:34 -36 2016-12-31 23:59:59 2017-01-01 00:00:35 -36 2016-12-31 23:59:60 2017-01-01 00:00:36 - 2017-01-01 00:00:00 2017-01-01 00:00:37 -37 2017-01-01 00:00:01 2017-01-01 00:00:38 -37 102

Slide 103

Slide 103 text

© 2023 Wantedly, Inc. / 207 閏秒の削除 閏秒の削除 (架空の例) UTC TAI UTC - TAI 20XX-06-30 23:59:57 20XX-07-01 00:00:37 -40 20XX-06-30 23:59:58 20XX-07-01 00:00:38 -40 20XX-07-01 00:00:00 20XX-07-01 00:00:39 -39 20XX-07-01 00:00:01 20XX-07-01 00:00:40 -39 20XX-07-01 00:00:02 20XX-07-01 00:00:41 -39 103

Slide 104

Slide 104 text

© 2023 Wantedly, Inc. / 207 閏秒情報 ● IANAから取得できる ○ https://data.iana.org/time-zones/tzdb/leapseconds ○ https://data.iana.org/time-zones/tzdb/leap-seconds.list ● 時刻同期プロトコルからも取得できる 104

Slide 105

Slide 105 text

© 2023 Wantedly, Inc. / 207 時間計算 ● 未来の閏秒はわからない ○ 6ヶ月前くらいにならないとアナウンスされない ● 閏秒がわからなければ、UTCとTAIは変換できない ● UTCによる時間計算 ○ 「n日後」を計算できる ○ 「n秒後」は正確には計算できない ● TAIによる時間計算 ○ 「n秒後」を計算できる ○ その瞬間がUTCで何日何時何秒なのかは正確にはわからない 105

Slide 106

Slide 106 text

© 2023 Wantedly, Inc. / 207 時間計算 ● UTCにおける「n日後」の問題 ○ 挿入された閏秒のn日後 → その秒は存在しない ○ 日の最後の秒のn日後が削除された閏秒だった場合 → その秒は存在しない ● 2/29と同じ問題 ○ 2/29ほど気にしている人は多くなさそう 106

Slide 107

Slide 107 text

© 2023 Wantedly, Inc. / 207 閏秒の未来 ● 閏秒の挿入頻度は減りつつある ○ 現在のUTCになった1972年が一番差が大きかった ○ その後、地球の自転はだんだん速くなっている ● 最後の閏秒は2016年末 (日本では2017年初) ○ UT1 - UTCは減少トレンドへ? ○ 閏秒の削除が見られるかもしれない ? ● 閏秒自体がなくなる可能性も ○ UTCとUT1の許容差が広げられるかもしれない → 「100年に1回の閏分」とかになるかも? ○ 2035年頃までに変更を加えることがBIPMで提案されている 107

Slide 108

Slide 108 text

© 2023 Wantedly, Inc. / 207 UTC(k) ● “UTC” を測っている時計はない ● UTC(k): 各地の原子時計の値 ○ UTC(NIST), UTC(USNO) – アメリカ ○ UTC(NICT), UTC(NMIJ) – 日本 etc. ● UTCはUTC(k)との差分としてのみ計測できる ○ BIPMが5日ごとに発行 (Circular T) ○ TAI と TA(k) の差分と考えてもよい 108

Slide 109

Slide 109 text

© 2023 Wantedly, Inc. / 207 おまけ: 時刻系のオフセット オフセット相関のざっくりした歴史 GMT/UT UT1 UT2 TAI 1958 1960 UTC (old) 季節差補正 同期 UTC 1955 1972 ET 10s 32.184s 37s 同期 N ow (うるう秒で徐々 に増加) 0s (徐々に 増加) (固定) ? 1952 TDT 1984 TT 1991 1980 GPST 19s (固定) 日に追従 秒に追従 109

Slide 110

Slide 110 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● 1日 ≠ 86400秒 ● UTC: 1日を数える → 閏秒で調整 ● TAI: 86400秒を数える ● 未来のUTCとTAIの相互変換はできない ○ 言い換えると、経過日数表示と経過秒数表示の相互変換はできない ○ 数秒〜数十秒の誤差を許容できるときは問題ない 110

Slide 111

Slide 111 text

© 2023 Wantedly, Inc. / 207 §6 相対性理論 111

Slide 112

Slide 112 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● 原子時計の精度さえ上がれば、時刻は誰が測っても同じ? 112

Slide 113

Slide 113 text

© 2023 Wantedly, Inc. / 207 特殊相対性理論 ● 絶対的な時刻は存在しない (同時の相対性) ○ 正確に言うと、相対速度が光速に近づくほど、「同時」の概念が一致しなくなる ○ 「光速度不変の原理」と「特殊相対性原理」から導かれる (特殊相対性理論) ● 時刻の定義を考え直す必要がある ○ 原子時計くらいの精度が出たり、天体くらい高速で動いたり、天体のように重たい存在が 存在したりすると、(特殊/一般)相対性理論の影響を考慮する必要がある 113

Slide 114

Slide 114 text

© 2023 Wantedly, Inc. / 207 特殊相対性理論 ● 相対性理論をざっくり説明 ○ 今日は相対性理論に至るまでの実験や演繹は置いておいて、 時間と時刻にかかわる結論だけ説明 ○ 数式汚いけど許して 114

Slide 115

Slide 115 text

© 2023 Wantedly, Inc. / 207 時空 ● 古典的な時間: t ∈ ℝ ● 古典的な空間: (x, y, z) ∈ ℝ3 ● → 時空: (ct, x, y, z) ∈ ℝ4 をまとめて考える ○ c は真空中の光速 (定数) ● 「回転」を一般化 (ローレンツ変換) ○ 空間を回転しても物理は同じ ○ → 時空を「回転」しても物理は同じ 回転すると「時間成分」の取り出し方が変わる 115

Slide 116

Slide 116 text

© 2023 Wantedly, Inc. / 207 内積 ● 空間の内積 xx’ + yy’ + zz’ ● v∙v ≥ 0 ○ = 0 のときはゼロベクトル ● 時空の内積(不定値内積) c2tt’ - xx’ - yy’ - zz’ ● v∙v の符号は色々 ○ >0 時間的 (timelike) 長さ = √v∙v ○ =0 光的 (lightlike) ゼロベクトルとは限らない ○ <0 空間的 (spacelike) 長さ = √-(v∙v) 内積は長さと角度を定める 116

Slide 117

Slide 117 text

© 2023 Wantedly, Inc. / 207 長さ 空間の等距離面 (x,y表示) x y 0 x t 0 時空の等距離面 (x,t表示) (青 = 時間的、黒 = 光的、赤 = 空間的) 横方向にむっちゃ圧縮されてるので注意。あとここに y軸を描き加えると dz2軌道みたいな回転体になる 117

Slide 118

Slide 118 text

© 2023 Wantedly, Inc. / 207 回転 回転は内積を保つ x y 0 x t 0 「回転」は内積を保つ ※ローレンツ変換 内積の保存以外にも必要な条件がある (省略) 118

Slide 119

Slide 119 text

© 2023 Wantedly, Inc. / 207 直交性 直交 v∙w=0 x y 0 x t 0 「直交」 v∙w=0 (見た目上は直交してない) x’ y’ x’ t’ 上図のように c=1で描いている場合、「直交」 =斜め45度線を中心に対称、と図示できる 119

Slide 120

Slide 120 text

© 2023 Wantedly, Inc. / 207 直交性 x t 0 「直交」 v∙w=0 (見た目上は直交してない) x’ t’ x軸 = t軸方向に進む観測者 にとっての同時性 x’軸 = t’軸方向に進む観測者 にとっての同時性 120

Slide 121

Slide 121 text

© 2023 Wantedly, Inc. / 207 角度 空間上の角度 ● v, w: 非ゼロベクトル ● v∙w/|v||w| = cosθ ↑角度 時空上の「角度」 ● v, w: 時間的ベクトル ● v∙w/|v||w| = ±cosh r ↑ラピディティ (相対速度のatanh) cos ではなく cosh なので注意 ● 値域は1以下ではなく1以上になる ● 周期性はない 121

Slide 122

Slide 122 text

© 2023 Wantedly, Inc. / 207 固有時 ● 座標時: 外部の観測者から見た時間 ○ 観測者の動きによって異なる結果になる ● 固有時: 観測対象自身から見た時間 ○ 観測者によらない ○ 時間的ベクトルの長さを積分すると得られる ∫√(c2dt2 - dx2 - dy2 - dz2) / c ● 時間の遅れ ○ 動く物体の固有時は短くなる (上式のx, y, z成分の寄与) 122

Slide 123

Slide 123 text

© 2023 Wantedly, Inc. / 207 双子のパラドックス パラドックスの説明: ● 相対速度があるとき、お互いの時間は遅れて見える ● 片方から遅れて見えるなら、もう片方からは進んで見えるはず ではないのか? 123

Slide 124

Slide 124 text

© 2023 Wantedly, Inc. / 207 双子のパラドックス ● Alice: 静止 Bob: 速度0.8cで移動して戻ってくる ○ Aliceから見て5年経ったところで折り返し ● Aliceの固有時では10年経過 ● Bobの固有時では6年経過 (図上の長さ ≠ 時空上の長さ に注意) x = 0, t = 0 x = 4, t = 5 x = 0, t = 10 Alice Bob 10 3 3 124

Slide 125

Slide 125 text

© 2023 Wantedly, Inc. / 207 双子のパラドックス ● 往路のBobから見ると、3年で折り返し ● このときAliceは1.8年しか経っていない ○ → これは往路のBobから見た同時性 x’ = 0, t’ = 0 x’ = 0, t’ = 3 Alice Bob 10 3 3 125

Slide 126

Slide 126 text

© 2023 Wantedly, Inc. / 207 双子のパラドックス ● 復路に入ると、 Aliceは8.2年経ったように見える ○ →これは復路のBobから見た同時性 ● 方向転換によってBobから見たAliceの「同 時」が6.4年ずれた x’’ = 13.33, t’’ = 13.66 x’’ = 13.33, t’’ = 16.66 Alice Bob 10 3 3 126

Slide 127

Slide 127 text

© 2023 Wantedly, Inc. / 207 双子のパラドックス パラドックスの答え ● どちらかが加速しないと再び出会うことはない ● 加速したときに同時性が変わるため、辻褄は合う 127

Slide 128

Slide 128 text

© 2023 Wantedly, Inc. / 207 三角不等式の逆 AliceとBobの例では、 三角不等式 (直線距離が一番短い) の逆が起きている ● 直線距離が一番長い ● たくさん寄り道したほうが固有時が短くなる ● そのためには加速する必要がある ベクトルが全て時間的or光的で未来方向を向いている場合に限る 128

Slide 129

Slide 129 text

© 2023 Wantedly, Inc. / 207 時間と時刻 (相対性理論) ● 時刻 = 時間を積分したもの ○ 積分定数の任意性は紀元の任意性 ● 固有時の積分は積分経路に依存する ○ 「三角不等式の逆」の話 ● → 時刻は(積分)経路に依存する 129

Slide 130

Slide 130 text

© 2023 Wantedly, Inc. / 207 重力による時間の遅れ ● 主たる観測者である我々は地表にいる ○ 同じ地表でも、自転に追従する/しないでも状況が違う (はず) ○ 我々は自転に追従している ● 地表は慣性系ではない → 相対論効果を考慮する必要がある ○ ナノ秒くらいのレベルでは実際に差が出るらしい 130

Slide 131

Slide 131 text

© 2023 Wantedly, Inc. / 207 一般相対性理論 一般相対性理論 ● 特殊相対性理論 + 重力の理論 ○ 今回の話にかかわる部分の要点だけはわかったので何とか説明してみる (重力による時間の遅れを説明するだけなら要らないかもしれない ) 131

Slide 132

Slide 132 text

© 2023 Wantedly, Inc. / 207 一般相対性理論 ● 重力を慣性力(見かけ上の力) の一種として扱う (EEP) ● 自由落下 = 曲がった時空上をまっすぐ進んでるだけ ○ 逆に、我々は9.8m/s2で上に押し上げられ、加速し続けている 132

Slide 133

Slide 133 text

© 2023 Wantedly, Inc. / 207 一般相対性理論 ● 局所慣性系の中では特殊相対性理論が(一次近似として) 成立する ○ 2点間のベクトルには意味がなくなるが、微少量をあらわすベクトル (接ベクトル) の計算 は同じようにできる ○ v∙w ではなく g μν xμyν と書く (基本計量テンソル + アインシュタインの縮約記法) ● 固有時の微小量は dτ = (1/c)√(g μν dxμdxν) ● ↑固有時の計算は非慣性系でも同じ 133

Slide 134

Slide 134 text

© 2023 Wantedly, Inc. / 207 一般相対性理論 ● 特殊相対性理論では時空はまっすぐ(平坦)で良かった → 慣性に従って動く限り、  途中の経路(測地線)は1通りしかない ● 一般相対性理論ではそうではない ○ たとえば重力レンズで複数の像が見える場合、 2つの異なる測地線がある ● どのみち経路を指定しないと時間は定まらない 134

Slide 135

Slide 135 text

© 2023 Wantedly, Inc. / 207 重力による時間の遅れ ● 地上の時間計測に一番影響を与える相対論効果は 重力によるもの ● 重力の影響度を固定するルールが必要 135

Slide 136

Slide 136 text

© 2023 Wantedly, Inc. / 207 ジオイド ● ジオイド = 地球の計算上の海水面 = 地表の等重力(遠心力を含む) ポテンシャル面(のひとつ) ○ ポテンシャルが同じだけで、力の大きさは一定ではない (極では小さくなる) ● TAIはジオイド上の固有時を測っている ○ 1977年からの定義 ○ 原子時計の値を高度で補正して、各地の値と平均して使う 136

Slide 137

Slide 137 text

© 2023 Wantedly, Inc. / 207 さまざまな座標時 ● TAI = 地上の都合にあわせた時計 ● 宇宙のことを考えるときは別の時刻系を使うことがある ○ 地心座標時、太陽系座標時など ○ TAIのことは地球時(TT)と呼ばれている (30秒ほどの定数オフセットがあるので本当は別物 ) 137

Slide 138

Slide 138 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● 「時刻」という概念は観測方法に依存する ○ 観測者の移動速度や加速度が関係してくる ○ 特に重要→ 重力の影響 ● 常用時はジオイド (≈ 海水面) 上の時間の流れで定義される 138

Slide 139

Slide 139 text

© 2023 Wantedly, Inc. / 207 第3部 コンピューティング 139

Slide 140

Slide 140 text

© 2023 Wantedly, Inc. / 207 本日の流れ ● 第1部・第2部: 「日付時刻」そのものについて扱った ○ 日付とは何なのか? 時刻とは何なのか? がわかるようになった ● 第3部: 「日付時刻」の扱い方の話 ○ 「日付時刻」というシステムそのものではなく、それをコンピューターでどう扱うかという部 分に注目したトピック ○ 第1部・第2部でも部分的に扱っていたが、その残りをここに集約 140

Slide 141

Slide 141 text

© 2023 Wantedly, Inc. / 207 §7 コンピューティング – 文字列表現 141

Slide 142

Slide 142 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● ISO8601って言っておけばOK? 142

Slide 143

Slide 143 text

© 2023 Wantedly, Inc. / 207 文字列表現 ● アメリカ方式 May 4, 2007 → 05/04/2007 ● 英・欧州方式 4 May, 2007 → 04/05/2007 ● アジア方式 2007年5月4日 → 2007/05/04 ● 曖昧すぎる ○ 04/05/07 と書かれた日には目も当てられない 143

Slide 144

Slide 144 text

© 2023 Wantedly, Inc. / 207 文字列表現 ● ISO8601 (≈ RFC3339) ○ 2007-05-04T12:34:56+09:00 ● その他 ○ RFC5322 (← RFC822, RFC2822) Fri, 04 May 2007 12:34:56 +0900 ○ asctime Fri May ␣4 12:34:56 2007 etc. 144

Slide 145

Slide 145 text

© 2023 Wantedly, Inc. / 207 ISO8601 ● ISO8601基本形式 20070405T123456+0900 ○ 文字列の長さによってフォーマットを判別する形式 ● ISO8601拡張形式 2007-04-05T12:34:56+09:00 ○ 区切り文字によってフォーマットを判別する形式 ○ “ISO8601” というとこれを指すことが多い (XML Schema, Rubyなど) 145

Slide 146

Slide 146 text

© 2023 Wantedly, Inc. / 207 ISO8601 ● 暦日付 (年+月+日) 2007-05-04 ○ “ISO8601” というとこれを指すことが多い ● 年間通算日 (年+日) 2007-124 ● 暦週日付 (年+週+日) 2007-W18-5 ○ 年末年始では「年」がずれることがあるので注意 ! ○ 2014年末にTwitterがやらかしている 146

Slide 147

Slide 147 text

© 2023 Wantedly, Inc. / 207 ISO8601 ISO8601の規定は広い ● --0504 ○ 「5月4日」の意味 ● 20070504T123456/20070531T240000 ○ 1つ目の時刻から2つ目の時刻までの間隔をあらわす ○ 5/31 24:00:00 は 6/1 00:00:00 と同じ意味 ● etc. ● 一言で “ISO8601” で済ませようとすると大変なことに 147

Slide 148

Slide 148 text

© 2023 Wantedly, Inc. / 207 RFC3339 RFC3339 ● ISO8601をもとにしたインターネット向け仕様 ● 「暦日付の拡張形式による完全表記」だけを許可 ○ シンプル! ● 独自拡張: “T” のかわりにスペースを使うオプション ○ 2007-05-04 12:34:56+09:00 148

Slide 149

Slide 149 text

© 2023 Wantedly, Inc. / 207 遡及グレゴリオ暦 ● 1582年10月14日以前の日付を扱うときは注意 ● ISO8601 → 当事者間の合意があれば遡及グレゴリオ暦とす る ● RFC3339 → 規定なし ○ インターネットタイムスタンプとして出てくることはまずないという期待 149

Slide 150

Slide 150 text

© 2023 Wantedly, Inc. / 207 特別な値 ● ゼロ値 ○ 0000-00-00 など ○ 00-00や99-99は存在しない日付である点に注意 ○ 例: MySQLの 0000-00-00 00:00:00 ● 閏秒 ○ 対応していないケースも多い 150

Slide 151

Slide 151 text

© 2023 Wantedly, Inc. / 207 2000年問題 ● 年を2桁で書くと曖昧になる ● Java/JavaScriptのDate.getYear ● ASN.1のUTCTime etc. ● ISO 8601, RFC 822 (現5322) なども当初は2桁だった 151

Slide 152

Slide 152 text

© 2023 Wantedly, Inc. / 207 Java/JavaScript Date API ● 月が0始まりになっているので注意 ○ Jan, Feb, Mar, … との変換で便利からだろうか 152

Slide 153

Slide 153 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● RFC3339って言っておけばOK ○ Tを使うかスペースを使うかを明示しておくとなお良い 153

Slide 154

Slide 154 text

© 2023 Wantedly, Inc. / 207 §8 コンピューティング – 数値表現 154

Slide 155

Slide 155 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● Unix timeはepochからの経過秒数をあらわしている? ● Epochが違うだけで、タイムスタンプはどれも実質同じ? 155

Slide 156

Slide 156 text

© 2023 Wantedly, Inc. / 207 Unix time ● Unix time: 1970-01-01T00:00:00 からの経過秒数 ● ↑どの時刻系? 156

Slide 157

Slide 157 text

© 2023 Wantedly, Inc. / 207 Unix timeと閏秒 ● Unix timeでは常に 1日 = 86400秒 ● → Unix timeはUTCのようで、UTCではない ○ 閏秒を加味しない ● 「 UT1に緩く追従する素朴時刻系」とでも呼べばいいかもしれない ● UTCとして使うなら、閏秒情報を別途記録する必要が 157

Slide 158

Slide 158 text

© 2023 Wantedly, Inc. / 207 システムクロックと閏秒 ● OSは閏秒のないAPIにも時刻を提供する必要がある ● いくつかの方法がある ○ OSが明示的に閏秒を扱う (ジャンプが発生する) ○ ナイーブにstep同期する (ジャンプが発生する / UTCと非互換) ○ ナイーブにslew同期する (UTCと非互換) ○ 閏秒の希釈が適用されたNTPサーバーを使う (UTCと非互換) 158

Slide 159

Slide 159 text

© 2023 Wantedly, Inc. / 207 システムクロックと閏秒 adjtimex(2) の場合 (Linux) ● 事前に閏秒の有無を申告しておく (1日以内) ○ これは通常ntpdが行う ● 1日の終わりにカーネルが自動的に閏秒を挿入・削除する ● 挿入時は23:59:60は二回目の23:59:59になる ○ 他の時刻APIからは、1秒巻き戻ったように見える 159

Slide 160

Slide 160 text

© 2023 Wantedly, Inc. / 207 システムクロックと閏秒 ● adjtimex(2) による閏秒の挿入 23:59:58 23:59:59 00:00:01 00:00:02 00:00:00 (STA_INS, TIME_INS) (STA_INS, TIME_INS) 23:59:60 (STA_INS, TIME_OOP) (STA_INS, TIME_WAIT) (STA_INS, TIME_WAIT) (STA_INS, TIME_OK) (0, TIME_OK) (0, TIME_WAIT) (0, TIME_OK) ntp_next_leap_sec adjtimex(2) adjtimex(2) 160

Slide 161

Slide 161 text

© 2023 Wantedly, Inc. / 207 システムクロックと閏秒 ● adjtimex(2) による閏秒の削除 23:59:58 23:59:59 00:00:01 00:00:02 00:00:00 (STA_DEL, TIME_DEL) (STA_DEL, TIME_WAIT) (STA_DEL, TIME_WAIT) (STA_DEL, TIME_OK) (0, TIME_OK) (0, TIME_WAIT) (0, TIME_OK) ntp_next_leap_sec adjtimex(2) adjtimex(2) 161

Slide 162

Slide 162 text

© 2023 Wantedly, Inc. / 207 ナイーブな同期 閏秒を無視してNTPから同期する場合 ● step同期 ○ 閏秒後の最初の同期で1秒のジャンプが発生する ● slew同期 ○ 閏秒後の最初の同期時に段階的な補正が始まる ○ 少しずつ時刻をずらしていき、最終的に 1秒分の差が補正される 162

Slide 163

Slide 163 text

© 2023 Wantedly, Inc. / 207 閏秒の希釈 閏秒の希釈 (Leap-smearing) ● はじめから閏秒分を均した時刻を提供する ● GoogleのNTPサーバーなど 163

Slide 164

Slide 164 text

© 2023 Wantedly, Inc. / 207 2038年問題 ● Unix timeで2147483648となる時刻 ○ 2038-01-19T03:14:08 ● Unix timeをsigned 32-bit integerで持っていると壊れる ● 似たような問題 (○○年問題) は他にも色々ある ○ “Time formatting and storage bugs” というWikipedia記事がわかりやすい 164

Slide 165

Slide 165 text

© 2023 Wantedly, Inc. / 207 その他のタイムスタンプ Unix time以外にもいろいろある 紀元 閏秒 Windows FILETIME 1601-01-01T00:00:00 ? NTP time 1900-01-01T00:00:00 × Unix time 1970-01-01T00:00:00 × GPS time 1980-01-06T00:00:00 ✔ GLONASS time ? × Galileo System time 1999-08-22T00:00:00 ✔ 165

Slide 166

Slide 166 text

© 2023 Wantedly, Inc. / 207 単調クロック 時刻取得APIは大きく2つに分けられる ● Realtime clock (wall clock) ○ いわゆる普通の「時刻取得」 ● Monotonic clock ○ 巻き戻らない時刻 ○ 各コンピューターに固有の時刻系 ● なぜ? ○ 閏秒やNTPによる同期などを起因として、時刻が巻き戻ることがある ○ これは「時間」の計測には不適当 (他にも、サスペンド時に時間経過するべきかどうか といった違いも考慮に入れる必要がある ) 166

Slide 167

Slide 167 text

© 2023 Wantedly, Inc. / 207 タイマーAPI タイマーAPI ● いわゆるsleep関数 ○ だいたいの言語にある ● 大事なこと: sleepで時間を測らない ○ sleep 1が終わった後が1秒後とは限らない ○ 一般的な実行環境ではリアルタイム性の保証はない (プロセスやコンピューター自体の休眠状態がいつでも発生しうる ) ○ JSのsetTimeoutのように、意図的に間引いて実行される例も 167

Slide 168

Slide 168 text

© 2023 Wantedly, Inc. / 207 相対時間指定 ● 相対 vs. 絶対時刻指定 ○ 例: expires_in vs. expires_at ● 通信遅延の折り込み方が異なる ○ 絶対指定 → 送信側から見て固定猶予 ○ 相対指定 → 通信遅延分だけ延びる (受信側から見て固定猶予) 168

Slide 169

Slide 169 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● Unix timeは閏秒を含まない ● 閏秒を含む時刻表現もある ● コンピューター内では時計の補正に対する挙動の異なる複数 の時刻系がある ○ Realtime clock: 現実世界の時刻系と対応 ○ Monotonic clock: 単調増加するような固有の時刻系 169

Slide 170

Slide 170 text

© 2023 Wantedly, Inc. / 207 §9 コンピューティング – 時刻同期 170

Slide 171

Slide 171 text

© 2023 Wantedly, Inc. / 207 この章の命題 ● 時刻同期といえばNTP? 171

Slide 172

Slide 172 text

© 2023 Wantedly, Inc. / 207 標準電波 ● 電波による時刻同期 ○ 「時間」の基準としても使える ○ UTCが必要になった理由はこれ ● 日本には2つある ○ おおたかどや山標準電波送信所 ○ はがね山標準電波送信所 ● プロトコルは色々らしい ○ 日本の標準電波(JJY)はIRIG派生 ● 時刻の遅れ ○ 電波を受信するだけなので、雑に言えば距離の分だけ遅れる 172

Slide 173

Slide 173 text

© 2023 Wantedly, Inc. / 207 GNSS ● GNSS: 位置情報システム ● GPSと呼ばれることも多い ○ GPSはアメリカのGNSSのこと ● 端的に言えば、複数個の衛星が時刻を放送する仕組み ○ 受信した時刻の遅れから距離がわかる ○ 距離がわかると、自分の位置がわかる ○ 自由度4 (経緯度・高度・時計のずれ) なので、4つ以上あれば特定できる ● → 時刻同期にも使える ○ 電波塔と同じ ○ 位置と同時に特定するので、うまくいけば衛星からの距離分も補正できる 173

Slide 174

Slide 174 text

© 2023 Wantedly, Inc. / 207 GNSS ● GNSSのプロトコルもまちまち ● GPS time: うるう秒を含む経過秒数で配信 ○ 1980年1月6日が基準 174

Slide 175

Slide 175 text

© 2023 Wantedly, Inc. / 207 NTP ● NTP: IP上で時刻同期する仕組み ● 放送ではなく通信 → 往路と復路がある ○ 両方の時間を記録しておく → 遅延を打ち消すことでより正確な結果を得ることができる ○ Broadcast modeもあるが、その場合も先行してキャリブレできる 175

Slide 176

Slide 176 text

© 2023 Wantedly, Inc. / 207 NTP ● 中継局を置くことがある ○ 負荷分散など ● 中継すると誤差が累積する→ Stratum 番号であらわす ○ Stratum 0 = オリジナル (原子時計など) をあらわす仮想的な番号 ○ Stratum 1 = ルートサーバー ○ Stratum N+1 = Stratum Nから同期しているサーバー 176

Slide 177

Slide 177 text

© 2023 Wantedly, Inc. / 207 NTP ● NTP Time: 1900-01-01T00:00:00 からの経過秒数 ただし閏秒は除く ● 閏秒はLI flagでアナウンスされる ○ 00 閏秒なし ○ 01 その日の末尾に閏秒を挿入 ○ 10 その日の末尾で閏秒を削除 177

Slide 178

Slide 178 text

© 2023 Wantedly, Inc. / 207 step / slew NTPを使った時刻同期→ 2つのモードがある ● step: 正確な時刻で上書き ○ アプリケーションからは時刻が巻き戻ったり、知らない間に何時間も経過しているように見 える ● slew: 徐々に正確な時刻に近付ける ○ 同期には時間がかかるが、より安全 ● 差によってstep/slewを切り替えるのが一般的 ○ 128ms以上ならstep、など 178

Slide 179

Slide 179 text

© 2023 Wantedly, Inc. / 207 NTPサーバーただ乗り問題 ● NTPサーバーを善意で公開したらデフォルト設定として普及し てしまった事例 (福岡大学) ● 時刻同期ではなく疎通確認に濫用するケースも ● 止めるとDDoS攻撃(実際は大量のリトライ) を受けるので 簡単には止められない 179

Slide 180

Slide 180 text

© 2023 Wantedly, Inc. / 207 Roughtimeプロトコル Roughtime ● セキュアな時刻同期のための実験的なプロトコル ○ ちょっと面白いので紹介 180

Slide 181

Slide 181 text

© 2023 Wantedly, Inc. / 207 Roughtimeプロトコル 何が問題か? ● TLSなどの一般的なセキュア通信は証明書に依存 ● 証明書には期限がある → 安全性が時刻に依存 ○ この目的では精度は高くなくてよい (10秒程度に収まっていれば全く問題ない ) ● その時刻の同期を安全に行うには? ○ NTPのセキュア通信 (NTS) を使う手もある ○ しかし、単一の時刻サーバーを信頼するのは最適ではない 181

Slide 182

Slide 182 text

© 2023 Wantedly, Inc. / 207 Roughtimeプロトコル Roughtimeプロトコルのアイデア ● サーバーにnonce(ランダムな値) つきで時刻問い合わせて、署名つ きのレスポンスを得る ● レスポンスをもとに次のnonceを生成することでリクエストを チェインできる ● チェインしたレスポンス内の時刻はおおむね順番通りのはず ○ そうでなければ、いずれかのサーバーの時刻が狂っている 182

Slide 183

Slide 183 text

© 2023 Wantedly, Inc. / 207 Roughtimeプロトコル Roughtimeプロトコルのアイデア ● 異なるサーバーの公開鍵をいくつか覚えておけば、それらの 合議で安全な時刻同期ができるはず ○ セキュアなNTPを使って複数のサーバーからの結果を合議しても同じくらい安全なので は? とかは思わないでもない ○ 比較的シンプルな署名だけで作れるのは面白い 183

Slide 184

Slide 184 text

© 2023 Wantedly, Inc. / 207 この章のまとめ ● 標準電波: 電波塔から送信 ● GNSS: 衛星から送信 ○ 測位のためのものだが、時刻同期にも使える ● NTP: IP経由 ○ 双方向プロトコル ● Roughtime ○ 実験的なプロトコルとして紹介した 184

Slide 185

Slide 185 text

© 2023 Wantedly, Inc. / 207 文献 185

Slide 186

Slide 186 text

© 2023 Wantedly, Inc. / 207 参考文献 ● 暦Wiki - 国立天文台暦計算室 https://eco.mtk.nao.ac.jp/koyomi/wiki/ ○ 全般 ○ むちゃくちゃ参考にしました ● 暦Wiki/要素/1日とは? https://eco.mtk.nao.ac.jp/koyomi/wiki/CDD7C1C72F1C6FCA4C8A4CFA1A9.html ○ 1日の長さ ● 地球の自転 - Wikipedia https://ja.wikipedia.org/wiki/%E5%9C%B0%E7%90%83%E3%81%AE%E8%87%AA%E8%BB%A2 ○ 自転周期 ● 暦Wiki/要素/1日の始まり https://eco.mtk.nao.ac.jp/koyomi/wiki/CDD7C1C72F1C6FCA4C8A4CFA1A92F1C6FCA4CEBBCFA4DEA4E A.html 186

Slide 187

Slide 187 text

© 2023 Wantedly, Inc. / 207 参考文献 ● 暦Wiki/要素/1年とは? https://eco.mtk.nao.ac.jp/koyomi/wiki/CDD7C1C72F1C7AFA4C8A4CFA1A9.html ○ 1年の定義 ● 暦Wiki/季節/季節のめぐりの周期 https://eco.mtk.nao.ac.jp/koyomi/wiki/B5A8C0E12FB5A8C0E1A4CEA4E1A4B0A4EAA4CEBCFEB4FC.htm l ○ 太陽年と恒星年 ● 歳差 - Wikipedia https://ja.wikipedia.org/wiki/%E6%AD%B3%E5%B7%AE ○ 太陽年と恒星年 ● 暦Wiki/1年の始まり https://eco.mtk.nao.ac.jp/koyomi/wiki/CDD7C1C72F1C7AFA4C8A4CFA1A92F1C7AFA4CEBBCFA4DEA4E A.html ● 暦Wiki/ヌマ暦 https://eco.mtk.nao.ac.jp/koyomi/wiki/A5CCA5DECEF1.html ○ Jan. と Feb. があとから挿入された話 187

Slide 188

Slide 188 text

© 2023 Wantedly, Inc. / 207 参考文献 ● 暦Wiki/月の満ち欠け/周期 https://eco.mtk.nao.ac.jp/koyomi/wiki/B7EEA4CECBFEA4C1B7E7A4B12FBCFEB4FC.html ○ 月の周期 ● 暦Wiki/周期/月 https://eco.mtk.nao.ac.jp/koyomi/wiki/BCFEB4FC2FB7EE.html ○ 月の周期 ● Lunar calendar - Wikipedia https://en.wikipedia.org/wiki/Lunar_calendar ○ 月の始まり ● 暦Wiki/月の満ち欠け/周期の変動 https://eco.mtk.nao.ac.jp/koyomi/wiki/B7EEA4CECBFEA4C1B7E7A4B12FBCFEB4FCA4CECAD1C6B0.html ○ 月の周期の変動 ● 暦Wiki/季節/季節のめぐりの周期 https://eco.mtk.nao.ac.jp/koyomi/wiki/B5A8C0E12FB5A8C0E1A4CEA4E1A4B0A4EAA4CEBCFEB4FC.htm l ○ 平均太陽年の減少傾向 188

Slide 189

Slide 189 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Calendar - Wikipedia https://en.wikipedia.org/wiki/Calendar ○ 暦の定義 ○ 暦の目的による分類 ○ 暦の方式 (太陽暦、太陰暦) ● メトン周期 - Wikipedia https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%88%E3%83%B3%E5%91%A8%E6%9C%9F ○ 太陰太陽暦で使われる近似 ● 暦Wiki/ユリウス暦 https://eco.mtk.nao.ac.jp/koyomi/wiki/A5E6A5EAA5A6A5B9CEF1.html ● 暦Wiki/グレゴリオ暦 https://eco.mtk.nao.ac.jp/koyomi/wiki/A5B0A5ECA5B4A5EAA5AACEF1.html ● Solar Hijri calendar - Wikipedia https://en.wikipedia.org/wiki/Solar_Hijri_calendar ● List of adoption dates of the Gregorian calendar by country https://en.wikipedia.org/wiki/List_of_adoption_dates_of_the_Gregorian_calendar_by_country ○ ユリウス暦からの改暦例 ● 2月30日 - Wikipedia https://ja.wikipedia.org/wiki/2%E6%9C%8830%E6%97%A5 ○ スウェーデン暦 189

Slide 190

Slide 190 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Wikipedia:表記ガイド - Wikipedia https://ja.wikipedia.org/wiki/Wikipedia:%E8%A1%A8%E8%A8%98%E3%82%AC%E3%82%A4%E3%83%89 ○ Wikipediaにおける暦の使い分けガイドライン ● Wikipedia:Manual of Style/Dates and numbers - Wikipedia https://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style/Dates_and_numbers ○ Wikipediaにおける暦の使い分けガイドライン ● When we talk about events in years before 1582, do we say the date as it was said in the Julian calendar, or is it calculated backwards to be in Gregorian? - Quora https://www.quora.com/When-we-talk-about-events-in-years-before-1582-do-we-say-the-date -as-it-was-said-in-the-Julian-calendar-or-is-it-calculated-backwards-to-be-in-Gregorian ○ 暦の使い分け ● 先発グレゴリオ暦 - Wikipedia https://ja.wikipedia.org/wiki/%E5%85%88%E7%99%BA%E3%82%B0%E3%83%AC%E3%82%B4%E3%83%A A%E3%82%AA%E6%9A%A6 ○ Prolepticの意味の確認 190

Slide 191

Slide 191 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Julian calendar - Wikipedia https://en.wikipedia.org/wiki/Julian_calendar ○ 現代でのユリウス暦の用法がほぼ宗教暦しかないことの確認 ● Islamic calendar - Wikipedia https://en.wikipedia.org/wiki/Islamic_calendar ○ 現代でのヒジュラ暦の用法がほぼ宗教暦しかないことの確認 ● Excel incorrectly assumes that the year 1900 is a leap year - Office | Microsoft Learn https://learn.microsoft.com/en-us/office/troubleshoot/excel/wrongly-assumes-1900-is-leap-year ○ Lotus 1-2-3暦とExcel暦に関する説明 191

Slide 192

Slide 192 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Lunar calendar - Wikipedia https://en.wikipedia.org/wiki/Lunar_calendar ○ 純粋太陰暦がほぼヒジュラ暦しかないことの確認 ○ リスト内に挙がっているものの多くは詳細を見てみると太陰太陽暦だった ● Week - Wikipedia https://en.wikipedia.org/wiki/Week ○ 5日、6日、7日、8日、10日周期への言及 ○ 7日週の起源 ○ 週の始まり ● 暦Wiki/要素/1週間とは?/安息日 https://eco.mtk.nao.ac.jp/koyomi/wiki/CDD7C1C72F1BDB5B4D6A4C8A4CFA1A92FB0C2C2A9C6FC.htm l 192

Slide 193

Slide 193 text

© 2023 Wantedly, Inc. / 207 参考文献 ● java - Difference between year-of-era and week-based-year? - Stack Overflow https://stackoverflow.com/questions/26431882/difference-between-year-of-era-and-week-based -year ○ week-based yearに関する例示 ● ISO 8601-1:2019 https://www.iso.org/standard/70907.html ○ week-based yearの定義 193

Slide 194

Slide 194 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Leap year problem - Wikipedia https://en.wikipedia.org/wiki/Leap_year_problem ○ 暦計算のバグの例 ● 暦Wiki/要素/1年とは?/紀元 https://eco.mtk.nao.ac.jp/koyomi/wiki/CDD7C1C72F1C7AFA4C8A4CFA1A92FB5AAB8B5.html ● 暦Wiki/歴史/元号 https://eco.mtk.nao.ac.jp/koyomi/wiki/CEF2BBCB2FB8B5B9E6.html ● 0年 - Wikipedia https://ja.wikipedia.org/wiki/0%E5%B9%B4 ○ 西暦0年問題 194

Slide 195

Slide 195 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Time Zone Database https://www.iana.org/time-zones ● List of tz database timezones - Wikipedia https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ○ タイムゾーンと国の対応関係などがわかる ● タイムゾーン呪いの書 (知識編) https://zenn.dev/dmikurube/articles/curse-of-timezones-common-ja ○ タイムゾーンの話以外にも、本資料と同様のスコープに踏み込んで実践的にまとめられている 195

Slide 196

Slide 196 text

© 2023 Wantedly, Inc. / 207 参考文献 ● ITU-R FAQ on UNIVERSAL TIME SCALE (UTC) – LEAP SECOND https://www.itu.int/en/ITU-R/Documents/ITU-R-FAQ-UTC.pdf [PDF] ○ UTCに関する概要 ● Rec. ITU-R TF.686: Glossary and definitions of time and frequency terms https://www.itu.int/rec/R-REC-TF.686-3-201312-I/en ○ UTCを含む用語定義集 ● Rec. ITU-R TF.460 https://www.itu.int/rec/R-REC-TF.460/en ○ UTCの定義 196

Slide 197

Slide 197 text

© 2023 Wantedly, Inc. / 207 参考文献 ● NIST Time Frequently Asked Questions (FAQ) | NIST https://www.nist.gov/pml/time-and-frequency-division/nist-time-frequently-asked-questions-faq ○ UTC(place) の定義 ● Time standard - Wikipedia https://en.wikipedia.org/wiki/Time_standard ○ 時間・時刻系の定義の変遷 ● 暦Wiki/時刻/うるう秒がなくなる? https://eco.mtk.nao.ac.jp/koyomi/wiki/BBFEB9EF2FA4A6A4EBA4A6C9C3A4ACA4CAA4AFA4CAA4EBA 1A9.html ○ うるう秒の将来に関する議論のまとめ 197

Slide 198

Slide 198 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Le Système international d'unités/The International System of Units (Brochure sur le SI/SI brochure), 2006 (Wayback Machine) https://web.archive.org/web/20190503133741/https://www1.bipm.org/utils/common/pdf/si_brochur e_8.pdf [PDF] ○ 時間・時刻系の歴史 ● COORDINATED UNIVERSAL TIME https://www.bipm.org/documents/20126/28435864/working-document-ID-3644/2a6ce17c-7b50-41 64-9bee-64f77bfad895/ [PDF] ○ BIPM内に置かれている資料 ○ UTCの歴史が書かれている 198

Slide 199

Slide 199 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Circular T - BIPM https://www.bipm.org/en/time-ftp/circular-t ○ UTC - UTC(k) の実際の値 ● Explanatory Supplement of BIPM Circular T https://webtai.bipm.org/ftp/pub/tai/other-products/notes/explanatory_supplement_v0.6.pdf [PDF] ○ Circular T の説明 ● The time scales TAI and EAL - PTB.de https://www.ptb.de/cms/en/ptb/fachabteilungen/abt4/fb-44/ag-441/realisation-of-legal-time-in -germany/the-time-scales-tai-and-eal.html ○ 時刻系同士の関係に関する解説 199

Slide 200

Slide 200 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Introduction to Special Relativity | Physics | MIT OpenCourseWare https://ocw.mit.edu/courses/8-20-introduction-to-special-relativity-january-iap-2021/ ○ 特殊相対性理論の話 ● Minkowski Spacetime - Wikipedia https://simple.wikipedia.org/wiki/Minkowski_spacetime ○ 特殊相対性理論における時空 ● Rapidity - Wikipedia https://en.wikipedia.org/wiki/Rapidity ○ ラピディティの定義 ● Mathematics of General Relativity - Wikipedia https://en.wikipedia.org/wiki/Mathematics_of_general_relativity ○ 一般相対性理論に使われる数学的な道具の整理 ● 等価原理 - Wikipedia https://ja.wikipedia.org/wiki/%E7%AD%89%E4%BE%A1%E5%8E%9F%E7%90%86 ○ 等価原理の分類 ● Gravitational Time Dilation - Wikipedia https://en.wikipedia.org/wiki/Gravitational_time_dilation ○ 重力による時間の遅れの具体的な計算 200

Slide 201

Slide 201 text

© 2023 Wantedly, Inc. / 207 参考文献 ● International standard date and time notation https://www.cl.cam.ac.uk/~mgk25/iso-time.html ○ ISO 8601の解説記事 ● JIS X 0301 情報交換のためのデータ要素及び交換形式-日付及び時刻の表記 https://www.jisc.go.jp/app/jis/general/GnrJISNumberNameSearchList?show&jisStdNo=X0301 ○ ISO 8601の対応規格 (こっちのほうが安い) ● ややこしい日付の書式について - デクノスティック https://dechnostick.hatenablog.com/entry/2015/01/03/021021 ○ Twitterが暦週年まわりでやらかしたときの話 ● RFC 3339: Date and Time on the Internet: Timestamps https://www.rfc-editor.org/rfc/rfc3339 201

Slide 202

Slide 202 text

© 2023 Wantedly, Inc. / 207 参考文献 ● XML Schema Part 2: Datatypes Second Edition https://www.w3.org/TR/xmlschema-2/#dateTime ○ Rubyで “ISO 8601” と呼ばれているものの正体 ● time package - time - Go packages https://pkg.go.dev/time ○ 様々な文字列表現 ● RFC 9110: HTTP Semantics https://datatracker.ietf.org/doc/html/rfc9110 ○ §5.6.7 で RFC5322を参照している ● The Open Group Specifications Issue 7, 2018 Edition https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/ ○ asctimeの仕様 (ISO 9899と同じ) ○ https://pubs.opengroup.org/onlinepubs/9699919799/functions/asctime.html ● MySQLの0000-00-00 00:00:00は使ってはならない - そーだいなるらくがき帳 https://soudai.hatenablog.com/entry/2018/05/12/191050 ● Leap second in Database system (Postgresql and SQL Server) - Database Administrators Stack Exchange https://dba.stackexchange.com/questions/105514/leap-second-in-database-system-postgresql-a nd-sql-server 202

Slide 203

Slide 203 text

© 2023 Wantedly, Inc. / 207 参考文献 ● shell - Unix time and leap seconds - Stack Overflow https://stackoverflow.com/questions/16539436/unix-time-and-leap-seconds ● The Open Group Specifications Issue 7, 2018 Edition https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/ ○ Unix timeの定義 ○ https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_1 6 ● datetime - Does the windows FILETIME structure include leap seconds? - StackOverflow https://stackoverflow.com/questions/130573/does-the-windows-filetime-structure-include-leap-s econds ○ Windows FILETIMEにおける閏秒の扱い 203

Slide 204

Slide 204 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Time formatting and storage bugs - Wikipedia https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs ○ 2000年問題、2038年問題の仲間たち ● Epoch (computing) - Wikipedia https://en.wikipedia.org/wiki/Epoch_(computing) ○ Unix timeの仲間たち ● Time reference in GNSS - Navipedia https://gssc.esa.int/navipedia/index.php/Time_References_in_GNSS ○ GNSSの時刻表現 204

Slide 205

Slide 205 text

© 2023 Wantedly, Inc. / 207 参考文献 ● adjtimex(2) - Linux man page https://man7.org/linux/man-pages/man2/adjtimex.2.html ○ Linuxの閏秒API ● second_oveflow in Linux 6.2 https://github.com/torvalds/linux/blob/v6.2/kernel/time/ntp.c#L390-L495 ○ Linuxの閏秒実装 ● accumulate_nsecs_to_secs in Linux 6.2 https://github.com/torvalds/linux/blob/v6.2/kernel/time/timekeeping.c#L2056-L2101 ○ Linuxの閏秒実装の呼び出し元 ● Leap Smear | Public NTP | Google Developers https://developers.google.com/time/smear?hl=en ○ GoogleのNTPサーバーが実装しているLeap Smearingについて ● linux - Difference between CLOCK_REALTIME and CLOCK_MONOTONIC? - Stack Overflow https://stackoverflow.com/questions/3523442/difference-between-clock-realtime-and-clock-mon otonic ○ 2種類のクロックについて + サスペンド時の挙動 205

Slide 206

Slide 206 text

© 2023 Wantedly, Inc. / 207 参考文献 ● Radio clock - Wikipedia https://en.wikipedia.org/wiki/Radio_clock ○ 「電波時計のプロトコルは色々」という記述はここから ● 標準電波の出し方 https://jjy.nict.go.jp/jjy/trans/index.html ○ 日本の電波塔 (おおたかどや山、はがね山) のプロトコル ● GPS/GNSS用語集(時刻同期) https://www.furuno.com/jp/gnss/technical/glossary ● TCP/IP - NTPとは https://www.infraexpert.com/study/tcpip25.html ● RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification https://datatracker.ietf.org/doc/html/rfc5905 ○ NTPの仕様 ● 福岡大学における公開用NTPサービスの現状と課題 :: JANOG41 https://www.janog.gr.jp/meeting/janog41/program/sp10ntp ○ 福岡大学が抱えるNTPサーバーの問題の話 ● ntpd(8): Network Time Protocol Daemon - Linux man page https://linux.die.net/man/8/ntpd ○ ntpdの実装の話 (step / slew) 206

Slide 207

Slide 207 text

© 2023 Wantedly, Inc. / 207 参考文献 ● cloudflare/roughtime https://github.com/cloudflare/roughtime ○ Roughtimeの現在の本拠地 ● roughtime - Git at Google https://roughtime.googlesource.com/roughtime ○ Roughtimeの昔の本拠地 ○ オリジナルのアイデアが記載されている ● draft-ietf-ntp-roughtime-07 https://datatracker.ietf.org/doc/html/draft-ietf-ntp-roughtime-07 ○ Roughtimeのドラフト (失効……) 207