(57)【要約】インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現する第１のＷｅｂアプリケーションプログラムを実行することによりサービスを提供するサーバ（１１０）と、当該サービスを受けるクライアント（１００）とが接続されていない状態で、クライアント（１００）がＷｅｂアプリケーションを実現する第２のＷｅｂアプリケーションプログラムを実行し、第２のＷｅｂアプリケーションプログラムを実行した手順を記録し、その後、クライアント（１００）とサーバ（１１０）とが接続された際、記録した手順をサーバ（１１０）へ送信し、サーバ（１１０）が、クライアント（１００）から送信されてきた手順に従って第１のＷｅｂアプリケーションプログラムを実行する。
2010106832.tif 000002
【特許請求の範囲】
【請求項１】
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現する第１のＷｅｂアプリケーションプログラムを実行することにより前記サービスを提供するサーバと、該サーバが提供したサービスを受ける通信装置とから構成されたデータ同期システムにおいて、
前記通信装置は、前記Ｗｅｂアプリケーションを実現する第２のＷｅｂアプリケーションプログラムを有し、前記サーバと接続されていない状態で前記第２のＷｅｂアプリケーションプログラムを実行し、前記第２のＷｅｂアプリケーションプログラムを実行した手順を記録し、その後、前記サーバと接続された際、前記記録した手順を前記サーバへ送信し、
前記サーバは、前記通信装置から送信されてきた手順に従って前記第１のＷｅｂアプリケーションプログラムを実行することを特徴とするデータ同期システム。
【請求項２】
請求項１に記載のデータ同期システムにおいて、
前記通信装置は、ＷｅｂブラウザとＷｅｂサーバとを有し、前記サーバと接続されていない状態で前記Ｗｅｂブラウザからの要求に応じて前記Ｗｅｂサーバが前記第２のＷｅｂアプリケーションプログラムを実行し、該実行の際に前記Ｗｅｂサーバが前記第２のＷｅｂアプリケーションプログラムに与えたデータ列と該データ列の時間順序とを前記手順として記録し、その後、前記サーバと接続された際、前記記録したデータ列と該データ列の時間順序とを前記サーバへ送信し、
前記サーバは、前記通信装置から送信されてきたデータ列と該データ列の時間順序とに従って前記第１のＷｅｂアプリケーションプログラムを実行することを特徴とするデータ同期システム。
【請求項３】
請求項２に記載のデータ同期システムにおいて、
前記通信装置は、前記第２のＷｅｂアプリケーションプログラムとしてＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムを実行し、
前記サーバは、前記第１のＷｅｂアプリケーションプログラムとしてＣＧＩプログラムを実行することを特徴とするデータ同期システム。
【請求項４】
請求項２に記載のデータ同期システムにおいて、
前記通信装置は、前記第２のＷｅｂアプリケーションプログラムを実行した際に該第２のＷｅｂアプリケーションプログラム内に生成する、セッションを識別するためのセッション識別情報をさらに記録し、その後、前記サーバと接続された際、前記記録したセッション識別情報を前記サーバへ送信し、
前記サーバは、前記通信装置から送信されてきたセッション識別情報を用いて前記第１のＷｅｂアプリケーションプログラムを実行することを特徴とするデータ同期システム。
【請求項５】
請求項３に記載のデータ同期システムにおいて、
前記通信装置は、前記ＣＧＩプログラムを実行した際に該ＣＧＩプログラム内に生成する、セッションを識別するためのセッション識別情報をさらに記録し、その後、前記サーバと接続された際、前記記録したセッション識別情報を前記サーバへ送信し、
前記サーバは、前記通信装置から送信されてきたセッション識別情報を用いて前記ＣＧＩプログラムを実行することを特徴とするデータ同期システム。
【請求項６】
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現するＷｅｂアプリケーションプログラムを実行することにより前記サービスを提供するサーバであって、
当該サーバが提供したサービスを受ける通信装置から送信されてきた手順に従って前記Ｗｅｂアプリケーションプログラムを実行する再現実行部を有するサーバ。
【請求項７】
請求項６に記載のサーバにおいて、
前記再現実行部は、前記通信装置から送信されてきたデータ列と該データ列の時間順序とに従って前記Ｗｅｂアプリケーションプログラムを実行することを特徴とするサーバ。
【請求項８】
請求項７に記載のサーバにおいて、
前記再現実行部は、前記ＷｅｂアプリケーションプログラムとしてＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムを実行することを特徴とするサーバ。
【請求項９】
請求項７に記載のサーバにおいて、
前記再現実行部は、前記通信装置から送信されてきた、セッションを識別するためのセッション識別情報を用いて前記Ｗｅｂアプリケーションプログラムを実行することを特徴とするサーバ。
【請求項１０】
請求項８に記載のサーバにおいて、
前記再現実行部は、前記通信装置から送信されてきた、セッションを識別するためのセッション識別情報を用いて前記ＣＧＩプログラムを実行することを特徴とするサーバ。
【請求項１１】
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現するサーバから前記サービスを受ける通信装置であって、
前記Ｗｅｂアプリケーションを実現するＷｅｂアプリケーションプログラムと、
前記サーバと接続されていない状態で実行された前記Ｗｅｂアプリケーションプログラムの手順を記録する入力記録部と、
その後、前記サーバと接続された際、前記入力記録部が記録している手順を前記サーバへ送信する通信部とを有する通信装置。
【請求項１２】
請求項１１に記載の通信装置において、
Ｗｅｂブラウザと、
Ｗｅｂサーバとを有し、
前記Ｗｅｂサーバは、当該通信装置と前記サーバとが接続されていない状態で前記Ｗｅｂブラウザからの要求に応じて前記Ｗｅｂアプリケーションプログラムを実行し、
前記入力記録部は、前記Ｗｅｂアプリケーションプログラムの実行の際に前記Ｗｅｂサーバが前記Ｗｅｂアプリケーションプログラムに与えたデータ列と該データ列の時間順序とを前記手順として記録し、
前記通信部は、その後、前記サーバと接続された際、前記入力記録部が記録しているデータ列と該データ列の時間順序とを前記サーバへ送信することを特徴とする通信装置。
【請求項１３】
請求項１２に記載の通信装置において、
前記Ｗｅｂサーバは、前記ＷｅｂアプリケーションプログラムとしてＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムを実行することを特徴とする通信装置。
【請求項１４】
請求項１２に記載の通信装置において、
前記入力記録部は、前記Ｗｅｂアプリケーションプログラムを実行した際に該Ｗｅｂアプリケーションプログラム内に生成する、セッションを識別するためのセッション識別情報をさらに記録し、
前記通信部は、その後、前記サーバと接続された際、前記入力記録部が記録しているセッション識別情報を前記サーバへ送信することを特徴とする通信装置。
【請求項１５】
請求項１３に記載の通信装置において、
前記ＣＧＩプログラムを実行した際に該ＣＧＩプログラム内に生成する、セッションを識別するためのセッション識別情報を記録するセッションＩＤ記録部を有し、
前記通信部は、その後、前記サーバと接続された際、前記セッションＩＤ記録部が記録しているセッション識別情報を前記サーバへ送信することを特徴とする通信装置。
【請求項１６】
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現する第１のＷｅｂアプリケーションプログラムを実行することにより前記サービスを提供するサーバと、該サーバが提供したサービスを受ける通信装置との間において、データの同期をとるデータ同期方法であって、
前記通信装置が、前記サーバと接続されていない状態で、前記Ｗｅｂアプリケーションを実現する第２のＷｅｂアプリケーションプログラムを実行する処理と、
前記通信装置が、前記サーバと接続されていない状態で実行された前記第２のＷｅｂアプリケーションプログラムの手順を記録する処理と、
前記通信装置が、その後、前記サーバと接続された際、前記記録した手順を前記サーバへ送信する処理と、
前記サーバが、前記通信装置から送信されてきた手順に従って前記第１のＷｅｂアプリケーションプログラムを実行する処理とを有するデータ同期方法。
【請求項１７】
請求項１６に記載のデータ同期方法において、
前記通信装置が、前記サーバと接続されていない状態で当該通信装置が有するＷｅｂブラウザからの要求に応じて当該通信装置が有するＷｅｂサーバを用いて前記第２のＷｅｂアプリケーションプログラムを実行する処理と、
前記通信装置が、前記第２のＷｅｂアプリケーションプログラムの実行の際に前記Ｗｅｂサーバが前記第２のＷｅｂアプリケーションプログラムに与えたデータ列と該データ列の時間順序とを前記手順として記録する処理と、
前記通信装置が、その後、前記サーバと接続された際、前記記録したデータ列と該データ列の時間順序とを前記サーバへ送信する処理と、
前記サーバが、前記通信装置から送信されてきたデータ列と該データ列の時間順序とに従って前記第１のＷｅｂアプリケーションプログラムを実行する処理とを有することを特徴とするデータ同期方法。
【請求項１８】
請求項１７に記載のデータ同期方法において、
前記通信装置が、前記第２のＷｅｂアプリケーションプログラムとしてＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムを実行する処理と、
前記サーバが、前記第１のＷｅｂアプリケーションプログラムとしてＣＧＩプログラムを実行する処理とを有することを特徴とするデータ同期方法。
【請求項１９】
請求項１７に記載のデータ同期方法において、
前記通信装置が、前記第２のＷｅｂアプリケーションプログラムを実行した際に該第２のＷｅｂアプリケーションプログラム内に生成する、セッションを識別するためのセッション識別情報をさらに記録する処理と、
前記通信装置が、その後、前記サーバと接続された際、前記記録したセッション識別情報を前記サーバへ送信する処理と、
前記サーバが、前記通信装置から送信されてきたセッション識別情報を用いて前記第１のＷｅｂアプリケーションプログラムを実行する処理とを有することを特徴とするデータ同期方法。
【請求項２０】
請求項１８に記載のデータ同期方法において、
前記通信装置が、前記ＣＧＩプログラムを実行した際に該ＣＧＩプログラム内に生成する、セッションを識別するためのセッション識別情報をさらに記録する処理と、
前記通信装置が、その後、前記サーバと接続された際、前記記録したセッション識別情報を前記サーバへ送信する処理と、
前記サーバが、前記通信装置から送信されてきたセッション識別情報を用いて前記ＣＧＩプログラムを実行する処理とを有することを特徴とするデータ同期方法。
【請求項２１】
インターネット上でサービスを提供するサーバに、
当該サーバが提供したサービスを受ける通信装置から送信されてきた手順に従って、該通信装置へ前記サービスを提供する機能を実現させるためのプログラム。
【請求項２２】
請求項２１に記載のプログラムにおいて、
前記通信装置から送信されてきたデータ列と該データ列の時間順序とに従って前記サービスを提供する機能を実現させるためのプログラム。
【請求項２３】
請求項２２に記載のプログラムにおいて、
ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムを実行することにより前記サービスを提供する機能を実現させるためのプログラム。
【請求項２４】
請求項２２に記載のプログラムにおいて、
前記通信装置から送信されてきた、セッションを識別するためのセッション識別情報を用いて前記サービスを提供する機能を実現させるためのプログラム。
【請求項２５】
請求項２３に記載のプログラムにおいて、
前記通信装置から送信されてきた、セッションを識別するためのセッション識別情報を用いて前記ＣＧＩプログラムを実行することにより前記サービスを提供する機能を実現させるためのプログラム。
【請求項２６】
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現するサーバから前記サービスを受ける通信装置に、
前記Ｗｅｂアプリケーションを実現するＷｅｂアプリケーションプログラムを実行する機能と、
前記サーバと接続されていない状態で実行された前記Ｗｅｂアプリケーションプログラムの手順を記録する機能と、
その後、前記サーバと接続された際、前記記録している手順を前記サーバへ送信する機能とを実現させるためのプログラム。
【請求項２７】
請求項２６に記載のプログラムにおいて、
当該通信装置と前記サーバとが接続されていない状態で当該通信装置が有するＷｅｂブラウザからの要求に応じて当該通信装置が有するＷｅｂサーバを用いて前記Ｗｅｂアプリケーションプログラムを実行する機能と、
前記Ｗｅｂアプリケーションプログラムの実行の際に前記Ｗｅｂサーバが前記Ｗｅｂアプリケーションプログラムに与えたデータ列と該データ列の時間順序とを前記手順として記録する機能と、
その後、前記サーバと接続された際、前記記録しているデータ列と該データ列の時間順序とを前記サーバへ送信する機能とを実現させるためのプログラム。
【請求項２８】
請求項２７に記載のプログラムにおいて、
前記ＷｅｂアプリケーションプログラムとしてＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムを実行する機能を実現させるためのプログラム。
【請求項２９】
請求項２７に記載のプログラムにおいて、
前記Ｗｅｂアプリケーションプログラムを実行した際に該Ｗｅｂアプリケーションプログラム内に生成する、セッションを識別するためのセッション識別情報をさらに記録する機能と、
その後、前記サーバと接続された際、前記記録しているセッション識別情報を前記サーバへ送信する機能とを実現させるためのプログラム。
【請求項３０】
請求項２８に記載のプログラムにおいて、
前記ＣＧＩプログラムを実行した際に該ＣＧＩプログラム内に生成する、セッションを識別するためのセッション識別情報を記録する機能と、
その後、前記サーバと接続された際、前記記録しているセッション識別情報を前記サーバへ送信する機能とを実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの同期を行うデータ同期システム、サーバ、通信装置、データ同期方法及びプログラムに関する。
【背景技術】
【０００２】
近年、Ｗｅｂブラウザを利用したＷｅｂアプリケーションが普及している。これには、ショッピングサイト、ブログ、掲示板等、さまざまなものが存在する。【０００３】
通常、Ｗｅｂブラウザを利用したＷｅｂアプリケーションは、プログラムの本体がサーバで動作し、Ｗｅｂブラウザはその表示のみを行う。そのため、当該Ｗｅｂブラウザが動作している通信装置が当該サーバと接続されていない場合、当該通信装置からＷｅｂアプリケーションを利用することができないという問題点がある。【０００４】
この問題点を解決するために、サーバから提供されていたＷｅｂアプリケーションをオフラインで行うことができるシステムが考えられている（例えば、特許文献１参照。）。【０００５】
特許文献１に記載されたＷｅｂブラウザを利用した業務システムは、通信装置であるクライアント側に、ネットワークと接続されていない場合（オフライン時）に利用する業務ソフトウェア（Ｗｅｂサーバ、業務処理部、データベース）を持たせ、オフライン時はそれらを利用する。それにより、オフラインにおいても業務システムを利用することを可能にする。【０００６】
この業務システムでは、オフライン時に利用するデータベースにおいて、更新があったか否かを示すデータ更新フラグを持っている。オフライン時にデータが更新された場合、このデータ更新フラグを用いて更新があったことを示す。そして、データ更新フラグが更新を示しているデータをサーバへアップロードすることで、サーバのデータとクライアントのデータとのデータ同期を実現する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−０９４６８２号公報（段落０００５、段落０００８、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載されたシステムにおいては、一般的なシステムのデータ同期手法を用いると、クライアント側とサーバ側とで正しくデータ同期を行うことができないおそれがある。【０００９】
以下、その理由をブログのＷｅｂアプリケーションを例に挙げて説明する。【００１０】
ブログにおいて記事が投稿されると、その記事を示す識別情報である記事ＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）が新たに生成され、記事の内容がデータベースに記録される。ここで、クライアントがオフラインである場合、クライアント内に存在するＷｅｂサーバに対して記事が投稿されると、クライアント内のデータベースにおいて、新しい記事ＩＤが生成される。【００１１】
一方、それと同時にサーバ側で記事が投稿されると、サーバ側でも同様に新しい記事ＩＤが生成される。このサーバ側での記事の投稿は、サーバと接続中のオンラインであるクライアントからの投稿等によるものである。【００１２】
ブログプログラムでは記事ＩＤの生成を連番で行うことがある。上述したように、オフラインであるクライアントで記事ＩＤが生成されたと同時に、サーバ側で記事ＩＤが生成された場合、それらの記事ＩＤが互いに重なってしまうことが考えられる。【００１３】
記事ＩＤが互いに重なってしまうと、一般的な方法でデータ同期を行おうとした場合、オフライン時に新たに投稿された記事の上に、サーバ側で投稿された記事を上書きすることになってしまう。つまり、オフライン時に新たに記事を投稿したにもかかわらず、当該記事がサーバ側に投稿されていないことになってしまう。【００１４】
また、上述したような記事ＩＤが互いに重複する問題の他にも、記事閲覧回数や、記事投稿回数のようなデータの同期についても不具合を生じるおそれがある。【００１５】
例えば、オフライン時に、クライアント内に存在するＷｅｂサーバを用いて、記事が閲覧または投稿された場合、クライアント内のデータベースにおいて、閲覧回数や投稿回数が更新される。一方、それと同時にサーバ側でも記事が閲覧または投稿されると、サーバ側のデータベースでも閲覧回数や投稿回数が更新される。【００１６】
このようにクライアント側とサーバ側とでそれぞれ更新された回数を一般的な手法で同期させようとすると、クライアント側での閲覧回数や投稿回数によってサーバ側のデータが上書きされてしまい、サーバ側での閲覧回数や投稿回数の情報が失われてしまう。【００１７】
これらの問題点は、このようなことが起こらないよう、注意深くプログラムを記述しなければならない。しかし、複雑なプログラムの場合、このような問題が起こらないことを保証することは難しい。さらに，既存のアプリケーションをオフラインで利用しようとした場合、このような問題が起こらないようにプログラムを改変するのは非常に困難である。【００１８】
本発明の目的は、上述した課題を解決するデータ同期システム、サーバ、通信装置、データ同期方法及びプログラムを提供することである。
【課題を解決するための手段】
【００１９】
本発明のデータ同期システムは、
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現する第１のＷｅｂアプリケーションプログラムを実行することにより前記サービスを提供するサーバと、該サーバが提供したサービスを受ける通信装置とから構成されたデータ同期システムにおいて、
前記通信装置は、前記Ｗｅｂアプリケーションを実現する第２のＷｅｂアプリケーションプログラムを有し、前記サーバと接続されていない状態で前記第２のＷｅｂアプリケーションプログラムを実行し、前記第２のＷｅｂアプリケーションプログラムを実行した手順を記録し、その後、前記サーバと接続された際、前記記録した手順を前記サーバへ送信し、
前記サーバは、前記通信装置から送信されてきた手順に従って前記第１のＷｅｂアプリケーションプログラムを実行することを特徴とする。【００２０】
また、本発明のサーバは、
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現するＷｅｂアプリケーションプログラムを実行することにより前記サービスを提供するサーバであって、
当該サーバが提供したサービスを受ける通信装置から送信されてきた手順に従って前記Ｗｅｂアプリケーションプログラムを実行する再現実行部を有する。【００２１】
また、本発明の通信装置は、
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現するサーバから前記サービスを受ける通信装置であって、
前記Ｗｅｂアプリケーションを実現するＷｅｂアプリケーションプログラムと、
前記サーバと接続されていない状態で実行された前記Ｗｅｂアプリケーションプログラムの手順を記録する入力記録部と、
その後、前記サーバと接続された際、前記入力記録部が記録している手順を前記サーバへ送信する通信部とを有する。【００２２】
また、本発明のデータ同期方法は、
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現する第１のＷｅｂアプリケーションプログラムを実行することにより前記サービスを提供するサーバと、該サーバが提供したサービスを受ける通信装置との間において、データの同期をとるデータ同期方法であって、
前記通信装置が、前記サーバと接続されていない状態で、前記Ｗｅｂアプリケーションを実現する第２のＷｅｂアプリケーションプログラムを実行する処理と、
前記通信装置が、前記サーバと接続されていない状態で実行された前記第２のＷｅｂアプリケーションプログラムの手順を記録する処理と、
前記通信装置が、その後、前記サーバと接続された際、前記記録した手順を前記サーバへ送信する処理と、
前記サーバが、前記通信装置から送信されてきた手順に従って前記第１のＷｅｂアプリケーションプログラムを実行する処理とを有する。【００２３】
また、本発明のプログラムは、
インターネット上でサービスを提供するサーバに実行させるためのプログラムであって、
当該サーバが提供したサービスを受ける通信装置から送信されてきた手順に従って、該通信装置へ前記サービスを提供する機能を実現させる。【００２４】
また、本発明のプログラムは、
インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現するサーバから前記サービスを受ける通信装置に実行させるためのプログラムであって、
前記Ｗｅｂアプリケーションを実現するＷｅｂアプリケーションプログラムを実行する機能と、
前記サーバと接続されていない状態で実行された前記Ｗｅｂアプリケーションプログラムの手順を記録する機能と、
その後、前記サーバと接続された際、前記記録している手順を前記サーバへ送信する機能とを実現させる。
【発明の効果】
【００２５】
以上説明したように本発明においては、インターネット上でサービスを提供するためのＷｅｂアプリケーションを実現する第１のＷｅｂアプリケーションプログラムを実行することによりサービスを提供するサーバと、当該サービスを受ける通信装置とが接続されていない状態で、通信装置がＷｅｂアプリケーションを実現する第２のＷｅｂアプリケーションプログラムを実行し、第２のＷｅｂアプリケーションプログラムを実行した手順を記録し、その後、通信装置とサーバとが接続された際、記録した手順をサーバへ送信し、サーバが、通信装置から送信されてきた手順に従って第１のＷｅｂアプリケーションプログラムを実行する構成としたため、クライアントとサーバとにおけるデータの同期を容易に、かつ正しくとることができる。
【図面の簡単な説明】
【００２６】
【図１】本発明のデータ同期システムの実施の一形態を示す図である。
【図２】図１に示したクライアントの内部構成の一例を示す図である。
【図３】図１に示したサーバの内部構成の一例を示す図である。
【図４】本形態におけるデータ同期方法のうち図１に示したクライアントの処理を説明するためのフローチャートである。
【図５】本形態におけるデータ同期方法のうち図１に示したサーバの処理を説明するためのフローチャートである。
【図６】本発明のデータ同期システムの実施の他の形態を示す図である。
【発明を実施するための形態】
【００２７】
以下に、本発明の実施の形態について図面を参照して説明する。
【００２８】
図１は、本発明のデータ同期システムの実施の一形態を示す図である。
【００２９】
本形態は図１に示すように、クライアント１００と、サーバ１１０と、Ｗｅｂブラウザ１２０とから構成されている。
【００３０】
サーバ１１０は、所定のプログラムを実行することによりインターネット上でサービスを提供する。例えば、Ｗｅｂアプリケーションを提供する。
【００３１】
クライアント１００は、サーバ１１０が提供するサービスを受ける通信装置（コンピュータ）である。
【００３２】
Ｗｅｂブラウザ１２０は、サーバ１１０へサービスを要求するために、サーバ１１０へアクセスを行う。
【００３３】
なお、図１に示した構成においては、クライアント１００とサーバ１１０とが直接接続されている構成となっているが、インターネット等のネットワークを介して接続されているものであっても良い。
【００３４】
図２は、図１に示したクライアント１００の内部構成の一例を示す図である。
【００３５】
図１に示したクライアント１００には図２に示すように、Ｗｅｂブラウザ１０１と、Ｗｅｂサーバ１０２と、ＣＧＩ入力記録部１０３と、ＣＧＩプログラム１０４と、入力・セッションＩＤデータ１０６と、ＤＢ１０７と、通信部１０８とが設けられている。なお、図２には、図１に示したクライアント１００の構成要素のうち、本発明に係わる構成要素のみを示した。
【００３６】
Ｗｅｂブラウザ１０１は、Ｗｅｂアプリケーションを利用するための一般的なソフトウェアである。このＷｅｂアプリケーションは、Ｗｅｂサーバ１０２がＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）を経由してＣＧＩプログラム１０４を呼び出す（実行する）ことで実現される。
【００３７】
Ｗｅｂサーバ１０２は、インターネット上で情報発信機能を持つソフトウェアである。また、Ｗｅｂサーバ１０２は、クライアント１００とサーバ１１０とが接続されていない状態でＷｅｂブラウザ１０１から要求があった場合、その要求に応じてＣＧＩプログラム１０４を実行する。
【００３８】
ＣＧＩ入力記録部１０３は、Ｗｅｂサーバ１０２がＣＧＩプログラム１０４を呼び出す際の入力を記録する入力記録部である。また、ＣＧＩ入力記録部１０３は、記録した入力を過去のものから順番に入力・セッションＩＤデータ１０６に保存した上で、ＣＧＩプログラム１０４を呼び出す。ここで、入力を過去のものから順番に保存する際に、その時間順序を対応付けて保存するものであっても良い。また、Ｗｅｂサーバ１０２からの入力は、ＣＧＩプログラム１０４の標準入力、引数およびプログラム起動時の環境変数として与えられるものである。
【００３９】
ＣＧＩプログラム１０４は、Ｗｅｂサーバ１０２が、Ｗｅｂブラウザ１０１からの要求に応じて実行する第２のＷｅｂアプリケーションプログラムである。ここでは、当該Ｗｅｂアプリケーションプログラムを実行するインタフェースをＣＧＩとしたものを例に挙げて説明する。このインタフェースは、ＣＧＩに限らずＷｅｂアプリケーションプログラムを再実行するために必要な入力データを保存できる他のインタフェースを用いるものであっても良い。また、ＣＧＩプログラム１０４は、Ｗｅｂサーバ１０２から与えられた入力およびＤＢ１０７に保存されたデータに従ってプログラムを実行し、その結果としての出力をＷｅｂブラウザ１０１へ返す。
【００４０】
また、ＣＧＩプログラム１０４には、セッションＩＤ記録部１０５が設けられている。
【００４１】
セッションＩＤ記録部１０５は、ＣＧＩプログラム１０４がセッション管理を行う場合、Ｗｅｂアプリケーションで利用するセッションＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）を記録する。
【００４２】
ここで、セッション管理について説明する。
【００４３】
通常、Ｗｅｂサーバに対するアクセスは、個々のアクセスが独立したものとして扱われる。しかし、個々のアクセスを一連のものとして扱いたい場合がある。例えば、ショッピングサイトにおいて、商品をカートに入れ、その後、その商品の購入を行う場合などである。購入を行う際には、カートの中身をＷｅｂアプリケーションが知らなければならない。そのため、商品をカートに入れた際のアクセスと、購入する際のアクセスとを、一連のものとして扱う必要がある。これをここではセッション管理と呼ぶ。
【００４４】
セッション管理を実現する方法としては、セッションを識別するためのセッション識別情報（以下、セッションＩＤ）が用いられる。セッションＩＤとは、一般に乱数等で生成される任意の識別情報（ＩＤ）であり、クッキー、あるいはＦｏｒｍタグのｈｉｄｄｅｎフィールドに入れることでＷｅｂブラウザに渡される。Ｗｅｂブラウザは、次回のアクセス時にクッキーとして、あるいはＦｏｒｍからデータをｓｕｂｍｉｔする際にＷｅｂサーバにセッションＩＤを渡す。これにより、Ｗｅｂサーバは、同じセッションＩＤを持つアクセスを一連のものとして扱うことができる。
【００４５】
入力・セッションＩＤデータ１０６は、ＣＧＩ入力記録部１０３およびセッションＩＤ記録部１０５が記録しているデータを記録する。
【００４６】
ＤＢ１０７は、ＣＧＩプログラム１０４が実行する際に利用するデータベースである。また、ＤＢ１０７は、ＣＧＩプログラム１０４が実行した結果のデータを保存する。また、ＤＢ１０７は、クライアント１００とサーバ１１０とが接続されている状態で、ＤＢ１１７に保存されているデータを通信部１１８，１０８を介して取得して保存する。つまり、ＤＢ１０７は、ＤＢ１１７に保存されているデータをコピーして保存する。なお、ＤＢ１０７は、データベース構造ではなく、ファイルであっても良い。また、ＤＢ１１７に保存されているデータのサイズが大きな場合、以前行ったコピーの履歴を利用して、通信量の削減を図るものであっても良い。
【００４７】
通信部１０８は、サーバ１１０との間で通信を行う。
【００４８】
図３は、図１に示したサーバ１１０の内部構成の一例を示す図である。
【００４９】
図１に示したサーバ１１０には図３に示すように、Ｗｅｂサーバ１１２と、ＣＧＩ再現実行部１１３と、ＣＧＩプログラム１１４と、入力・セッションＩＤデータ１１６と、ＤＢ１１７と、通信部１１８とが設けられている。なお、図３には、図１に示したサーバ１１０の構成要素のうち、本発明に係わる構成要素のみを示した。
【００５０】
Ｗｅｂサーバ１１２は、インターネット上で情報発信機能を持つソフトウェアである。また、Ｗｅｂサーバ１１２は、Ｗｅｂブラウザ１０１，１２０から要求があった場合、その要求に応じてＣＧＩプログラム１１４を実行する。
【００５１】
ＣＧＩ再現実行部１１３は、入力・セッションＩＤデータ１１６に記録されたデータを用いてＣＧＩプログラム１１４を実行する再現実行部である。
【００５２】
ＣＧＩプログラム１１４は、Ｗｅｂサーバ１１２が、Ｗｅｂブラウザ１２０，１０１からの要求に応じて実行する第１のＷｅｂアプリケーションプログラムである。ここでは、当該Ｗｅｂアプリケーションプログラムを実行するインタフェースをＣＧＩとしたものを例に挙げて説明する。このインタフェースは、ＣＧＩに限らずＷｅｂアプリケーションプログラムを再実行するために必要な入力データを保存できる他のインタフェースを用いるものであっても良い。
【００５３】
また、ＣＧＩプログラム１１４には、セッションＩＤ再現部１１５が設けられている。
【００５４】
セッションＩＤ再現部１１５は、入力・セッションＩＤデータ１１６に記録したセッションＩＤをセッションＩＤとして利用する。
【００５５】
入力・セッションＩＤデータ１１６は、通信部１１８を介して入力・セッションＩＤデータ１０６に記録されているデータを取得して記録する。
【００５６】
ＤＢ１１７は、ＣＧＩプログラム１１４が実行する際に利用するデータベースである。また、ＤＢ１１７は、ＣＧＩプログラム１１４が実行した結果のデータを保存する。なお、ＤＢ１１７は、データベース構造ではなく、ファイルであっても良い。
【００５７】
通信部１１８は、クライアント１００との間で通信を行う。
【００５８】
ここで、セッション管理については、クライアント１００にて説明したものと同様である。
【００５９】
図１〜３に示した形態においては、ＣＧＩ入力記録部１０３が記録した入力を用いて、サーバ１１０のＣＧＩ再現実行部１１３でＣＧＩプログラム１１４を再実行することで、クライアント１００とサーバ１１０との間でデータの同期を行う。ここで、ＣＧＩプログラム１１４を再実行した際、オフラインで実行した際と別のセッションＩＤを発行すると、オフライン時には同一のセッションとして扱われたＷｅｂサーバ１０２へのアクセスが、別のセッションとして扱われてしまう。
【００６０】
これを避けるため、セッションＩＤ記録部１０５において、新たに生成されるセッションＩＤを記録し、入力・セッションＩＤデータ１０６に記録する。そして、サーバ１１０で再実行する際には、セッションＩＤを新規生成するのではなく、セッションＩＤ記録部１０５に記録されたセッションＩＤを利用する。これにより、オフライン時に同一のセッションとして扱われたＷｅｂサーバ１０２へのアクセスを、再実行時にも同じセッションとして扱うことができる。
【００６１】
セッションＩＤを記録・再現するためには、いくつかの方法が考えられる。ＣＧＩプログラムを改変して良い場合は、ＣＧＩプログラムレベルで実現できる。通常、ＣＧＩプログラムでセッション管理を行う場合は、セッションＩＤを生成したり、生成したセッションＩＤを取得したりするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）が提供されているため、これを用いればよい。例えば、環境変数等のＣＧＩプログラムへの入力を用いて、「オフライン実行時」か「再現実行時」か（再現実行時には利用すべきセッションＩＤを含む）をＣＧＩプログラムに伝え、オフライン実行時は通常通りセッションＩＤを生成し、再現実行時は、入力から得たセッションＩＤを利用するようにする。
【００６２】
その他の方法としては、ＣＧＩプログラムを実行する環境、すなわち、例えばＰＨＰ言語処理系やＰｅｒｌのライブラリを変更する方法が考えられる。この場合も動作は前述と同様である。
【００６３】
オフライン時のクライアント１００では、このようにクライアント１００内で動作するＷｅｂサーバ１０２に複数回アクセスし、その際のＣＧＩプログラム１０４への入力および生成したセッションＩＤが入力・セッションＩＤデータ１０６に記録される。
【００６４】
以下に、本形態におけるデータ同期方法について説明する。まずは、本形態におけるデータ同期方法のうち図１に示したクライアント１００の処理について説明する。
【００６５】
図４は、本形態におけるデータ同期方法のうち図１に示したクライアント１００の処理を説明するためのフローチャートである。
【００６６】
まず、ＤＢ１１７に保存されているデータベース情報がステップ１にて通信部１０８を介して取得され、取得されたデータベース情報がＤＢ１０７に保存される。
【００６７】
その後、ステップ２にてクライアント１００がサーバ１１０から切断される。この切断は、上述したように、クライアント１００とサーバ１１０とがネットワークを介して接続されている場合は、クライアント１００がネットワークから切断される（切り離される）ものである。この状態が「オフライン状態」である。一方、クライアント１００とサーバ１１０（ネットワークを介しても良い）とが接続されている状態は「オンライン状態」である。
【００６８】
その後、ステップ３にてオフライン状態でＷｅｂブラウザ１０１からＷｅｂアプリケーションを利用するためのアクセスが行われると、Ｗｅｂサーバ１０２によってＣＧＩプログラム１０４が実行される。その際の入力（データ列）および生成されたセッションＩＤがプログラム実行の手順としてステップ４にてＣＧＩ入力記録部１０３およびセッションＩＤ記録部１０５を用いて入力・セッションＩＤデータ１０６に記録される。なお、この入力は、実行された時間順序が判断できるように、実行された順序に応じて記録されるか、時間順序を示す情報とともに記憶される。
【００６９】
ステップ３およびステップ４の処理は、クライアント１００がオンライン状態になるまで繰り返される。
【００７０】
ステップ５にてクライアント１００がオンライン状態になると、入力・セッションＩＤデータ１０６に記録されているデータ（プログラム実行の手順として記録された入力およびセッションＩＤデータ）がステップ６にて通信部１０８を介してサーバ１１０へ送信される。このとき、入力の順序がサーバ１１０にて判断できるように、上述した時間順序を示す情報等を用いてデータが送信される。
【００７１】
次に、本形態におけるデータ同期方法のうち図１に示したサーバ１１０の処理について説明する。
【００７２】
図５は、本形態におけるデータ同期方法のうち図１に示したサーバ１１０の処理を説明するためのフローチャートである。
【００７３】
まず、クライアント１００からの要求に応じてＤＢ１１７に保存されているデータベース情報がステップ１１にて通信部１１８からクライアント１００へ送信される。このとき、サーバ１１０とクライアント１００との接続状態は、オンライン状態である。
【００７４】
その後、ステップ１２にてクライアント１００がオフライン状態になった場合、他のクライアント（例えば、Ｗｅｂブラウザ１２０）からの要求があると、ステップ１３にてその要求は通常通り受け付けられ、処理が行われる。オフライン状態で行われた処理により、ＤＢ１１７のデータは更新される。
【００７５】
ステップ１４にてクライアント１００の状態がオンライン状態になると、入力・セッションＩＤデータ１０６に記録されているデータがステップ１５にて通信部１１８を介して取得され、入力・セッションＩＤデータ１１６に記録される。つまり、入力・セッションＩＤデータ１０６が入力・セッションＩＤデータ１１６にコピーされる。
【００７６】
すると、ステップ１６にてＣＧＩ再現実行部１１３によって、入力・セッションＩＤデータ１１６に記録されたデータ（プログラム実行の手順として記録された入力およびセッションＩＤデータ）を用いてＣＧＩプログラム１１４が実行される。このとき、クライアント１００にて実行された順序と同じ順序で実行される。なお、この入力データに含まれているセッションＩＤをＣＧＩプログラム１１４が利用する際、上述したように与えられたセッションＩＤが用いられる。
【００７７】
このＣＧＩ再現実行部１１３におけるＣＧＩプログラム１１４の実行は、オフライン状態でクライアント１００において実行されたプログラムを再度サーバ１１０にて実行するものと等しいものである。これにより、オフライン状態のクライアント１００によって行われたＷｅｂアプリケーションの利用（Ｗｅｂアクセス）をサーバ１１０に反映することができる。また、ＤＢ１０７の更新もＤＢ１１７へ反映することができる。したがって、クライアント１００とサーバ１１０との間で、データ同期を正しく行うことができないという問題点を解消することが可能となる。
【００７８】
以下に、本発明の実施の他の形態について図面を参照して説明する。
【００７９】
図６は、本発明のデータ同期システムの実施の他の形態を示す図である。
【００８０】
本形態は図６に示すように、クライアント４００と、サーバ４１０と、Ｗｅｂブラウザ１２０とから構成されている。
【００８１】
また、クライアント４００には、Ｗｅｂブラウザ１０１と、クライアント側プログラム４０２とが設けられている。
【００８２】
Ｗｅｂブラウザ１０１は、図２に示したものと同じものである。
【００８３】
クライアント側プログラム４０２は、図２に示したＷｅｂサーバ１０２、ＣＧＩ入力記録部１０３、ＣＧＩプログラム１０４、入力・セッションＩＤデータ１０６、ＤＢ１０７および通信部１０８と同一の処理を行うものである。つまり、上述した図２に示した各要素の処理を、目的に応じて作製された論理回路で行わずに、処理内容を記述したクライアント側プログラム４０２をクライアント４００にて読取可能な記録媒体に記録し、この記録媒体に記録されたクライアント側プログラム４０２をクライアント４００に読み込ませ、実行するものとなる。ここで、クライアント４００にて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、クライアント４００に内蔵されたＨＤＤ等を指す。この記録媒体に記録されたクライアント側プログラム４０２は、クライアント４００内のＣＰＵ（不図示）にて読み込まれ、ＣＰＵの制御によって、上述したものと同様の処理が行われる。ここで、ＣＰＵは、クライアント側プログラム４０２が記録された記録媒体から読み込まれた当該プログラムを実行するコンピュータとして動作するものである。
【００８４】
また、サーバ４１０には、サーバ側プログラム４１１が設けられている。
【００８５】
サーバ側プログラム４１１は、図３に示したＷｅｂサーバ１１２、ＣＧＩ再現実行部１１３、ＣＧＩプログラム１１４、入力・セッションＩＤデータ１１６、ＤＢ１１７、および通信部１１８と同一の処理を行うものである。つまり、上述した図３に示した各要素の処理を、目的に応じて作製された論理回路で行わずに、処理内容を記述したサーバ側プログラム４１１をサーバ４１０にて読取可能な記録媒体に記録し、この記録媒体に記録されたサーバ側プログラム４１１をサーバ４１０に読み込ませ、実行するものとなる。ここで、サーバ４１０にて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、サーバ４１０に内蔵されたＨＤＤ等を指す。この記録媒体に記録されたサーバ側プログラム４１１は、サーバ４１０内のＣＰＵ（不図示）にて読み込まれ、ＣＰＵの制御によって、上述したものと同様の処理が行われる。ここで、ＣＰＵは、サーバ側プログラム４１１が記録された記録媒体から読み込まれた当該プログラムを実行するコンピュータとして動作するものである。
【００８６】
以上説明した本発明においては、以下に示す効果を奏する。
【００８７】
第１の効果は、クライアント１００とサーバ１１０とでデータ同期を行う際、両者の間でデータの更新が行われている場合であっても、正しくデータの同期ができることにある。
【００８８】
その理由は、クライアント１００で行った処理をサーバ１１０で再実行するため、オフライン時にサーバ１１０で行われた更新結果を踏まえて、クライアント１００で行われた更新をサーバ１１０へ反映するためである。
【００８９】
第２の効果は、プログラムをほとんど変更せずに、クライアント１００とサーバ１１０とでデータの同期ができることにある。
【００９０】
その理由は、プログラム実行時の入力データをシステム側で保存し、再実行するため、データ同期のためにプログラムを変更する必要が無いためである。
【００９１】
本発明は、一般的なＷｅｂアプリケーションを用いてきた分野、すなわち、ブログやＳＮＳ（Ｓｏｃｉａｌ  Ｎｅｔｗｏｒｋｉｎｇ  Ｓｅｒｖｉｃｅ）、掲示板、ショッピングサイト、企業における業務アプリケーションといったアプリケーションをオフラインで実行する際、データを同期する用途に利用することができる。
【００９２】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００９３】
この出願は、２００９年３月１８日に出願された日本出願特願２００９−０６６２９７を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2010106832.tif 000003
【図２】
2010106832.tif 000004
【図３】
2010106832.tif 000005
【図４】
2010106832.tif 000006
【図５】
2010106832.tif 000007
【図６】
2010106832.tif 000008
【国際調査報告】
2010106832.tif 000009
2010106832.tif 000010