帰ってきた「しっぽのさきっちょ」

しっぽのさきっちょ: 2016-11-29 付 (2017-01-12 更新)

2017年直前の閏秒について

no extension

以前に紹介したけど,年も押し迫ってきたし関連情報も出てき始めているので,あらためて記事を再構成し関連リンクを順次追加していくことにする。

UTC の2017年直前に閏秒が挿入される。 日本時間では,時差があるので,2017年1月1日午前9:00直前に閏秒が挿入されることになる。 これにより UTC と TAI の差は37秒となる。

実施年月日 調整時間(秒) $UTC - TAI$(秒)
1972年1月1日 $-10$
1972年7月1日 $+1$ $-11$
1973年1月1日 $+1$ $-12$
1974年1月1日 $+1$ $-13$
1975年1月1日 $+1$ $-14$
1976年1月1日 $+1$ $-15$
1977年1月1日 $+1$ $-16$
1978年1月1日 $+1$ $-17$
1979年1月1日 $+1$ $-18$
1980年1月1日 $+1$ $-19$
1981年7月1日 $+1$ $-20$
1982年7月1日 $+1$ $-21$
1983年7月1日 $+1$ $-22$
1985年7月1日 $+1$ $-23$
1988年1月1日 $+1$ $-24$
1990年1月1日 $+1$ $-25$
1991年1月1日 $+1$ $-26$
1992年7月1日 $+1$ $-27$
1993年7月1日 $+1$ $-28$
1994年7月1日 $+1$ $-29$
1996年1月1日 $+1$ $-20$
1997年7月1日 $+1$ $-31$
1999年1月1日 $+1$ $-32$
2006年1月1日 $+1$ $-33$
2009年1月1日 $+1$ $-34$
2012年7月1日 $+1$ $-35$
2015年7月1日 $+1$ $-36$
2017年1月1日 $+1$ $-37$

閏秒について

日常生活で接する時刻系としては UT (universal time; 世界時)と UTC (coordinated universal time; 協定世界時)の2つが存在する。 2つの時刻系は基準となる物差しが異なる。

UT は恒星時(sidereal time)系の一種1で,簡単に言うと地球の自転速度を基準にしている。 私たちの日常生活は太陽や月などに大きな影響を受けているので, UT を用いるのは妥当と言える。 一方で UT は観測値であり,しかも地球の自転速度は一定ではなく予測できない2 のが欠点だった。 そこで「同じ間隔で時を刻む時刻系」の要求が高まってくる。

かなりの試行錯誤の末,最終的に原子時(atmic time)系が採用されることになった。 具体的には1958年1月1日0時0分0秒 UT23 を原点とした TAI4 (international atomic time; 国際原子時)である。

そして UT と TAI との間のギャップを埋めるのが UTC なのである。

UTC は TAI と同じ原子時系で TAI との差が整数秒になるように調整される。 また UT に対する差は 0.9 秒以内になるように調整される。 この「調整」を行う手段が閏秒(leap second)である。

閏秒は UTC の1月1日直前または7月1日直前に挿入あるいは削除される5。 UT が観測値である以上「いつ閏秒が発生するか」は長期的には予測できないが,少なくとも半年前には告知される。

コンピュータ・システムにおける閏秒の問題

コンピュータ・システムにおける閏秒の問題は概ね以下の2つに大別できる。

  1. 閏秒の挿入による見かけ上の時刻の巻き戻し
  2. タイムスタンプの処理

以下,もう少し詳しく解説する。

閏秒の挿入による見かけ上の時刻の巻き戻し

現在,多くのコンピュータシステムは NTP (Network Time Protocol) によって時刻同期を行っている。 閏秒が発生する際に NTP では LI (Leap Indicator) をセットするのだが,閏秒を挿入する際には見かけ上の時刻の巻き戻しが発生する。

23:59:59.000000(→ 23:59:59.999999)→ 23:59:59.000000 → 00:00:00.000000

サービスやアプリケーションのいくつか6 は「時刻の巻き戻し」が考慮されていないため,巻き戻しのタイミングで重大なエラーが発生する可能性がある。

NTP には LI をセットせず時刻の巻き戻しを行わない SLEW モードがあり,このモードにすることで問題を回避できる。 ただし SLEW モードは時刻のギャップが起きた際の同期に時間がかかるため,モードの使い分けが必要になるかもしれない。

