(57)【特許請求の範囲】
【請求項１】
サーバと通信する情報処理装置であって、
所定の処理を実行する場合に通知日時情報を前記サーバへ通知する通知手段と、
前記通知手段により通知された通知日時情報に基づいて規定される時刻と前記情報処理装置が有する時計が示す時刻との差分である差分時間を管理する管理手段と、
前記時計の時間が変更された場合に、前記時計の時間の変更量を算出する算出手段と、を有し、
前記通知手段は、前記時計の時間が変更された場合においては、前記管理手段により管理された差分時間と前記算出手段により算出された変更量とに基づいて算出時刻を算出し、該算出した算出時刻を前記通知日時情報として前記サーバへ通知することを特徴とする情報処理装置。
【請求項２】
前記通知手段は、ジョブを生成すると共に、生成したジョブを生成順に前記サーバへ送信し、前記時計の時間が変更された場合においては、前記算出した算出時刻を含むジョブを生成して前記サーバへ送信することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記通知手段は、前記時計の時間が変更された場合においては、前記ジョブの送信時における前記時計が示す時刻に対して、前記差分時間を減算すると共に前記変更量を加算することで、前記算出時刻を算出することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記管理手段は、前記通知手段による前記ジョブの生成時に、前記差分時間に前記変更量を加算して前記差分時間を更新することを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記管理手段は、前記通知手段による前記ジョブの送信後に、送信したジョブに含まれていた算出時刻の算出に用いられた変更量を前記差分時間から減算して前記差分時間を更新することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記通知手段は、送信できなかったジョブを、送信が可能となった後に送信することを特徴とする請求項２〜５のいずれか１項に記載の情報処理装置。
【請求項７】
サーバと通信する情報処理装置の制御方法であって、
所定の処理を実行する場合に通知日時情報を前記サーバへ通知する通知ステップと、
前記通知ステップにより通知された通知日時情報に基づいて規定される時刻と前記情報処理装置が有する時計が示す時刻との差分である差分時間を管理する管理ステップと、
前記時計の時間が変更された場合に、前記時計の時間の変更量を算出する算出ステップと、を有し、
前記通知ステップは、前記時計の時間が変更された場合においては、前記管理ステップにより管理された差分時間と前記算出ステップにより算出された変更量とに基づいて算出時刻を算出し、該算出した算出時刻を前記通知日時情報として前記サーバへ通知することを特徴とする情報処理装置の制御方法。
【請求項８】
請求項７に記載の情報処理装置の制御方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバと情報処理装置との間の同期処理の技術に関する。
【背景技術】
【０００２】
従来、画像形成装置等の情報処理装置を含む情報処理システムにおいて、ネットワークを通じて、管理しているデータの同期をとるシステムが知られている。この種のシステムで、一方の情報処理装置での変更内容を変更順序通りにもう一方の情報処理装置に送信し、受信側の情報処理装置では、受信した順に変更を反映させることで、変更の順序の整合性を保つ技術が提案されている（特許文献１）。
【０００３】
また、変更内容に変更日時情報を付与し、日時順に処理することで変更順序の整合性を保つ方法がある。この方法では、情報処理システムの各情報処理装置の時計が一致していることを前提としている。いずれかの情報処理装置の時計が他の情報処理装置の時計と一致していない場合に、データをやり取りする際に日時情報を修正することで、データの日時情報を補正する技術が提案されている（特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−７０６３６号公報
【特許文献２】特開２００５−１１７３３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、複数の情報処理装置から同一データを変更する場合や、情報処理装置の時計が変更されることを考慮していない。そのため、情報処理装置がサーバと接続ができない状態において情報処理装置の時計が変更された場合に、サーバと情報処理装置との間で変更時刻順序を保って設定情報等の同期を適切に行うことができなかった。特に、サーバとの接続ができない状態において情報処理装置で複数回の時計の時間変更がされた場合や、情報処理装置において電源断が発生した場合においては、その後のサーバとの同期処理が適切に行えないおそれがある。このような場合を考慮して、サーバとの通信復帰後に正しく同期処理が実行される仕組みが望まれる。
【０００６】
本発明の目的は、サーバと通信不能な時間帯に情報処理装置で時計の時間変更があっても、通信再開後にサーバとの時間的整合を確保することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、サーバと通信する情報処理装置であって、所定の処理を実行する場合に通知日時情報を前記サーバへ通知する通知手段と、前記通知手段により通知された通知日時情報に基づいて規定される時刻と前記情報処理装置が有する時計が示す時刻との差分である差分時間を管理する管理手段と、前記時計の時間が変更された場合に、前記時計の時間の変更量を算出する算出手段と、を有し、前記通知手段は、前記時計の時間が変更された場合においては、前記管理手段により管理された差分時間と前記算出手段により算出された変更量とに基づいて算出時刻を算出し、該算出した算出時刻を前記通知日時情報として前記サーバへ通知することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、サーバと通信不能な時間帯に情報処理装置で時計の時間変更があっても、通信再開後にサーバとの時間的整合を確保することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置を含む情報処理システムの構成を示す図である。
【図２】ＭＦＰの構成を示すブロック図である。
【図３】サーバの構成を示すブロック図である。
【図４】データ同期アプリケーションプログラムの構成を示すブロック図である。
【図５】データ管理サーバアプリケーションプログラムの構成を示すブロック図である。
【図６】登録要求処理のフローチャートである。
【図７】登録処理のフローチャートである。
【図８】設定値更新処理のフローチャートである。
【図９】要求受信処理のフローチャートである。
【図１０】データ更新要求対応処理のフローチャートである。
【図１１】データ取得処理のフローチャートである。
【図１２】データ取得要求対応処理のフローチャートである。
【図１３】時刻変更処理（図（ａ））、時刻変更量算出処理（図（ｂ））のフローチャートである。
【図１４】時刻変更ジョブ送信処理（図（ａ））、差分時間更新処理（図（ｂ））のフローチャートである。
【図１５】日時補正値更新処理のフローチャートである。
【図１６】時刻変更処理（図（ａ））、時刻変更量算出処理（図（ｂ））、時刻変更ジョブ送信処理（図（ｃ））のフローチャートである。
【図１７】要求受信処理のフローチャートである。
【図１８】日時補正値更新処理のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面を参照して説明する。
【００１１】
（第１の実施の形態）
第１の実施の形態では、サーバと複数台のクライアント間でデータ同期を行う際に、複数台のクライアントから順不同でデータ更新要求がサーバに要求された場合であっても、サーバ側で正しい順序でデータ更新処理を行えるようにする。
【００１２】
図１は、第１の実施の形態に係る情報処理装置を含む情報処理システムの構成を示す図である。本実施の形態では、クライアントとなる情報処理装置としてデジタル複合機であるＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）１１０（１１０ａ、１１０ｂ）を例示する。設定値管理サーバ装置の一例としてパーソナルコンピュータ等のサーバ１２０を例示する。ＭＦＰ１１０の数は問わない。以降、複数のＭＦＰ１１０の各々を区別しない場合は、単にＭＦＰ１１０と記す。ＭＦＰ１１０は、サーバ１２０に対してネットワーク１００を介して通信可能に接続される。ＭＦＰ１１０は、所定のデータを処理するジョブを実行する。
【００１３】
各ＭＦＰ１１０は、ユーザ操作やコピー／ＦＡＸなどの処理実行によって、サーバ１２０において各ＭＦＰ１１０の識別情報に対応付けられて管理され、且つ、日時情報に対応付けてデータが管理されている。ＭＦＰ１１０は、データに変更が発生した場合、その変更内容をサーバ１２０へ送信してデータ更新を要求する。また、ＭＦＰ１１０は、サーバ１２０で管理されるデータに更新があるかどうかを、定期的もしくは必要に応じて問い合わせ、更新されたデータがあればそれを取得し、自身において保存する。
【００１４】
例えばアドレス帳のＦＡＸ番号やメールアドレスデータ等のアドレスデータが、サーバ１２０で管理されるデータとして例示される。同じアドレスデータを２つのＭＦＰ１１０ａ、ＭＦＰ１１０ｂで共に使用する場合、特定のジョブに使用されるアドレスデータの同期処理は以下のように実施される。ここで、特定のジョブは、例えば、原稿を読み取って上記アドレスデータに送信するＦＡＸジョブ等である。ＭＦＰ１１０ａで、部署移動や新規開設のためアドレスデータを変更する必要が生じた場合、変更したアドレスデータがサーバ１２０に通知され、サーバ１２０で管理されるアドレスデータが更新される。その後、ＭＦＰ１１０ｂからサーバ１２０に対して更新の問い合わせが実行されると、サーバ１２０は更新したアドレスデータを更新データとしてＭＦＰ１１０ｂへ送信する。ＭＦＰ１１０ｂは、アドレスデータを受信したら、ＭＦＰ１１０ｂ内のアドレスデータを更新して保存する。
【００１５】
なお、本実施の形態では、サーバ装置としてパーソナルコンピュータ（ＰＣ）、クライアントとしてデジタル複合機を例にとって説明するが、サーバ装置がデジタル複合機であっても良いし、クライアントがＰＣであっても良い。また、同期されるデータとしてアドレスデータを例に説明しているが、同期の対象となるデータの形式や種類は問わない。
【００１６】
図２は、ＭＦＰ１１０の構成を示すブロック図である。ＭＦＰ１１０は、コントローラユニット２００、操作部２２０、スキャナ２３０及びプリンタ２４０を含む。コントローラユニット２００には、タッチパネルを有する操作部２２０が接続されるとともに、画像入力デバイスであるスキャナ２３０や画像出力デバイスであるプリンタ２４０が接続される。コントローラユニット２００は、ＣＰＵ２０２を有する。ＣＰＵ２０２は、ＲＯＭ２０６に格納されているブートプログラムによりＯＳ（ＯｐｅｒａｔｉｎｇＳｙｓｔｅｍ）を立ち上げる。コントローラユニット２００は、このＯＳ上で、ＨＤＤ（ＨａｒｄＤｉｓｋ Ｄｒｉｖｅ）２０５に格納されているアプリケーションプログラムを実行し、これによって各種処理を実行する。ＣＰＵ２０２の作業領域としてはＲＡＭ２０３が用いられる。ＨＤＤ２０５は、上記アプリケーションプログラムや各種データを格納する。
【００１７】
ＣＰＵ２０２には、システムバス２１０を介して、ＲＯＭ２０６、ＲＡＭ２０３のほか、操作部Ｉ／Ｆ２０１、デバイスＩ／Ｆ２０４、ネットワークＩ／Ｆ２０７、画像処理部２０８が接続される。操作部Ｉ／Ｆ２０１は、操作部２２０とのインタフェースである。操作部Ｉ／Ｆ２０１は、操作部２２０に表示するための各種データ等の情報を送出したり、ユーザにより入力された情報をＣＰＵ２０２に送出したりする。デバイスＩ／Ｆ２０４は、スキャナ２３０及びプリンタ２４０を接続し、データや制御信号の入出力を行う。ネットワークＩ／Ｆ２０７は、ネットワーク１００に接続され、ネットワーク１００を介してネットワーク１００上の各装置との間で情報の入出力を行う。画像処理部２０８は、スキャナ２３０からの入力画像処理やプリンタ２４０への出力画像処理のほか、画像回転、画像圧縮、解像度変換、色空間変換、階調変換などの処理を行う。
【００１８】
図３は、サーバ１２０の構成を示すブロック図である。サーバ１２０は、各ユニット間を接続するための伝送バス３００を有する。伝送バス３００は、アドレスバス、データバス、入出力バスまたは制御バスである。ＣＰＵ３０１に対し、伝送バス３００を介して、ＲＡＭ３０２、ＲＯＭ３０３、ネットワークＩ／Ｆ３０４、ＶＲＡＭ（ＶｉｄｅｏＶＲＡＭ）３０５、コントローラ（ＫＢＣ）３０７、ＨＤＤ３０９及びＦＤＤ（フレキシブルディスクドライブ）３１０が接続される。
【００１９】
ＣＰＵ３０１は、サーバ１２０における演算及び全体の制御を司る。ＲＡＭ３０２は、ＣＰＵ３０１の主メモリとして機能するほか、実行プログラムの領域や該プログラムの実行エリア並びにデータエリアとして機能する。ＲＯＭ３０３はＣＰＵ３０１の動作処理手順を記憶する。ＲＯＭ３０３には機器制御を行うシステムプログラムである基本ソフト（ＯＳ）を記録したプログラムＲＯＭと、システムを稼働するために必要な情報等が記録されるデータＲＯＭがある。なお、ＲＯＭ３０３の代わりに、ＨＤＤ３０９を用いてもよい。ネットワークＩ／Ｆ３０４は、ネットワーク１００を介してＭＦＰ１１０とのデータ送受信等の通信を行う。ＶＲＡＭ３０５は、ディスプレイ３０６に表示させるための画像を展開し、その表示の制御を行う。コントローラ３０７は外部入力装置（ＫＢ）３０８からの入力信号を制御する。外部入力装置３０８は、例えばキーボードやマウス等のポインティングデバイスを有し、ユーザによる操作を受け付ける。ＨＤＤ３０９は、アプリケーションプログラムや各種データの保存に用いられる。
【００２０】
図４は、ＭＦＰ１１０で動作するデータ同期アプリケーションプログラムの構成を示すブロック図である。データ同期アプリケーション４００及びデータ管理アプリケーション４１０は、ＲＡＭ２０３、ＨＤＤ２０５、ＲＯＭ２０６（図２）のいずれかに記憶され、ＣＰＵ２０２により実行される。
【００２１】
データ同期アプリケーション４００は、データ管理アプリケーション４１０などからの処理要求を受信する受付部４０１、処理の制御を行う制御部４０２を備える。さらに、データ同期アプリケーション４００は、受付部４０１で受け付けた要求をジョブとして管理するジョブ管理部４０３を備える。ジョブ管理部４０３で管理されるＭＦＰ１１０の情報は、ＨＤＤ２０５やＲＡＭ２０３などに保存される。さらに、データ同期アプリケーション４００は、ネットワークＩ／Ｆ２０７を介してサーバ１２０とデータ通信を行う通信処理部４０４、ＭＦＰ１１０の日時情報が変更されたことを検知する日時変更検知部４０５を備える。ＭＦＰ１１０は不図示の時計を有し、この時計が示す年月日及び時刻が日時情報である。
【００２２】
変更量算出部４０６は、ＭＦＰ１１０で時計の時刻が変更（修正）された場合に、変更前と変更後との時間の差を時刻変更量ΔＴとして算出する。通知時刻生成部４０７は、サーバ１２０へ通知する時刻の情報として、「通知日時情報」を生成する。差分時間管理部４０８は「差分時間ｄＴ」を管理する。この差分時間ｄＴは、ＭＦＰ１１０がサーバ１２０と通信できない時間帯にＭＦＰ１１０で時計が変更された場合等に発生し、例えば、時計の変更があった後にＭＦＰ１１０がその情報をサーバ１２０へ通知できないと差分時間ｄＴが生じたままとなる。
【００２３】
差分時間ｄＴは、ＭＦＰ１１０の時計の時刻をサーバ１２０へ最後に通知した後における、ＭＦＰ１１０の時計の時刻変更の総和である。進行中の時間で考えると、差分時間ｄＴは、ＭＦＰ１１０の時計が示す現在時刻（以下、ＭＦＰ第１時刻Ｔ１と記す）とサーバ１２０へ最後に通知した通知済みの通知日時情報に基づいて規定される現在時刻（以下、ＭＦＰ第２時刻Ｔ２と記す）との差分である。ここで「ＭＦＰ第２時刻Ｔ２」は、通知日時情報が示す時刻からの経過時間により換算される現在の時刻である。
【００２４】
差分時間ｄＴの値はＨＤＤ２０５等の不揮発な領域に保持される。データ管理アプリケーション４１０は、操作部２２０に表示するためのデータを管理し、操作部２２０でユーザから入力されたデータを保持するとともに、受付部４０１にデータ更新内容を通知する。
【００２５】
図５は、サーバ１２０で動作するデータ管理サーバアプリケーションプログラムの構成を示すブロック図である。データ管理サーバアプリケーション５００（以下、サーバアプリケーション５００と略記する）及びデータ管理部５１０は、ＲＡＭ３０２、ＨＤＤ３０９、ＲＯＭ３０３のいずれかに記憶され、ＣＰＵ３０１により実行される。
【００２６】
サーバアプリケーション５００は、データ同期アプリケーション４００などからの処理要求を受信したり処理結果を送信したりする送受信部５０１を備える。さらに、サーバアプリケーション５００は、処理制御を行う制御部５０２、送受信部５０１で受け付けた要求を解析する解析部５０３を備える。さらに、サーバアプリケーション５００は、送受信部５０１で受け付けた処理要求に応じてデータ管理部５１０とやり取りしてデータの作成、更新、削除、参照を実行するデータ処理部５０４を備える。データ管理部５１０で管理される情報は、ＨＤＤ３０９やＲＡＭ３０２などに保存される。ＭＦＰ１１０は、本情報処理システムに参加する際に、自装置のサーバ１２０への登録を行う。データ同期アプリケーション４００の制御部４０２は、ＭＦＰ１１０の日時情報を特定し、通信処理部４０４から日時情報とともに登録要求を送信する。
【００２７】
次に、図６、図７を用いて、ＭＦＰ１１０がサーバ１２０に対して登録要求を行い、サーバ１２０上に登録されるまでの処理について説明する。
【００２８】
図６は、ＭＦＰ１１０がサーバ１２０に対して行う登録要求処理のフローチャートである。この処理は、ＭＦＰ１１０のＲＡＭ２０３、ＨＤＤ２０５、ＲＯＭ２０６のいずれかに記憶されたデータ同期アプリケーション４００及びデータ管理アプリケーション４１０をＣＰＵ２０２が実行することで実現される。図６の処理は、例えば、サーバ１２０への最初の登録要求時（初期接続時）に実行される。
【００２９】
まず、ステップＳ６０１では、データ同期アプリケーション４００の受付部４０１が、操作部２２０からの同期処理の開始要求を受信し、同期処理の開始要求を受信したことを制御部４０２へ通知する。ステップＳ６０２では、制御部４０２は、同期処理の開始要求を受信すると、接続先サーバが登録されているか、すなわち、同期処理を行うためのサーバ１２０のＩＰアドレスやホスト名が接続先として登録されているか否かを判別する。接続先サーバが登録されている場合には処理はステップＳ６０５へ進み、接続先サーバが登録されていない場合には処理はステップＳ６０３へ進む。
【００３０】
制御部４０２は、ステップＳ６０３で、接続先のサーバ１２０を探索し、ステップＳ６０４で、サーバ探索により接続先のサーバ１２０が見つかったか否かを判別する。その判別の結果、制御部４０２は、接続先のサーバ１２０が複数見つかった場合、または接続先のサーバが見つからなかった場合には、図６の処理を終了させる。一方、１つの接続先のサーバ１２０が探索により見つかった場合には、制御部４０２は、処理をステップＳ６０５へ進める。ステップＳ６０５では、制御部４０２は、ＭＦＰ１１０のデバイスの情報を表すデバイス情報データを生成し、それをジョブ管理部４０３にジョブとして登録する（ジョブを生成する）。ステップＳ６０５で生成されるデバイス情報データには、ＭＦＰ１１０の現在時刻を表す情報（通知日時情報としてのＭＦＰ第１時刻Ｔ１）と、サーバが登録要求元の機器を特定する（デバイスを識別する）ための識別子情報とが含まれる。識別子情報は、クライアントを個々に特定できる情報であればよく、例えばデバイス毎に割り当てられるデバイスのシリアル番号であってもよい。
【００３１】
次にステップＳ６０６では、制御部４０２は、ステップＳ６０５で生成されジョブ管理部４０３に登録されたジョブを読み出し、通信処理部４０４に対してサーバ１２０への送信処理を依頼する。次にステップＳ６０７では、制御部４０２は、ＭＦＰ１１０上に存在するデータを元にサーバ１２０へ登録する登録データを生成する。ステップＳ６０８では、制御部４０２は、生成した登録データを通信処理部４０４へ渡し、サーバ１２０へ送信させる。これにより、同期要求のジョブがサーバ１２０へ送信され、ジョブの送信により通知日時情報がサーバ１２０へ通知される。
【００３２】
図６の処理は、所定の処理の実行時、具体的にはサーバ１２０への最初の登録要求時に実行され、サーバ１２０の時刻とＭＦＰ１１０の時刻とを整合させるために必要な時刻補正の処理であった。しかし時刻を補正するタイミングは、最初の登録要求時だけに限定されるものではない。一般的なコンピュータに搭載されている時計は１カ月で１５〜２０秒程度ずれるものである。最初の登録要求時から１度も時刻が変更されていない場合には、ＭＦＰ１１０ａとＭＦＰ１１０ｂとサーバ１２０との時刻が互いにずれてしまい、同期上、問題となり得る。そのため、ＭＦＰ１１０の起動時やスリープからの復帰時、サーバ１２０とＭＦＰ１１０との同期処理の一時停止からの再開時等、任意のタイミングで時刻補正を実施してもよい。これらにより、時計の経時的なずれを随時補正することができる。
【００３３】
図７は、サーバ１２０で実行される登録処理のフローチャートである。この処理は、ＭＦＰ１１０からの登録要求を受信した際にサーバ１２０で動作するサーバアプリケーション５００による処理に対応する。なお、図７の各ステップは、サーバ１２０のＣＰＵ３０１がサーバアプリケーション５００を実行することで実現される。以下の説明では、ＣＰＵ３０１が実行するサーバアプリケーション５００の各モジュールを、処理主体として説明する。
【００３４】
なお、図７の処理では、サーバ１２０は、ＭＦＰ１１０ごとに、登録要求時の同期要求のジョブに含まれる通知日時情報（ここではＭＦＰ第１時刻Ｔ１）を元に、「日時補正値」を記憶しておく。そしてサーバ１２０は、以降の同期要求に含まれる通知日時情報をサーバ１２０内での時刻に補正することで、複数のＭＦＰ１１０からの同期要求の順序の整合を保証する。
【００３５】
まず、ステップＳ７０１で、送受信部５０１が登録要求を受信すると、制御部５０２は、登録要求受信時におけるサーバ１２０の時計の日時をＲＡＭ３０２上に保持しておく。ステップＳ７０２では、受信した登録要求を解析部５０３が解析して識別子情報を特定し、制御部５０２は、特定された識別子情報から、登録要求元であるＭＦＰ１１０を特定する。そして制御部５０２はデータ処理部５０４に登録処理を要求する。ここで、識別子情報とは、前述のとおり、例えばＭＦＰ１１０のシリアル番号などである。
【００３６】
ステップＳ７０３で、データ処理部５０４は、データ管理部５１０に対して要求元のＭＦＰ１１０がデータ管理部５１０に未登録であるか否かを判別する。その判別の結果、要求元のＭＦＰ１１０が既に登録されている場合は、今回の登録要求はエラーとなり、図７の処理が終了する。一方、要求元のＭＦＰ１１０が未登録である場合は、ステップＳ７０４で、データ処理部５０４は、ＭＦＰ１１０をデータ管理部５１０に登録する。ＭＦＰ１１０の識別子情報はＨＤＤ３０９に保存される。
【００３７】
ステップＳ７０５では、データ処理部５０４は、ＭＦＰ１１０からの登録要求に含まれていた通知日時情報（ＭＦＰ第１時刻Ｔ１）を特定する。ステップＳ７０６では、ステップＳ７０１で保持したサーバ１２０における要求受信時の日時と、ステップＳ７０５で特定したＭＦＰ第１時刻Ｔ１とに基づいて「日時補正値」を算出する。サーバ１２０が有する時計が示す時刻を「サーバ時刻」と称する。「サーバ時刻」は、サーバ１２０内で動作するデータ管理サーバアプリケーション５００が基準とする時刻とされる。日時補正値は、「日時補正値」＝「通知日時情報」−「サーバ時刻」により算出される。ここでは、登録要求受け付け時の通知日時情報はＭＦＰ第１時刻Ｔ１であるので、日時補正値は、「日時補正値」＝「ＭＦＰ第１時刻Ｔ１」−「サーバ時刻」により算出される。従って、ＭＦＰ１１０の時計がサーバ１２０の時計より進んでいる場合は、日時補正値は＋の値となる。ステップＳ７０７では、データ処理部５０４は、ステップＳ７０６で算出した日時補正値（００：１０）を、ステップＳ７０４で登録したＭＦＰ１１０の情報に関連付けて管理データとして保存するようにデータ管理部５１０に要求する。データ管理部５１０は、日時補正値を管理データに登録し、図７の処理が終了する。
【００３８】
表１に、サーバ１２０が管理する、日時補正値を含む管理データを示す。この例は、ＭＦＰ１１０ａ及びＭＦＰ１１０ｂの登録処理完了後にデータ管理部５１０で管理されている管理データの一例である。ＭＦＰ１１０ａについては、日時補正値は「０：１０」になっていて、サーバ１２０よりも１０分間進んでいることを示している。ＭＦＰ１１０ｂについては、日時補正値は「−００：１０」となっていて、サーバ１２０よりも１０分遅れていることを示している。
【表１】
0006602177.tif 000002
【００３９】
次に図８、図９を用いて、登録処理後にＭＦＰ１１０において設定値が変更された場合のＭＦＰ１１０とサーバ１２０との動作について説明する。
【００４０】
図８は、ＭＦＰ１１０で実行される設定値更新処理のフローチャートである。図８の各ステップは、ＭＦＰ１１０内のＣＰＵ２０２がＲＯＭ２０６またはＨＤＤ２０５に記憶されたデータ同期アプリケーション４００を実行することで実現される。
【００４１】
まず、ステップＳ８０１において、受付部４０１は、操作部２２０等を用いて変更された設定値の変更内容とデータの変更日時とをデータ管理アプリケーション４１０から受信し、制御部４０２に通知する。ステップＳ８０２では、制御部４０２は、通知された内容をジョブ管理部４０３にジョブとして登録する。次に、ステップＳ８０３では、制御部４０２は、ジョブ管理部４０３に登録されているジョブを読み込み、読み込んだジョブのサーバ１２０への送信を通信処理部４０４に依頼する。これにより、ジョブがサーバ１２０へ送信される。その際、制御部４０２は、ジョブが複数登録されている場合は、先頭のジョブ（生成時刻が最も古いもの）から順に送信依頼する。なお、各ジョブ内には、ジョブ生成時の時刻、及び、ジョブ送信時の時刻が記載されている。ジョブ生成時刻を元に、送信の順番が定まる。
【００４２】
ステップＳ８０４では、制御部４０２は、ジョブの送信が成功したか否かを判別する。その判別の結果、制御部４０２は、ジョブの送信が成功しなかった場合は、予め定められたリトライ間隔（規定時間）だけ待った後に（ステップＳ８０６）、再度、処理をステップＳ８０３へ進めてジョブの送信処理を実施する。一方、制御部４０２は、ジョブの送信が成功した場合は、ステップＳ８０５で、送信したジョブに関する削除処理をジョブ管理部４０３に依頼する。これにより、送信済みのジョブが削除される。なお、未送信のジョブが残っている場合は、処理はステップＳ８０３に戻る。未送信のジョブがなくなると図８の処理は終了する。
【００４３】
図９は、サーバ１２０で実行される要求受信処理のフローチャートである。この処理は、ＭＦＰ１１０から、データ更新要求、データ取得要求、または日時補正要求の同期ジョブをサーバ１２０が受信した場合に開始される。この処理は、ＣＰＵ３０１が、サーバアプリケーション５００を実行することで実現される。以下の説明では、ＣＰＵ３０１が実行するサーバアプリケーション５００の各モジュールを、処理主体として説明する。
【００４４】
まずステップＳ９０１で、送受信部５０１がＭＦＰ１１０からジョブを受信するとそれを制御部５０２に通知し、制御部５０２は、受信した内容を解析部５０３に渡して解析させ、その解析で特定された識別子情報から、要求元のＭＦＰ１１０を特定する。なお、ここで要求元が特定できない場合は、図示しないが、図８の処理はエラー終了となる。
【００４５】
ステップＳ９０２では、制御部５０２は、解析部５０３から要求内容を取得し、ジョブによる要求がデータ更新要求であるか否かを判別する。その判別の結果、要求がデータ更新要求である場合は、制御部５０２は、ステップＳ９０３で、データ更新要求対応処理（図１０で後述）を実行して図８の処理を終了させる。一方、要求がデータ更新要求でない場合は、ステップＳ９０４で、制御部５０２は、ジョブによる要求がデータ取得要求であるか否かを判別する。その判別の結果、要求がデータ取得要求である場合は、制御部５０２は、ステップＳ９０５で、データ取得要求対応処理（図１２で後述）を実行して図８の処理を終了させる。一方、要求がデータ取得要求でない場合は、ステップＳ９０６で、制御部５０２は、ジョブによる要求が日時補正要求であるか否かを判別する。その判別の結果、要求が日時補正要求である場合は、制御部５０２は、ステップＳ９０７で、日時補正値更新処理（図１５で後述）を実行して図８の処理を終了させる。一方、制御部５０２は、要求が日時補正要求でない場合は、図８の処理を終了させる。
【００４６】
図１０は、図９のステップＳ９０３で実行されるデータ更新要求対応処理のフローチャートである。図１０では、サーバ１２０が、データ更新要求として、ＭＦＰ１１０からアドレスデータ更新要求のジョブを受信した場合における、サーバアプリケーション５００による処理を例示する。日時につき一例を加えつつ処理を説明する。
【００４７】
まずステップＳ１００１では、制御部５０２は、更新要求元のＭＦＰ１１０に関する日時補正値（ＭＦＰ１１０ａについては「００：１０」；表１参照）をデータ管理部５１０内の管理データから取得する。ステップＳ１００２では、制御部５０２は、解析部５０３から受信した内容の日時情報（通知日時情報）として例えば「２０１５／０１／０１・１１：１０」を取得する。ステップＳ１００３では、制御部５０２は、ステップＳ１００２で取得した通知日時情報を、ステップＳ１００１で取得した日時補正値で補正することで、更新データの日時情報である補正後の時刻「２０１５／０１／０１：１１：００」を求める。これにより、データ更新要求時のＭＦＰ１１０での時刻をサーバ１２０が認識（特定）することができる。
【００４８】
ステップＳ１００４では、制御部５０２は、解析部５０３から更新対象のデータ内容を取得して、データ処理部５０４に、データ内容とステップＳ１００３で求めた補正後の時刻情報を渡す。データ処理部５０４は、更新対象のデータの最終更新日時をデータ管理部５１０から取得する。最終更新日時とは、各ＭＦＰ１１０においてデータが更新された時刻をサーバ１２０の時刻に補正した時間情報であり、各ＭＦＰ１１０からの更新要求の前後関係を判断するために利用される。ステップＳ１００５では、データ処理部５０４は、ステップＳ１００４で取得した更新対象のアドレスデータの最終更新日時と、ステップＳ１００３で求めた補正後の日時とを比較し、最終更新日時よりも補正後の日時の方が新しいか否かを判別する。その判別の結果、最終更新日時よりも補正後の日時の方が新しい場合は、処理はステップＳ１００６へ進む。
【００４９】
ステップＳ１００６では、データ処理部５０４が、更新対象のアドレスデータを要求された値で更新するようデータ管理部５１０に対して要求する。すると、データ管理部５１０は、保持している管理データに含まれるアドレスデータを更新する。また、データ処理部５０４は、更新されたアドレスデータの最終更新日時を補正後の日時に更新すると共に、データ更新日時を処理実行時のサーバ時刻（例えば「２０１５／０１／０１：１１：０１」）に更新する。データ更新日時とは、サーバ１２０のデータ管理部５１０にデータを反映させた時刻であり、各ＭＦＰ１１０がサーバ上の更新内容を取得する際に利用される時間情報である。
【００５０】
一方、ステップＳ１００５の判別の結果、最終更新日時よりも補正後の日時の方が新しくない場合は、データ処理部５０４は、ステップＳ１００７で、受信したジョブに対応する要求内容を破棄して、処理をステップＳ１００８へ進める。ステップＳ１００８では、送受信部５０１が更新完了の応答を要求元へ返信し、図１０の処理が終了する。なお、当該更新完了の応答を要求元のＭＦＰ１１０が所定時間内に受信していないと判断した場合、ＭＦＰ１１０がネットワーク１００に接続されていないとサーバ１２０は判断することができる。
【００５１】
次に図１１、１２を用いてＭＦＰ１１０が更新データの取得をサーバ１２０へ要求する際のＭＦＰ１１０内のデータ同期アプリケーション４００とサーバ１２０内のサーバアプリケーション５００の動作について説明する。
【００５２】
図１１は、ＭＦＰ１１０により実行されるデータ取得処理のフローチャートである。図１１の各ステップは、ＭＦＰ１１０内のＣＰＵ２０２がデータ同期アプリケーション４００を実行することで実現される。図１１の処理は、例えば、図６の登録要求処理の後に、ＭＦＰ１１０（例えば、ＭＦＰ１１０ｂ）において変更された設定値を他のＭＦＰ１１０（例えば、ＭＦＰ１１０ａ）が取得するための要求を行う処理である。サーバ１２０上に反映された設定値のＭＦＰ１１０への反映処理は、ＭＦＰ１１０からの変更内容の取得要求により実現される。この変更内容の取得要求は、一定間隔毎に実行されるか、あるいは、ユーザのログインをトリガにしてユーザのログイン処理と併せて実行される。
【００５３】
まず、ステップＳ１１０１では、受付部４０１は、ユーザが操作部２２０を通してＭＦＰ１１０にログインしたこと、または、前回の変更内容の取得要求から一定時間経過したこと、を元に発生するデータ取得要求を受信する。このデータ取得要求には、取得対象となるデータを示す情報と前回にサーバ１２０からデータを取得した時の最終更新日時の情報を含むものであり、制御部４０２へ通知される。ステップＳ１１０２では、制御部４０２は、通信処理部４０４へデータ取得要求を通知し、通信処理部４０４はサーバ１２０へデータ取得要求を送信する。制御部４０２は、ステップＳ１１０３で、データ取得要求の送信が成功したか否かを判別し、データ取得要求の送信が成功した場合は、サーバ１２０からの返信結果に含まれる最終更新日時を取得し、それを更新する。一方、データ取得要求の送信が失敗した場合は、制御部４０２は、図１１の処理を終了させる。
【００５４】
図１２は、図８のステップＳ９０５で実行されるデータ取得要求対応処理のフローチャートである。ステップＳ１２０１では、制御部５０２は、受信した内容を解析部５０３に渡して、データ取得の対象を特定する。ステップＳ１２０２では、制御部５０２は、解析部５０３から、取得要求に含まれていた最終データ取得日時を特定し、データ処理部５０４に、データが例えばアドレスデータであることを示す情報、及び最終データ取得日時の情報を渡す。ステップＳ１２０３では、データ処理部５０４は、データ管理部５１０に、アドレスデータのうち最終データ取得日時以降に更新されたアドレスデータが存在するか否かを判別する。データ管理部５１０は、管理しているデータ更新日時が最終データ取得日時以降であるアドレスデータを特定し、それをデータ処理部５０４へ返却することで通知する。
【００５５】
その判別の結果、最終データ取得日時以降に更新されたアドレスデータが存在する場合は、データ処理部５０４は、ステップＳ１２０４で、返却されたアドレスデータと、ステップＳ１２０３の処理実行時の日時情報とを要求元に返信する。一方、最終データ取得日時以降に更新されたアドレスデータが存在しない場合は、データ処理部５０４は、ステップＳ１２０５で、ステップＳ１２０３の処理実行時の日時情報のみを要求元に返信する。ステップＳ１２０４、Ｓ１２０５の処理後、図１２の処理は終了する。
【００５６】
ここで、図１２の処理を、表２を用いて具体例を挙げて説明する。
【表２】
0006602177.tif 000003
【００５７】
例えば、ＭＦＰ１１０ａからのデータ取得要求がなされ、最終データ取得日時として「２０１５／０１／０１・１１：００」がデータ取得要求に含まれているとする。データ管理部５１０は、この「２０１５／０１／０１・１１：００」よりも新しいデータ更新日時の情報を検索する。表２（ｃ）から、ＡｄｄｒｅｓｓＡのメールアドレスデータのデータ更新日時が「２０１５／０１／０１・１１：０１」であるので、データ取得要求に対して、このメールアドレスデータが返信される。
【００５８】
また、ステップＳ１２０３の処理実行日時が「２０１５／０１／０１・１２：１０」である場合、処理完了後のＭＦＰ１１０ａのデータ管理アプリケーション４１０が保持するメールアドレスデータは、表２（ａ）に示すものとなる。また、ＭＦＰ１１０ｂも同様のデータ取得処理を実行し、その時のステップＳ１２０３の処理実行日時が「２０１５／０１／０１・１２：１１」であるとする。この場合、ＭＦＰ１１０ｂのデータ管理アプリケーション４１０が保持するメールアドレスデータは表２（ｂ）に示すものとなる。
【００５９】
図１３（ａ）は、ＭＦＰ１１０で実行される時刻変更処理のフローチャートである。この処理は、ＭＦＰ１１０が有する時計の時間が変更（修正）された場合に実行される。図１３（ａ）の各ステップは、ＭＦＰ１１０のＲＡＭ２０３、ＨＤＤ２０５、ＲＯＭ２０６のいずれかに記憶されたデータ同期アプリケーション４００及びデータ管理アプリケーション４１０をＣＰＵ２０２が実行することで実現される。
【００６０】
まずステップＳ１３０１では、日時変更検知部４０５は、ＭＦＰ１１０の時計の時刻が変更されたことを検知し、そのことを制御部４０２に通知する。ステップＳ１３０２では、制御部４０２は、時刻変更量算出処理（図１３（ｂ）で後述）を実行し、変更量算出部４０６に時計の時間の変更前後の変化量（「時刻変更量ΔＴ」と記す）を算出させる。次にステップＳ１３０３では、ステップＳ１３０２で算出した時刻変更量ΔＴを元に時刻変更ジョブを生成し、ジョブ管理部４０３にこのジョブを登録する。時刻変更量ΔＴはジョブにジョブ情報として保持される。ステップＳ１３０４では、制御部４０２は、時刻変更ジョブ送信処理（図１４（ａ）で後述）を実行する。その詳細は後述するが、制御部４０２は、ジョブ管理部４０３からジョブを取得し、通知時刻生成部４０７によりサーバ１２０へ通知すべき通知日時情報を生成し、通信処理部４０４にジョブの送信処理を依頼する。
【００６１】
ステップＳ１３０５では、制御部４０２は、ジョブの送信に成功したか否かを判別し、ジョブの送信に失敗した場合には再度、ステップＳ１３０４からやり直す。一方、ジョブの送信に成功した場合は、ステップＳ１３０６で、制御部４０２は、差分時間更新処理（図１４（ｂ）で後述）を実行する。その後、ステップＳ１３０７では、制御部４０２は、送信したジョブに関する削除処理をジョブ管理部４０３に依頼する。これにより、送信済みのジョブが削除される。
【００６２】
図１３（ｂ）は、図１３（ａ）のステップＳ１３０２で実行される時刻変更量算出処理のフローチャートである。まず、ステップＳ１３１０では、制御部４０２は、ＲＡＭ２０３に記憶されている変更前の計時情報を取得する。変更前の計時情報の一例を表３に示す。
【表３】
0006602177.tif 000004
【００６３】
ＲＡＭ２０３には、変更前の計時情報として、ある時点における時刻カウンタと時刻情報のスナップショットの値が保持されている。時刻カウンタは、ＭＦＰ１１０の起動時に０に初期化され、ＭＦＰ１１０の電源遮断時までカウントアップされる。時刻カウンタは、計時機能を有すればよく、ＭＦＰ１１０が有する時計とは独立した計時装置でもよい。時刻情報は、ＭＦＰ１１０のデバイスが持つ時計が示す時刻である。表３に示される変更前の計時情報の値は、デバイスの起動時の値、もしくは後述するステップＳ１３１３で更新された値である。ステップＳ１３１１では、制御部４０２は、変更後の計時情報を取得し、ＲＡＭ２０３に一時的に保持する。変更後の計時情報とは、現時点における時刻カウンタの値と現時点におけるデバイスが持つ時計が示す時刻である。時刻変更がされた後に取得された時刻カウンタの値及び時刻情報のスナップショットである変更後の計時情報の一例を表４に示す。
【表４】
0006602177.tif 000005
【００６４】
ステップＳ１３１２では、制御部４０２は、ステップＳ１３１０で取得した変更前の計時情報とステップＳ１３１１で取得した変更後の計時情報とから、変更量算出部４０６に時刻変更量ΔＴを算出させる。今回の時刻変更量ΔＴは、「変更後と変更前との時刻情報のスナップショットの差分」−「変更後と変更前との時刻カウンタの値の差分」により算出される。例えば、表３及び表４を例にとると以下のように計算される。
【００６５】
時刻カウンタの差分値は４６００−１０００＝３６００秒となり、時刻カウンタが１時間進んだことがわかる。一方、時刻情報のスナップショットは９：３０−８：００＝１：３０となり、１時間３０分進んだことがわかる。そのため、１時間３０分−１時間＝３０分となり、表５に示すように、時刻変更量ΔＴとして３０分が算出される。つまり時計が３０分、進み方向へ修正されたことがわかる。
【表５】
0006602177.tif 000006
【００６６】
ステップＳ１３１３では、ステップＳ１３１１で取得した変更後の計時情報（表４）を用いて、表３に示す変更前の計時情報（表３）を更新する。これは、ステップＳ１３１１で取得した変更後の計時情報を、次回以降の時刻変更時には変更前の計時情報として利用するためである。ステップＳ１３１４では、制御部４０２は、差分時間管理部４０８に、差分時間ｄＴの更新を依頼する。これにより、差分時間管理部４０８は、現在管理されている差分時間ｄＴに、ステップＳ１３１２で算出した時刻変更量ΔＴを加算することで差分時間ｄＴを更新する。
【００６７】
ここで、通知日時情報は、ステップＳ６０６、後述するステップＳ１３２４の処理によってサーバ１２０へ通知される。差分時間ｄＴは、前述のように通知日時情報に基づき定まる値であるが、初期値は０であり、ＨＤＤ２０５等の不揮発な領域において保持され、前述のステップＳ１３１４、及び、後述するステップＳ１３３１で算出し直されて更新される。すなわち、ＭＦＰ１１０とサーバ１２０の間で正しく同期できている場合には差分時間ｄＴの値は０になる。しかしネットワーク１００に問題がある場合や、サーバ１２０が装置のメンテナンス等により停止されている間にＭＦＰ１１０の時計が変更された場合には、この値には時刻変更の度にステップＳ１３１２で算出された時刻変更量ΔＴが加算される。
【００６８】
なお、図１３（ｂ）の処理では、時刻カウンタと時刻情報のスナップショットの２つを用いて時刻変更量ΔＴを算出したが、この算出方法に限定するものではない。例えばユーザが操作部２２０から時計を変更する際に、デバイスの時計とユーザが入力した時刻との差分値を算出し、それらの値をＲＡＭ２０３やＨＤＤ２０５に保持しておき、時刻変更量ΔＴとして読み込むようにしても良い。
【００６９】
図１４（ａ）は、図１３（ａ）のステップＳ１３０４で実行される時刻変更ジョブ送信処理のフローチャートである。まず、ステップＳ１３２０で、制御部４０２は、現在のＭＦＰ１１０の時計が示すＭＦＰ第１時刻Ｔ１を取得する。ステップＳ１３２１では、制御部４０２は、ステップＳ１３１４で算出した差分時間ｄＴを差分時間管理部４０８から取得する。ステップＳ１３２２では、制御部４０２は、ステップＳ１３０２で算出された時刻変更量ΔＴを取得する。ステップＳ１３２３では、制御部４０２は、差分時間ｄＴと時刻変更量ΔＴとに基づいて、数式１により算出時刻ｃＴを算出する。この算出時刻ｃＴが、次に通知すべき通知日時情報となる。
［数１］
算出時刻ｃＴ＝ステップＳ１３２０で取得したＭＦＰ第１時刻Ｔ１−差分時間ｄＴ＋時刻変更量ΔＴ
【００７０】
次に、ステップＳ１３２４では、制御部４０２は、算出時刻ｃＴを通知日時情報として時刻変更ジョブに含め、通信処理部４０４にそのジョブの送信処理を依頼する。通信処理部４０４が時刻変更ジョブを送信することで、通知日時情報がサーバ１２０に通知される。その後、図１４（ａ）の処理は終了する。なお、ステップＳ１３２４で、ジョブの送信ができなかった場合は、そのジョブはジョブ管理部４０３が持つキューに未処理のジョブとして保持され、一定時間経過後に再度送信処理がなされる。送信順序はジョブの生成順となる。
【００７１】
図１４（ｂ）は、図１３（ａ）のステップＳ１３０６で実行される差分時間更新処理のフローチャートである。まず、ステップＳ１３３０では、制御部４０２は、ステップＳ１３１２で算出された時刻変更量ΔＴをジョブ管理部４０３から取得するか、もしくはＲＡＭ２０３に保持されているジョブ情報を読み出して時刻変更量ΔＴを取得する。ステップＳ１３３１では、制御部４０２は、差分時間管理部４０８に、差分時間ｄＴの更新を依頼する。これにより、差分時間管理部４０８は、現在管理されている差分時間ｄＴからステップＳ１３３０で取得した時刻変更量ΔＴを減算することで差分時間ｄＴを更新する。ここでいう時刻変更量ΔＴは、今回送信した時刻変更ジョブに含まれていた算出時刻ｃＴの算出に用いられた時刻変更量ΔＴである。時計の変更が１回しかされていない場合には、この時点で差分時間ｄＴは０となる。その後、図１４（ｂ）の処理は終了する。
【００７２】
図１５は、図９のステップＳ９０７で実行される日時補正値更新処理のフローチャートである。ＭＦＰ１１０からの日時補正要求をサーバ１２０のサーバアプリケーション５００が受信すると、まず、ステップＳ１５０１で、制御部５０２は、日時補正要求の受信時における日時情報であるサーバ時刻（例えば「２０１５／０１／０１・８：３０」）を特定する。ステップＳ１５０２では、制御部５０２は、解析部５０３の解析結果から、要求に含まれる通知日時情報であるジョブ送信時のＭＦＰ第１時刻Ｔ１（例えば「２０１５／０１／０１・９：３０」）を特定する。
【００７３】
ステップＳ１５０３では、制御部５０２は、ステップＳ１５０１、Ｓ１５０２でそれぞれ特定した日時情報から日時補正値を求める。具体的には、「２０１５／０１／０１・９：３０」−「２０１５／０１／０１・８：３０」から「０１：００」が日時補正値として算出される。ステップＳ１５０４で、制御部５０２は、データ処理部５０４に日時補正を依頼する。すると、データ処理部５０４は、日時補正値をステップＳ１５０３で算出した値「０１：００」に更新するようデータ管理部５１０に依頼し、データ管理部５１０が日時補正値を更新する。その後、図１５の処理は終了する。ＭＦＰ１１０ａ、ＭＦＰ１１０ｂに関して、更新処理実行後のデータ管理部５１０が管理する情報の例を表６に示す。
【表６】
0006602177.tif 000007
【００７４】
次に、表７及び表８を用いて、電源遮断等のサーバとの通信ができない状況等において、設定値の変更や複数回の時刻変更がなされた場合の処理動作、及び、通信が再開した後の動作処理の例を説明する。
【表７】
0006602177.tif 000008
【表８】
0006602177.tif 000009
【００７５】
表７は、ＭＦＰ１１０で発生したデータの同期処理に関連するイベントに関する内容と、その時点のサーバ１２０及びＭＦＰ１１０の時刻を表したものである。サーバ時刻とは、前述のように、サーバアプリケーション５００が基準としている時刻であり、ＭＦＰ時刻とはＭＦＰ１１０内の時計が示す時刻である。但し時計の変更があった時には変更後の時刻を示している。まず、表７の１行目に示す初期状態では、ＭＦＰ時刻はサーバ時刻よりも１時間進んでいることがわかる。差分時間は、サーバ１２０が記憶している日時補正値と、サーバ１２０の時計が計時する時刻とＭＦＰ１１０の時計が計時する時刻の実際の差を示す値との差分を示す。
【００７６】
まずサーバ時刻９：００には、サーバ１２０の動作停止か、サーバ１２０までの経路のネットワーク１００の問題により、ＭＦＰ１１０がサーバ１２０と通信ができない状況が発生している。従って、これ以降、サーバ復帰までは同期要求ジョブ（設定値の変更や時刻変更を含む）をサーバ１２０に送信することができないため、ジョブはジョブ管理部４０３が持つジョブのキューに未処理のジョブとして保持される。
【００７７】
次にサーバ時刻９：１０には、ＭＦＰ時刻が１０：１０の時に、ＩＤ０００１のアドレス帳のデータにおいて、名称がＡｄｄｒｅｓｓＡ、アドレスがａ＠ａに更新される。次にサーバ時刻９：２０には、ＭＦＰ１１０の時計が修正（１回目の時刻変更）され、ＭＦＰ時刻が１０：２０から１０：４０へと、２０分進められる（時刻変更量ΔＴ＝００：２０）。この時、差分時間ｄＴには２０分が加算され、差分時間ｄＴは０：２０に更新される。サーバ時刻９：３０には、ＭＦＰ１１０が再起動される。ＭＦＰ１１０が再起動されると、ＲＡＭ２０３で保持されている時刻カウンタと時刻情報のスナップショットの値（表３参照）は一旦クリアされ、再起動時に、改めてそれらの値が取得されて変更前の計時情報としてＲＡＭ２０３に記録される。
【００７８】
サーバ時刻９：４０には、ＭＦＰ時刻が１１：００の時に、ＩＤ０００２のアドレス帳のデータにおいて、名称がＡｄｄｒｅｓｓＢ、アドレスがｂ＠ｂに更新される。サーバ時刻９：５０には、ＭＦＰ１１０の時計が修正（２回目の時刻変更）され、ＭＦＰ時刻が１１：１０から１１：４０へと、３０分進められる（時刻変更量ΔＴ＝００：３０）。この時、差分時間ｄＴには３０分が加算され、差分時間ｄＴは０：５０に更新される。サーバ時刻１０：００にはサーバ１２０が復帰し、ＭＦＰ１１０とサーバ１２０との通信が再開する。
【００７９】
次に、表８で、ＭＦＰ１１０とサーバ１２０との通信が再開した後に、ＭＦＰ１１０のデータ同期アプリケーション４００で実行される処理について説明する。サーバ１２０との通信が再開されると、制御部４０２は、ジョブ管理部４０３のキューに保持されたジョブを、ジョブの投入順（生成順）に送信する。なお、実際には通信再開後には直ちにジョブが順次実行されるため、短時間でジョブが処理されるが、ここでは理解容易化のため、１０分毎に１つのジョブが送信処理されるとして説明する。
【００８０】
表８において、サーバ時刻の意味は表７におけるものと同じであり、サーバ１２０が管理する基準となる時刻である。サーバが認識（特定）するＭＦＰ時刻とは、サーバ１２０が認識するＭＦＰ１１０におけるＭＦＰ時刻であり、「サーバ時刻」＋「日時補正値」により算出される。例えば、サーバ１２０は、サーバ時刻９：００以前の段階で、ＭＦＰ時刻はサーバ時刻に対して１時間進んでいることがわかっており、新たな通知日時情報を受けるまではその認識のままである。従って、サーバ時刻１０：１０に対して１時間加算した１１：１０が、サーバ１２０が特定するＭＦＰ時刻となる。ＭＦＰ時刻（ジョブ送信時）とは、実際にジョブを送信する時点でのＭＦＰ１１０の時計が示す時刻である。表７を用いて説明した例では、サーバ時刻１０：００の時点では、ＭＦＰ１１０の時計が計時する時刻はサーバ時刻よりも１時間５０分進んでいる。ジョブ内の時刻（生成時）は、ジョブが生成・投入された時のＭＦＰ時刻である。
【００８１】
表８のサーバ時刻１０：１０には、表７のＭＦＰ時刻１０：１０（サーバ時刻９：１０）に投入（生成）された、値の変更に関するジョブが実行される。サーバ１２０は、受信したジョブ内を解析し、ジョブ内に記載されたジョブ生成時刻である１０：１０に対して、日時補正値である「１：００」を減算して９：１０を導き出す。これにより、今回のジョブが、サーバ時刻でいう９：１０に生成されたジョブであるとサーバ１２０は認識する。すなわち、ジョブが、サーバ時刻を基準としていつの時点で生成されたのかが、ジョブ生成時刻−日時補正値により導出される。今回処理したジョブは表７のＭＦＰ時刻１０：１０に投入されたジョブであるが、その時点のサーバ時刻は９：１０であったため、正しい時刻へと補正されジョブ処理が実行されることになる。
【００８２】
次にサーバ時刻１０：２０には、１回目の時刻変更のジョブが実行される。この時点で、ジョブ送信時刻はＭＦＰ時刻１２：１０（ＭＦＰ第１時刻Ｔ１）、差分時間ｄＴは「００：５０」、ジョブ内に含まれる時刻変更量ΔＴは「００：２０」である。従って制御部４０２は、数式１に従って、１２：１０−０：５０＋０：２０＝１１：４０により算出時刻ｃＴを算出し、算出時刻ｃＴ（１１：４０）を通知日時情報としてジョブに含めてサーバ１２０へ通知する。一方、サーバ１２０は、受信したジョブ内を解析し、ジョブ内に記載された通知日時情報である１１：４０と、現在のサーバ時刻である１０：２０とから、ＭＦＰ時刻がサーバ時刻に対して１：２０だけ進んでいると認識できる。そしてサーバ１２０は、この１：２０の値を、ＭＦＰ１１０に関する日時補正値としてデータ管理部５１０に保存する。日時補正値が１：００から１：２０に変更されるので、サーバ時刻１０：２０においてサーバが特定するＭＦＰ時刻は１１：２０から１１：４０に変更される。サーバ１２０の処理が正常に終了すると、ＭＦＰ１１０は、送信したジョブに含まれていた算出時刻の算出に用いられた時刻変更量ΔＴ（０：２０）を差分情報ｄＴ（０：５０）から減算して差分時間ｄＴを更新する。差分時間ｄＴは０：３０となる。
【００８３】
表８のサーバ時刻１０：３０には、表７のＭＦＰ時刻１１：００に投入（生成）された、値の変更に関するジョブが実行される。サーバ１２０は、受信したジョブ内を解析し、ジョブ内に記載されたジョブ生成時刻である１１：００に対して、日時補正値である１：２０を減算して９：４０を導き出す。これにより、今回のジョブが、サーバ時刻でいう９：４０に生成されたジョブであるとサーバ１２０は認識する。今回処理したジョブは表７のＭＦＰ時刻１１：００に投入されたジョブであるが、その時点のサーバ時刻は９：４０であったため、正しい時刻へと補正されジョブ処理が実行されることになる。
【００８４】
次にサーバ時刻１０：４０には、２回目の時刻変更のジョブが実行される。この時点で、ジョブ送信時刻はＭＦＰ時刻１２：３０（ＭＦＰ第１時刻Ｔ１）、差分時間ｄＴは「００：３０」、ジョブ内に含まれる時刻変更量ΔＴは「００：３０」である。従って制御部４０２は、数式１に従って、１２：３０−０：３０＋０：３０＝１２：３０により算出時刻ｃＴを算出し、算出時刻ｃＴ（１２：３０）を通知日時情報としてジョブに含めてサーバ１２０へ通知する。一方、サーバ１２０は、受信したジョブ内を解析し、ジョブ内に記載された通知日時情報である１２：３０と、現在のサーバ時刻である１０：４０とから、ＭＦＰ時刻がサーバ時刻に対して１：５０だけ進んでいると認識できる。そしてサーバ１２０は、この１：５０の値を、ＭＦＰ１１０に関する日時補正値としてデータ管理部５１０に保存する。日時補正値が１：２０から１：５０に変更されるので、サーバ時刻１０：４０においてサーバが特定するＭＦＰ時刻は１２：００から１２：３０に変更される。サーバ１２０の処理が正常に終了すると、ＭＦＰ１１０は、送信したジョブに含まれていた算出時刻の算出に用いられた時刻変更量ΔＴ（０：３０）を差分情報ｄＴ（０：３０）から減算して差分時間ｄＴを更新する。差分時間ｄＴは０：００となる。
【００８５】
以上に説明したように、ＭＦＰ１１０は、時刻が変更された場合には時刻変更量ΔＴをジョブ情報として保持しておき、その後、実際にジョブを送信する時点で、差分時間ｄＴと時刻変更量ΔＴとジョブ送信時刻とから、通知日時情報を算出する。サーバ１２０は、通知日時情報から、ジョブが投入されたＭＦＰ時刻を正しく認識できる。従って、ネットワーク１００の問題、ＭＦＰ１１０の電源遮断、サーバ１２０の停止等によって、ＭＦＰ１１０とサーバ１２０とが通信不能な時間帯に複数回の時刻変更や設定値の変更が実施された場合であっても、正しい時刻で設定値の同期が行える。
【００８６】
本実施の形態によれば、ＭＦＰ１１０の時計の時間が変更された場合に時刻変更量ΔＴが算出され、差分時間ｄＴと時刻変更量ΔＴとに基づいて算出された算出時刻ｃＴが通知日時情報としてサーバ１２０へ通知される。これにより、サーバ１２０と通信不能な時間帯にＭＦＰ１１０で時計の時間変更があっても、通信再開後にサーバとの時間的整合を確保することができる。
【００８７】
特に、ＭＦＰ１１０は、時刻変更ジョブの生成時に、差分時間ｄＴを、時刻変更量ΔＴの加算により更新し、ジョブの送信後には、時刻変更量ΔＴの減算により差分時間ｄＴを更新する。これにより、通信不能時間帯に複数回の時計の時間変更があっても、通信再開後にサーバとの時間的整合を確保することができる。
【００８８】
（第２の実施の形態）
第１の実施の形態では、ＭＦＰ１１０において時計が変更された場合に通知日時情報として算出時刻ｃＴをサーバ１２０に通知することで、サーバ１２０とＭＦＰ１１０との時刻の差分を管理していた。しかし、時計が変更されたタイミングで、サーバ１２０へは時刻の変化量のみを通知する構成としても、同期処理を正しく実施できる。そこで本発明の第２の実施の形態では、時計の変更時には時刻の変化量を送信する構成を採用する。従って、図１３（ａ）、（ｂ）、図１４（ａ）に代えて図１６（ａ）、（ｂ）、（ｃ）を用い、図９、図１５に代えて図１７、図１８を用いて第２の実施の形態を説明する。図１４（ｂ）は用いない。その他の構成は第１の実施の形態と同様である。ところで、第２の実施の形態では、差分時間管理部４０８を用いる必要がない。そのため、ＭＦＰ１１０の構成（図４）から差分時間管理部４０８を廃止してもよい。
【００８９】
図１６（ａ）は、ＭＦＰ１１０で実行される時刻変更処理のフローチャートである。この処理は、ＭＦＰ１１０が有する時計の時間が変更（修正）された場合に実行される。図１６（ａ）の各ステップは、ＭＦＰ１１０のＲＡＭ２０３、ＨＤＤ２０５、ＲＯＭ２０６のいずれかに記憶されたデータ同期アプリケーション４００及びデータ管理アプリケーション４１０をＣＰＵ２０２が実行することで実現される。なお、図１６（ａ）〜（ｃ）において、図１３（ａ）、（ｂ）、図１４（ａ）と同一のステップ番号が付された処理は、第１の実施の形態と同一の処理が実行されることを示している。主に、第１の実施の形態と異なる処理ステップについて説明する。
【００９０】
なお、図１６（ａ）では、図１３（ａ）に対し、ステップＳ１３０６が削除され、ステップＳ１３０２、Ｓ１３０４に代えて、ステップＳ１６０２、Ｓ１６０４が設けられている。ステップＳ１６０２では、制御部４０２は、時刻変更量算出処理（図１６（ｂ）で後述）を実行し、変更量算出部４０６に時計の時間の変更前後の変化量（時刻変更量ΔＴ）を算出させる。次にステップＳ１６０４では、制御部４０２は、時刻変更ジョブ送信処理（図１６（ｃ）で後述）を実行する。
【００９１】
図１６（ｂ）は、図１６（ａ）のステップＳ１６０２で実行される時刻変更量算出処理のフローチャートである。なお、図１６（ｂ）では、図１３（ｂ）からステップＳ１３１４が削除され、その他は同様である。図１６（ｃ）は、図１６（ａ）のステップＳ１６０４で実行される時刻変更ジョブ送信処理のフローチャートである。図１６（ｃ）では、図１４（ａ）からステップＳ１３２０、Ｓ１３２１が削除され、ステップＳ１３２３、Ｓ１３２４に代えてステップＳ１６２３、Ｓ１６２４が設けられている。
【００９２】
ステップＳ１６２３では、制御部４０２は、ステップＳ１３２２で取得した時刻変更量ΔＴをそのまま「通知日時情報」として通知時刻生成部４０７に設定する。ステップＳ１６２４では、制御部４０２は、時刻変更量ΔＴを通知日時情報として時刻変更ジョブに含め、通信処理部４０４にそのジョブの送信処理を依頼する。通信処理部４０４が時刻変更ジョブを送信することで、時刻変更量ΔＴがサーバ１２０に通知される。その後、図１６（ｃ）の処理は終了する。なお、ステップＳ１６２４で、ジョブの送信ができなかった場合は、そのジョブはジョブ管理部４０３が持つキューに未処理のジョブとして保持され、一定時間経過後に再度送信処理がなされる。送信順序はジョブの生成順となる。
【００９３】
図１７は、サーバ１２０で実行される要求受信処理のフローチャートである。この処理は、ＭＦＰ１１０から、データ更新要求、データ取得要求、または日時補正要求の同期ジョブをサーバ１２０が受信した場合に開始される。この処理は、ＣＰＵ３０１が、サーバアプリケーション５００を実行することで実現される。以下の説明では、ＣＰＵ３０１が実行するサーバアプリケーション５００の各モジュールを、処理主体として説明する。なお、図１７では、図９に対して、ステップＳ９０８に代えてステップＳ１７０７が設けられている。その他のステップの処理は第１の実施の形態と同様である。
【００９４】
なお、図１７、図１８において、図９、図１５と同一のステップ番号が付された処理は、第１の実施の形態と同一の処理が実行されることを示している。主に、第１の実施の形態と異なる処理ステップについて説明する。ステップＳ１７０７では、日時補正値更新処理（図１８で後述）を実行して図１７の処理を終了させる。
【００９５】
図１８は、図１７のステップＳ１７０７で実行される日時補正値更新処理のフローチャートである。なお、図１８では、図１５に対して、ステップＳ１５０２、Ｓ１５０３に代えてステップＳ１８０２、Ｓ１８０３が設けられている。
【００９６】
ステップＳ１８０２では、制御部５０２は、解析部５０３の解析結果から、要求に含まれる通知日時情報である時刻変更量ΔＴ（例えば「０１：００」）を特定する。ここで、「０１：００」は、符号が＋であるので、ＭＦＰ１１０の実際の時刻を特定するには、現在、サーバ１２０がデータ管理部５１０内で管理しているＭＦＰ１１０に関する日時補正値に対して１時間を加算する必要がある。
【００９７】
ステップＳ１８０３では、データ処理部５０４は、データ管理部５１０から、現在の日時補正値を取得し、この日時補正値に、ステップＳ１８０２で特定した時刻変更量ΔＴである「０１：００」を加算して新たな日時補正値を算出する。ステップＳ１５０４では、制御部５０２は、データ処理部５０４に日時補正を依頼する。すると、データ処理部５０４は、現在の日時補正値を、ステップＳ１８０３で新たに算出した日時補正値に更新するようデータ管理部５１０に依頼し、データ管理部５１０が日時補正値を更新する。その後、図１８の処理は終了する。ＭＦＰ１１０ａ、ＭＦＰ１１０ｂに関して、データ管理部５１０が管理する情報は、図１８の処理が、ＭＦＰ１１０ａに関するものであるとした場合、更新処理実行前に表６に示すものであったものが、更新処理実行後には表９に示すものへと更新される。
【表９】
0006602177.tif 000010
【００９８】
以上のように、ＭＦＰ１１０は、時計の時刻が変更された場合に、通知日時情報として時刻変更量ΔＴをジョブ情報として記憶しておき、サーバ１２０に対して、時刻変更量ΔＴを通知する。サーバ１２０は、データ管理部５１０により管理される日時補正値に時刻変更量ΔＴを直接加算して更新することで、日時補正値とサーバ時刻とから、ジョブが投入されたＭＦＰ時刻を正しく認識できる。よって、サーバ１２０と通信不能な時間帯にＭＦＰ１１０で複数回の時計の時間変更があっても、通信再開後にサーバとの時間的整合を確保することに関し、第１の実施の形態と同様の効果を奏することができる。
【００９９】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１００】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【符号の説明】
【０１０１】
４００  データ同期アプリケーション
４０２  制御部
４０４  通信処理部
４０６  変更量算出部
４０８  差分時間管理部
【図１】
0006602177.tif 000011
【図２】
0006602177.tif 000012
【図３】
0006602177.tif 000013
【図４】
0006602177.tif 000014
【図５】
0006602177.tif 000015
【図６】
0006602177.tif 000016
【図７】
0006602177.tif 000017
【図８】
0006602177.tif 000018
【図９】
0006602177.tif 000019
【図１０】
0006602177.tif 000020
【図１１】
0006602177.tif 000021
【図１２】
0006602177.tif 000022
【図１３】
0006602177.tif 000023
【図１４】
0006602177.tif 000024
【図１５】
0006602177.tif 000025
【図１６】
0006602177.tif 000026
【図１７】
0006602177.tif 000027
【図１８】
0006602177.tif 000028