Upgrade to Pro — share decks privately, control downloads, hide ads and more …

日付時刻A to Z

日付時刻A to Z

Masaki Hara

April 27, 2023
Tweet

More Decks by Masaki Hara

Other Decks in Programming

Transcript

  1. © 2023 Wantedly, Inc. / 207 日付時刻 A to Z

    2023-04-13, 2023-04-20, 2023-04-27 - Masaki Hara 1
  2. © 2023 Wantedly, Inc. / 207 この発表の目的 • 日付時刻は人類が直面する現実を反映したシステムです •

    それを規則と計算の世界に落としこむために、様々な工夫や 妥協が行われています • それによって生じる様々な不整合や落とし穴との向きあい方 を多種多様な事例から学ぶのが、この発表の目的です。 2
  3. © 2023 Wantedly, Inc. / 207 おことわり • 残念ながら、私は天文学・歴史・物理・コンピューターの全てに 精通する学者ではありません。

    ◦ それでも沢山の事例を挙げることは有益だと思い、幅広い分野のトピックを揃えました。 • 少なくとも内容の整合性は確認しているつもりですが、誤りや 誤解をまねく表現があれば指摘していただけると助かります。 3
  4. © 2023 Wantedly, Inc. / 207 本発表の流れ • 第1部 日付編

    ◦ §1 天体の周期 ◦ §2 暦 ◦ §3 紀元と通日 • 第2部 時刻編 ◦ §4 時間と分 ◦ §5 秒 ◦ §6 相対性理論 4
  5. © 2023 Wantedly, Inc. / 207 本発表の流れ • 第3部 コンピューティング編

    ◦ §7 コンピューティング – 文字列表現 ◦ §8 コンピューティング – 数値表現 ◦ §9 コンピューティング – 時刻同期 5
  6. © 2023 Wantedly, Inc. / 207 時間と時刻 抽象概念としての 時間 (time)

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

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

    広義の 時刻の日数成分 狭義の 時刻 (time) = 広義の 時刻の1日内の成分 単位としての 時間 (hour) = 狭義の 時刻の最上位成分 2023-04-12 15:00:00 日付 時刻 時刻 時間 9
  9. © 2023 Wantedly, Inc. / 207 この章の命題 • 天体は一定周期で回っている? •

    地球は1日かけて自転する? • 星座は季節で決まる? 12
  10. © 2023 Wantedly, Inc. / 207 日付 暦を支える3つの基本的な周期 • 年

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

    — 太陽が回る高さの周期 • 月 — 月の満ち欠けの周期 • 日 — 太陽の出没周期 14
  12. © 2023 Wantedly, Inc. / 207 日 — 目的 1日で移ろいゆくもの

    • 明るさ • 地温と気温 • 潮汐 • etc… 15
  13. © 2023 Wantedly, Inc. / 207 日 — 周期 •

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

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

    太陽の出没 = 約1日 • 地球の自転 = 約0.997日 1日 = これを均したもの 18
  16. © 2023 Wantedly, Inc. / 207 日 — 位相 1日の始まりは?

    • 太陽の南中時刻 (正午) — 天文時 • 真夜中 (正子) — 常用時 • 一定ではない始点 ◦ 日の出 ◦ 日没 19
  17. © 2023 Wantedly, Inc. / 207 年 暦を支える3つの基本的な周期 • 年

    — 太陽が回る高さの周期 • 月 — 月の満ち欠けの周期 • 日 — 太陽の出没周期 20
  18. © 2023 Wantedly, Inc. / 207 年 — 目的 1年で移ろいゆくもの

    • 平均地温と平均気温 • ↑にともなう天気の変化 • 星座 • etc… 21
  19. © 2023 Wantedly, Inc. / 207 年 — 周期 •

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

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

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

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

    • 春分 / 春の始まり頃 ◦ いわゆる西暦も元々は春分始まりだったが、 Jan. とFeb. が手前に挿入されたことで後 退が起こった • 秋分 / 秋の始まり頃 26
  24. © 2023 Wantedly, Inc. / 207 月 暦を支える3つの基本的な周期 • 年

    — 太陽が回る高さの周期 • 月 — 月の満ち欠けの周期 • 日 — 太陽の出没周期 27
  25. © 2023 Wantedly, Inc. / 207 月 — 目的 1ヶ月で移ろいゆくもの

    • 月の形 • 夜の明るさ • 潮汐の大きさ • etc… 28
  26. © 2023 Wantedly, Inc. / 207 月 — 周期 •

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

    月の満ち欠け = 約29.5日 • 月の公転周期 = 約27.3日 1ヶ月 = これを均したもの 30
  28. © 2023 Wantedly, Inc. / 207 月 — 位相 1朔望月の始まりは?

    • 新月(朔) ◦ 新月が終わって、月が少し見え始めたタイミングを使うケースもある • 満月(望) ◦ ヒンドゥー暦の一部などで使われているらしい 31
  29. © 2023 Wantedly, Inc. / 207 非周期性 暦を支える3つの基本的な周期 • 年

    — 太陽が回る高さの周期 • 月 — 月の満ち欠けの周期 • 日 — 太陽の出没周期 これらは一定ではない! 32
  30. © 2023 Wantedly, Inc. / 207 非周期性 天体運動の周期は一定ではない • 月……

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

    1ヶ月 = 約29.5日 ◦ 1年 = 約365.242日 • 天体運動の周期は完全に一定ではない 34
  32. © 2023 Wantedly, Inc. / 207 この章の命題 • 1年は12ヶ月? •

    うるう年は規則的に挿入される? • 1712年10月1日は土曜日である? 36
  33. © 2023 Wantedly, Inc. / 207 暦 暦を支える3つの基本的な周期 • 年

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

    — 太陽が回る高さの周期 • 月 — 月の満ち欠けの周期 • 日 — 太陽の出没周期 暦 = 年, 月(など)をもとに 日を整理するシステム 38
  35. © 2023 Wantedly, Inc. / 207 暦 暦の目的 • 市民暦

    = 生活・産業等における行動サイクルを規定する ◦ 農業暦、会計暦などもある • 宗教暦 = 宗教行事のサイクルを規定する ◦ 同じ地域で宗教暦と市民暦が異なることも少なくない 39
  36. © 2023 Wantedly, Inc. / 207 太陰太陽暦 日を朔望月でグループし、朔望月を年でグループする • 1朔望月

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

    1日 = 約365.242日 → 閏日(うるうび) の挿入 ◦ 閏日のある年は閏年(うるうどし)と呼ばれる • 暦月 = 30日か31日 ◦ 西暦ではなぜか28日の月がある 41
  38. © 2023 Wantedly, Inc. / 207 ユリウス暦 ユリウス暦: 天体観測に依存しない暦 •

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

    閏年 = {4の倍数} ∖ {100の倍数} ∪ {400の倍数} → 1年は平均して365.2425日 • 導入時期は地域によってまちまち • ユリウス暦の3世紀まで遡及して補正 • 約3200年で1日ずれる 44
  40. © 2023 Wantedly, Inc. / 207 ヒジュラ太陽暦 ヒジュラ太陽暦 • 春分の実測値を基準に年の長さを決定する

    ◦ 春分点の周期性は高くないため、置閏にはムラがある • ヒジュラ(西暦622年)を紀元に置く • ヒジュラ暦/イスラム暦とは別 (後述) 45
  41. © 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 右のカレンダーは当時の日付を再構したイメージ
  42. © 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
  43. © 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
  44. © 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
  45. © 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
  46. © 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
  47. © 2023 Wantedly, Inc. / 207 グレゴリオ暦の拡大適用 • グレゴリオ暦を未適用地域に対して使うこともある ◦

    明治の始まりは1868年10月23日 (当時の暦[天保暦]では9月8日) ◦ ロシア2月革命は1917年3月8日〜12日 (当時の暦[ユリウス暦]では2月) • 暦を明示するほうがよい場合も ◦ O.S. = Old Style, N.S. = New Style 52
  48. © 2023 Wantedly, Inc. / 207 遡及グレゴリオ暦 遡及グレゴリオ暦 • 1581年以前もグレゴリオ暦で表記すること

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

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

    = {4の倍数} ∖ {100の倍数} ∪ {400の倍数}     ∪ {1900} • Lotus 1-2-3 との互換性のための意図的な仕様 • Google Spreadsheet や Numbers には無い 55
  51. © 2023 Wantedly, Inc. / 207 Excel暦 Excelの暦の2つの解釈 • グレゴリオ暦1900年1月1日

    = Excel暦1900年1月1日 ◦ 年月表示を真とする ◦ 曜日・通日計算はズレる • グレゴリオ暦1900年1月1日 = Excel暦1900年1月2日 ◦ 曜日・通日計算を真とし、年月は別として扱う 56
  52. © 2023 Wantedly, Inc. / 207 純粋太陰暦 日を朔望月でグループする • 12ヶ月を1暦年とすることがある

    ◦ 太陽年とは11日ほどのずれが生じるが、補正せずに使う • ヒジュラ暦 (イスラム暦) が代表的 ◦ ハッジ (聖地巡礼) などの宗教行事の季節が一定でないのはこのため ◦ サウジアラビアでは2016年まで市民暦としても使われていたらしい 57
  53. © 2023 Wantedly, Inc. / 207 週 週: 日と月のギャップを埋める人工的な周期 •

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

    ユダヤ教の安息日: 土曜日 ◦ キリスト教の礼拝日: 日曜日 ◦ イスラム教の休日: 金曜日 • 週の始まり ◦ 土曜始まり … 中東など ◦ 日曜始まり … アメリカ、インドなど ◦ 月曜始まり … ヨーロッパ、中国など 59
  55. © 2023 Wantedly, Inc. / 207 日付の演算 • 「1ヶ月後」「1年後」はいつ? ◦

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

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

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

    • グレゴリオ暦の暦法 + ◦◦紀元 ◦ グレゴリオ暦、和暦(明治以降) • ◦◦ + ヒジュラ紀元 ◦ ヒジュラ暦、ヒジュラ太陽暦 65
  59. © 2023 Wantedly, Inc. / 207 0年問題 • 西暦0年は存在しない ◦

    他の紀年法でも起きるらしい • 前3 → 前2 → 前1 → 1 → 2 → 3 • 計算で注意が必要 ◦ 年の引き算 ◦ 遡及グレゴリオ暦・遡及ユリウス暦における閏年の計算 ◦ 表示するときだけ `紀元前${1-n}年` とするのが楽 66
  60. © 2023 Wantedly, Inc. / 207 元号 元号: 単一の紀元を用いず、たまにリセットする方式 •

    日本で使われている • 改元は1月1日とは限らない ◦ 同じ年でも複数の元号に属することがある ◦ 2019年4月30日 = 平成31年4月30日 ◦ 2019年5月1日 = 令和1年5月1日 67
  61. © 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
  62. © 2023 Wantedly, Inc. / 207 本日の流れ • 前回は「日付」に注目して紹介した •

    今回は「日」より細かい単位を見ていく ◦ 時間・分 ◦ 秒 ◦ 秒より小さい単位…… ◦ それぞれに困難がある 71
  63. © 2023 Wantedly, Inc. / 207 この章の命題 • 1日は24時間? •

    ローカル時間からUTC時間は一意に定まる? 73
  64. © 2023 Wantedly, Inc. / 207 再掲: 1日の始まり 1日の始まりは? •

    太陽の南中時刻 (正午) — 天文時 • 真夜中 (正子) — 常用時 • 一定ではない始点 ◦ 日の出 ◦ 日没 74
  65. © 2023 Wantedly, Inc. / 207 1日の分割 • 定時法 1日を均等に分割する

    • 不定時法 日中と夜間をそれぞれ分割する ◦ 日中の1時間は夏ほど長くなり、夜間の1時間は夏ほど短くなる 75
  66. © 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
  67. © 2023 Wantedly, Inc. / 207 アナログ時計盤 • 北半球の日時計の動きに由来 ◦

    ただし、元々の日時計(コマ型)は1時間に1/24周進む • 24時間表示の時計もある 78
  68. © 2023 Wantedly, Inc. / 207 本初子午線 • 東西に移動すると太陽も動く →

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

    夏と冬で異なるオフセットを観測する ◦ タイムゾーン ≠ オフセット ◦ オフセット = ローカルタイムとUTCの差 80
  70. © 2023 Wantedly, Inc. / 207 夏時間 例: 山岳部時間 •

    ユタ州: 山岳部時間 (MT) → 夏: 山岳部夏時間 (MDT) → 冬: 山岳部標準時 (MST) • アリゾナ州: 山岳部時間だが夏時間を使わない (MST) ◦ ナバホ族の土地を除く 81
  71. © 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
  72. © 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
  73. © 2023 Wantedly, Inc. / 207 タイムゾーン • タイムゾーン ≠

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

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

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

    それはその地域の人達が決めることなので • tzdbは現在わかっていることを反映しているだけ ◦ 未来の情報には注意 88
  77. © 2023 Wantedly, Inc. / 207 tzdb • タイムゾーンごとのオフセット情報をまとめたデータ •

    有志の協力によって成り立っている (すごい) ◦ ICANNの支援はある • Asia/Tokyo のような表記はtzdbに由来 89
  78. © 2023 Wantedly, Inc. / 207 この章のまとめ • 本来の時刻は経度に依存する →

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

    太陽の動き ◦ 月の動き ◦ 恒星の動き etc… • 物理現象による計時 ◦ 水時計 ◦ 振り子時計 ◦ 水晶時計 ◦ 原子時計 etc… 93
  80. © 2023 Wantedly, Inc. / 207 秒 • 1秒 =

    1/86400日 だった • 時計の精度が高くなった → 地球の回転のほうが精度が低い → 秒の再定義 (ET, TAI) • 太陽と地球の動きの単位 から 原始的な物理現象の単位 へ 94
  81. © 2023 Wantedly, Inc. / 207 秒と日 • 逆に、1日を86400秒と定義すればよいのでは? ◦

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

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

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

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

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

    TAI ± 整数 • この「整数」部分を変えるときにジャンプが必要 → 閏秒 • 秒の追加のほかに、秒の削除もある ◦ 削除も閏秒と呼ばれる ◦ 追加されるか削除されるかは地球の回転しだい ◦ 削除した例はまだない 100
  87. © 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
  88. © 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
  89. © 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
  90. © 2023 Wantedly, Inc. / 207 閏秒情報 • IANAから取得できる ◦

    https://data.iana.org/time-zones/tzdb/leapseconds ◦ https://data.iana.org/time-zones/tzdb/leap-seconds.list • 時刻同期プロトコルからも取得できる 104
  91. © 2023 Wantedly, Inc. / 207 時間計算 • 未来の閏秒はわからない ◦

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

    挿入された閏秒のn日後 → その秒は存在しない ◦ 日の最後の秒のn日後が削除された閏秒だった場合 → その秒は存在しない • 2/29と同じ問題 ◦ 2/29ほど気にしている人は多くなさそう 106
  93. © 2023 Wantedly, Inc. / 207 閏秒の未来 • 閏秒の挿入頻度は減りつつある ◦

    現在のUTCになった1972年が一番差が大きかった ◦ その後、地球の自転はだんだん速くなっている • 最後の閏秒は2016年末 (日本では2017年初) ◦ UT1 - UTCは減少トレンドへ? ◦ 閏秒の削除が見られるかもしれない ? • 閏秒自体がなくなる可能性も ◦ UTCとUT1の許容差が広げられるかもしれない → 「100年に1回の閏分」とかになるかも? ◦ 2035年頃までに変更を加えることがBIPMで提案されている 107
  94. © 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
  95. © 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
  96. © 2023 Wantedly, Inc. / 207 この章のまとめ • 1日 ≠

    86400秒 • UTC: 1日を数える → 閏秒で調整 • TAI: 86400秒を数える • 未来のUTCとTAIの相互変換はできない ◦ 言い換えると、経過日数表示と経過秒数表示の相互変換はできない ◦ 数秒〜数十秒の誤差を許容できるときは問題ない 110
  97. © 2023 Wantedly, Inc. / 207 特殊相対性理論 • 絶対的な時刻は存在しない (同時の相対性)

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

    今日は相対性理論に至るまでの実験や演繹は置いておいて、 時間と時刻にかかわる結論だけ説明 ◦ 数式汚いけど許して 114
  99. © 2023 Wantedly, Inc. / 207 時空 • 古典的な時間: t

    ∈ ℝ • 古典的な空間: (x, y, z) ∈ ℝ3 • → 時空: (ct, x, y, z) ∈ ℝ4 をまとめて考える ◦ c は真空中の光速 (定数) • 「回転」を一般化 (ローレンツ変換) ◦ 空間を回転しても物理は同じ ◦ → 時空を「回転」しても物理は同じ 回転すると「時間成分」の取り出し方が変わる 115
  100. © 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
  101. © 2023 Wantedly, Inc. / 207 長さ 空間の等距離面 (x,y表示) x

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

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

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

    「直交」 v∙w=0 (見た目上は直交してない) x’ t’ x軸 = t軸方向に進む観測者 にとっての同時性 x’軸 = t’軸方向に進む観測者 にとっての同時性 120
  105. © 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
  106. © 2023 Wantedly, Inc. / 207 固有時 • 座標時: 外部の観測者から見た時間

    ◦ 観測者の動きによって異なる結果になる • 固有時: 観測対象自身から見た時間 ◦ 観測者によらない ◦ 時間的ベクトルの長さを積分すると得られる ∫√(c2dt2 - dx2 - dy2 - dz2) / c • 時間の遅れ ◦ 動く物体の固有時は短くなる (上式のx, y, z成分の寄与) 122
  107. © 2023 Wantedly, Inc. / 207 双子のパラドックス パラドックスの説明: • 相対速度があるとき、お互いの時間は遅れて見える

    • 片方から遅れて見えるなら、もう片方からは進んで見えるはず ではないのか? 123
  108. © 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
  109. © 2023 Wantedly, Inc. / 207 双子のパラドックス • 往路のBobから見ると、3年で折り返し •

    このときAliceは1.8年しか経っていない ◦ → これは往路のBobから見た同時性 x’ = 0, t’ = 0 x’ = 0, t’ = 3 Alice Bob 10 3 3 125
  110. © 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
  111. © 2023 Wantedly, Inc. / 207 三角不等式の逆 AliceとBobの例では、 三角不等式 (直線距離が一番短い)

    の逆が起きている • 直線距離が一番長い • たくさん寄り道したほうが固有時が短くなる • そのためには加速する必要がある ベクトルが全て時間的or光的で未来方向を向いている場合に限る 128
  112. © 2023 Wantedly, Inc. / 207 時間と時刻 (相対性理論) • 時刻

    = 時間を積分したもの ◦ 積分定数の任意性は紀元の任意性 • 固有時の積分は積分経路に依存する ◦ 「三角不等式の逆」の話 • → 時刻は(積分)経路に依存する 129
  113. © 2023 Wantedly, Inc. / 207 重力による時間の遅れ • 主たる観測者である我々は地表にいる ◦

    同じ地表でも、自転に追従する/しないでも状況が違う (はず) ◦ 我々は自転に追従している • 地表は慣性系ではない → 相対論効果を考慮する必要がある ◦ ナノ秒くらいのレベルでは実際に差が出るらしい 130
  114. © 2023 Wantedly, Inc. / 207 一般相対性理論 一般相対性理論 • 特殊相対性理論

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

    (EEP) • 自由落下 = 曲がった時空上をまっすぐ進んでるだけ ◦ 逆に、我々は9.8m/s2で上に押し上げられ、加速し続けている 132
  116. © 2023 Wantedly, Inc. / 207 一般相対性理論 • 局所慣性系の中では特殊相対性理論が(一次近似として) 成立する

    ◦ 2点間のベクトルには意味がなくなるが、微少量をあらわすベクトル (接ベクトル) の計算 は同じようにできる ◦ v∙w ではなく g μν xμyν と書く (基本計量テンソル + アインシュタインの縮約記法) • 固有時の微小量は dτ = (1/c)√(g μν dxμdxν) • ↑固有時の計算は非慣性系でも同じ 133
  117. © 2023 Wantedly, Inc. / 207 一般相対性理論 • 特殊相対性理論では時空はまっすぐ(平坦)で良かった →

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

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

    地上の都合にあわせた時計 • 宇宙のことを考えるときは別の時刻系を使うことがある ◦ 地心座標時、太陽系座標時など ◦ TAIのことは地球時(TT)と呼ばれている (30秒ほどの定数オフセットがあるので本当は別物 ) 137
  120. © 2023 Wantedly, Inc. / 207 この章のまとめ • 「時刻」という概念は観測方法に依存する ◦

    観測者の移動速度や加速度が関係してくる ◦ 特に重要→ 重力の影響 • 常用時はジオイド (≈ 海水面) 上の時間の流れで定義される 138
  121. © 2023 Wantedly, Inc. / 207 本日の流れ • 第1部・第2部: 「日付時刻」そのものについて扱った

    ◦ 日付とは何なのか? 時刻とは何なのか? がわかるようになった • 第3部: 「日付時刻」の扱い方の話 ◦ 「日付時刻」というシステムそのものではなく、それをコンピューターでどう扱うかという部 分に注目したトピック ◦ 第1部・第2部でも部分的に扱っていたが、その残りをここに集約 140
  122. © 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
  123. © 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
  124. © 2023 Wantedly, Inc. / 207 ISO8601 • ISO8601基本形式 20070405T123456+0900

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

    2007-05-04 ◦ “ISO8601” というとこれを指すことが多い • 年間通算日 (年+日) 2007-124 • 暦週日付 (年+週+日) 2007-W18-5 ◦ 年末年始では「年」がずれることがあるので注意 ! ◦ 2014年末にTwitterがやらかしている 146
  126. © 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
  127. © 2023 Wantedly, Inc. / 207 RFC3339 RFC3339 • ISO8601をもとにしたインターネット向け仕様

    • 「暦日付の拡張形式による完全表記」だけを許可 ◦ シンプル! • 独自拡張: “T” のかわりにスペースを使うオプション ◦ 2007-05-04 12:34:56+09:00 148
  128. © 2023 Wantedly, Inc. / 207 遡及グレゴリオ暦 • 1582年10月14日以前の日付を扱うときは注意 •

    ISO8601 → 当事者間の合意があれば遡及グレゴリオ暦とす る • RFC3339 → 規定なし ◦ インターネットタイムスタンプとして出てくることはまずないという期待 149
  129. © 2023 Wantedly, Inc. / 207 特別な値 • ゼロ値 ◦

    0000-00-00 など ◦ 00-00や99-99は存在しない日付である点に注意 ◦ 例: MySQLの 0000-00-00 00:00:00 • 閏秒 ◦ 対応していないケースも多い 150
  130. © 2023 Wantedly, Inc. / 207 2000年問題 • 年を2桁で書くと曖昧になる •

    Java/JavaScriptのDate.getYear • ASN.1のUTCTime etc. • ISO 8601, RFC 822 (現5322) なども当初は2桁だった 151
  131. © 2023 Wantedly, Inc. / 207 Java/JavaScript Date API •

    月が0始まりになっているので注意 ◦ Jan, Feb, Mar, … との変換で便利からだろうか 152
  132. © 2023 Wantedly, Inc. / 207 この章のまとめ • RFC3339って言っておけばOK ◦

    Tを使うかスペースを使うかを明示しておくとなお良い 153
  133. © 2023 Wantedly, Inc. / 207 この章の命題 • Unix timeはepochからの経過秒数をあらわしている?

    • Epochが違うだけで、タイムスタンプはどれも実質同じ? 155
  134. © 2023 Wantedly, Inc. / 207 Unix time • Unix

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

    timeでは常に 1日 = 86400秒 • → Unix timeはUTCのようで、UTCではない ◦ 閏秒を加味しない • 「 UT1に緩く追従する素朴時刻系」とでも呼べばいいかもしれない • UTCとして使うなら、閏秒情報を別途記録する必要が 157
  136. © 2023 Wantedly, Inc. / 207 システムクロックと閏秒 • OSは閏秒のないAPIにも時刻を提供する必要がある •

    いくつかの方法がある ◦ OSが明示的に閏秒を扱う (ジャンプが発生する) ◦ ナイーブにstep同期する (ジャンプが発生する / UTCと非互換) ◦ ナイーブにslew同期する (UTCと非互換) ◦ 閏秒の希釈が適用されたNTPサーバーを使う (UTCと非互換) 158
  137. © 2023 Wantedly, Inc. / 207 システムクロックと閏秒 adjtimex(2) の場合 (Linux)

    • 事前に閏秒の有無を申告しておく (1日以内) ◦ これは通常ntpdが行う • 1日の終わりにカーネルが自動的に閏秒を挿入・削除する • 挿入時は23:59:60は二回目の23:59:59になる ◦ 他の時刻APIからは、1秒巻き戻ったように見える 159
  138. © 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
  139. © 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
  140. © 2023 Wantedly, Inc. / 207 ナイーブな同期 閏秒を無視してNTPから同期する場合 • step同期

    ◦ 閏秒後の最初の同期で1秒のジャンプが発生する • slew同期 ◦ 閏秒後の最初の同期時に段階的な補正が始まる ◦ 少しずつ時刻をずらしていき、最終的に 1秒分の差が補正される 162
  141. © 2023 Wantedly, Inc. / 207 閏秒の希釈 閏秒の希釈 (Leap-smearing) •

    はじめから閏秒分を均した時刻を提供する • GoogleのNTPサーバーなど 163
  142. © 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
  143. © 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
  144. © 2023 Wantedly, Inc. / 207 単調クロック 時刻取得APIは大きく2つに分けられる • Realtime

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

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

    絶対時刻指定 ◦ 例: expires_in vs. expires_at • 通信遅延の折り込み方が異なる ◦ 絶対指定 → 送信側から見て固定猶予 ◦ 相対指定 → 通信遅延分だけ延びる (受信側から見て固定猶予) 168
  147. © 2023 Wantedly, Inc. / 207 この章のまとめ • Unix timeは閏秒を含まない

    • 閏秒を含む時刻表現もある • コンピューター内では時計の補正に対する挙動の異なる複数 の時刻系がある ◦ Realtime clock: 現実世界の時刻系と対応 ◦ Monotonic clock: 単調増加するような固有の時刻系 169
  148. © 2023 Wantedly, Inc. / 207 標準電波 • 電波による時刻同期 ◦

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

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

    GPS time: うるう秒を含む経過秒数で配信 ◦ 1980年1月6日が基準 174
  151. © 2023 Wantedly, Inc. / 207 NTP • NTP: IP上で時刻同期する仕組み

    • 放送ではなく通信 → 往路と復路がある ◦ 両方の時間を記録しておく → 遅延を打ち消すことでより正確な結果を得ることができる ◦ Broadcast modeもあるが、その場合も先行してキャリブレできる 175
  152. © 2023 Wantedly, Inc. / 207 NTP • 中継局を置くことがある ◦

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

    1900-01-01T00:00:00 からの経過秒数 ただし閏秒は除く • 閏秒はLI flagでアナウンスされる ◦ 00 閏秒なし ◦ 01 その日の末尾に閏秒を挿入 ◦ 10 その日の末尾で閏秒を削除 177
  154. © 2023 Wantedly, Inc. / 207 step / slew NTPを使った時刻同期→

    2つのモードがある • step: 正確な時刻で上書き ◦ アプリケーションからは時刻が巻き戻ったり、知らない間に何時間も経過しているように見 える • slew: 徐々に正確な時刻に近付ける ◦ 同期には時間がかかるが、より安全 • 差によってstep/slewを切り替えるのが一般的 ◦ 128ms以上ならstep、など 178
  155. © 2023 Wantedly, Inc. / 207 NTPサーバーただ乗り問題 • NTPサーバーを善意で公開したらデフォルト設定として普及し てしまった事例

    (福岡大学) • 時刻同期ではなく疎通確認に濫用するケースも • 止めるとDDoS攻撃(実際は大量のリトライ) を受けるので 簡単には止められない 179
  156. © 2023 Wantedly, Inc. / 207 Roughtimeプロトコル 何が問題か? • TLSなどの一般的なセキュア通信は証明書に依存

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

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

    合議で安全な時刻同期ができるはず ◦ セキュアなNTPを使って複数のサーバーからの結果を合議しても同じくらい安全なので は? とかは思わないでもない ◦ 比較的シンプルな署名だけで作れるのは面白い 183
  159. © 2023 Wantedly, Inc. / 207 この章のまとめ • 標準電波: 電波塔から送信

    • GNSS: 衛星から送信 ◦ 測位のためのものだが、時刻同期にも使える • NTP: IP経由 ◦ 双方向プロトコル • Roughtime ◦ 実験的なプロトコルとして紹介した 184
  160. © 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
  161. © 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
  162. © 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
  163. © 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
  164. © 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
  165. © 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
  166. © 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
  167. © 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
  168. © 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
  169. © 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
  170. © 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
  171. © 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
  172. © 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
  173. © 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
  174. © 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
  175. © 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
  176. © 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
  177. © 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
  178. © 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
  179. © 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
  180. © 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
  181. © 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