(57)【要約】【課題】データのレプリケーションに関し、データが衝突した場合の処理負荷を軽減する。【解決手段】無線または有線（ネットワーク６）により接続される接続先装置（情報処理端末４−１、４−２、４−３）が保存するデータと同期を行う。通信手段（通信部８）は接続先装置からデータを取得する。データは識別情報によって識別され、記憶手段（メモリ１０）に格納される。そして、処理手段（プロセッサ１２）は、接続先装置から取得したデータの識別情報が記憶手段にあるデータの識別情報と一致すれば、いずれか一方の識別情報をユニークな識別情報に変更し、これら識別情報とともに各データを記憶手段に格納する。【選択図】図１
2013088855.tif 000002
【特許請求の範囲】
【請求項１】
無線または有線により接続される接続先装置が保存するデータと同期を行う情報処理装置であって、
前記接続先装置からデータを取得する通信手段と、
データを格納する記憶手段と、
前記接続先装置から取得したデータの識別情報と前記記憶手段にあるデータの識別情報とを比較し、各識別情報が一致すれば、いずれか一方の識別情報をユニークな識別情報に変更し、これら識別情報とともに各データを前記記憶手段に格納する処理手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記識別情報はデータ更新時刻であり、前記ユニークな識別情報は前記データ更新時刻と異なる時刻情報であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理手段は、前記接続先装置が前記記憶手段に無いデータを保持している場合には該データを前記記憶手段にある前記データに複写し、同一の更新時刻からなる識別情報を持つデータを複写する場合には該更新時刻を変更することによりユニークな識別情報として前記接続先装置との間で各データを整合させることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記記憶手段は、前記データを格納するデータテーブルと、前記接続先装置との同期情報を格納する同期管理テーブルとを備えることを特徴とする請求項１、２または３のいずれかに記載の情報処理装置。
【請求項５】
無線または有線により接続される接続先装置が保存するデータと同期を行う情報処理装置に実行させる同期制御プログラムであって、
前記接続先装置から取得したデータの識別情報と記憶手段にあるデータの識別情報とを比較し、
各識別情報が一致すれば、いずれか一方の識別情報をユニークな識別情報に変更し、これら識別情報とともに各データを前記記憶手段に格納し、
処理を前記情報処理装置に実行させる同期制御プログラム。
【請求項６】
接続先装置が保存するデータと同期を行う同期制御方法であって、
前記接続先装置から取得したデータの識別情報と記憶手段にあるデータの識別情報とを比較し、
各識別情報が一致すれば、いずれか一方の識別情報をユニークな識別情報に変更し、これら識別情報とともに各データを前記記憶手段に格納する、
ことを特徴とする同期制御方法。
【請求項７】
無線または有線により接続される接続先装置が保存するデータと同期を行う同期制御システムであって、
前記接続先装置からデータを取得する通信手段と、
データを格納する記憶手段と、
前記接続先装置から取得したデータの識別情報と前記記憶手段にあるデータの識別情報とを比較し、各識別情報が一致すれば、いずれか一方の識別情報をユニークな識別情報に変更し、これら識別情報とともに各データを前記記憶手段に格納する処理手段と、
を備えることを特徴とする同期制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的Ｗｅｂ（World Wide Web）ページの分散実行など、接続を契機に接続先装置との間で保存データを同期化する情報処理装置、その同期制御プログラム、その同期制御方法および同期制御システムに関する。
【背景技術】
【０００２】
パーソナルコンピュータ（ＰＣ）、スマートフォン、タブレット端末、携帯電話端末などの情報処理装置が普及している。これらの情報処理装置と接続先装置との間でデータ複写をする同期制御システムでは接続を契機に同期化を実行し、各装置で個別に保有しているデータ複写（レプリケーション）を実行する。携帯端末などの小型の情報処理装置のデータ複写では、処理時間やフィールドの軽減よりもデータの整合性や出力結果を優先させている。
【０００３】
このような同期化処理に関し、特許文献１には、データを複写した装置の識別子を有し、接続先装置が自装置以外の他装置に関する最新のデータを保持している場合には、そのデータで自装置側のデータを複写するピアツーピアの処理が記載されている。
【０００４】
データの整合性に関し、特許文献２には、時刻情報をＩＤ（IDentification）に用いてデータの整合性を確保することが記載されている。このデータ間の整合性確保に関し、特許文献３では、データの競合を解決する際に指定する識別子を有することにより、複数データベース間の整合性を確保することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２９３５６０号公報
【特許文献２】特開２００５−０７７３６６号公報
【特許文献３】特開２００２−１５７１５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、家族間や友人間（情報の共有者・利用者）で情報を共有し、その保有データを複写する場合がある。斯かるシチュエーションでは、保存データの並び順序や重複データの存在よりも、各保存データの処理負荷の軽減が重要である。つまり、データが内容的に一致し、データ間の衝突があっても、データの更新日時が異なれば、各データを保存することが有用である。内容的に一致していても、そのデータを消去してしまうと、データの推移を残留データからは確認や判断をすることができない。また、複数の利用者がデータ更新を行う場合では、一の利用者がデータを取得してから更新するまでの間に行われたデータ更新が消去されることになる。データ間の衝突を回避するためにデータの内容の一致、不一致を判断すれば、その処理負荷が大きくなるという課題がある。
【０００７】
そこで、本発明の目的は、斯かる課題に鑑み、データのレプリケーションに関し、データが衝突した場合の処理負荷を軽減することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本開示の情報処理装置、その同期制御プログラム、その同期制御方法および同期制御システムは、無線または有線により接続される接続先装置が保存するデータと同期を行う。通信手段は接続先装置からデータを取得する。データは識別情報によって識別され、記憶手段に格納される。そして、処理手段は、接続先装置から取得したデータの識別情報が記憶手段にあるデータの識別情報と一致すれば、いずれか一方の識別情報をユニークな識別情報に変更し、これら識別情報とともに各データを記憶手段に格納する。
【発明の効果】
【０００９】
本開示の情報処理装置、その同期制御プログラム、その同期制御方法または同期制御システムによれば、次のいずれかの効果が得られる。
【００１０】
(1) 同期した際に、接続先装置のデータと保存データの識別情報が一致すれば、いずれか一方の識別情報をユニークな識別情報に変更するので、該識別情報とともに各データを複写して保存できる。
【００１１】
(2) 一致した識別情報をユニークな識別情報に変更して各データを保存すれば、データの識別フィールドが不要であるので、データ量を削減できる。
【００１２】
(3) 識別情報が衝突したデータ識別のための処理や処理時間が不要であり、データの処理時間を短縮できる。
【００１３】
(4) 情報処理装置が携帯装置のようにストレージ容量が小さい場合や、プロセッサ能力が低い場合であっても、効率よくデータ複写をすることができる。
【００１４】
そして、本発明の他の目的、特徴及び利点は、添付図面及び各実施の形態を参照することにより、一層明確になるであろう。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係る同期制御システムの一例を示す図である。
【図２】同期制御の処理手順の一例を示すフローチャートである。
【図３】第２の実施の形態に係る同期制御システムの一例を示す図である。
【図４】Ｗｅｂページ利用時のシステム構成を示す図である。
【図５】動的Ｗｅｂページの構成を示す図である。
【図６】動的Ｗｅｂページの構成とレプリケーションを示す図である。
【図７】ホスト間のレプリケーション１を示す図である。
【図８】ホスト間のレプリケーション２を示す図である。
【図９】ホスト装置の構成例を示す図である。
【図１０】同期制御のソフトウェアおよび機能の構成を示す図である。
【図１１】情報処理端末のハードウェアの一例を示す図である。
【図１２】レプリケーションの処理手順を示すフローチャートである。
【図１３】レプリケーションの開始を示す図である。
【図１４】レプリケーションのテーブル取得を示す図である。
【図１５】レプリケーションのレコード送信を示す図である。
【図１６】レプリケーションのレコード受信を示す図である。
【図１７】レプリケーションの終了を示す図である。
【図１８】レコードの構成と同期による変化例１を示す図である。
【図１９】レコードの構成と同期による変化例２を示す図である。
【図２０】レコードの構成と同期による変化例２の続き部分を示す図である。
【図２１】レコードの構成と同期による変化例２の続き部分を示す図である。
【図２２】同期管理テーブルを用いない場合のレコードの構成と同期による変化例を示す図である。
【図２３】ホスト１・２間のレプリケーションによる同期前後および出力を示す図である。
【図２４】従来のレプリケーションを示す図である。
【図２５】データの記憶容量を示す図である。
【図２６】ホストのデータベースおよび同期管理テーブルの構成例を示す図である。
【図２７】アプリケーションのテーブルの構成例を示す図である。
【図２８】テーブル１および同期管理テーブルの構成例を示す図である。
【図２９】テーブル１のレコードにおけるコラムの構成例を示す図である。
【図３０】レプリケータ・サービスの処理手順を示すフローチャートである。
【図３１】レプリケータ・サービスの例外処理の処理手順を示すフローチャートである。
【図３２】全レプリケーション（Ｓ２０２：図３０）のサブルーチンの処理手順を示すフローチャートである。
【図３３】ＩＦレプリケーション（Ｓ２２３：図３２）のサブルーチンの処理手順を示すフローチャートである。
【図３４】ネットワーク検出サービスの処理手順を示すフローチャートである。
【図３５】ネットワーク検出サービスの例外処理の処理手順を示すフローチャートである。
【図３６】レプリケータ・ホスト検出サービスの処理手順を示すフローチャートである。
【図３７】情報処理端末・ＰＣ間で実行されるレプリケーションのシーケンスを示す図である。
【図３８】同期対象の決定処理の処理手順を示すフローチャートである。
【図３９】同期対象決定の動作例を示す図である。
【図４０】図３７中のｌｏｏｐ１の処理手順を示すフローチャートである。
【図４１】図３７中のｌｏｏｐ２の処理手順を示すフローチャートである。
【図４２】データベース更新とデータ衝突の回避処理の処理手順を示すフローチャートである。
【図４３】ホスト１の具体的なレプリケーションの処理手順を示すフローチャートおよびデータベースのテーブル変化を示す図である。
【図４４】ホスト１の具体的なレプリケーションの処理手順を示すフローチャートおよびデータベースのテーブル変化を示す図である。
【図４５】ホスト１の具体的なレプリケーションの処理手順を示すフローチャートおよびデータベースのテーブル変化を示す図である。
【図４６】ホスト１の具体的なレプリケーションの処理手順を示すフローチャートおよびデータベースのテーブル変化を示す図である。
【図４７】ネットワーク・インタフェースのリスト、ネットワーク・インタフェースの構成を示す図である。
【図４８】ＬＡＮの接続状態を示す一時記憶ｎｉのデータ構造を示す図である。
【図４９】一時記憶ｓｖ（図３３）の構成例、ネットワーク・インタフェースの構成を示す図である。
【図５０】ＬＡＮ接続を表す一時記憶ｓｖのデータ構造を示す図である。
【図５１】一時記憶ｄｉｆ（図３４）の構成例およびネットワーク構成の変化を示す図である。
【図５２】一時記憶ｎｉｂａｋ（図３４）、ｎｉ、ｄｉｆ（図３４）の各内容を示す図である。
【図５３】一時記憶ｄｓｃｖｒ（図３６）のデータ構造およびＬＡＮ接続の構成を示す図である。
【図５４】一時記憶ｃｕｒ（図３８）の構成および複写動作を示す図である。
【図５５】一時記憶ｉｔｂｌ（図３８）の構成および内容を示す図である。
【図５６】一時記憶ｉｍｐ（図３８）の構成および複写動作を示す図である。
【図５７】一時記憶ｄｂｌ（図４０）の構成、データベースの構成、一時記憶ｄｂｌのデータ構造を示す図である。
【図５８】一次記憶ｔｂｌ（図４０）およびホストの構成例を示す図である。
【図５９】一次記憶ｔｂｌの初期化および内容を示す図である。
【図６０】一次記憶ｒｃｌ（図４０）の構成およびレコードの構成を示す図である。
【図６１】一次記憶ｔｂｌおよび一時記憶ｒｃｌの内容を示す図である。
【図６２】一時記憶ｉｄｂｌ（図４１）の構成、ホストのデータベースの構成、一時記憶ｉｄｂｌの内容を示す図である。
【図６３】一時記憶ｉｔｂｌ２（図４１）の構成およびホストのデータベースの構成を示す図である。
【図６４】一時記憶ｉｔｂｌ２の初期化および内容を示す図である。および内容を示す図である。
【図６５】一時記憶ｉｒｃｌ（図４１）の構成およびレコード構成を示す図である。
【図６６】一時記憶ｉｔｂｌ２および一時記憶ｉｒｃｌの内容を示す図である。
【図６７】インタフェース別登録ホストの構成例、そのレコードの構成例および内容を示す図である。
【図６８】ＵＵＩＤ・内部コード変換方式の構成を示す図である。
【図６９】複数の情報処理端末間のメッセージデータの送受信に用いた同期制御システムを示す図である。
【発明を実施するための形態】
【００１６】
〔第１の実施の形態〕
【００１７】
図１は第１の実施の形態に係る同期制御システムを示している。図１に示す構成は一例であり、係る構成に本開示の情報処理装置、その同期制御プログラム、その同期制御方法または同期制御システムが限定されるものではない。
【００１８】
図１に示す同期制御システム２は、本開示の情報処理装置、その同期制御プログラム、その同期制御方法または同期制御システムの一例であり、情報処理端末４−１と、接続先装置として情報処理端末４−２を備えている。これら情報処理端末４−１、４−２はネットワーク６により接続されている。
【００１９】
情報処理端末４−１、４−２は本開示の情報処理装置の一例であり、ネットワーク６により接続され、同期処理により各自の保持データを複写する。ネットワーク６は、情報処理端末４−１、４−２間を接続するネットワークであり、インターネット（Internet）でもよいし、イントラネット（Intranet）やＬＡＮ（Local Area Network ）でもよい。通信媒体は無線でもよいし有線でもよい。
【００２０】
この情報処理端末４−１は、通信部８、メモリ１０およびプロセッサ１２を備えている。通信部８は通信手段の一例であり、接続により情報処理端末４−２からデータを取得する。メモリ１０は、データを格納する記憶手段の一例であり、例えば、データの更新時刻を識別情報に用いて複数のデータを保存する。
【００２１】
プロセッサ１２はデータを処理する処理手段の一例であり、少なくともデータ複写機能、データ衝突回避機能を備えている。データ複写機能は、情報処理端末４−２との接続を契機に、同期処理を媒介としてメモリ１０に保存中のデータを複写する機能である。つまり、既述のデータのレプリケーション機能である。データ衝突回避機能は、このレプリケーションに際し、データ間の衝突を回避する。情報処理端末４−２がメモリ１０に無いデータを保持している場合には、該データでメモリ１０にあるデータを更新する。データの識別情報に更新時刻を用いた場合には、同一の更新時刻からなる識別情報を持つデータが更新されれば、該更新時刻を変更することによりユニークな識別情報として情報処理端末４−２との間でデータの整合性を確立する。この結果、データ間の衝突が回避される。
【００２２】
情報処理端末４−１に対する接続先装置である情報処理端末４−２は本開示の情報処理装置の一例であり、既述の情報処理端末４−１と有線または無線により接続される単一または複数の通信先のひとつである。この情報処理端末４−２の構成は情報処理端末４−１と同一でもよく異なってもよい。
【００２３】
図２は情報処理端末４で実行する同期制御の処理手順の一例を示している。
【００２４】
この処理手順は、本開示の同期制御プログラムの一例である。この処理手順では、接続先装置（情報処理端末４−２）との通信を確立させ（Ｓ１１）、データの更新処理に移行する。通信の確立はデータの更新処理の契機であり、通信は無線または有線により情報処理端末４−２と接続により実行される。
【００２５】
通信の確立の後、接続先装置（情報処理端末４−２）から提供されるデータと保存中のデータの識別情報の比較を行う（Ｓ１２）。この識別情報の比較では、提供されるデータと保存中のデータの識別情報が一致しているか否かを判定する（Ｓ１３）。つまり、情報処理端末４−１は取得したデータの識別情報とメモリ１０にあるデータの識別情報とが一致しているか否かを判定する。
【００２６】
識別情報が一致していれば（Ｓ１３のＹＥＳ）、データ間で識別情報が衝突している。このため、衝突回避処理として識別情報の変更を行ない（Ｓ１４）、識別情報の衝突回避をする。つまり、この衝突回避処理では、識別情報が一致すれば、何れか一方の識別情報を変更し、ユニークな識別情報に更新する。例えば、識別情報にデータ更新時刻を用いている場合には、この更新時刻をインクリメントまたはディクリメントすることにより、ユニークな識別情報に変更する。具体的には識別情報を構成する更新時刻に更新時間単位として例えば、１〔秒〕を追加して変更すれば、識別情報がユニークな識別情報に更新されることになる。
【００２７】
この衝突回避処理の実行の後、データの複写（レプリケーション）を実行する（Ｓ１５）。ユニークな識別情報とともに各データをメモリ１０に格納し、この処理を終了する。
【００２８】
Ｓ１３において、識別情報が一致していなければ（Ｓ１３のＮＯ）、データ間の衝突がないので、識別情報の衝突回避処理は不要であるから、識別情報の変更（Ｓ１４）を行うことなく、データの複写（Ｓ１５）を実行する。
【００２９】
斯かる構成によれば、データのレプリケーションに際し、識別情報が一致したデータが存在していれば、いずれか一方のデータの識別情報をユニークな識別情報に変更し、これら識別情報とともに各データをメモリ１０に格納することができる。
【００３０】
〔第１の実施の形態の効果〕
【００３１】
(1) データ複写（レプリケーション）の際に、データの識別情報に衝突（一致）がある場合、接続先装置から提供されるデータまたは自機側の情報処理端末４−１の保存データのいずれか一方の識別情報を変更するので、識別情報の衝突を回避できる。
【００３２】
(2) 変更した識別情報により各データを複写して保存できる。
【００３３】
(3) 識別情報を変更するので、データの識別フィールドをプラスする必要がなく、データ量を削減でき、データ複写の処理の簡略化とともに、処理時間を短縮できる。
【００３４】
(4) 情報処理端末４−１が携帯型機器のようにストレージ容量が小さく、かつ、プロセッサ能力の小さな機器でも効率よくデータ複写をすることができる。
【００３５】
〔第２の実施の形態〕
【００３６】
図３は第２の実施の形態に係る同期制御システムを示している。図３に示す構成は一例であり、本開示の情報処理装置、その同期制御プログラム、同期制御方法および同期制御システムに限定されるものではない。
【００３７】
図３に示す同期制御システム２は、屋内システムであり、家屋１４の内部（屋内）に設置されている。ルータ１６はスイッチ１８を介してインターネット２０に接続されている。このルータ１６はインターネット２０と接続するための中継装置の一例である。このルータ１６には屋内に配置された有線ＬＡＮ（Local Area Network ）２２が接続されている。この有線ＬＡＮ２２は既述のネットワーク６（図１）の一例である。この有線ＬＡＮ２２にはＷｉ−Ｆｉ（Wireless Fidelity ）アクセスポイント（ＡＰ）２４、デスクトップＰＣ（パーソナルコンピュータ）２６およびテレビ受像機２８が接続されている。Ｗｉ−ＦｉＡＰ２４は無線でルータ１６にオンライン接続するための中継装置の一例である。
【００３８】
Ｗｉ−ＦｉＡＰ２４には無線により接続される無線ＬＡＮ（Local Area Network ）３０が構成されている。この無線ＬＡＮ３０はたとえば、Ｗｉ−Ｆｉネットワークである。この無線ＬＡＮ３０は既述のネットワーク６（図１）の一例である。この無線ＬＡＮ３０には無線接続される機器の一例として複数の情報処理端末４−１、４−２、４−３が設けられている。この実施の形態では、情報処理端末４−１はノートＰＣ、情報処理端末４−２はスマートフォン、情報処理端末４−３はタブレット端末である。図中破線はオンライン状態を示している。
【００３９】
情報処理端末４−１、４−２、４−３は携帯機器であり、携行する利用者により、無線ＬＡＮ３０とオンラインまたはオフラインとなる。つまり、無線ＬＡＮ３０のサービスエリア内の屋内使用時にオンラインとなり、サービスエリア外の屋外使用時にオフラインとなる。
【００４０】
この実施の形態では、無線ＬＡＮ３０を備えているので、各情報処理端末４−１、４−２、４−３は屋内使用時にオンラインとなっている。これに対し、オフライン利用を前提とした構成であってもよい。その場合、各情報処理端末４−１、４−２、４−３が個別にインターネット２０に接続し、インターネット２０とのオンラインでＷｅｂページの利用ができる。この場合も、各情報処理端末４−１、４−２、４−３間で同期、データの共用を実現できる。
【００４１】
図４はＷｅｂページ利用時の一般的なシステム構成を示している。このシステム構成は本開示の構成と比較のために例示したものである。
【００４２】
屋内使用で情報処理端末間のデータやサービスの同期または共用する利用形態がある。これに対し、この実施の形態では、クラウドサービスなど、インターネット側でのサービスを利用していない。つまり、屋内システムの閉じられたサービスとして、動的Ｗｅｂページの同期、共用を実現している。動的Ｗｅｂページは、静的なファイル、プログラムおよびデータベースで構成される。静的なファイルにはたとえば、ＨＴＭＬ（Hyper Text Markup Language）ファイルや、ＣＳＳ（Cascading Style Sheets）ファイルが用いられる。プログラムにはＪａｖａ（登録商標）や、Ｐｅｒｌ（Practical Extraction and Report Language：テキスト処理言語）などのプログラム言語が用いられる。
【００４３】
Ｗｅｂサーバ３９はインターネット２０上に開設され、インターネット２０上のクライアントに対してＷｅｂページなどのサービスを提供する。このＷｅｂサーバ３９には複数のクライアント装置（クライアント１）４２−１、クライアント装置（クライアント２）４２−２、クライアント装置（クライアント３）４２−３・・・が接続される。クライアント装置４２−１、４２−２、４２−３・・・は情報処理装置の一例であり、通信や情報処理の機能を備えている。各クライアント装置４２−１、４２−２、４２−３・・・はインターネット２０を通じてＷｅｂサーバ３９に対してアクセスし、Ｗｅｂサーバ３９に開設されている動的Ｗｅｂページ４４（図５）を利用する。
【００４４】
動的Ｗｅｂページ４４はたとえば、図５に示すように、Ｗｅｂサーバシステム４６で構成されている。図５は動的Ｗｅｂページ４４およびＷｅｂサーバシステム４６の一例を示している。
【００４５】
Ｗｅｂサーバシステム４６は、Ｗｅｂサーバ３９、プログラム実行環境４８、データベースエンジン５０および動的Ｗｅｂページ４４で構成される。プログラム実行環境４８はプログラムを実行可能な処理環境を提供する。データベースエンジン５０はデータベース管理システムやデータベースソフトに用いられ、データベース運用の中核プログラムであり、システムの管理・運用や、検索・更新・訂正などの処理を実行する。
【００４６】
この動的Ｗｅｂページ４４には、静的なファイル５２、プログラムファイル５４およびデータベース５６が設置される。これら静的なファイル５２、プログラムファイル５４およびデータベース５６のレプリケーションでは、静的なファイル５２やプログラムファイル５４が比較的容易であり、データベース５６は難しい。複数のマスターが存在するシステムではレプリケーションは可能であるが、その自動化は極めて難しい。
【００４７】
図６は動的Ｗｅｂページの構成と、そのレプリケーションを示している。図６において、Ｗｅｂサーバシステム４６の構成は既述のとおりであるので、同一符号を付し、その説明を割愛する。
【００４８】
これに対し、クライアント装置（クライアント１）４２−１ではＷｅｂサーバ５８および静的なファイル６０を備えている。また、クライアント装置（クライアント２）４２−２では、Ｗｅｂサーバ５８および静的なファイル６０に加え、プログラム実行環境６２やプログラムファイル６４を備えている。
【００４９】
この場合、クライアント１では静的なファイル５２と静的なファイル６０のレプリケーションのみのレプリケーションが可能である。これに対し、プログラム実行環境６２が搭載されたクライアント２では、静的なファイル５２と静的なファイル６０のレプリケーションに加え、プログラムファイル５４とプログラムファイル６４のレプリケーションが可能である。クライアント２のようにプログラム実行環境６２を搭載すれば、クライアント１においてもプログラムファイルのレプリケーションが可能となる。つまり、図３に示す同期制御システム２において、スマートフォン３４、ノートＰＣ３６、タブレット端末３８などの複数の情報処理端末でそれぞれのデータベースを更新する場合には、データベース管理上は複数のマスター更新が行える構成となる。
【００５０】
このため、複数の情報処理端末４−１、４−２、４−３がデータベース５６の更新作業を独立して行うと、各データベース５６のレプリケーション時に、レコードの衝突が生じる。各情報処理端末４−１、４−２、４−３が異なるレコードを更新した場合には、レコードが衝突する問題はないが、同じレコードを更新した場合には、いずれのレコードの更新を有効とするか、または、更新処理そのものをエラーとすべきかの問題が生じる。このレコード更新について、レプリケーション例１（図７）およびレプリケーション例２（図８）を参照する。
【００５１】
図７に示すレプリケーション例１は、複数のマスターがあるデータベースのレプリケーションを示している。ホスト装置（ホスト１）４０−１、ホスト装置（ホスト２）４０−２は、既述の情報処理端末４−１、４−２、４−３の何れでもよく、ネットワーク６（図１）で接続されて同期処理を行う関係にある。
【００５２】
ホスト１およびホスト２にはそれぞれが複数のマスターがあるデータベース６６−１、６６−２が備えられている。各データベース６６−１、６６−２のレコードが個別に独立して更新されている。更新されたレコードが異なっていれば、レコードのレプリケーションを行っても、互いにレコードが複写され、レプリケーションに成功する。つまり、各レコードが複写されて各データベース６６−１、６６−２に保存されることになる。
【００５３】
これに対し、図８に示すレプリケーション例２では、各データベース６６−１、６６−２のレコードが個別に独立して更新されているが、更新されたレコードが同一である場合を示している。レコードが同一である場合、各レコードの更新を独自に行っても、レプリケーションを行うと、ホスト１、２間で一方のレコードに修正され、双方のレコードを保存することができない。つまり、レコードのレプリケーションが失敗となる。
【００５４】
このようなレプリケーションの失敗を回避するため、図９に示すホスト装置４０では、レコードの衝突を回避するレプリケータ機能を備えている。このホスト装置４０はたとえば、情報処理端末４−１、４−２、４−３、デスクトップＰＣ２６（図３）で構成される。
【００５５】
このホスト装置４０は、図９に示すように、データベース６６、データベースエンジン６８、レプリケータ７０および同期管理テーブル７２を備える。データベースエンジン６８は、プログラムによるデータ管理、処理などを決定するシステムである。レプリケータ７０はデータベースエンジン６８の複数のマスターのレプリケータ機能（図１０のＢ）を構成する。このレプリケータ７０のレプリケータ機能はレコードの衝突を回避し、レコードのレプリケーションを実行する。
【００５６】
データベース６６にはレコード７３を格納するテーブル７４が設けられ、このテーブル７４とともにｍｉｄフィールド７６が設けられている。ｍｉｄはレプリケーションマスタ識別子である。ｍｉｄフィールド７６は、ｍｉｄを記録するエリアである。同期管理テーブル７２には既述のｍｉｄおよび最終同期日時を記録するテーブル７７が設けられ、このテーブル７７にはｍｉｄを格納するフィールド７８、最終同期日時を格納するフィールド８０が設定されている。
【００５７】
このホスト装置４０のソフトウェアおよび機能について、図１０を参照する。図１０のＡに示すホスト装置４０のソフトウェアの構成では、ＯＳ（Operating System）７９をベースとして実行するデータベースエンジン６８、レプリケータ７０、Ｗｅｂサーバ５８およびＷｅｂブラウザ８２を備えている。Ｗｅｂサーバ５８は、Ｗｅｂページの検索・取得などの処理を行うプログラムである。Ｗｅｂブラウザ８２はＷｅｂページを閲覧するためのソフトウェアである。
【００５８】
レプリケータ７０には、図１０のＢに示すように、レプリケータ機能として、ネットワーク接続検出機能８４、デバイス検出機能８６、タイマー機能８８、同期実行処理機能９０、同期応答処理機能９２、同期管理機能９３および同期処理用データベース９５を備えている。ネットワーク接続検出機能８４はネットワークとの接続を検出する。デバイス検出機能８６は接続されたデバイスを検出し、そのデバイスを認識する。タイマー機能８８はレコードの更新日時など、時間を計時する。同期実行処理機能９０は接続先装置９４のデバイスと同期処理を実行する。同期応答処理機能９２は、同期処理を実行している接続先装置９４のデバイスに対し、応答処理を実行する。同期管理機能９３は同期処理の実行や応答を管理する。また、同期処理用データベース９５は同期処理に用いる各種データをデータベースによって保存する。
【００５９】
このレプリケータ７０がレプリケーションを開始する契機は次の通りである。
【００６０】
(1) 自デバイスが起動したときにネットワーク接続が確立した場合
【００６１】
(2) 自デバイスがスリープから復帰したときにネットワーク接続が確立した場合
【００６２】
(3) 新しくネットワーク接続が確立した場合
【００６３】
(4) ネットワーク接続している間に、新しいデバイスを発見した場合
【００６４】
(5) ネットワーク接続している間に、一定時間が経過した場合
【００６５】
このような契機の何れかにより、レプリケータ７０がレプリケーションを開始し、実行する。
【００６６】
このようなレプリケーション機能などの各種の情報処理を実行するホスト装置４０を構成する情報処理端末４には図１１に示すハードウェアを備えている。
【００６７】
図１１に示すハードウェア構成では、プロセッサ９６、通信部９８、記憶部１００およびＲＡＭ（Random-Access Memory）１０２を備えるコンピュータを構成している。プロセッサ９６は記憶部１００のプログラム記憶部１０４にある既述のＯＳ７９やレプリケータ７０などのプログラムを実行する。通信部９８は、ネットワーク６（図１、図３）を介して他の情報処理端末つまり、他のホスト装置と通信を行う。
【００６８】
記憶部１００には既述のプログラム記憶部１０４およびデータ記憶部１０６が備えられている。プログラム記憶部１０４には、ＯＳ７９や本開示の同期制御プログラムなどが格納され、同期制御プログラムとして具体的にはデータベースエンジン６８、レプリケータ７０が格納されている。また、データ記憶部１０６には既述のデータベース６６や同期管理テーブル７２などのレコードデータが格納され、保存されている。この保存データはレプリケーションによって更新可能である。ＲＡＭ１０２はワークエリアを構成する。
【００６９】
＜レプリケーションの処理手順＞
【００７０】
このレプリケータ７０のレプリケーションの処理手順は以下のとおりである。
【００７１】
(1) 通信可能な複数のデバイスがある場合には、デバイスの選択を行う。最終同期日時が古いデバイスまたは、優先度が高いデバイスが選択される。
【００７２】
(2) 接続を開始した後、接続先装置から同期管理テーブルの全体を取得する。
【００７３】
(3) 接続先装置の同期管理テーブルに記録された自デバイスの最終更新日時を判断する。この処理では、最終更新日時が閾値よりも古いか否かを判断する。最終更新日時が閾値よりも古い場合には、最終更新日時が閾値よりも古いために生じている自デバイスのデータベースの差分を接続先装置に送信する。
【００７４】
(4) 接続先装置の同期管理テーブルと自デバイスの同期管理テーブルを比較し、閾値よりも古い場合には、相手デバイスと自デバイスのデータベースの差分を接続先装置に要求する。これにより差分のレコードを取得する。
【００７５】
(5) このようなレプリケーションの後、相手デバイスとの接続を終了する。
【００７６】
図１２はレコードのレプリケーションの処理手順を示している。この処理手順は、本開示の同期制御プログラムまたは同期制御方法の一例である。
【００７７】
この処理手順では、レコードのレプリケーションを行う接続先装置（対象）の選択を行う（Ｓ１０１）。選択された対象との接続を行ない（Ｓ１０２）、その対象から同期管理テーブルを取得する（Ｓ１０３）。
【００７８】
取得した同期管理テーブルを参照し、情報（データ）の新旧を対比する（Ｓ１０４）。このＳ１０４では、対象側レコードと自装置側レコードを比較し、対象側レコードに対して自装置側レコードが古いか否かを判断する。対象側レコードに対して自装置側レコードが古い場合には（Ｓ１０４のＹＥＳ）、対象側レコードと自装置側レコードの差分を求め、この差分を接続中の対象に送信する（Ｓ１０５）。
【００７９】
この送信の後、または対象側レコードに対して自装置側レコードが古くない場合には（Ｓ１０４のＮＯ）、ステップＳ１０６に移行する。Ｓ１０６では、取得した同期管理テーブルと自装置側の同期管理テーブルとを比較し、自装置側の同期管理テーブルが取得した同期管理テーブルより古いか否かを判断する。
【００８０】
自装置側の同期管理テーブルが取得した同期管理テーブルより古い場合には（Ｓ１０６のＹＥＳ）、新しいレコードを保持している対象から差分のレコードを受信する（Ｓ１０７）。
【００８１】
この受信の後、または自装置側の同期管理テーブルが取得した同期管理テーブルより古くない場合には（Ｓ１０６のＮＯ）ステップＳ１０８に移行する。Ｓ１０８では、データの送信または受信をした対象の接続を切断する。つまり、上記対象とのレプリケーションが終了し、接続中の対象が残っているか否かを判断する（Ｓ１０９）。レプリケーションをしていない対象が残っていれば（Ｓ１０９のＹＥＳ）、Ｓ１０１ないしＳ１０９の処理を継続し、対象が残っていなければ（Ｓ１０９のＮＯ）、全てのレプリケーションを終了する。
【００８２】
＜レプリケーションの具体的な処理＞
【００８３】
図１３、図１４、図１５、図１６および図１７は、レプリケーション処理の具体的な処理手順を示している。図１３、図１４、図１５、図１６および図１７において、図９と同一部分には同一符号を付してある。
【００８４】
このレプリケーションには図１３に示すように、４つのホスト装置（ホスト１、ホスト２、ホスト３およびホスト４）４０−１、４０−２、４０−３、４０−４が用いられている。ホスト装置４０−１、４０−２、４０−３、４０−４は既述のノートＰＣ、スマートフォン、タブレット端末などの情報処理端末４−１、４−２、４−３、４−４で構成される。
【００８５】
ホスト１のデータベース６６−１にあるテーブル７４−１には、ホスト１の更新レコード１０８−１、ホスト１以外の更新レコード１１０−１が格納されている。また、ホスト２のデータベース６６−２にあるテーブル７４−２には、ホスト１の更新レコード１０８−２、ホスト１以外の更新レコード１１０−２が格納されている。
【００８６】
この場合、ホスト１は、レプリケーション直前にホスト４と同期してホスト４からレコードを取得し、ホスト１以外の更新レコード１１０−１にホスト２よりも新しいレコードを保存しているものとする。
【００８７】
また、ホスト２は、レプリケーション直前にホスト３と同期してホスト３からレコードを取得し、ホスト１以外の更新レコード１１０−２にホスト１よりも新しいレコードを保存しているものとする。また、ホスト１以外の更新レコード１１０−２には、ホスト１よりも古いレコード（ホスト４のレコード）を保存しているものとする。
【００８８】
このようなレコードの新旧関係を前提にレプリケーションの処理手順を説明する。
【００８９】
(1) レプリケーション開始に先立ち、ホスト１は図１３に示すように、ホスト２との接続を開始する。
【００９０】
(2) データ取得では図１４に示すように、ホスト１はホスト２の同期管理テーブル７２のテーブル７７をホスト２から取得する。
【００９１】
(3) データ送信では、ホスト１は図１５に示すように、ホスト２が保存しているホスト１のデータベース１６−１の最終同期日時以降のレコードつまり、ホスト１による更新レコードをホスト２に対して送信する。
【００９２】
(4) データ受信では、ホスト１は、ホスト２が保存しているホスト１以外のデータベースの差分を受信する。これにより図１６に示すように、ホスト１はホスト２からホスト３のレコードを取得する。
【００９３】
この場合、ホスト２がホスト１よりホスト３の最終同期日時が新しい場合には、ホスト１はホスト２からホスト３の差分を取得する。ホスト１がホスト２よりホスト４の最終同期日時が新しい場合には、ホスト１はホスト２からホスト４のレコードを取得しない。
【００９４】
(5) レプリケーションの終了は図１７に示すように、ホスト１がホスト２との接続を終了させる。
【００９５】
このレプリケーションにより、ホスト１は、ホスト１とホスト２から得られるホスト１〜ホスト４の最新レコードを収集することができる。そして、同期時にデータの識別情報である更新日時が衝突した場合（つまり、更新日時が同一である場合）の衝突回避処理を行い、レコードの識別情報である更新日時の衝突を回避している。
【００９６】
＜レコードの構成と同期による変化例１＞
【００９７】
図１８はレコードの構成と同期による変化例１を示している。同期前のホスト１は、図１８のＡに示すように、主キーｉｄ＝１に対し、一例であるデータ（ｄａｔａ）は「１２３４００００」であり、副キーｍｉｄ＝１である。ｍｉｄは既述のとおりレプリケーションマスタ識別子である。これに対し、同期前のホスト２は、図１８のＡに示すように、主キーｉｄ＝１に対し、ｄａｔａは「２３４５００００」であり、副キーｍｉｄ＝２である。副キーｍｉｄはデバイス毎に異なる値である。
【００９８】
これらホスト１、２が同期し、レプリケーションを行う。同期後のホスト１は、図１８のＢに示すように、主キーｉｄ＝１に対し、ｄａｔａ＝「１２３４００００」、ホスト２から主キーｉｄ＝１、ｄａｔａ＝「２３４５００００」が複写される。同様に、同期後のホスト２は、図１８のＢに示すように、主キーｉｄ＝１に対し、ｄａｔａは「２３４５００００」、ホスト１から主キーｉｄ＝１、ｄａｔａ＝「１２３４００００」が複写されている。このレプリケーションにより、ホスト１、２の各レコードが共通化される。この場合、ｍｉｄ＝１と、ｍｉｄ＝２により、異なるレコードとして記録される。
【００９９】
更新日時の衝突時はＩＤフィールドの値（例：日時フィールド（ｄａｔｅ））をインクリメントし、更新日時の衝突を回避して各レコードを保存するので、各レコードの整合性が取られる。
【０１００】
なお、主キー（Primary key ：プライマリキー）は、リレーショナルデータベースにおいて、レコード（組）の識別子として利用するのに最も好ましいものとして、リレーション（テーブル）毎にただ一つ、設計者により選択され定義された候補キーをいう。つまり、リレーションに格納されたレコードを一意に識別するための属性（列、アトリビュート）またはその集合のうち、そのために通常利用されるべき特定の一つをいう。この主キーにはＮＵＬＬの存在が許されないが、候補キーには許されるという差がある。
【０１０１】
＜レコード構成と同期による変化例２＞
【０１０２】
図１９、図２０および図２１はレコード構成と２回の同期によるホスト１、２のレコード変化例２を示している。このレコード変化例２は、１回目の同期のループ（ｌｏｏｐ）１、１回目のｌｏｏｐ２、２回目の同期のｌｏｏｐ１、２回目の同期のｌｏｏｐ２の処理結果であり、各テーブル７４−１、７４−２のレコード変化を示している。
【０１０３】
(1) 同期前
【０１０４】
図１９のＡは１回目の同期前のホスト１およびホスト２のレコード構成を示している。ホスト１およびホスト２にはｉｄ＝２０１１／０５／０１  １０：００：００で一致するｄａｔａ＝１００（ホスト１）、ｄａｔａ＝１２０（ホスト２）が存在している。つまり、各ｄａｔａは同期前、識別情報である更新日時が一致し、衝突を生じている。
【０１０５】
(2) １回目の同期のｌｏｏｐ１の処理後
【０１０６】
図１９のＢは１回目の同期のｌｏｏｐ１の処理後のレコード構成を示している。ホスト２には、ホスト１から１つのレコードが複写（コピー）されている。既述の衝突回避処理により、ホスト１のｉｄコラムの値が変更（＋１）され、つまり、ｉｄ＝２０１１／０５／０１  １０：００：０１に変更され、ｄａｔａ＝１００（ホスト１）が独立したレコードとしてホスト２に記録されている。これにより、ホスト２にあるｉｄ＝２０１１／０５／０１  １０：００：００のｄａｔａ＝１２０との衝突が回避され、各レコードが独立したレコードとして保存されている。ホスト２にあるｍｉｄ＝１はホスト１からの複写レコードであることを表している。
【０１０７】
(3) １回目の同期のｌｏｏｐ２の処理後
【０１０８】
図２０のＡは１回目の同期のｌｏｏｐ２の処理後のレコード構成を示している。ホスト１には、ホスト２から２つのレコードが複写されている。ホスト２のｉｄ＝２０１１／０５／０１  ０９：５５：００のｄａｔａ＝９０のレコードは同期前、ホスト１には存在しないので、ホスト１にそのまま複写されている。その順序は、ホスト１にあるレコードより更新日時が古いので、もっとも古い時系列位置に保存されている。ホスト１にあるｍｉｄ＝２は、ホスト２からの複写レコードであることを表している。
【０１０９】
また、ホスト２のｉｄ＝２０１１／０５／０１  １０：００：００のｄａｔａ＝１２０は同期前、ホスト１に存在するレコードと更新日時が一致している。このため、既述の衝突回避処理により、ホスト２のｉｄコラムの値が変更（＋１）され、つまり、ｉｄ＝２０１１／０５／０１  １０：００：０１に変更され、ｄａｔａ＝１２０（ホスト２）が独立したレコードとしてホスト１に記録されている。これにより、ホスト１にあるｉｄ＝２０１１／０５／０１  １０：００：００のｄａｔａ＝１００との衝突が回避され、それぞれが独立したレコードとして保存されている。
【０１１０】
(4) ２回目の同期前
【０１１１】
図２０のＢは、２回目の同期前のレコード構成を示している。ホスト１、２では、独自にｄａｔａを更新しており、１回目の同期のｌｏｏｐ２の処理後からレコードの記録数が増加している。つまり、ホスト１、ホスト２には独自にレコードが複写されたため、ｉｄ＝２０１１／０５／０１  １０：４０：００で一致するｄａｔａ＝１７０（ホスト１）、ｄａｔａ＝１６０（ホスト２）が存在している。つまり、レコード間に衝突を生じている。
【０１１２】
(5) ２回目の同期のｌｏｏｐ１の処理後
【０１１３】
図２１のＡは２回目の同期のｌｏｏｐ１の処理後のレコード構成を示している。ホスト２には、ホスト１から２つのレコードが複写されている。ホスト１のｉｄ＝２０１１／０５／０１  １０：１０：００のｄａｔａ＝１３０のレコードは同期前、ホスト２に存在しないので、ホスト２にそのまま複写されている。レコードの順序は時系列位置に沿っている。
【０１１４】
また、ホスト１のｉｄ＝２０１１／０５／０１  １０：４０：００のｄａｔａ＝１７０は同期前、ホスト２のレコードと更新日時が一致している。既述の衝突回避処理により、ホスト１のｉｄコラムの値が変更（＋１）され、つまり、ｉｄ＝２０１１／０５／０１  １０：４０：０１に変更され、ｄａｔａ＝１７０（ホスト１）が独立したレコードとしてホスト２に記録されている。これにより、ホスト２にあるｉｄ＝２０１１／０５／０１  １０：４０：００のｄａｔａ＝１６０との衝突が回避され、それぞれが独立したレコードとして保存されている。
【０１１５】
(6) ２回目の同期のｌｏｏｐ２の処理後
【０１１６】
図２１のＢは２回目の同期のｌｏｏｐ２の処理後を示している。ホスト１には、ホスト２から２つのレコードが複写されている。ホスト２のｉｄ＝２０１１／０５／０１  １０：２０：００のｄａｔａ＝１５０のレコードは同期前、ホスト１に存在しないので、ホスト１にそのまま複写されている。レコードの順序は時系列位置に沿っている。
【０１１７】
また、ホスト２のｉｄ＝２０１１／０５／０１  １０：４０：００のｄａｔａ＝１６０は同期前、ホスト１のレコードと更新日時が一致している。既述の衝突回避処理により、ホスト２のｉｄコラムの値が変更（＋１）され、つまり、ｉｄ＝２０１１／０５／０１  １０：４０：０１に変更され、ｄａｔａ＝１６０（ホスト２）が独立したレコードとしてホスト１に記録されている。これにより、ホスト１にあるｉｄ＝２０１１／０５／０１  １０：４０：００のｄａｔａ＝１７０との衝突が回避され、それぞれが独立したレコードとして保存されている。
【０１１８】
＜同期管理テーブルを用いない場合のレコードの構成と同期による変化例＞
【０１１９】
図２２は同期管理テーブルを用いない場合のレコードの構成と同期による変化例を示している。
【０１２０】
(1) 同期前
【０１２１】
図２２のＡは同期前のホスト１およびホスト２のレコード構成を示している。ホスト１およびホスト２にはｉｄ＝２０１１／０５／０１  １０：００：００で一致するｄａｔａ＝１００（ホスト１）、ｄａｔａ＝１２０（ホスト２）が存在している。つまり、各ｄａｔａは同期前、識別情報である更新日時が一致し、衝突を生じている。
【０１２２】
(2) 同期後
【０１２３】
図２２のＢは同期後のレコード構成を示している。ホスト２には、ホスト１から１つのレコードが複写（コピー）されている。既述の衝突回避処理により、ホスト１のｉｄコラムの値が変更（＋１）され、つまり、ｉｄ＝２０１１／０５／０１  １０：００：０１に変更され、ｄａｔａ＝１００（ホスト１）が独立したレコードとしてホスト２に記録されている。これにより、ホスト２にあるｉｄ＝２０１１／０５／０１  １０：００：００のｄａｔａ＝１２０との衝突が回避され、各レコードが独立したレコードとして保存されている。
【０１２４】
ホスト１には、ホスト２から２つのレコードが複写されている。ホスト２のｉｄ＝２０１１／０５／０１  ０９：５５：００のｄａｔａ＝９０のレコードは同期前、ホスト１には存在しないので、ホスト１にそのまま複写されている。その順序は、ホスト１にあるレコードより更新日時が古いので、もっとも古い時系列位置に保存されている。
【０１２５】
また、ホスト２のｉｄ＝２０１１／０５／０１  １０：００：００のｄａｔａ＝１２０は同期前、ホスト１に存在するレコードと更新日時が一致している。このため、既述の衝突回避処理により、ホスト２のｉｄコラムの値が変更（＋１）され、つまり、ｉｄ＝２０１１／０５／０１  １０：００：０１に変更され、ｄａｔａ＝１２０（ホスト２）が独立したレコードとしてホスト１に記録されている。これにより、ホスト１にあるｉｄ＝２０１１／０５／０１  １０：００：００のｄａｔａ＝１００との衝突が回避され、それぞれが独立したレコードとして保存されている。
【０１２６】
このように、ホスト１およびホスト２では、更新時刻の一致によるレコードの衝突が回避され、それぞれが独立したレコードとして保存されている。また、この場合、同期管理テーブル７２が存在していないため、レプリケーションマスタ識別子ｍｉｄが省略され、これを格納するフィールドも不要である。
【０１２７】
＜レコードの同期前後および出力＞
【０１２８】
図２３はホスト１、２間のレプリケーションによる同期前後および出力を示している。図２３では説明を容易にするため数値を簡略化して示している。図２３において、図１３と同一部分には同一符号を付してある。
【０１２９】
図２３のＡおよびＢは同期前後のホスト１のテーブル７４−１、ホスト２のテーブル７４−２を示している。同期前、衝突していたレコードは既述の衝突回避処理によって更新時刻の変更により整合化され、それぞれ共通のレコードが記録されている。
【０１３０】
このように整合化されたレコードは、たとえば、データ出力タブのＳＱＬ文「ＳＥＬＥＣＴ  ｄａｔｅ，  ｖａｌｕｅ，  ｍｉｄ  ＦＲＯＭ  ｔａｂｌｅ  ＯＲＤＥＲ  ＢＹ  ｄａｔｅ  ＤＥＳＣ  ＬＩＭＩＴ  ５；」を用いることにより出力することができる。図２３のＣはホスト１、ホスト２の各レコードの出力を示している。出力されたレコードは更新日時が異なり、変更された更新日時を識別情報とするレコードはｍｉｄ＝１、ｍｉｄ＝２によりいずれのホスト１、ホスト２から複写されたものかを識別することができる。
【０１３１】
これに対し、従来のレプリケーションでは、図２４のＡおよびＢに示すように、識別子ｉｄを必要としている。このようなレコードを出力するには、ＳＱＬ実行命令が「ＳＥＬＥＣＴ  ｄａｔｅ，  ｖａｌｕｅ，  ｍｉｄ  ＦＲＯＭ  ｔａｂｌｅ  ＯＲＤＥＲ  ＢＹ  ｄａｔｅ，  ｍｉｄ  ＤＥＳＣ  ＬＩＭＩＴ  ５；」となる。つまり、従来のレプリケーションでは、ｄａｔｅ、ｖａｌｕｅ、ｍｉｄ列はテーブルの各行を完全に一意に識別できないので、プライマリキーとして列を追加する必要が生じる。つまり、整合性制約がある。また、“ＯＲＤＥＲ  ＢＹ”で２以上の列を指定しないと、ＳＱＬ実行の都度、出力結果の並び順が不定になるおそれがある。レコードの列が増えることや、“ＯＲＤＥＲ  ＢＹ”列で２以上の列を指定することで、記憶容量やＳＱＬ実行時間が増加するデメリットがある。
【０１３２】
これに対し、本開示のレプリケーション処理では次のような効果が得られる。
【０１３３】
(1) ｄａｔｅフィールドの内容をユニークにするため、プライマリーキー列として利用できる。
【０１３４】
(2) ＯＲＤＥＲ  ＢＹで１つの列の指定で、並び順が安定した出力結果を得られる。
【０１３５】
(3) 記憶容量とＳＱＬ実行時間を削減できる。
【０１３６】
なお、既述の“ＯＲＤＥＲ  ＢＹ”、“ＳＥＬＥＣＴ文”および整合性制約は、以下の通りである。
【０１３７】
“ＯＲＤＥＲ  ＢＹ”句は、ＳＥＬＥＣＴ文において特定列の値に応じて行の並べ替えを行うことである。ＳＥＬＥＣＴ文で作成される表の行の出現順番を指定したい場合にＯＲＤＥＲ  ＢＹ句が利用される。このＯＲＤＥＲＢＹ句がＳＥＬＥＣＴ文に指定されなかった場合の行の出現順番は不定となる。このＯＲＤＥＲ  ＢＹ句では、列ごとに昇順、降順の並べ替えを指定することができる。
【０１３８】
“ＳＥＬＥＣＴ文”は、リレーショナルデータベースのテーブル（表）の行を読み取るためのＳＱＬ文である。ＳＥＬＥＣＴ文では、複数のテーブルの結合（ＪＯＩＮ）や条件を指定しての行の絞込み（ＷＨＥＲＥ句）、同一の値を持つ列のグループ化（ＧＲＯＵＰ  ＢＹ句）、列の値による並べ替え（ＯＲＤＥＲ  ＢＹ句）など、目的に応じたデータの取り出しを行うことができる。
【０１３９】
「整合性制約」は、データベースが備えねばならない整合性の条件を実現するものであり、特にデータそのものの性質に基づく整合性についてのものである。たとえば、ある関係モデルにおいて、ある属性は一意性を保っていなければならないという条件があるとすれば、それは整合性制約で実現する。これに対して、データベースのトランザクション制御などで並行処理をうまく行なうことによって保たねばならないようなものは、一貫性制約と呼ばれる。一意性制約＋や参照制約、検査制約などは整合性制約の一つである。
【０１４０】
＜データの記憶容量＞
【０１４１】
図２５は本開示のテーブル７４と従来テーブルに要するデータの記憶容量を示している。
【０１４２】
図２５のＡはテーブル構成を示している。従来のレプリケーションでは、ｄａｔｅ、ｖａｌｕｅおよびｍｉｄに加え、識別子ｉｄが必要である。これに対し、本開示のレプリケーションでは、テーブル７４のレコードにｄａｔｅ、ｖａｌｕｅおよびｍｉｄで構成される。
【０１４３】
図２５のＢはデータサイズを示している。従来のレプリケーションでは、“ｉｄ”は「ＩＮＴ」型であり、そのサイズは４バイトである。“ｄａｔｅ”は「ＴＩＭＥＳＴＡＭＰ」型であり、そのサイズは４バイトである。“ｖａｌｕｅ”は「ＴＥＸＴ」型であり、そのサイズはＬ＋２バイトである。また、“ｍｉｄ”は「ＩＮＴ」型であり、そのサイズは、４バイトである。各サイズを合計すると、全サイズはＬ＋１４バイトとなり、たとえば、Ｌ＝３０であれば、Ｌ＋１４＝４４バイトとなる。
【０１４４】
これに対し、本開示のレプリケーションに用いられるテーブル７４では、識別子ｉｄを用いていないので、各サイズを合計すると、全サイズはＬ＋１０バイトとなり、たとえば、Ｌ＝３０であれば、Ｌ＋１０＝４０バイトとなる。
【０１４５】
このため、本開示のレプリケーションに必要なデータサイズは、従来構成に比較し４０／４４≒９１〔％〕となり、９〔％〕だけ削減される。
【０１４６】
＜更新時刻の変更によるユニークな識別情報＞
【０１４７】
更新時刻で構成されたユニークな識別情報としての時刻ＩＤが衝突する確率は、「ホスト毎の平均更新間隔」と「ホスト数」から導かれる。利用状況からすれば、「ホスト毎の平均更新間隔」が「ホスト数」よりも十分に大きければよい。
【０１４８】
たとえば、平均更新間隔が１０〔分〕でホスト数が“３”であれば（ケース１）、６００〔個〕のスロット中の３〔個〕が使われる（＝スロット使用率０．５〔％〕）ので、衝突可能性は十分に低い状況と判断できる。ここで、スロットとは、スロット＝時刻ＩＤ（＝レコード）を指定可能な場所である。時刻ＩＤの精度が秒の場合、１分間あたり６０〔個〕のスロットがある。つまり、最大６０のレコードを生成できる。
【０１４９】
平均更新間隔が２〔分〕でホスト数が“１２”であれば（ケース２）、１２０〔個〕のスロット中の１２〔個〕が使われる（＝スロット使用率１０％）ので、衝突可能性は認められるものの衝突を回避可能な状況であると判断できる。つまり、データは十分に近いスロットに記録できる。
【０１５０】
平均更新間隔が３０〔秒〕でホスト数が“６０”であれば（ケース３）、３０〔個〕の空きスロットに対して６０〔個〕のスロットが必要となる（＝スロット使用率２００〔％〕）ので、衝突はほとんど不可避であり、衝突回避が不可能な状況であると判断できる。つまり、すべてのデータをスロットに記録できない。
【０１５１】
時刻ＩＤの精度（最小単位）では、ＯＳ（Operating System）やプログラミング言語で提供されるシステム時刻の精度は１〔秒〕、１〔ミリ秒〕、１〔マイクロ秒〕などがあり、これらから選択すればよい。時刻ＩＤの範囲はプログラム（例えば、Ｕｎｉｘ（登録商標））の場合は１９７０年１月１日から２０３８年１月１９日までとなっている。本開示の内容では、時刻ＩＤは、４バイト長で表現される１９７０年１月１日を起点とする秒数、あるいは８バイト長で表現される１９７０年１月１日等を起点とするマイクロ秒数で取り扱えばよい。
【０１５２】
＜ホストにおけるデータベース、同期管理テーブルおよびレコードの構成例＞
【０１５３】
図２６はホストにおけるデータベース、同期管理テーブルおよびレコードの構成例を示している。既述のデータベースエンジン６８（図１３）は複数のデータベース６６を保持する。アプリケーションは１つ以上のデータベース（アプリ１用データベース）６６を利用する。図２６のＡに示すように、各データベース６６は通常１つ以上のテーブルを含んでいる。つまり、アプリ１用データベース６６−１にはテーブル（テーブル１）７４−１１、テーブル（テーブル２）７４−１２を備えている。同期管理用データベース９５は、同期管理テーブル７２を備えている。
【０１５４】
同期管理機能９３（図１０のＢ）は、図２６のＢに示すように、１つのデータベースとして同期管理用データベース９５を利用する。この同期管理用データベース９５は、１つ以上のテーブルを含み、このテーブルには同期管理テーブル７２が含まれる。
【０１５５】
なお、同期管理テーブル７２を用いない場合には図２６のＡに示す構成のみとなる。
【０１５６】
図２７はレプリケーションのテーブルを示している。既述のテーブル１には、図２７のＡに示すように、複数のレコード１、レコード２・・・レコード８が格納される。つまり、各レコード１〜Ｎは、アプリケーションが必要とする数だけ作成される。
【０１５７】
同期管理テーブル７２は、図２７のＢに示すように、複数のレコード１、レコード２・・・レコード５が格納される。各レコード１〜Ｎは、各機器が認識した機器の数だけ作成される。つまり、ある機器が５つの機器を認識すれば、５つのレコードが作成される。同期管理テーブル７２を用いない場合には図２７のＡに示す構成のみとなる。
【０１５８】
図２８はテーブル１および同期管理テーブル７２の構成例を示している。
【０１５９】
アプリケーションのテーブルに格納されるレコードは、複数のコラム（列）で構成される。各レコードのテーブルには、ｉｄコラムおよびｍｉｄコラムが含まれる。さらに、アプリケーションが必要とする１つ以上のコラムを含む。図２８のＡに示すように、テーブル１では、ｉｄコラムを先頭にデータ１、データ２、データ３およびｍｉｄコラムが格納されている。
【０１６０】
同期管理テーブル７２のレコードは、図２８のＢに示すように、２つのコラム（列）で構成される。各レコードには、ｍｉｄコラムと、最終同期日時コラムの２つのコラムが含まれている。
【０１６１】
＜テーブル１のレコードにおけるコラムの構成例＞
【０１６２】
アプリケーションのレコードでは、ｉｄコラムはデータの作成日時を保存し、ｍｉｄコラムはデータを作成した機器の識別子を保存する。同期管理テーブル７２のレコードでは、ｍｉｄコラムは機器の識別子を保存する。最終同期日時コラムは、その機器とｍｉｄで識別される機器との間で最後に同期処理をした日時を保存する。未同期の場合は“０”である。
【０１６３】
図２９はテーブル１および同期管理テーブルのレコードのコラム構成を示している。図２９のＡに示すテーブル１のレコードのコラム構成では、コラム名、データ型、サイズ、説明および初期値が格納される。コラム名には一例として、ｉｄ、データ１、データ２、データ３およびｍｉｄが格納される。
【０１６４】
ｉｄには、データ型がＴＩＭＥＳＴＡＭＰ、ＤＡＴＥＴＩＭＥ他（日時）であること、サイズが４バイトまたは８バイトである。その説明にはデータの作成日時、初期値は現在の日時であることが格納される。
【０１６５】
データ１、データ２およびデータ３について、データ型は任意であること、サイズは任意であること、その説明にはアプリケーションを利用すること、初期値は任意であることが格納される。
【０１６６】
ｍｉｄには、データ型がＩＮＴ（整数）であること、サイズが４バイトであること、その説明には同期対象となる機器の識別子であること、初期値には指定が必須であることが明示されている。
【０１６７】
図２９のＢに示す同期管理テーブル７２のレコードには、同様に、コラム名、データ型、サイズ、説明および初期値が格納される。
【０１６８】
コラム名には、ｍｉｄ、最終同期日時が格納されている。ｍｉｄには、データ型がＩＮＴ（整数）であること、サイズが４バイトであること、その説明には同期対象となる機器の識別子であること、初期値には指定が必須であることが格納されている。最終同期日時には、データ型がＴＩＭＥＳＴＡＭＰ、ＤＡＴＥＴＩＭＥ他（日時）であること、サイズが４バイトまたは８バイトであること、その説明には最後に同期処理をした日時、初期値には現在の日時が格納されている。なお、同期管理テーブル７２を用いない場合には、図２９のＡのみの構成となる。
【０１６９】
＜起動によるネットワーク接続の確立＞
【０１７０】
図３０および図３１はレプリケータ・サービスの処理手順を示している。この処理手順は、本開示の同期制御プログラムまたは同期制御方法の一例である。図３０および図３１において、Ａ、Ｂはフローチャート間の結合子を示している。
【０１７１】
この処理手順では、電源オンで初期化を行ない（Ｓ２０１）、全レプリケーションを実行する（Ｓ２０２）。エラー発生を監視し（Ｓ２０３）、エラーが発生すれば（Ｓ２０３のＹＥＳ）、そのエラーをログに記録する（Ｓ２０４）。このログ記録（Ｓ２０４）またはエラー発生がなければ（Ｓ２０３のＮＯ）、終了か否かを判定する（Ｓ２０５）。終了でなければ（Ｓ２０５のＮＯ）、ウェイト状態とし（Ｓ２０６）、Ｓ２０２に戻る。このウェイト時間は一定時間とし、たとえば、３０〔分〕のウェイト状態となる。また、終了であれば（Ｓ２０５のＹＥＳ）、この処理を終了する。
【０１７２】
図３１はレプリケータ・サービスの処理手順のうち、例外処理の処理手順を示している。図３１では、スリープに係る処理を例外処理としている。
【０１７３】
この例外の処理手順では、スリープか否かを判定し（Ｓ２１１）、スリープであれば（Ｓ２１１のＹＥＳ）、ＨＡＬＴに移行する。
【０１７４】
スリープでなければ（Ｓ２１１のＮＯ）、スリープからの復帰か否かを判定する（Ｓ２１２）。スリープからの復帰であれば（Ｓ２１２のＹＥＳ）、図３０に示す処理手順のＳ２０２（全レプリケーション）に移行する。
【０１７５】
スリープからの復帰でなければ（Ｓ２１２のＮＯ）、シャットダウンか否かを判定する（Ｓ２１３）。シャットダウンであれば（Ｓ２１３のＹＥＳ）、図３０に示す処理手順の終了（レプリケータ・サービスの終了）に移行する。また、シャットダウンでなければ（Ｓ２１３のＮＯ）、例外処理の処理手順を終了する。
【０１７６】
図３２は既述の全レプリケーション（Ｓ２０２：図３０）のサブルーチンの処理手順を示している。
【０１７７】
この全レプリケーションを開始すると、一時記憶ｎｉにネットワーク・インタフェースのリストを生成させる（Ｓ２２１）。この一時記憶ｎｉにデータがあるか否かを判定し（Ｓ２２２）、一時記憶ｎｉにデータがあれば（Ｓ２２２のＹＥＳ）、ＩＦレプリケーションを実行する（Ｓ２２３）。このＩＦレプリケーションは一時記憶ｎｉの先頭要素に対して行う。
【０１７８】
このＩＦレプリケーション（Ｓ２２３）の後、一時記憶ｎｉの先頭要素を削除し（Ｓ２２４）、Ｓ２２２に戻る。一時記憶ｎｉにデータがなければ（Ｓ２２２のＮＯ）、この処理を終了し、既述のＳ２０３（図３０）に遷移する。
【０１７９】
図３３は既述のＩＦレプリケーション（Ｓ２２３：図３２）のサブルーチンの処理手順を示している。このＩＦレプリケーションでは、一時記憶ｎｉにネットワーク・インタフェースを格納する。
【０１８０】
このＩＦレプリケーションを開始すると、一時記憶ｎｉにデータがあるか否かを判定し（Ｓ２３１）、一時記憶ｎｉにデータがあれば（Ｓ２３１のＹＥＳ）、一時記憶ｓｖに一時記憶ｎｉにインタフェースで登録済みホストのリストを生成させる（Ｓ２３２）。
【０１８１】
一時記憶ｓｖにデータがあるか否かを判定し（Ｓ２３３）、一時記憶ｓｖにデータがあれば（Ｓ２３３のＹＥＳ）、一時記憶ｓｖの先頭のホストに接続可能か否かを判定する（Ｓ２３４）。接続可能であれば（Ｓ２３４のＹＥＳ）、レプリケーションを実行し（Ｓ２３５）、一時記憶ｓｖの先頭要素を削除し（Ｓ２３６）、Ｓ２３３に戻る。Ｓ２３４において、接続不可であれば（Ｓ２３４のＮＯ）、レプリケーション（Ｓ２３５）を実行することなく、一時記憶ｓｖの先頭要素を削除する（Ｓ２３６）。
【０１８２】
一時記憶ｎｉにデータがない場合（Ｓ２３１のＮＯ）、または一時記憶ｓｖにデータがない場合（Ｓ２３３のＮＯ）には、ＩＦレプリケーションを終了する。このようにして、登録済みホストのレプリケーションを順に行ない、接続可能な全てのホストについて、レプリケートを行なう。
【０１８３】
＜新しいネットワーク接続の確立＞
【０１８４】
図３４および図３５はネットワーク検出サービスの処理手順を示している。各処理手順において、Ｃ、Ｄはフローチャート間の結合子を示している。
【０１８５】
この処理手順では、電源オンで初期化を開始する（Ｓ２４１）。この初期化の後、一時記憶ｎｉｂａｋを空にし（Ｓ２４２）、ウェイト状態に移行する（Ｓ２４３）。このウェイト時間は一定時間たとえば、１〔分〕である。このウェイト状態において、一時記憶ｎｉにネットワーク・インタフェースのリストを生成し（Ｓ２４４）、一時記憶ｄｉｆに一時記憶ｎｉから一時記憶ｎｉｂａｋの要素を取り除いたリストを生成させる（Ｓ２４５）。
【０１８６】
一時記憶ｄｉｆに要素がある否かを判定し（Ｓ２４６）、要素があれば（Ｓ２４６のＹＥＳ）、ＩＦレプリケーションを実行する（Ｓ２４７）。このＩＦレプリケーションは一時記憶ｄｉｆの先頭要素について行ない、このＳ２４７の後、一時記憶ｄｉｆの先頭要素を削除し（Ｓ２４８）、Ｓ２４６に戻る。ＩＦレプリケーションは、ｎｉの先頭要素に代えてｄｉｆの先頭要素を行なう他はＩＦレプリケーション（図３２、Ｓ２２３）と同様である。
【０１８７】
一時記憶ｄｉｆに要素がなければ（Ｓ２４６のＮＯ）、一時記憶ｎｉｂａｋを一時記憶ｎｉで更新し（Ｓ２４９）、終了か否かを判定する（Ｓ２５０）。終了でなければ（Ｓ２５０のＮＯ）、Ｓ２４３に復帰し、ウェイト状態に遷移する。また、終了であれば（Ｓ２５０のＹＥＳ）、このネットワーク検出処理を終了する。このようにして、一定時間間隔でｎｉｂａｋにあるインタフェースからの差分のインタフェースについてレプリケートを行なう。
【０１８８】
図３５はネットワーク検出サービスの処理手順のうち、例外処理の処理手順を示している。
【０１８９】
この例外の処理手順では、スリープか否かを判定し（Ｓ２５１）、スリープであれば（Ｓ２５１のＹＥＳ）、ＨＡＬＴに移行する。
【０１９０】
スリープでなければ（Ｓ２５１のＮＯ）、スリープからの復帰か否かを判定する（Ｓ２５２）。スリープからの復帰であれば（Ｓ２５２のＹＥＳ）、図３４に示す処理手順のＳ２４３（ウェイト）に移行する。
【０１９１】
スリープからの復帰でなければ（Ｓ２５２のＮＯ）、シャットダウンか否かを判定する（Ｓ２５３）。シャットダウンであれば（Ｓ２５３のＹＥＳ）、図３４に示す処理手順の終了（ネットワーク検出サービスの終了）に移行する。また、シャットダウンでなければ（Ｓ２５３のＮＯ）、例外処理の処理手順を終了する。
【０１９２】
＜新接続先装置（新デバイス）の発見の処理＞
【０１９３】
図３６はレプリケータ・ホスト検出サービスの処理手順を示している。
【０１９４】
この処理手順では、一時記憶ｎｉにネットワーク・インタフェースのリストを生成させる（Ｓ２６１）。一時記憶ｎｉにデータがるか否かを判定し（Ｓ２６２）、データがあれば（Ｓ２６２のＹＥＳ）、一時記憶ｎｉの先頭インタフェースにブロードキャスト送信をする（Ｓ２６３）。一時記憶ｄｓｃｖｒにブロードキャストの応答ホストのリストを生成させる（Ｓ２６４）。一時記憶ｄｓｃｖｒにデータがあるか否かを判定し（Ｓ２６５）、一時記憶ｄｓｃｖｒにデータがあれば（Ｓ２６５のＹＥＳ）、一時記憶ｄｓｃｖｒの先頭は登録済みホストか否かを判定する（Ｓ２６６）。ｄｓｃｖｒの先頭が登録済みホストでなければ（Ｓ２６６のＮＯ）、インタフェース登録ホストに一時記憶ｄｓｃｖｒの先頭を設定し（Ｓ２６７）、レプリケーションを実行する（Ｓ２６８）。このレプリケーションの後、一時記憶ｄｓｃｖｒの先頭要素を削除し（Ｓ２６９）、Ｓ２６５に戻る。
【０１９５】
Ｓ２６５において、一時記憶ｄｓｃｖｒにデータがなければ（Ｓ２６５のＮＯ）、一時記憶ｎｉの先頭要素を削除し（Ｓ２７０）、Ｓ２６２に戻る。
【０１９６】
一時記憶ｎｉにデータがなければ（Ｓ２６２のＮＯ）、終了か否かを判断し（Ｓ２７１）、終了でなければ（Ｓ２７１のＮＯ）、ウェイト状態に移行し（Ｓ２７２）、Ｓ２６１に戻る。この場合ウェイト時間は一定時間であり、たとえば、５〔分〕である。
【０１９７】
Ｓ２７１において、終了であれば（Ｓ２７１のＹＥＳ）、このレプリケータ・ホスト検出サービスの処理手順を終了する。このようにして、各ネットワーク・インタフェース中の登録済みでない応答ホストについて、レプリケートを行なう。
【０１９８】
＜レプリケーションのシーケンス＞
【０１９９】
図３７は、ＰＣと情報処理端末とを対峙させ、ＰＣと情報処理端末との間で実行されるレプリケーションのシーケンスを示している。
【０２００】
情報処理端末４−１からＰＣ２６に同期管理テーブル７２が要求され（Ｓ２８１）、ＰＣ２６から情報処理端末４−１に同期管理テーブル７２が送信される（Ｓ２８２）。情報処理端末４−１では同期対象のｍｉｄを決定し（Ｓ２８３）、ｌｏｏｐ１に移行する。
【０２０１】
ｌｏｏｐ１では、情報処理端末４−１からＰＣ２６に対してデータベース更新要求を行ない（Ｓ２８４）、ＰＣ２６ではデータベースの更新を行う（Ｓ２８５）。ＰＣ２６はこのデータベース更新の後、情報処理端末４−１に対し応答が発せられる（Ｓ２８６）。ｌｏｏｐ１ではこのような処理を繰り返して行い、ＰＣ２６側のデータベースの更新の後、ｌｏｏｐ２に移行する。
【０２０２】
ｌｏｏｐ２では、情報処理端末４−１からＰＣ２６にデータベース取得要求を行ない（Ｓ２８７）、情報処理端末４−１ではデータベースの更新を行う（Ｓ２８８）。ＰＣ２６から情報処理端末４−１に対し、データベース結果の送信を行なう（Ｓ２８９）。ｌｏｏｐ２ではこのような処理を繰り返して行う。情報処理端末４−１のデータベースの更新の後、情報処理端末４−１からＰＣ２６に終了を通知し（Ｓ２９０）、ＰＣ２６から情報処理端末４−１にその応答が通知される（Ｓ２９１）。
【０２０３】
図３８は同期対象の決定処理の処理手順を示している。
【０２０４】
この処理手順では一時記憶ｃｕｒに同期管理テーブルのレコードのリストを格納し（Ｓ３０１）、一時記憶ｉｔｂｌに取得した同期管理テーブルを格納する（Ｓ３０２）。一時記憶ｉｍｐに一時記憶ｉｔｂｌのレコードのリストを格納する（Ｓ３０３）。一時記憶ｕｍｉｄを空にし（Ｓ３０４）、ｉｍｐがあるか否かを判定する（Ｓ３０５）。一時記憶ｉｍｐがなければ（Ｓ３０５のＮＯ）、この処理を終了する。
【０２０５】
一時記憶ｉｍｐがあれば（Ｓ３０５のＹＥＳ）、ｉｍｐの先頭のｍｉｄが自ｍｉｄであるか否かを判定し（Ｓ３０６）、一時記憶ｃｕｒにｉｍｐの先頭のｍｉｄがあるか否かを判定する（Ｓ３０７）。一時記憶ｃｕｒにｉｍｐの先頭のｍｉｄがあれば（Ｓ３０７のＹＥＳ）、ｉｍｐ側の最終同期日時−一時記憶ｃｕｒ側（日時）≧閾値であるか否かを判定する（Ｓ３０８）。閾値は一定時間たとえば、３０〔分〕である。
【０２０６】
ｉｍｐのｍｉｄを一時記憶ｕｍｉｄに追加し（Ｓ３０９）、一時記憶ｉｍｐの先頭要素を削除し（Ｓ３１０）、Ｓ３０５に戻る。このようにして、ｉｔｂｌのレコードのリストから自ｍｉｄのデータと最終同期からの経過時間が閾値以下のデータを除外して、一時記憶ｕｍｉｄに記憶して、同期対象を決定する。
【０２０７】
図３９は同期対象を決定する動作例を示している。
【０２０８】
この動作例では情報処理端末４−１側（ｍｉｄ＝１）の同期管理テーブル７２−１と、ＰＣ２６（ｍｉｄ＝２）の同期管理テーブル７２−２との推移を示している。
【０２０９】
この動作例では、ｍｉｄ＝１、３、５が無視され、ｍｉｄ＝２、４、６が取得対象である。つまり、ｕｍｉｄ＝２、４、６となる。
【０２１０】
図４０は、既述のシーケンス（図３７）のｌｏｏｐ１の処理手順を示している。
【０２１１】
この処理手順の開始により、現在時刻−ｉｍｐ側最終同期日時≧閾値であるか否かを判定する（Ｓ３２１）。これは自ｍｉｄについて判断し、閾値は一定時間たとえば、３０〔分〕である。現在時刻−ｉｍｐ側最終同期日時≧閾値でなければ（Ｓ３２１のＮＯ）、このｌｏｏｐ１の処理を終了する。
【０２１２】
現在時刻−ｉｍｐ側最終同期日時≧閾値であれば（Ｓ３２１のＹＥＳ）、一時記憶ｄｂｌにデータベースのリストを生成し（Ｓ３２２）、一時記憶ｄｂｌにデータがあるか否かを判定する（Ｓ３２３）。一時記憶ｄｂｌにデータがなければ（Ｓ３２３のＮＯ）、この処理を終了する。
【０２１３】
一時記憶ｄｂｌにデータがあれば（Ｓ３２３のＹＥＳ）、一時記憶ｔｂｌに一時記憶ｄｂｌの先頭データベースのテーブルのリストを展開する（Ｓ３２４）。一時記憶ｔｂｌにデータがあるか否かを判断し（Ｓ３２５）、データがあれば（Ｓ３２５のＹＥＳ）、一時記憶ｒｃｌに一時記憶ｔｂｌから条件を抽出したレコードのリストを展開する（Ｓ３２６）。抽出条件は、ｉｄ＞ｉｍｐ側最終同期日時ＡＮＤｍｉｄが自ｍｉｄとし、ｉｄがｉｍｐ側最終同期日時を有する自ｍｉｄのレコードを抽出する。一時記憶ｒｃｌにデータがあるか否かを判断し（Ｓ３２７）、一時記憶ｒｃｌにデータがあれば（Ｓ３２７のＹＥＳ）、データベースの更新要求を行なう（Ｓ３２８）。更新要求の後、または一時記憶ｒｃｌにデータが無い場合（Ｓ３２７のＮＯ）、一時記憶ｔｂｌの先頭要素を削除し（Ｓ３２９）、Ｓ３２５に戻る。
【０２１４】
一時記憶ｔｂｌにデータがなければ（Ｓ３２５のＮＯ）、一時記憶ｄｂｌの先頭要素を削除し（Ｓ３３０）、Ｓ３２３に戻る。
【０２１５】
図４１は、既述のシーケンス（図３７）のｌｏｏｐ２の処理手順を示している。
【０２１６】
この処理手順の開始により、データベースの取得要求を行ない（Ｓ３４１）、データベースの結果送信を行う（Ｓ３４２）。ｕｍｉｄがあるか否かを判断し（Ｓ３４３）、ｕｍｉｄがなければ（Ｓ３４３のＮＯ）、この処理を終了する。
【０２１７】
ｕｍｉｄがあれば（Ｓ３４３のＹＥＳ）、一時記憶ｉｄｂｌに取得したデータベースのリストを展開し（Ｓ３４４）、一時記憶ｉｄｂｌにデータがあるか否かを判定する（Ｓ３４５）。一時記憶ｉｄｂｌにデータがなければ（Ｓ３４５のＮＯ）、この処理を終了する。
【０２１８】
一時記憶ｉｄｂｌにデータがあれば（Ｓ３４５のＹＥＳ）、一時記憶ｉｔｂｌ２に一時記憶ｉｄｂｌの先頭データベースのテーブルのリストを展開する（Ｓ３４６）。一時記憶ｉｔｂｌ２にデータがあるか否かを判断し（Ｓ３４７）、データがあれば（Ｓ３４７のＹＥＳ）、一時記憶ｉｒｃｌに一時記憶ｉｔｂｌ２から条件を抽出したレコードのリストを展開する（Ｓ３４８）。抽出条件は、ｉｄ＞ｉｍｐ側のｍｉｄ最終同期日時ＡＮＤｍｉｄがｕｍｉｄのいずれかを含むとする。一時記憶ｉｒｃｌにデータがあるか否かを判断し（Ｓ３４９）、一時記憶ｉｒｃｌにデータがあれば（Ｓ３４９のＹＥＳ）、データベースの更新および衝突回避処理（ｉｒｃｌ）を行なう（Ｓ３５０）。データベースの更新および衝突回避の処理、または一時記憶ｉｒｃｌにデータが無い場合（Ｓ３４９のＮＯ）、一時記憶ｉｔｂｌ２の先頭要素を削除し（Ｓ３５１）、Ｓ３４７に戻る。
【０２１９】
一時記憶ｉｔｂｌ２にデータがなければ（Ｓ３４７のＮＯ）、一時記憶ｉｄｂｌの先頭要素を削除し（Ｓ３５２）、Ｓ３４５に戻る。
【０２２０】
このようにしてｉｄ＞ｉｍｐ側のｍｉｄ最終同期日時であって、ｍｉｄがｕｍｉｄのいずれかを含むデータの更新を行なう。
【０２２１】
＜データベースの更新およびデータの衝突回避＞
【０２２２】
図４２はデータベース更新とデータ衝突の回避処理の処理手順を示している。
【０２２３】
この処理手順では、開始により、一時記憶ｉｒｃｌに引数で受け取ったレコードのリストを展開する（Ｓ３６１）。この場合引数は、データベース名、テーブル名、更新レコードリストである。
【０２２４】
一時記憶ｉｒｃｌがあるか否かを判断する（Ｓ３６２）。一時記憶ｉｒｃｌがなければ（Ｓ３６２のＮＯ）、この処理を終了する。一時記憶ｉｒｃｌがあれば（Ｓ３６２のＹＥＳ）、一時記憶ｉｒｃに一時記憶ｉｒｃｌの先頭を展開する（Ｓ３６３）。
【０２２５】
一時記憶ｒｃにデータベースのデータテーブルからｉｒｃ−＞ｉｄを抽出する（Ｓ３６４）。ｒｃにデータがあるか否かを判断し（Ｓ３６５）、ｒｃにデータがあれば（Ｓ３６５のＹＥＳ）、ｉｒｃ−＞ｉｄ←ｉｒｃ−＞ｉｄ＋１の処理を実行し（Ｓ３６６）、ｉｒｃ−＞ｉｄの値を１大きくし、Ｓ３６４に戻る。ｒｃのデータがなくなるまでＳ３６４〜Ｓ３６６の処理を継続的に行う。
【０２２６】
一時記憶ｒｃにデータがなければ（Ｓ３６５のＮＯ）、データベースのテーブルに一時記憶ｉｒｃを展開し（Ｓ３６７）、一時記憶ｉｒｃｌの先頭要素を削除し（Ｓ３６８）、Ｓ３６２に戻る。ｉｒｃ−＞ｉｄは一時記憶ｒｃにはない値（データ）に設定されるので、ｉｒｃ−＞ｉｄがユニークなｉｄに設定される。
【０２２７】
＜ホスト１側の処理手順およびデータベースのレコード変化＞
【０２２８】
図４３、図４４、図４５および図４６はホスト１のレプリケーションの処理手順を示している。この処理手順は図４２と同様であり、動作ステップを太線で示している。
【０２２９】
この処理手順では、データベースのテーブルに示すように、処理手順の開始により、一時記憶ｉｒｃｌにホスト２のレコードのリストを展開する（Ｓ３６１）。
【０２３０】
一時記憶ｉｒｃｌがあるか否かを判断する（Ｓ３６２）。この場合、一時記憶ｉｒｃｌがあるので（Ｓ３６２のＹＥＳ）、一時記憶ｉｒｃに一時記憶ｉｒｃｌの先頭を展開する（Ｓ３６３）。
【０２３１】
一時記憶ｒｃにデータベースのデータテーブルからｉｒｃ−＞ｉｄを抽出し（Ｓ３６４）、ｒｃにデータがあるか否かを判断する（Ｓ３６５）。この場合、一時記憶ｒｃにデータがないので（Ｓ３６５のＮＯ）、データベースのテーブルに一時記憶ｉｒｃを展開する（Ｓ３６７）。そして、一時記憶ｉｒｃｌの先頭要素を削除し（Ｓ３６８）、図４４のＳ３６２に遷移する。Ｓ３６２では一時記憶ｉｒｃｌがあるか否かを判断する（Ｓ３６２）。
【０２３２】
この場合、一時記憶ｉｒｃｌがあるので（Ｓ３６２のＹＥＳ）、一時記憶ｉｒｃに一時記憶ｉｒｃｌの先頭を展開する（Ｓ３６３）。
【０２３３】
一時記憶ｒｃにデータベースのデータテーブルからｉｒｃ−＞ｉｄを抽出する（Ｓ３６４）。一時記憶ｒｃにデータがあるか否かを判断する（Ｓ３６５）。この場合、一時記憶ｒｃにデータがあるので（Ｓ３６５のＹＥＳ）、ｉｒｃ−＞ｉｄ←ｉｒｃ−＞ｉｄ＋１の処理を実行し（Ｓ３６６）、図４５のＳ３６４に遷移する。
【０２３４】
図４５のＳ３６４では一時記憶ｒｃにデータベースのデータテーブルからｉｒｃ−＞ｉｄを抽出し（Ｓ３６４）、一時記憶ｒｃにデータがあるか否かを判断する（Ｓ３６５）。この場合、一時記憶ｒｃにデータがないので（Ｓ３６５のＮＯ）、データベースのテーブルに一時記憶ｉｒｃを展開する（Ｓ３６７）。一時記憶ｉｒｃｌの先頭要素を削除し（Ｓ３６８）、図４６のＳ３６２に遷移する。
【０２３５】
図４６のＳ３６２では、一時記憶ｉｒｃｌがあるか否かを判断する（Ｓ３６２）。この場合、一時記憶ｉｒｃｌがないので（Ｓ３６２のＮＯ）、この処理を終了する。
【０２３６】
＜ネットワーク・インタフェースのリスト＞
【０２３７】
図４７はネットワーク・インタフェースのリスト、ネットワーク・インタフェースの構成、接続状態を示す一時記憶ｎｉのデータ構造を示している。
【０２３８】
レプリケータ・ホスト検出機能（図３６）ではネットワーク・インタフェースのリストが用いられる。このリストはネットワークに対応するポートであり、一時記憶ｎｉが用いられる。この一時記憶ｎｉは、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｎｉには、ホスト装置が持つネットワーク・インタフェースのうち、接続状態のネットワーク・インタフェースを表す名前、ネットワーク・インタフェース名が保存される。
【０２３９】
図４７のＡは一時記憶ｎｉの構成例を示している。この一時記憶ｎｉには、ネットワーク・インタフェース名１、ネットワーク・インタフェース名２、ネットワーク・インタフェース名３・・・が格納されている。
【０２４０】
図４７のＢはホスト装置のネットワーク・インタフェースの一例を示している。
【０２４１】
ホスト装置（ホスト）４０には、無線ＬＡＮ３０により他の機器１１４が無線により接続されている（ワイヤレスネットワーク接続）。また、ホスト装置４０には有線ＬＡＮ（ＬＡＮ１）２２−１によりインターネット２０に接続されている（ローカルエリア接続１）。ホスト装置４０の有線ＬＡＮ（ＬＡＮ２）２２−２は未接続である。つまり、ローカルエリア接続２側は未接続状態にある。
【０２４２】
図４８は、ネットワーク・インタフェースの接続状態を示す一時記憶ｎｉのデータ構造を示している。
【０２４３】
有線ＬＡＮ２２−１および無線ＬＡＮ３０が接続状態であれば、図４８のＡに示すように、一時記憶ｎｉには“ローカルエリア接続１”および“ワイヤレスネットワーク接続”が格納される。
【０２４４】
また、有線ＬＡＮ２２−１、２２−２および無線ＬＡＮ３０が接続状態であれば、図４８のＢに示すように、一時記憶ｎｉには“ローカルエリア接続１”、“ローカルエリア接続２”および“ワイヤレスネットワーク接続”が格納される。
【０２４５】
また、全てのネットワーク・インタフェースが非接続状態であれば、一時記憶ｎｉの内容は空となる。
【０２４６】
＜一時記憶ｓｖ：一時記憶ｎｉのインタフェースで登録済みホストのリスト＞
【０２４７】
図４９は、一時記憶ｓｖの構成例、ネットワーク・インタフェースの構成、接続状態を示す一時記憶ｓｖのデータ構造を示している。
【０２４８】
一時記憶ｓｖ（図３３）は、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｓｖには、ホスト装置４０の指定されたネットワーク・インタフェースに接続された記録があるホスト名およびＭＡＣ（Media Access Control）アドレスが保存される。ＭＡＣアドレスは、ネットワーク機器のハードウェアに割り当てられる物理アドレスで、その表現形式は４８ビット符号である。
【０２４９】
図４９のＡに示す一時記憶ｓｖには、“ホスト名１”、“ホスト名２”、“ホスト名３”・・・に対応する“ＭＡＣアドレス１”、“ＭＡＣアドレス２”、“ＭＡＣアドレス３”・・・が格納されている。
【０２５０】
図４９のＢは、ホスト装置４０と複数のクライアントの接続例を示している。ホスト装置４０にクライアント（ｈｏｓｔ０１）１１６−１とクライアント（ｈｏｓｔ０２）１１６−２が無線ＬＡＮ３０により接続されている（ワイヤレスネットワーク接続）。ホスト装置４０には既述の有線ＬＡＮ（有線ＬＡＮ１）２２−１と有線ＬＡＮ（有線ＬＡＮ２）２２−２とが設けられている。有線ＬＡＮ（有線ＬＡＮ１）２２−１にはインターネット２０およびクライアント（ｈｏｓｔ０３）１１６−３が接続されている（ローカルエリア接続１）。また、有線ＬＡＮ（有線ＬＡＮ２）２２−２にはクライアント（ｈｏｓｔ０４）１１６−４およびクライアント（ｈｏｓｔ０５）１１６−５が接続されている（ローカルエリア接続２）。
【０２５１】
図５０は、ＬＡＮ接続を表す一時記憶ｓｖのデータ構造を示している。図５０のＡは“ワイヤレスネットワーク接続”の指定時であり、一時記憶ｓｖには“ｈｏｓｔ０１”に対して“１１１１１１１１１１１１”、“ｈｏｓｔ０２”に対して“２２２２２２２２２２２２”が格納されている。
【０２５２】
図５０のＢは“ローカルエリア接続１”の指定時であり、一時記憶ｓｖには“ｈｏｓｔ０３”に対して“３３３３３３３３３３３３”が格納されている。
【０２５３】
図５０のＣは“ローカルエリア接続２”の指定時であり、一時記憶ｓｖには“ｈｏｓｔ０４”に対して“４４４４４４４４４４４４”、“ｈｏｓｔ０５”に対して“５５５５５５５５５５５５”が格納されている。
【０２５４】
＜一時記憶ｄｉｆ：一時記憶ｎｉの一時記憶ｎｉｂａｋの要素を除いたリスト＞
【０２５５】
図５１は、一時記憶ｄｉｆ（図３４）の構成例およびネットワーク構成の変化を示している。一時記憶ｄｉｆは、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｄｉｆには、ホスト装置４０が持つネットワーク・インタフェースのうち、前回から今回にかけて接続状態に変化したネットワーク・インタフェース名が保存される。
【０２５６】
図５１のＡに示す一時記憶ｄｉｆは、複数のネットワーク・インタフェース名として“ネットワーク・インタフェース名１”、“ネットワーク・インタフェース名２”、“ネットワーク・インタフェース名３”・・・を格納している。
【０２５７】
図５１のＢは変化前（前回の状態）のネットワーク構成を示している。この変化前の構成では、ホスト装置４０の無線ＬＡＮ３０は非接続であり、ワイヤレスネットワーク接続はない。ホスト装置４０の有線ＬＡＮ（有線ＬＡＮ１）２２−１にはインターネット２０のみが接続されている。つまり、ローカルエリア接続１にはネットワークが接続されている。有線ＬＡＮ（有線ＬＡＮ２）２２−２は未接続であり、ローカルエリア接続２はオープン状態である。
【０２５８】
これに対し、図５１のＣは変化後（現在の状態）のネットワーク構成を示している。変化後の構成では、他の機器１１４が無線ＬＡＮ３０により接続されている（ワイヤレスネットワーク接続）。ホスト装置４０には既述の有線ＬＡＮ（有線ＬＡＮ１）２２−１によりインターネット２０が接続されている（ローカルエリア接続１）。有線ＬＡＮ（有線ＬＡＮ２）２２−２は前回同様に未接続であり、ローカルエリア接続２は非接続状態である。
【０２５９】
図５２は現在の一時記憶ｎｉｂａｋ、ｎｉ、ｄｉｆの各内容を示している。
【０２６０】
図５２のＡに示す一時記憶ｎｉｂａｋは現在、“ローカルエリア接続１”となっている。
【０２６１】
図５２のＢに示す一時記憶ｎｉは現在、“ローカルエリア接続１”および“ワイヤレスネットワーク接続”となっている。
【０２６２】
図５２のＣに示す一時記憶ｄｉｆは現在、“ワイヤレスネットワーク接続”となっている。
【０２６３】
＜一時記憶ｄｓｃｖｒ（一時記憶ｎｉで応答したホストのリスト）＞
【０２６４】
図５３は、一時記憶ｄｓｃｖｒのデータ構造、接続状態を示している。一時記憶ｄｓｃｖｒは、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｄｓｃｖｒには、ホスト装置４０の指定されたネットワーク・インタフェースで発見されたホストを表すホスト名とＭＡＣアドレスが保存される。
【０２６５】
図５３のＡに示す一時記憶ｄｓｃｖｒでは、複数のホスト名として“ホスト名１”、“ホスト名２”、“ホスト名３”・・・とともに、“ＭＡＣアドレス１”、“ＭＡＣアドレス２”、“ＭＡＣアドレス３”・・・が格納されている。
【０２６６】
図５３のＢはワイヤレスネットワーク接続が未接続から接続への変化例を示している。図５１のＢに示す状態（ワイヤレスネットワーク接続＝未接続）から図５３のＢに示すように、ホスト装置４０の無線ＬＡＮ３０側にクライアント（ｈｏｓｔ０１）１１６−１が接続されている（ワイヤレスネットワーク接続）。
【０２６７】
図５３のＣは、この場合の一時記憶ｄｓｃｖｒの内容を示している。一時記憶ｄｓｃｖｒには、接続状態を表す“ｈｏｓｔ０１”とともに“１１１１１１１１１１１１”が格納されている。
【０２６８】
＜一時記憶ｃｕｒ：同期管理テーブルのレコードのリスト＞
【０２６９】
図５４は一時記憶ｃｕｒのデータ構造および複写動作を示している。
【０２７０】
一時記憶ｃｕｒは、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｃｕｒのコピー元にあたる同期管理テーブル７２はホスト装置４０のデータベース上に保存されている。
【０２７１】
図５４のＡは一時記憶ｃｕｒのデータ構造を示している。この一時記憶ｃｕｒでは、“ｍｉｄ１”、“ｍｉｄ２”、“ｍｉｄ３”・・・とともに、“最終更新日時１”、“最終更新日時２”、“最終更新日時３”・・・が保存されている。
【０２７２】
図５４のＢは、一時記憶ｃｕｒのコピー動作および内容例を示している。同期管理テーブル７２にはｍｉｄの番号とともに、日時情報が保存されている。したがって、これをコピーした一時記憶ｃｕｒには同様にｍｉｄの番号とともに、日時情報が保存される。
【０２７３】
＜一時記憶ｉｔｂｌ（取得した同期管理テーブル）＞
【０２７４】
図５５は、一時記憶ｉｔｂｌの構成例および内容を示している。一時記憶ｉｔｂｌは、データベース上に保存されるか、またはメインメモリ上に配置され、リスト構造を持っている。この一時記憶ｉｔｂｌは同期対象装置の同期管理テーブル７２であり、同期対象装置のデータベース上に保存されている。
【０２７５】
図５５のＡに示す一時記憶ｉｔｂｌでは“ｍｉｄ１”、“ｍｉｄ２”、“ｍｉｄ３”・・・とともに、“最終更新日時１”、“最終更新日時２”、“最終更新日時３”・・・が保存されている。
【０２７６】
図５５のＢに示す一時記憶ｉｔｂｌの内容ではｍｉｄの番号とともに、具体的な更新日時が保存されている。
【０２７７】
＜一時記憶ｉｍｐ：一時記憶ｉｔｂｌのレコードのリスト＞
【０２７８】
図５６は一時記憶ｉｍｐの構成および内容を示している。一時記憶ｉｍｐは、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｉｍｐは作業用の変数（リスト）であり、初期化時に一時記憶ｉｔｂｌの内容がコピーされ、先頭要素から順番に利用される。
【０２７９】
図５６のＡに示す一時記憶ｉｍｐでは“ｍｉｄ１”、“ｍｉｄ２”、“ｍｉｄ３”・・・とともに、“最終更新日時１”、“最終更新日時２”、“最終更新日時３”・・・が保存されている。
【０２８０】
図５６のＢは、一時記憶ｉｍｐのコピー動作および内容例を示している。一時記憶ｉｔｂｌにはｍｉｄの番号とともに、日時情報が保存されている。したがって、これをコピーした一時記憶ｉｍｐには、同様にｍｉｄの番号とともに、日時情報が保存される。
【０２８１】
＜一時記憶ｄｂｌの構成＞
【０２８２】
図５７は一時記憶ｄｂｌの構成例、データベースの構成、一時記憶ｄｂｌのデータ構造を示している。
【０２８３】
一時記憶ｄｂｌは、通常メインメモリ上に配置される一時記憶で、リスト構造を持つ。この一時記憶ｄｂｌにはホスト装置４０のデータベースに含まれるデータベース名が保存される。
【０２８４】
図５７のＡに示す一時記憶ｄｂｌには、“データベース名１”、“データベース名２”、“データベース名３”・・・が格納されている。
【０２８５】
図５７のＢに示すホスト装置４０のデータベースは、３個のアプリ用のデータベース１１８−１、１１８−２、１１８−３と同期管理用データベース１２０を持ち、それぞれ  “ａｐｐｌ１＿ｄｂ" （アプリ１用データベース）、“ａｐｐｌ２＿ｄｂ" （アプリ２用データベース）、“ａｐｐｌ３＿ｄｂ" （アプリ３用データベース）、“ｓｙｎｃｍｇｒ＿ｄｂ" （同期管理用データベース）という名前を有する。
【０２８６】
これに対応し、図５７のＣに示す一時記憶ｄｂｌには“ａｐｐｌ１＿ｄｂ" 、“ａｐｐｌ２＿ｄｂ" 、“ａｐｐｌ３＿ｄｂ" が格納されている。
【０２８７】
＜一次記憶ｔｂｌ：一次記憶ｄｂｌの先頭データベースのテーブルのリスト＞
【０２８８】
図５８は、一次記憶ｔｂｌの構成、ホスト装置のデータテーブルの構成例を示している。
【０２８９】
一次記憶ｔｂｌは、メインメモリ上に配置され、リスト構造を持っている。この一次記憶ｔｂｌにはホスト装置のデータベース名で指定されたデータベースに含まれるテーブル名が保存される。
【０２９０】
図５８のＡに示す一次記憶ｔｂｌでは、“テーブル名１”、“テーブル名２”、“テーブル名３”・・・が保存されている。
【０２９１】
この場合、図５８のＢに示すホスト同士のデータベースのテーブル構成ではアプリ１用データベース（ａｐｐｌ１＿ｄｂ）には２つのテーブル（ａａａ＿ｔｂｌ）と、テーブル（ｂｂｂ＿ｔｂｌ）を備えている。アプリ２用データベース（ａｐｐｌ２＿ｄｂ）は内部に２つのテーブル（ｃｃｃ＿ｔｂｌ）と、テーブル（ｄｄｄ＿ｔｂｌ）を備えている。アプリ３用データベース（ａｐｐｌ３＿ｄｂ）は内部に２つのテーブル（ｅｅｅ＿ｔｂｌ）とテーブル（ｆｆｆ＿ｔｂｌ）を備えている。そして、同期管理用データベース（ｓｙｎｃｍｇｒ＿ｄｂ）はテーブル（ｓｙｎｃｍｇｒ＿ｔｂｌ）を備えている。
【０２９２】
図５９は、一次記憶ｔｂｌの初期化およびその内容を示している。図５９のＡは一次記憶ｔｂｌの初期化動作と内容の例１であり、一次記憶ｄｂｌが初期動作でテーブル名“ａｐｐｌ１＿ｄｂ”、“ａｐｐｌ２＿ｄｂ”“ａｐｐｌ３＿ｄｂ”を備えている。これに対し、一時記憶ｔｂｌでは、先頭のデータベースのテーブル名をコピーし、テーブル名が“ａａａ＿ｔｂｌ”、“ｂｂｂ＿ｔｂｌ”になる。
【０２９３】
図５９のＢは一次記憶ｔｂｌの初期化動作と内容の例２であり、一次記憶ｄｂｌが初期動作でテーブル名“ａｐｐｌ２＿ｄｂ”、“ａｐｐｌ３＿ｄｂ”を備えている。これに対し、一時記憶ｔｂｌでは、先頭のデータベースのテーブル名をコピーし、テーブル名が“ｃｃｃ＿ｔｂｌ”、“ｄｄｄ＿ｔｂｌ”になる。
【０２９４】
図５９のＣは一次記憶ｔｂｌの初期化動作と内容の例３であり、一次記憶ｄｂｌが初期動作でテーブル名“ａｐｐｌ３＿ｄｂ”を備えている。これに対し、一時記憶ｔｂｌでは、先頭のデータベースのテーブル名をコピーし、テーブル名が“ｅｅｅ＿ｔｂｌ”、“ｆｆｆ＿ｔｂｌ”になる。
【０２９５】
＜一次記憶ｒｃｌ：一次記憶ｔｂｌから条件抽出したレコードのリスト＞
【０２９６】
図６０は、一次記憶ｒｃｌの構成例およびレコードの構成を示している。
【０２９７】
一次記憶ｒｃｌは、メインメモリ上に配置され、リスト構造を持っている。この一次記憶ｒｃｌには、指定されたテーブルに含まれるレコードからの抽出結果が保存される。
【０２９８】
図６０のＡに示す一次記憶ｒｃｌの構成例では、レコード１、レコード２、レコード３・・・が保存されている。
【０２９９】
図６０のＢは各レコードの構成例を示している。各レコードは、ｉｄ、ｍｉｄおよびｄａｔａで構成されている。
【０３００】
図６１は一次記憶ｔｂｌおよび一時記憶ｒｃｌの内容を示している。図６１のＡに示す一次記憶ｔｂｌでは、時刻情報を含むデータ構造を備えている。
【０３０１】
図６１のＢに示す一次記憶ｒｃｌは時刻情報を含むデータ構造を備えている。これは、２０１１／０５／０１  ０９：００：００は最終同期時刻であり、自ｍｉｄ＝ｍｉｄ１の場合に、図６１のＡに示す一時記憶ｔｂｌから条件抽出して得られる。
【０３０２】
＜一時記憶ｉｄｂｌ（取得したデータベースのリスト）と一時記憶ｉｔｂｌ２（一時記憶ｉｔｂｌ：取得した一時記憶ｉｄｂｌの先頭のテーブルのリスト）の関係を表すリスト＞
【０３０３】
図６２は、一時記憶ｉｄｂｌの構成、ホストのデータベースの構成および一時記憶ｉｄｂｌの内容を示している。一時記憶ｉｄｂｌは、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｉｄｂｌにはデータベース名が保存される。
【０３０４】
図６２のＡに示す一時記憶ｉｄｂｌでは“データベース名１”、“データベース名２”、“データベース名３”・・・が保存されている。
【０３０５】
図６２のＢに示す同期対象装置のデータベースの構成例では、同期対象装置に３つアプリ用のデータベースと一つの同期管理用データベースを持っている。“ａｐｐｌ１＿ｄｂ" はアプリ１用データベース名、“ａｐｐｌ２＿ｄｂ" はアプリ２用データベース名、“ａｐｐｌ３＿ｄｂ" はアプリ３用データベース名を表している。また、“ｓｙｎｃｍｇｒ＿ｄｂ" は同期管理用データベース名を表している。
【０３０６】
これに対応し、図６２のＣに示す一時記憶ｉｄｂｌでは、“ａｐｐｌ１＿ｄｂ”、“ａｐｐｌ２＿ｄｂ”、“ａｐｐｌ３＿ｄｂ”・・・が保存されている。
【０３０７】
図６３は、一時記憶ｉｔｂｌ２の構成およびデータベースのテーブル構成を示している。一時記憶ｉｔｂｌ２はメインメモリ上に配置され、リスト構造を持っている。この一時記憶ｉｔｂｌ２には同期対象装置のデータベース名で指定されたデータベースに含まれるテーブル名が保存される。
【０３０８】
図６３のＡに示す一時記憶ｉｔｂｌ２では“データベース名１”、“データベース名２”、“データベース名３”・・・が保存されている。
【０３０９】
図６３のＢに示す同期対象装置のデータベースの構成例では、“ａｐｐｌ１＿ｄｂ" （アプリ１用データベース）は内部に２つのテーブル“ａａａ＿ｔｂｌ”、“、ｂｂｂ＿ｔｂｌ”を持っている。“ａｐｐｌ２＿ｄｂ" （アプリ２用データベース）は内部に２つのテーブル“ｃｃｃ＿ｔｂｌ”、“ｄｄｄ＿ｔｂｌ”を持っている。“ａｐｐｌ３＿ｄｂ" （アプリ３用データベース）は内部に２つのテーブル“ｅｅｅ＿ｔｂｌ”、“ｆｆｆ＿ｔｂｌ”を持っている。
【０３１０】
図６４は一時記憶ｉｔｂｌ２の初期化および内容を示している。図６４のＡに示す一次記憶ｉｄｂｌは初期動作でデータベース名“ａｐｐｌ１＿ｄｂ”、“ａｐｐｌ２＿ｄｂ”“ａｐｐｌ３＿ｄｂ”を備えている。これに対し、一時記憶ｉｔｂｌ２では、先頭のデータベースのテーブル名をコピーし、テーブル名が“ａａａ＿ｔｂｌ”、“ｂｂｂ＿ｔｂｌ”になる。
【０３１１】
図６４のＢは一次記憶ｉｔｂｌ２の初期化動作と内容の例２であり、一次記憶ｉｄｂｌが初期動作でデータベース名“ａｐｐｌ２＿ｄｂ”、“ａｐｐｌ３＿ｄｂ”を備えている。これに対し、一次記憶ｉｔｂｌ２では、先頭のデータベースのテーブル名をコピーし、テーブル名が“ｃｃｃ＿ｔｂｌ”、“ｄｄｄ＿ｔｂｌ”になる。
【０３１２】
図６４のＣは一次記憶ｉｔｂｌ２の初期化動作と内容の例３であり、一次記憶ｉｄｂｌが初期動作でデータベース名“ａｐｐｌ３＿ｄｂ”を備えている。これに対し、一次記憶ｉｔｂｌ２では、先頭のデータベースのテーブル名をコピーし、テーブル名が“ｅｅｅ＿ｔｂｌ”、“ｆｆｆ＿ｔｂｌ”になる。
【０３１３】
＜一時記憶ｉｒｃｌ：取得したｉｔｂｌ２から条件抽出したレコード＞
【０３１４】
図６５は一時記憶ｉｒｃｌの構成、レコード構成を示している。
【０３１５】
一時記憶ｉｒｃｌは、メインメモリ上に配置され、リスト構造を持っている。この一時記憶ｉｒｃｌには指定されたテーブルに含まれるレコードからの抽出結果が保存される。
【０３１６】
図６５のＡに示す一時記憶ｉｒｃｌには、“レコード１”、“レコード２”、“レコード３”・・・が保存されている。
【０３１７】
図６５のＢに示すレコード構成では、“ｉｄ”、“ｍｉｄ”、“ｄａｔａ”を備えている。
【０３１８】
図６６は一時記憶ｉｔｂｌ２および一時記憶ｉｒｃｌの内容を示している。図６６のＡに示す一時記憶ｉｔｂｌ２には日時情報やデータ内容が格納されている。
【０３１９】
図６６のＢに示す一時記憶ｉｒｃｌには日時情報やデータ内容が格納されている。これは、２０１１／０５／０１  ０９：００：００が最終同期日時であり、同期先ｍｉｄ＝ｍｉｄ２の場合に、図６６のＡに示すｉｔｂｌ２から条件抽出して得られる。
【０３２０】
＜インタフェース別登録ホスト＞
【０３２１】
図６７はインタフェース別登録ホストの構成例、レコードの構成例および内容を示している。
【０３２２】
インタフェース別登録ホストは、通常データベース上に保存されるデータベースでありテーブル・レコード構造を持っている。
【０３２３】
図６７のＡはインタフェース別登録ホストの構成を示している。インタフェース別登録ホストには“レコード１”、“レコード２”、“レコード３”・・・を備えている。
【０３２４】
図６７のＢはインタフェース別登録ホストのレコードの構成を示している。このインタフェース別登録ホストでは、インタフェース、ホスト名１、ＭＡＣアドレス１を備えている。
【０３２５】
図６７のＣは既述の図４９および図５０の例を元にしたインタフェース別登録ホストの内容を示している。
【０３２６】
このインタフェース別登録ホスト・・には、“ワイヤレスネットワーク接続”に対して“ｈｏｓｔ０１”および“ｈｏｓｔ０２”が存在し、“ｈｏｓｔ０１”は“１１１１１１１１１１１１”、“ｈｏｓｔ０２”は“２２２２２２２２２２２２”である。
【０３２７】
また、“ｈｏｓｔ０３”、“ｈｏｓｔ０４”および“ｈｏｓｔ０５”が存在し、“ｈｏｓｔ０３”は“ローカルエリア接続１”、“ｈｏｓｔ０４”および“ｈｏｓｔ０５”は“ローカルエリア接続２”を構成している。各“ｈｏｓｔ０３”の内容は“３３３３３３３３３３３３”であり、“ｈｏｓｔ０４”の内容は“４４４４４４４４４４４４”であり、また、“ｈｏｓｔ０５”の内容は“５５５５５５５５５５５５”である。
【０３２８】
＜他の装置の間でｍｉｄを一致させるメカニズム＞
【０３２９】
(1) 汎用一意識別子（ＵＵＩＤ）方式（内部・外部共通）
【０３３０】
レプリケーション機能を搭載する機器の初期設定時に汎用一意識別子（ＵＵＩＤ）を生成し、これを当該機器のｍｉｄとする方法がある。各機器の内部利用、外部への通信ともＵＵＩＤを利用する。１６バイト（１２８ビット）の数値で表現され、他の機器と重複しないことが期待できる。
【０３３１】
汎用一意識別子（Universally Unique Identifier ：ＵＵＩＤ）とは、ＤＣＥ（Distributed Computing Environment ）の一部としてＯＳＦ（Open Software Foundation）が標準化した一意に識別するための識別子である。ＵＵＩＤは、分散システム上でどこかが統制を取らずとも、一意に特定可能な識別子の作成を目的としている。このＵＵＩＤは重複や偶然の一致が起こりえないと確信して用いることができる。なお、ＵＵＩＤの実装として最も広く使われているのは、グローバル一意識別子（Globally Unique Identifier：ＧＵＩＤ：マイクロソフト）である。
【０３３２】
ＵＵＩＤは１６バイトの数値で表され、「５５０ｅ８４００−ｅ２９ｂ−４１ｄ４−ａ７１６−４４６６５５４４００００」のように表現する。よく利用されるのは乱数に基づくＵＵＩＤ（ＵＵＩＤ  version ４）で、この形式のＵＵＩＤは２１２２通り（およそ５．３×１０３６通り）存在する。
【０３３３】
ＵＵＩＤはＩＳＯ／ＩＥＣ  １１５７８：１９９６  Information technology−−Open Systems Interconnection−−Remote Procedure Call ：ＲＰＣ）の一部として文書化されている。なお、ＩＥＴＦはＵＵＩＤに関してＲＦＣ４１２２を公開している。
【０３３４】
(2) 汎用一意識別子（ＵＵＩＤ）方式（内部コード変換方式）
【０３３５】
本機能を搭載する機器の初期設定時にＵＵＩＤを生成して、装置間で情報交換する際はこのＵＵＩＤを利用し、機器の内部では例えば、３２ビットで表現する内部コードに変換する。
【０３３６】
図６８はＵＵＩＤ・内部コード変換方式の構成を示している。ホスト装置（ホスト１）４０−１およびホスト装置（ホスト２）４０−２の内部コードを３２ビットとし、これらホスト４０−１、４０−２間では１２８ビットの交換用符号としてＵＵＩＤを生成し、ＬＡＮにより内部コードを変換する。
【０３３７】
＜レプリケーションの例＞
【０３３８】
このようなレコードのレプリケーションはたとえば、図６９に示す複数の情報処理端末間のメッセージデータの送受信に利用可能である。図６９に示す同期制御システム２では一例として利用者Ｐ１が持つ情報処理端末４−１、利用者Ｐ２が持つ情報処理端末４−２、利用者Ｐ３が持つ情報処理端末４−３がネットワーク６によって接続されている。情報処理端末４−１にはレコード１１２−１があり、情報処理端末４−２にはレコード１１２−２があり、情報処理端末４−３にはレコード１１２−３があるとする。これらレコード１１２−１、１１２−２、１１２−３は更新時刻を識別情報とし、この識別情報を構成する更新時刻が一致している場合を想定する。
【０３３９】
この場合、情報処理端末４−１が情報処理端末４−２、４−３と接続によって同期され、レプリケーションを実行したとする。更新時刻が一致しているレコード１１２−２、１１２−３は、衝突回避処理の更新時刻がインクリメントにより変更され、ユニークな識別情報に変更される。この結果、情報処理端末４−１は情報処理端末４−２からレコード１１２−２、情報処理端末４−３からレコード１１２−３を取得し、異なる更新時刻からなる識別情報により識別されて保存される。
【０３４０】
このような構成によれば、各利用者Ｐ１、Ｐ２、Ｐ３が個別にメッセージを送り、応答メッセージを受信することができる。たとえば、利用者Ｐ１、Ｐ２、Ｐ３間でのテキストデータなど、メッセージ送受信に利用可能であり、厳密な日時は必要ではないが、大体の時刻がわかればよいなどの状況でのレコードのレプリケーションに利用できる。
【０３４１】
〔第２の実施の形態の特徴または効果〕
【０３４２】
(1) 各機器のレコードの主キーとして更新時刻を設定し、データの複写（レプリケーション）時に、その更新時刻が衝突していた場合は、相手から提供されるデータの更新時刻をインクリメントして自分のデータとして複写し、相手の機器が自分のデータを複写して保持する場合は、相手の機器が提供されたデータの更新時刻をインクリメントして保持することによって、各々のデータベース上のデータを複写し合う。
【０３４３】
(2) この処理方法を採用すると、データの識別フィールドをプラスする必要がなくなり、結果としてデータの量を少なくでき、また、衝突データの識別のために時間データをずらすという簡単な手法の為、処理時間の短縮を図ることが可能となる。
【０３４４】
(3) これにより、携帯型機器のようなストレージの小さく、かつ、プロセッサ能力の小さな機器でも効率よくデータの複写をすることが可能となる。
【０３４５】
(4) データを更新した装置の識別子と、データの競合発生時の解決方法を指定する識別子を有する。接続先装置が自装置以外の他装置に関する最新のデータを保持している場合は、当該データで自装置のデータをアップデートする。更新時刻をレコードＩＤに用いて、他装置で同一時刻に同一レコードが更新された場合は、アプリケーションに影響を与えない時刻範囲内で更新時刻を変更することによりユニークなＩＤに変更し、データの整合性を確保している。
【０３４６】
(5) インターネット接続がないか、インターネットと切断された家庭内ネットワークにおいても、家庭内ネットワークに接続した複数の情報機器同士でデータやサービスを同期したり共用できる。特に、動的Ｗｅｂページの同期・共用という新機能を提供することができる。
【０３４７】
(6) 既述の“ｄａｔｅ”、“ｖａｌｕｅ”、“ｍｉｄ”列はテーブルの各行を完全に一意に識別できない場合にも、プライマリキーとして列を追加する必要は生じない。つまり、既述の整合性制約は生じない。この整合性制約はデータベースでのデータの整合性に関するものである。つまり、整合性制約は、データベースが備えねばならない整合性の条件を実現するものであり、特にデータそのものの性質に基づく整合性についてのものである。たとえば、ある関係モデルにおいて、ある属性が一意性を保っていなければならないという条件があるとすれば、それは整合性制約で実現される。これに対し、データベースのトランザクション制御などで並行処理を行なうことによって保たねばならないようなものは一貫性制約と呼ばれる。一意性制約、参照制約、検査制約などが整合性制約の一つである。
【０３４８】
(7) 既述の“ＯＲＤＥＲ  ＢＹ”で１つの列の指定で、並び順が安定した出力結果を得られる。つまり、従来のようなＯＲＤＥＲ  ＢＹで２つ以上の列を指定する必要はなく、ＳＱＬ実行の都度、出力結果の並び順が不定になる不都合は生じない。
【０３４９】
(8) 記憶容量やＳＱＬ実行時間を削減できる。つまり、列が増えること、およびＯＲＤＥＲ  ＢＹ列で２つ以上の列を指定する必要はなく、記憶容量を増加することなく、また、ＳＱＬ実行時間の増加はない。
【０３５０】
(9) ｄａｔｅフィールドの内容をユニーク化するので、プライマリキー列として利用できる。
【０３５１】
〔他の実施の形態〕
【０３５２】
上記実施の形態では、同期が可能な電子機器としてデスクトップＰＣ２６、ノートＰＣ３６、スマートフォン３４、タブレット端末３８を例示したが、データ記憶機能を備え、通信接続により同期が可能であれば、これらの機器に限定されない。ＰＤＡ（Personal Digital Assistant）、テレビ受像機、ゲーム機、カメラであってもよい。
【０３５３】
以上説明したように、本開示の情報処理装置、その同期制御プログラム、その同期制御方法および同期制御システムの最も好ましい実施の形態等について説明した。本発明は、上記記載に限定されるものではなく、特許請求の範囲に記載され、又は発明を実施するための形態に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能であることは勿論である。斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【符号の説明】
【０３５４】
２  同期制御システム
４−１、４−２、４−３  情報処理端末
６  ネットワーク
８  通信部
１０  メモリ
１２  プロセッサ
【図１】
2013088855.tif 000003
【図２】
2013088855.tif 000004
【図３】
2013088855.tif 000005
【図４】
2013088855.tif 000006
【図５】
2013088855.tif 000007
【図６】
2013088855.tif 000008
【図７】
2013088855.tif 000009
【図８】
2013088855.tif 000010
【図９】
2013088855.tif 000011
【図１０】
2013088855.tif 000012
【図１１】
2013088855.tif 000013
【図１２】
2013088855.tif 000014
【図１３】
2013088855.tif 000015
【図１４】
2013088855.tif 000016
【図１５】
2013088855.tif 000017
【図１６】
2013088855.tif 000018
【図１７】
2013088855.tif 000019
【図１８】
2013088855.tif 000020
【図１９】
2013088855.tif 000021
【図２０】
2013088855.tif 000022
【図２１】
2013088855.tif 000023
【図２２】
2013088855.tif 000024
【図２３】
2013088855.tif 000025
【図２４】
2013088855.tif 000026
【図２５】
2013088855.tif 000027
【図２６】
2013088855.tif 000028
【図２７】
2013088855.tif 000029
【図２８】
2013088855.tif 000030
【図２９】
2013088855.tif 000031
【図３０】
2013088855.tif 000032
【図３１】
2013088855.tif 000033
【図３２】
2013088855.tif 000034
【図３３】
2013088855.tif 000035
【図３４】
2013088855.tif 000036
【図３５】
2013088855.tif 000037
【図３６】
2013088855.tif 000038
【図３７】
2013088855.tif 000039
【図３８】
2013088855.tif 000040
【図３９】
2013088855.tif 000041
【図４０】
2013088855.tif 000042
【図４１】
2013088855.tif 000043
【図４２】
2013088855.tif 000044
【図４３】
2013088855.tif 000045
【図４４】
2013088855.tif 000046
【図４５】
2013088855.tif 000047
【図４６】
2013088855.tif 000048
【図４７】
2013088855.tif 000049
【図４８】
2013088855.tif 000050
【図４９】
2013088855.tif 000051
【図５０】
2013088855.tif 000052
【図５１】
2013088855.tif 000053
【図５２】
2013088855.tif 000054
【図５３】
2013088855.tif 000055
【図５４】
2013088855.tif 000056
【図５５】
2013088855.tif 000057
【図５６】
2013088855.tif 000058
【図５７】
2013088855.tif 000059
【図５８】
2013088855.tif 000060
【図５９】
2013088855.tif 000061
【図６０】
2013088855.tif 000062
【図６１】
2013088855.tif 000063
【図６２】
2013088855.tif 000064
【図６３】
2013088855.tif 000065
【図６４】
2013088855.tif 000066
【図６５】
2013088855.tif 000067
【図６６】
2013088855.tif 000068
【図６７】
2013088855.tif 000069
【図６８】
2013088855.tif 000070
【図６９】
2013088855.tif 000071