タイムスタンプの処理

タイムスタンプは電子署名などでは欠かせない技術要素である(「否認防止(non-repudiation)」には正しい時刻が必要)。 タイムスタンプを提供するサービスでは厳密に UTC に準拠して運営されている。 したがって閏秒の瞬間に「2016年12月31日 23:59:60 UTC」といったタイムスタンプがセットされる可能性がある。

このタイムスタンプを扱う際に処理系によっては誤動作を起こす可能性があるのだ。

タイムスタンプ・サービスを行っているプロバイダには,閏秒の前後でサービスを止めて「23:59:60 UTC」なタイムスタンプが発生しないようにしているところもあるようだ。

ブックマーク

技術情報

その他の四方山話

昔書いた以下の記事は内容が古くて地球時(terrestrial time; TT)などを含む座標時系への言及がないけど,閏秒に関する歴史的経緯を知るという意味では参考になるかもしれない。

参考図書

photo
天体の位置計算
長沢 工
地人書館 1985-09
評価

日の出・日の入りの計算―天体の出没時刻の求め方 天文計算入門―一球面三角から軌道計算まで パソコンで見る天体の動き 天文年鑑2015年版 月刊 星ナビ 2015年 02月号 [雑誌]

B1950.0 分点から J2000.0 分点への過渡期に書かれた本なので情報が古いものもあるが,基本的な内容は位置天文学の教科書として充分通用する。

reviewed by Spiegel on 2015/01/11 (powered by G-Tools)

photo
猫暦 ねこよみ コミック 1-3巻セット (ねこぱんちコミックス)
ねこしみず 美濃
少年画報社 2016-07-11
評価

「寛政の改暦」のころの伊能勘解由(忠敬)とその妻とされる「おえい」の物語。感想はこちら

reviewed by Spiegel on 2016-11-29 (powered by G-Tools)


  1. もう少し詳しく言うと UT は恒星時系の一種である太陽時系である。恒星時は「春分点の子午線からの時角」であるのに対して UT は「平均太陽のグリニジ子午線からの時角+12時」となる(子午線を基準にすると昼間に日付が変わるため)。両者は同じ物差し(地球の自転速度)で求められた時刻系であり数学的関係があるため互いに換算可能である。ちなみに平均太陽というのは天球上にある太陽の移動速度を均した仮想太陽である。実際の太陽(真太陽)は季節によって天球上での移動速度が異なる。これは地球の公転軌道が楕円になっているからだ。 [return]
  2. 地球の自転は(潮汐摩擦などにより)大雑把に言って少しずつ遅くなる傾向にある。実はこれが分かったのって20世紀に入ってからなのだよ(問題の認識は19世紀後半からあった)。 [return]
  3. 観測から得られた時刻を UT0 と呼ぶ。 UT0 に対し極運動等の補正をかけたものを UT1 と呼ぶ。現在 UT と言う場合にはこの UT1 を指す。 UT2 は UT1 から更に自転速度の季節変動分を均した値である。現在の UTC が採用されるまでは UT2 が主に使われていたらしい。 [return]
  4. 現在の TAI の定義は「回転するジオイド上で実現される SI の秒を目盛りの単位とした, 地心座標系で定義される座標時(coordinate time)の目盛り」(訳は Wikipedia より)となっている。ちなみに「SI の秒」は「セシウム 133 の原子の基底状態の2つの超微細構造準位の間の遷移に対応する放射の周期の9192631770倍の継続時間」(訳は Wikipedia より)である。この「SI の秒」を使っている時刻系は全て原子時系とも言える。 [return]
  5. これ以外には4月1日直前および10月1日直前も第2優先日として閏秒が発生する可能性があるが,過去においてこの日に閏秒が発生したことはない。 [return]
  6. 2012年の閏秒の挿入時には数多くのサービスに障害が発生したが,その後の改善や回避策により2015年には大きな混乱もなく閏秒を迎えられた。なお Linux 系のシステムには right/Asia/Tokyo のような閏秒を考慮したタイムゾーンも存在するが,旧来の Asia/Tokyo のようなタイムゾーンとの間で UNIX Time の互換性がなくなるのとタイムスタンプ処理と同じ問題が発生してしまうため推奨されないことも多い。 [return]