パソコンの内蔵時計をズレなくする方法 (画像付き)
パソコンを使っていると,パソコンの時間がずれていると感じる時はありませんか?
例えば NHK で毎時に放送されるニュースが始まったのに,パソコンを見るとタスクバーに表示されている時間はその数分前だったりする時ってあったりしますよね.
(しかしデジタル放送は圧縮されている放送データを解凍するために数秒送れた映像を見ている事になるので正確にはテレビの放送もずれていますが…)
パソコンに限らず,他の家電においても内蔵時計がずれている事も珍しくないので「パソコンもそういう物なのかな?」と思ってあまり気にしない人もいるかと思いますが,実はパソコンにおいては限りなく正確な時間を示すようにすることは可能です.
なぜ内蔵時計がズレるのか
そもそも何故パソコンの内蔵時計がずれてしまうのかを説明します.
内部で時間を刻む必要があるパソコンを含めた電化製品には水晶振動子という受動素子が回路に組み込まれています.水晶には電圧を加えると一定の振動をする特性があり,これを振動周波数として取り出して電子機器の内部で時間を刻むために利用されています.
水晶振動子に使用される水晶は人工的に製造されるためとても純粋な結晶体になっています.このことは高い周波数精度の発振をしますが,いくら純粋な結晶体だとしても絶対的に正確な発振をするわけではありません.
京セラの ST2012SB という水晶振動子を例にとって説明しますと,同製品の公称周波は 32.768kHz とカタログに書かれています.つまり1秒間に 32768 回パルス電流が流れる事を示しています.
この水晶振動子を回路に組み込んだ場合,32768 回パルス電流が流れると機器内部で1秒とカウントすると時間が計れるという事ですが,カタログには周波数許容偏という項目も存在しそこには ±20 ×10(-6) と書かれています.ということは1秒間に流れるパルス電流にはこの回数分の許容偏,つまり誤差があるということです.
32,768 × ±20 × 1 × 10^-6 = ±0.65536
具体的なパルス電流の流れる回数の誤差は以上の式のようになり,この製品は1秒間に 32768 ±0.65536 回パルス電流を流す仕様だということです.
この誤差は仮に 32768 回パルス電流が流れると1秒と数えるように作ってある場合,1日に最大で 1.728 秒ずれる可能性があるということになります.
なにも京セラの製品だから誤差があるというわけではなく,どこのメーカーも大体ここに書いた程度の誤差になるので物理的に誤差が出てしまうのは仕方のない事なんですね.
パソコンの内蔵時計のズレを最小限に抑える
今まで説明してきたように水晶振動子だけでは時間のカウントがずれてきてしまいますので,置き時計,GPS (カーナビ),携帯電話 など時間が正確でないと困る製品などには,標準電波を受信して時間の誤差を自動的に修正する仕組みが取り入れられています.
標準電波を受信できないパソコンを含む他の機器では,NTP という通信プロトコルを用いてインターネット経由で正しい時刻へ同期させることができます.
勿論 Windows も NTP サーバーへ接続して自動的にパソコン内部の時間を修正する機能は付いていて,また機能もしているのですが,同期を行う間隔が7日と長いことと,初期状態ではアメリカにあるマイクロソフト社の NTP サーバーに接続するようになっているので,自宅から遠い NTP サーバーのため正確な時間で同期する事が難しくなっています.
このような事情からパソコンの内蔵時計の時間がずれてしまう原因になっています,つまりこの2つの問題を解決する事で「いつもぴったり正確な時間」にすることができます.
時間の同期間隔を1時間に変更する
1日に最大で 1.728 秒ずれる可能性があるということは1時間あたり 0.072 秒しか誤差が出ないことになりますので,実は6時間おきに同期させても 0.432 秒しかずれる可能性はないということなので,あまり同期間隔を短く設定すると NTP サーバーに負担になりますので,このあたりの同期間隔はご自身のスタイルにあったものを選んでください.
プログラマならローカルPCの内蔵時間は正確に超したことはないので1時間おきがお勧めです.
スタートボタンを押して「ファイル名を指定して実行」を選択すると,上の画像のようなウィンドウが出ます.次に「名前」の項目にあるエディットに
regedit
と入力してOKボタンを押すことでレジストリエディタを起動します.
レジストリエディタの左側のツリーを以下のディレクトリ順で進んでください.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
「NtpClient」ディレクトリまで進むと,右側のウィンドウに「SpecialPollInterval」という値がありますので名前をダブルクリックします.
ダブルクリックすると「DWORD 値の編集」というダイアログが表示されるので「表記」を10進数に変更し「値のデータ」に同期間隔の秒数を入力します.
- 1時間:3600
- 3時間:10800
- 6時間:21600
- 12時間:43200
- 24時間:86400
- 48時間:172800
上のような秒数を参考に指定する値を決めてください.
その後パソコンを再起動すると設定した秒数の間隔で同期が行われるようになります.
NTP サーバーを変更する
次に NTP サーバーを変更します.Windows の初期設定では time.windows.com という NTP サーバーを利用して同期していますが,このサーバーは米国にあるため日本国内の NTP サーバーに変更することで同期の精度を上げることができます.
国内の NTP サーバーと一口で言っても,個人が立てているものから企業や大学まで様々あるのでどれを選べばいいのかわからないと思います.私がお勧めする NTP サーバーは,ご自身が契約しているインターネットプロバイダの NTP サーバーを同期サーバーにすることです.
これは以下の点で優れています.
NTP サーバーの品質
個人や大学の NTP サーバーの場合,ダウンして繋がらなかったりそもそも同期の精度に問題があるかもしれませんが,ご自身のプロバイダの NTP サーバーならまず落ちることもないはずですので安心です.回線が混んでいない
基本的にプロバイダが公開している NTP サーバーは,そのプロバイダで契約しているホストでしかアクセスできないようにしている事が多く,他の大学や企業の NTP サーバーより回線が混み合ってないです.
地方の大学だとむしろプロバイダの NTP サーバーより距離も近くて回線もスムーズかもしれませんが,サーバーの品質という面は多少は不安が残りますので第一候補には選択しにくいです.自宅からサーバーまでの距離
ご自身が契約しているプロバイダなので,自宅からサーバーまでの物理的な距離が近い事が多いですし,大手のプロバイダだと複数の NTP サーバーを用意してありご自身のもっとも近い場所にあるサーバーを選択できます.
これらのメリットにより契約しているプロバイダの NTP サーバーを同期サーバーとして使用する事をお勧めします.ちなみに「(ご自身の契約サーバー名) NTP サーバー」などのキーワードで検索すると,プロバイダの NTP サーバーのアドレスが載っているページが出るはずなので簡単に見つけられると思います.
ちなみにドメイン名で NTP サーバーアドレスが書かれている場合,正引きをして IPアドレスに直したものを使用する方がいいです,理由はドメイン名だと結局一度 DNS を使って逆引きして IPアドレスに直してからアクセスするので,通信時間の短縮になり同期誤差が小さくなりますし,またプロバイダの NTP サーバーならば固定IPで運用されているはずですので正引きしたものを使っても問題ないです.
では,NTP サーバーのアドレスが判ったら早速同期サーバーを変更してみましょう.
「コントロールパネル」にある「日付と時刻」をダブルクリックするか,またはタスクバーに表示されている時間をダブルクリックすると「日付と時刻のプロパティ」ダイアログが表示されるので「インターネット時刻」タブを選択します.
「サーバー」の項目にあるエディットには,初期状態なら「time.windows.com」というドメイン名が入力されていますがそれを削除し,プロバイダの NTP サーバーの IP アドレスまたはドメイン名を入力して「今すぐ更新」を押してください.
同期に数秒時間がかかりますが「時刻は正常に同期しました」の旨が表示されたらしっかり動作しているので最後に適用ボタンを押して終わりです.お疲れ様でした.
初期設定が7日間隔で同期させている理由
最後は雑記ですので興味がある方は読んでみてください.
Windows の初期設定では NTP サーバーに同期する間隔は7日となっていますが,これだと最大で 12.096 秒もパソコンの時間がずれてしまう可能性があるということですので「せめて1日おきにで同期する設定でもいいんじゃないかな?」と思う人もいると思います.
実はこれは以下のような事で現実的ではありません.
Windows というのは世界で売れている OS なので,その出荷台数となると億の単位になります.しかもその全てが NTP サーバーをマイクロソフト社のもので同期している設定なので,インターネットに接続しているパソコンが仮に10億台としても1日に10億も同期のためにアクセスが来ると通信量もすごいですし NTP サーバーが落ちてしまいかねません.
OS の出荷台数と,ユーザーが妥協できる時間のズレと,NTP サーバーがしっかり応答する余裕ある通信量などを考えて7日という間隔になっているのです.
つまり NTP サーバーを「time.windows.com」にしたまま同期間隔だけ詰めてしまうのは酷かもしれませんし,むしろ自国の NTP サーバーを同期サーバーにした方が同期精度もいいですので是非 NTP サーバーは国内のものに変更してください.