Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
うるう秒について
06-25-2012, 05:52 PM, (This post was last modified: 01-17-2013, 11:39 AM by Hiroyuki.)
#1
うるう秒について
こんばんは!


「2012年7月1日は午前8時59分60秒があります!」
「うちのシステムはうるう秒対応していますか?」

最近、こんな話を聞いたことがある方もいるかも知れません。

今日はその「うるう秒」って何について話して行きましょう!


<そもそも、うるう秒って何?>

もともと時間というのは朝に日が上り、夕方に日が沈むところから創りだされました。
1日を24時間とし、1時間は60分、1分は60秒という形にして世界中でかなり長い年月利用されています。

この1日ですが、地球の自転により決まりますが、月と地球の引力の関係による潮の満ち干き、
地球内部の核(スマトラ沖地震の時にも自転速度が早くなったというニュースを覚えている方も多いと思われます。)による影響など
様々な要因により、地球の自転速度は一定ではありません。

毎日の自転速度が一定でないだけでなく、全体的に見ると自転速度は昔に比べて遅くなっているようです。

さて、地球の自転速度が一定ではないとなると、観測した時によって作られた時計毎の1秒の長さが違っては大変困ります。
そこで、原子時計を使った時間が1955年より運用されました。
これにより、世界中の殆どの国で1秒の長さが一緒になりました。

(実際には原子時計も今日まででセシウム133を基準に使うように変更になっていますが、詳細は長くなるので割愛します。)

しかし、やはり、自転速度とは微妙に違うため国際原子時と世界協定時の誤差を1秒未満に保つ調整を行い、これをうるう秒調整といいます。
このうるう秒調整は6月末日と12月末日に行われ、今までに24回の調整が行われました。

1972年から1979年には毎年1秒以上の補正が行われ、最近は補正の間隔が伸びています。
近年では1998年12月、2005年12月、2008年12月に行われました。

次回は2012年の6月末日に+1秒の補正が行われる予定です。
日本では世界協定時と9時間の時差がありますので、今回は2012年7月1日 08:59:60が追加されることになります。



<08:59:60を体験してみたい!>



東京都小金井市にある日本標準時を提供している独立行政法人情報通信研究機構(NICT)の本館正面の時計には
うるう秒調整された 08:59:60が表示されます。

また、こちらに行く事ができない人はNICTの時空標準研究室のWEBページ「JST Clock」でも08:59:60を見ることができますので、
こちらからご覧になって下さい。


<2012年7月の次のうるう秒はいつ?>

さて、このうるう秒ですが、地球の自転速度が日々変化しているため何年も前から予め予測できません。

短い時では数ヶ月前にパリにあるIERS(International Earth Rotation Service:国際地球回転観測事業)が決定して決めます。
今回は2012年1月5日にうるう秒調整を行うことが決まりました。

とある方の腕時計は「年差0.1秒未満で、10年は時計が狂わない!」と仰っていましたが、日本標準時自体を調整しているため時計はズレてしまいますね。


<私達の時計は自分で直さなきゃいけないのでしょうか?>

最近当たり前に使わている電波時計は、これらを修正する仕組みを持っています。
電波時計で送信されるデータのフォーマットの中にうるう秒調整を行うフラグがあるため、
こちらを参照することにより、00秒を2回繰り返したり、59秒を飛ばすということが行えます。

NICTの特別な時計には60秒を表示する機能があるそうです。

ちなみに、私の目覚まし時計は電波時計ですが、あまり高級な時計ではないため
そもそも、うるう秒調整を行う機能はないようです。

1時間に1回電波時計と自分の時間を合わせているため、最大で1時間の間に1秒ズレていることになります。


<コンピューターのうるう秒対応は?>

それでは、私達の触れているコンピューター類はどうなっているでしょうか?

