"オペレーティングシステムの起動時に、ハードウェアクロックが管理する時刻をシステムクロックに設定する設定手段と、時刻更新の機能を有するアプリケーションプログラムの起動時に、外部の時刻発生装置が前記ハードウェアクロックより小さい誤差で管理する時刻を取得する取得手段と、前記ハードウェアクロックが管理する時刻を前記取得手段が取得した時刻に更新する第1更新手段と、前記アプリケーションプログラムの実行中に、定期的に、前記システムクロックが管理する時刻を前記ハードウェアクロックが管理する時刻に更新する第2更新手段と、を備えることを特徴とする情報処理装置。上述したように、情報処理装置では、時刻合わせは重要であるにも係らず、システムクロックで管理する時刻に誤差が生じる問題があった。セシウム原子時計等の原子時計は水晶振動子よりも高精度であるため発振回路に原子時計を利用することで誤差を小さくすることができるが、原子時計を利用する場合構成が複雑になるとともに、高価であるため容易に利用しにくい問題がある。したがって本実施形態は、容易により正確な時刻合わせを可能とする情報処理装置を提供する。実施形態に係る情報処理装置は、設定手段と、取得手段と、第1更新手段と、第2更新手段とを備える。設定手段は、オペレーティングシステムの起動時に、ハードウェアクロックが管理する時刻をシステムクロックに設定する。取得手段は、時刻更新の機能を有するアプリケーションプログラムの起動時に、外部の時刻発生装置が前記ハードウェアクロックより小さい誤差で管理する時刻を取得する。第1更新手段は、前記ハードウェアクロックが管理する時刻を前記取得手段が取得した時刻に更新する。第2更新手段は、前記アプリケーションプログラムの実行中に、定期的に、前記システムクロックが管理する時刻を前記ハードウェアクロックが管理する時刻に更新する。以下に、図面を用いて実施形態に係る情報処理装置について説明する。図1に示すように、実施形態に係る情報処理装置1は、中央処理装置CPU10、記憶装置11、通信インタフェース等を備えるパーソナルコンピュータ等の端末であるが、一般的な端末と比較して、正確な時刻合わせが可能である。この情報処理装置1では、記憶装置11で記憶される時刻更新プログラムP1が読み出されて実行されることで、CPU10に設定手段101、取得手段102、第1更新手段103及び第2更新手段104が実装される。この時刻更新プログラムP1はアプリケーションプログラムの一種であって、時刻合わせの正確な情報処理装置を実現するものである。記憶装置11では、時刻更新プログラムP1の他、オペレーティングシステムOS、アプリケーションプログラムP2~P4を記憶している。また、情報処理装置1は、時刻を管理するために、ハードウェアクロック12とインターバルタイマー13を備えている。具体的には、ハードウェアクロック12は、バックアップ電源等により、水晶振動子等を利用して時刻を管理するものであって、情報処理装置1の電源がオフの場合にも時刻を管理している。また、インターバルタイマー13は、情報処理装置1の電源がオンの場合に水晶振動子等を利用して定期的に割り込み信号を発生する。設定手段101は、図2に示すように、オペレーティングシステムOSの起動時に、ハードウェアクロック12で計時される時刻をシステムクロック14として設定する。その後、オペレーティングシステムOSは、インターバルタイマー13から割り込み信号を入力すると、システムクロック14が管理する時刻を更新する。すなわち、システムクロック14では、インターバルタイマー13が発生する割り込み信号によって管理する時間がアップデートされる。なお、システムクロック14は、図1では、システムクロック14は、記憶装置11で記憶されるオペレーティングシステムOS内に示しているが、オペレーティングシステムOSと関連付けられていれて記憶装置11とは別のメモリ等に記憶されていてもよい。取得手段102は、例えばネットワークを介してNTPNetworkTimeProtocolサーバ等のハードウェアクロック12よりも高精度で時刻を管理する時刻発生装置2から時刻を取得する。具体的には、図2に示すように、取得手段102は、時刻更新プログラムP1の起動時に時刻を取得する。時刻発生装置2としては、NTPサーバの他、GPSGlobalPositioningSystemの時計を利用することもできる。第1更新手段103は、時刻更新プログラムP1の起動時に取得手段102が現在の時刻を取得すると、図2に示すように、ハードウェアクロック12の時刻を、取得手段102が取得した時刻に更新する。時刻発生装置2は、ハードウェアクロック12よりも高精度で時刻を管理しているため、第1更新手段103によって時刻を更新することで、ハードウェアクロック12が管理する時刻を正確にすることができる。第2更新手段104は、図2に示すように、アプリケーションプログラムの実行中に、定期的に、システムクロック14の時刻をハードウェアクロック12が管理する時刻に更新する。ハードウェアクロック12は、システムクロック14よりも高精度で時刻を管理しているため、第2更新手段104によって時刻を更新することで、システムクロック14が管理する時刻を正確にすることができる。なお、インターバルタイマー14は、定期的に割り込み信号を発生するが、ハードウェアクロック12で管理される時刻のほうが精度が良いため、インターバルタイマー13が発生した割り込み信号によってシステムクロック14が更新されることはない。すなわち、時刻更新プログラムP1を利用しない場合、図3に示すように、ハードウェアクロック12が更新された後は、インターバルタイマー13による割り込み信号のみでシステムクロック14が管理される。しかしながら、このインターバルタイマー13は誤差が生じやすく、インターバルタイマー13での誤差によってシステムクロック14で管理する時刻にもずれが生じる。したがって、実施形態に係る情報処理装置1では、インターバルタイマー13よりも精度の高いハードウェアクロック12を利用して定期的にシステムクロック14を更新することで、より正確な時刻合わせを可能とする。具体的には、ある情報処理装置において、ハードウェアクロック12を利用してシステムクロック14で管理する時刻を更新した場合と、ハードウェアクロック12を使用せずにインターバルタイマー13のみでシステムクロック14の管理する時刻を更新した場合の誤差を比較すると、ハードウェアクロック12を利用した場合の誤差は0.05[sec/h]程度であるのに対し、ハードウェアクロック12を利用しない場合の誤差は-0.2~-0.5[sec/h]程度という結果を得られた。従って、実施形態に係る情報処理装置1のように、ハードウェアクロック12を利用してシステムクロック14で管理する時刻を更新した場合、正確な時刻合わせが可能となったことが分かる。なお、この数値は、情報処理装置が有するCPUやメモリの性能等に応じて異なる値であるから、絶対的な値ではない。上述した説明では、時刻更新プログラムP1の起動時をタイミングとしてNTPサーバやGPS等の時刻発生装置2にアクセスして時刻を更新したり、時刻更新プログラムP1の動作時実行時の定期的なタイミングで時刻を更新していた。しかし、時刻更新プログラムP1は、単独のアプリケーションプログラムとして実行されるのではなく、他のアプリケーションプログラムに含まれるものでもよい。したがって、特定のアプリケーションプログラムの起動時、動作時をタイミングとするようにしてもよい。また、図1において記憶装置11が記憶する時刻更新プログラムP1以外のアプリケーションプログラムP2~P4の数は3であるが、記憶装置11が記憶するアプリケーションプログラムP2~P4の数や種類は限定されない。さらに、図1に示すように、情報処理装置1は、複数の情報処理装置1a~1cと接続されていてもよい。なお、図1に示す例では、複数の情報処理装置1,1a~1cがそれぞれ相互に通信回線3a~3fで接続されて通信を行なうピアツーピアP2P方式のネットワークシステムである。このように複数の情報処理装置1,1a~1c間で直接データを送受信して使用する場合、各情報処理装置のシステムクロック14の時刻が正確かつ同期していることで、処理の不具合を防止できる。したがって、本実施形態に係る情報処理装置を複数接続してP2Pのシステムを構成することで、各情報処理装置で管理する時刻の差を小さくして処理の不具合を防止することができる。また、広帯域の回線を利用する情報処理装置の場合、NTPサーバ等の外部の時刻発生装置に頻繁にアクセスして時刻を取得し、取得した時刻でシステムクロックを更新することが容易であって、正確な時刻の管理も容易に実現できる。一方、狭帯域の回線を利用する情報処理装置の場合、このように頻繁に外部の時刻発生装置にアクセスするのは好ましくないが、P2Pは、狭帯域の回線であっても容易に実現することができる特徴がある。したがって、情報処理装置の接続方法は、P2Pに限られることはないが、狭帯域のP2Pの場合に本実施形態に係る情報処理装置を利用することで、狭帯域のP2Pでは実現が困難であった時刻合わせを容易に実現することができる。上記のように、実施形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例および運用技術が明らかとなる。また、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。"