コンピューターには時刻を校正する仕組みの一つとしてNTP (Network Time Protocol)があります。
NTPのプロトコル内には時刻及び、うるう秒補正後の警告情報を送っていますので、上位のNTPサーバがうるう秒の補正情報を持っている場合
正しく各コンピュータに時刻を送出できます。
但し、受け取る側のOSでうるう秒を考慮しているかどうかが重要になります。
(上位サーバがうるう秒を補正する情報を持っていない場合、うるう秒は考慮されません)

エンタープライズ向けunix系OSでは設定により、うるう秒が考慮されています。
うるう秒を補正する信号を送っているNTP等の時刻構成装置等を設置されている場合、
タイムスタンプとして60秒をカウントでき、ログファイルなどには08:59:60 が出力されます。
(デフォルトでは無効となっていますので、未設定の場合は後述のWindows系OSと同じ動きになります。)

一方、Windows系OSではうるう秒を考慮していないため、60秒のタイムスタンプは出力されません。
これはWindows Serverでも同様です。Windowsは1分間を0秒~59秒として処理します。

しかし、Windows Time ServiceではNTPと同様にうるう秒を補正する仕組みを持っていますので、
上位のサーバと時計がズレたタイミングで時計を校正する考え方で動いています。

さて、NTPと同期する時間ですが、これは皆様がそれぞれ設定していると思いますが、
次回同期されるまでの間、最大1秒間のズレが発生します。


コンピュータで気をつけないといけないのは、うるう秒修正されたタイミングで自動的に実行サービスがある場合に気をつけましょう。
うるう秒調整で時刻が削除された場合、(今まででは一度もありませんでしたが)サービスが起動されないことが起こります。
また、時刻が追加された場合、2度サービスが起動されてしまう事が起きてしまう場合があります。

それらを考慮して、エンタープライズ向けunix系OSではうるう秒を考慮した時間をオプションで持っているんですね。

当然のことながら、時刻校正装置等に繋がっていないコンピューターの場合は、手動であわせて下さい。


<ウチの古いカーナビはネットに繋がってないけどどうすればいいの?>

では、私達の車に搭載されているカーナビはどうでしょうか?

カーナビはGPS衛星から時刻情報を取得しています。
GPS衛星には原子時計を積んでおり、これは地上の基地局から時計を校正することが出来ます。
また、GPS衛星が送出しているのは世界協定時ではなく、GPS時刻を送っています。
1980年までは補正を行なっていましたが、その後GPS時刻はうるう秒調整を行なっていません。
ただ、GPS時刻とともにGPSから送られてくるメッセージ内に世界協定時との差分を送っているため、
受信機(カーナビ等)が正しくうるう秒調整を行った時刻を表示できます。

ですので、たとえ古いカーナビでもうるう秒調整後の時刻を表示できるようになっています。


<まとめ>

結論として、時刻校正のタイミングはあるけれども、次の同期のタイミングでうるう秒の問題は同期されます。
スタンドアロンで動いているコンピューターや時計は自分で時刻を合わせなくてはいけません。
秒単位でシビアに動いているシステムでは、うるう秒調整のタイミングで行われるサービスが
どのようになっているか考える必要があります。

また、秒の取りうる値はシステムによっては0~59ではなく、60や場合によっては61を返すこともある ということも考慮しましょう。



これらうるう秒調整を手動で行うことは大変なため、2013年を目処に廃止の方向でしたが今年1月に2015年まで廃止の結論を出すのは先送りされました。
今年は最後のうるう秒調整?などとも言われていましたが、これからも暫くはうるう秒について考えていく必要がありそうです。



Attached Files
.jpg   NICT.jpg (Size: 59.21 KB / Downloads: 16,747)
11-18-2013, 08:12 PM,
#2
RE: うるう秒について
情報を共有するためのおかげで、あなたの情報は私にとって非常に有用であり、私の知識を増やす。
10-30-2014, 09:00 PM,
#3
RE: うるう秒について
「Caede」は、Curl言語でモバイルアプリケーションを作るための開発ツールです。この「Caede」は大きく分けて3つの機能「1. トランスレータ」、「2. ライブラリ」、「3. フレームワーク」で構成されています。それぞれについては以下のようです。

Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('543')