以下、本発明の実施形態について、図面を参照して説明する。図1は、本発明に適用可能な通信システムの一例の構成を示す。インターネット100に対して、ユーザ側のコンピュータ101が接続される。クライアント装置としてのユーザ側のコンピュータ101上では、後述するブラウザソフトウェア110と、本発明の実施形態におけるコンピュータ101側の処理を行う情報取得プログラム111とが動作する。なお、複数台のクライアント装置101がインターネット100に対して接続されるようにしてもよい。
また、インターネット100に対して、サーバ装置102が接続される。図1の例では、インターネット100に対して1台のサーバ装置102が接続されるように示されているが、複数台のサーバ装置102がインターネット100に対して接続されるようにしてもよい。このように、サーバ装置102と、コンピュータ101とが、インターネット100を介して通信可能に接続される。
サーバ装置102は、インターネット100に対する通信機能を有するコンピュータと、当該コンピュータに接続または内蔵されるハードディスクなどの記憶媒体とを具備する。サーバ装置102は、コンピュータ上で動作するプログラムおよび記憶媒体上の所定領域により、コンテンツ管理部120、コンテンツデータベース121および情報データベース122が構成される。
サーバ装置102は、RSSの規定に従いリソースのメタデータをコンテンツデータとしてインターネット100に向けて公開することができる。リソースデータは、静止画像データ、動画像データ、音声データなどのマルチメディア情報であり、コンピュータ101のブラウザソフトウェア110を用いて再生される。RSSは、RDF Site SummaryまたはReally Simple Syndicationの略称であり、バージョンにより名称が異なる。以下では、RSSがバージョンRSS1.0のRDF Site Summaryであるものとして説明する。なお、RDFは、Resource Description Frameworkの略称であって、データのメタデータを表現するための枠組みである。
RSSは、リソースのタイトルやサマリ、サマリが対象とするURI情報などによるヘッドライン情報を、インターネット100上で効率よく流通させるための規格の一つであり、XMLを用いて記述される。なお、XMLは、Extensible Markup Languageの略称であって、開始タグ< >および終了タグ</ >を用いてデータ毎の定義を行うことができる。RSSデータは、サーバ装置102においてコンテンツデータベース121に格納され、固有のURI(Universal Resource Identifier)を与えられてコンテンツ管理部120に管理される。すなわち、サーバ装置102は、RSSデータをコンテンツデータとして管理する。RSSを用いてデータを提供するサービスは、一般的に、RSSフィードと呼ばれる。
RSSフィードにより提供される情報について、概略的に説明する。RSSにおいて、RSSデータは、少なくともチャンネル要素とアイテム要素とを持つ。チャンネル要素は、RSSの基本情報が記述される。チャンネル要素には、チャンネルのタイトル、RSSでサマリ対象とするWebサイトのURI、チャンネルの概要説明、チャンネル要素内のアイテム要素に記述されるリソースの目次が含まれる。リソースの目次は、リソース毎のURIが記述されてなる。
アイテム要素には、チャンネル要素内のアイテム要素に記述されたリソース毎に、リソースのタイトル、URIおよび要約が記述される。アイテム要素に記述されるリソース毎のURIは、基本的には、チャンネル要素内のアイテム要素に記述されるリソース毎のURIと同一の値が記述される。
ユーザは、RSSリーダと呼ばれるアプリケーションソフトウェアを用いてRSSフィードのサービスを受け、RSSフィードのサービスにより提供されるURIを用いてRSSデータにアクセスする。そして、RSSリーダにより、RSSデータのチャンネル要素およびアイテム要素の記述に従い、アイテム要素に記述されるリソースに関し、タイトルおよび要約が表示されると共に、リソースに対するURIが示される。ユーザは、実際にWebサイトにアクセスしなくても、RSSリーダを用いてRSSフィードにより得られたRSSデータに基づき、所望のリソース情報を迅速に見つけることができる。
以下では、特に記載のない限り、コンテンツデータは、RSSフィードにより提供されるRSSデータを指す。また、ユーザ側のコンピュータ101上で動作するブラウザソフトウェア110は、RSSリーダであるものとする。
サーバ装置102において、情報データベース122は、コンテンツデータベース121に格納されるコンテンツデータの更新情報が格納される。これら情報データベース122に格納される更新情報は、コンテンツ管理部120により生成される。このコンテンツデータの更新情報が情報データベース122に格納される。コンテンツ管理部120および情報データベース122がコンテンツデータ管理手段に対応し、コンテンツ管理部120が生成手段に対応する。
一例として、コンテンツ管理部120は、コンテンツデータすなわちRSSデータのアイテム要素に記述される各リソースについて、当該リソースのURIが示す情報に更新があると、それに応じて当該リソースの要約などを更新し、RSSデータを更新する。RSSデータの更新情報は、コンテンツ管理部120により情報データベース122に格納されると共に、情報データベース122内の管理情報が更新される。
なお、図1の例では、サーバ装置102に対して、コンテンツデータベース121が直接的に接続されるように示されているが、これはこの例に限定されない。すなわち、コンテンツデータベース121は、インターネット100に接続される他のサーバ装置に接続されるものであってもよい。コンテンツデータベース121、情報データベース122およびコンテンツ管理部120を、それぞれインターネット100上に分散的に配置することもできる。
図2は、ユーザ側のコンピュータ101の一例の構成を示す。図2において、バス201に対してCPU210、RAM211およびROM212、ならびに、グラフィクスコントローラ213が接続される。要求手段、決定手段、調整手段および制御手段としてのCPU210は、ROM212に予め記憶されたプログラムに基づきRAM211をワークメモリとして用いてシステムを起動させる。そして、CPU210は、後述するハードディスク222に予め記録されるプログラムデータを読み込んでRAM211に展開し、RAM211上に展開されたプログラムデータに基づきコンピュータ101の各部を制御する。
グラフィクスコントローラ213は、表示装置214が接続され、CPU210から出力された表示制御信号を表示装置214が表示可能な信号に変換して、表示装置214に出力する。表示装置214は、例えばLCD(Liquid Crystal Display)を表示素子として用いる。
バス201に対して、さらに、入力インターフェイス(I/F)220、ハードディスク222、ドライブ装置223および通信インターフェイス(I/F)224が接続される。入力インターフェイス220は、キーボード221Aと、ポインティングデバイス221Bとが接続される。ポインティングデバイス221Bは、マウスやタッチパッドを適用できる。キーボード221Aやポインティングデバイス221Bから出力された信号は、入力インターフェイス220を介してCPU210に渡される。
ハードディスク222は、記録媒体そのものであるハードディスク本体と、ハードディスクを駆動するためのドライブ装置とからなるハードディスクドライブ(HDD)として用いられる。ハードディスク222には、上述した、CPU210を動作させるためのプログラムが記録されると共に、このコンピュータ101で生成されたり、このコンピュータ101に入力される様々なデータを格納することができる。
ドライブ装置223は、記録可能なタイプのDVD(Digital Versatile Disc)やCD(Compact Disc)といった記録媒体が装填可能とされ、装填された記録媒体に対するデータの読み書きを行う。勿論、ドライブ装置223に対して、再生専用のタイプのDVDやCD−ROMを装填してもよい。これに限らず、ドライブ装置223は、書き換え可能な不揮発性メモリを装着可能とし、この不揮発性メモリに対するデータの読み書きを行うようにしてもよい。さらに、ドライブ装置223は、フレキシブルディスクに対応したものでもよい。
通信I/F224は、所定のプロトコルを用いて外部のネットワークに接続するためのものである。この図2の例では、通信I/F224は、TCP/IP(Transmission Control Protocol/Internet Protocol)に対応し、インターネット100との接続を制御する。CPU210は、この通信I/F224を介してインターネット100上に接続された他の機器と通信を行うことができる。
このような構成において、上述したブラウザ110および情報取得プログラム111は、ハードディスク222に予め記録されるプログラムデータに基づきCPU210により動作される。なお、ここではブラウザ110と情報取得プログラム111とがそれぞれ独立したソフトウェアであるように説明したが、これらは単一のソフトウェア内の別の機能として実現されてもよい。また、情報取得プログラム111は、RAM211上に常駐し、他のプログラムの実行に対してバックグラウンドで実行されてもよい。
情報取得プログラム111は、所定に登録されたリンク情報の指し示すデータに対してHTTPなどのプロトコルを用いてアクセスし、当該データの状態情報を取得することができる。そして、取得した状態情報を解析し、当該データの更新が認められる場合には、更新があったことを例えば表示装置214に対して表示させてユーザに通知することができる。これに限らず、情報取得プログラム111は、状態情報を解析した結果得られたデータの更新情報を、データベースなどに自動的に登録するようにしてもよい。
図3は、本発明の実施形態によるデータ状態情報の一例の取得処理を概略的に示すフローチャートである。ステップS10で、ユーザ側のコンピュータ101において、ポーリングにより、予め登録されたリンク情報で指定されるコンテンツデータを持つサーバ装置102に対して要求送信がなされ、当該コンテンツデータの状態を示す状態情報がリクエスト(要求)される。予め登録されたリンク情報は、例えばRSSフィードの更新情報を受けるためのURIである。
ステップS11で、当該サーバ装置102は、リクエストに応答して状態情報生成を行い、リクエストがあったコンテンツデータの状態情報をコンピュータ101に返す。コンテンツデータの状態情報は、コンテンツデータの更新履歴を示す更新履歴情報を用いることができる。
サーバ装置102から返された状態情報は、コンピュータ101に受信される。コンピュータ101は、受信した状態情報に基づき、対応するコンテンツデータに更新があったか否かを判断する(ステップS12)。例えば、コンピュータ101は、現在の時刻と受信した状態情報とに基づき、コンテンツデータの更新の有無を判断できる。若し、コンテンツデータに更新があったと判断されれば、処理はステップS13に移行される。また、当該コンテンツデータの状態情報に対する初回の要求であった場合も、処理はステップS13に移行される。
ステップS13では、コンテンツデータの更新があったことが、例えばコンピュータ101の表示装置214に対する所定の表示によって、ユーザに通知される。これに限らず、コンピュータ101が有するデータベースなどに自動的に登録するようにしてもよい。ユーザへの更新の通知がなされると、処理はステップS14に移行される。
ステップS14では、コンピュータ101において、受信された状態情報が解析され、当該コンテンツデータの状態情報を次にリクエストするためのポーリング間隔が求められる。そして、処理はステップS15に移行され、求められたポーリング間隔から、当該コンテンツデータの状態情報を次にリクエストする予定のタイミングを示す日時である、状態情報取得予定日時が求められる。
一方、上述のステップS12において、コンテンツデータに更新がなかったと判断されれば、処理はステップS16に移行される。ステップS16では、コンピュータ101において、ポーリング間隔が予め決められた固定値に設定される。これに限らず、ユーザがコンピュータ101に対して指定した値をポーリング間隔として用いてもよい。ポーリング間隔が設定されると、設定されたポーリング間隔に基づき、状態情報を次回取得する予定の日時が求められる。こうして求められた状態情報を次回取得する予定の日時により、状態情報取得予定日時が決定される。
コンピュータ101は、上述のようにしてステップS15またはステップS16で決定された状態情報取得予定日時になったら、ステップS10からの処理を再び行い、状態情報取得予定日時を更新する。
図4は、サーバ装置102における更新履歴の一例の管理構造を示す。コンテンツデータの更新履歴は、サーバ装置102が管理するコンテンツデータそれぞれを識別するためのデータ管理情報400と、当該データ管理情報400に管理されるコンテンツデータの更新日時を示すデータ更新情報401とが関連付けられて構成される。データ管理情報400およびデータ更新情報401は、コンテンツ管理部120で生成され情報データベース122に格納される。
データ管理情報400は、サーバ装置102が管理するコンテンツデータ毎にユニークなIDと、サーバ装置102上で管理されるコンテンツデータをクライアント(コンピュータ101)側が識別するための識別情報とが関連付けられてなる。なお、IDは、Identificationの略称である。この識別情報は、例えば当該コンテンツデータのURIを用いることができる。データ更新情報401は、IDと、IDに対応するコンテンツデータの更新日時とが関連付けられてなり、当該コンテンツデータが更新される度に追加される。
サーバ装置102は、識別情報に対応するコンテンツデータの更新履歴を、IDをキーとしてデータ更新情報401を検索することで求めることができる。
なお、図示は省略するが、データ管理情報400に対して、コンテンツデータを識別するための識別情報に加えて、当該コンテンツデータそのものを含ませてもよいし、当該コンテンツデータへのサーバ装置102上でのファイルパス情報を含ませてもよい。当該コンテンツデータに関するさらに他の属性情報などをデータ管理情報400に含ませることもできる。
図5は、コンピュータ101側が持つ一例のリンク管理情報500を示す。このリンク管理情報500は、例えばユーザがコンピュータ101に対して入力した情報に基づき、CPU210により、コンテンツデータ毎に生成される。ここでは、1つのリンク管理情報500は、1つのRSSフィードに対応するものとする。CPU210およびリンク管理情報500により、コンテンツデータ情報管理手段が構成される。
図5の例では、リンク管理情報500は、管理用ID501、名称502、コンテンツデータを示すリンク情報503、当該コンテンツデータの状態情報を示すリンク情報504、情報取得日時505および状態情報取得予定日時506からなる。管理用ID501は、コンピュータ101がリンク管理情報500を識別するための、リンク管理情報500毎にユニークなIDである。例えば、リンク管理情報500の生成順に通し番号を発生させて、管理用ID501として用いることができる。名称502は、ユーザがリンク管理情報500を識別するための情報である。
リンク情報503は、このリンク管理情報500が対応するコンテンツデータのURIであって、例えば、このリンク管理情報500に対応するRSSフィードのURIである。リンク情報504は、サーバ装置102において、リンク情報503に示されるコンテンツデータに対して生成される状態情報のURIである。上述した図4を例にとると、データ管理情報400のURIをリンク情報504として用いることができる。
情報取得日時505は、このリンク管理情報500に登録されるリンク情報504が示す状態情報を取得した最新の日時を示す情報である。また、状態情報取得予定日時506は、上述した図3のフローチャートにおけるステップS15またはステップS16で求められた状態情報取得予定日時を示す。
一例として、ユーザは、サービスを受けたいRSSフィードのURIをリンク情報503としてリンク管理情報500に登録する。それと共に、ユーザは、当該コンテンツデータの状態情報のURIをリンク情報504としてリンク管理情報500に登録する。なお、コンテンツデータの状態情報のURIは、例えば、RSSフィードのサービスを受ける際に、サーバ装置102からコンピュータ101に対して送信されるものとする。
また、当該リンク管理情報500を識別するための名称を所定に付して、リンク管理情報500に登録する。管理用ID501は、コンピュータ101において自動的に設定される。このようにして生成されたリンク管理情報500は、例えばコンピュータ101のハードディスク222に格納される。ユーザは、サービスを受けようとするRSSフィード毎に、このリンク管理情報500に対する登録操作を繰り返す。
なお、図5の例では、リンク管理情報500に対し、コンテンツデータを示すリンク情報503と、コンテンツデータの状態情報を示すリンク情報504とをそれぞれ登録するようにしているが、これはこの例に限定されない。例えば、データ管理情報400がコンテンツデータを含んでいる場合、コンテンツデータを示すリンク情報503は、省略することができる。
このように、この実施形態によれば、サーバ装置102側でコンテンツデータに対してなされた更新の履歴に基づき生成した状態情報を用いて、当該状態情報を次に取得するためのポーリング間隔を求めている。そのため、例えば前回求めたポーリング間隔よりも短い間隔でコンテンツデータの更新が行われていても、コンピュータ101側で、当該コンテンツデータが更新されたタイミングを知ることができる。したがって、前回のポーリング間隔より短い間隔でコンテンツデータの次の更新が行われていても、次に状態情報を取得するためのタイミングを適切に求めることができる。
また、この実施形態によれば、コンピュータ101は、サーバ装置102が持つコンテンツデータが更新されたか否かを、当該サーバ装置102が当該コンテンツデータの更新履歴に基づき生成した状態情報を用いて判断している。そのため、コンピュータ101は、サーバ装置102に繰り返しアクセスして当該コンテンツデータに対するアクセス履歴や当該コンテンツデータの更新日時をコンピュータ101側に蓄積しなくても、次に状態情報を取得するためのタイミングを求めることができる。
図6〜図8を用いて、本発明の実施形態によるデータ状態情報の一例の取得処理についてより具体的に説明する。図6は、コンピュータ101側の一例の処理を示すフローチャートである。図7は、図6のフローチャートによる処理に対応してサーバ装置102側で行われる一例の処理を示すフローチャートである。また、図8は、サーバ装置102からコンピュータ101に送信される一例の状態情報を概略的に示す。
図6において、ステップS20で、CPU210により、コンピュータ101に登録されているリンク管理情報500の数が取得されると共に、ループ変数が初期化され0とされる。ステップS21で、CPU210により、ループ変数とリンク管理情報500の登録数とが比較される。比較の結果、登録数よりもループ変数の方が小さければ、処理はステップS22に移行される。
ステップS22では、ループ変数に対応するリンク管理情報500が処理対象としてCPU210に取得される。処理はステップS23に移行され、ステップS22で取得されたリンク管理情報500における状態情報取得予定日時506と、処理日時すなわち現在の日時とが比較される。若し、状態情報取得予定日時506が処理日時よりも過去を示しているか、または、状態情報取得予定日時506と処理日時とが一致する場合には、処理はステップS24に移行される。一方、状態情報取得予定日時506が処理日時よりも未来を示していれば、処理は後述するステップS30に移行される。
ステップS24では、処理対象のリンク管理情報500における、コンテンツデータの状態情報を示すリンク情報504が参照され、このリンク情報504が指し示すURIに対してリクエストを行う。このリクエストを受けたサーバ装置102は、受けたリクエストに応じて、図7に一例が示される処理を行う。
図7を参照し、サーバ装置102は、リクエストに基づきデータ管理情報400を識別する(ステップS40)。例えば、データ管理情報400が有するデータ識別情報がURIであれば、リクエストを受けたURIに一致するデータ識別情報を有するデータ管理情報400を検索する。次のステップS41で、サーバ装置102は、識別されたデータ管理情報400に関連付けられているデータ更新情報401を取得する。そして、取得したデータ更新情報401に基づき状態情報を生成し(ステップS42)、生成された状態情報を、リクエストの送信元であるコンピュータ101に返す。
なお、サーバ装置102は、コンテンツデータの更新が行われる度に状態情報を生成するようにしてもよい。生成された状態情報は、ファイルとしてサーバ装置102に保持される。この場合、サーバ装置102は、図6のフローチャートにおけるステップS24により、コンピュータ101から状態情報がリクエストされた際に、このファイルを参照する。
図8は、サーバ装置102からコンピュータ101に送信される状態情報の一例の構成を示す。この図8の例では、状態情報がXMLを用いて記述されている。タグ<UPDATE>およびタグ</UPDATE>により、このデータがコンテンツデータの更新日時に関するものであることが示される。また、タグ<DATE>およびタグ</DATE>で挟まれた部分に、データ更新情報401における更新日時を示す情報が列挙される。
この図8の例では、この状態情報に対応するコンテンツデータがサーバ装置102に登録されて以降、最初の更新日時を2007年1月1日の0時として、登録後に25時間周期で4回、更新が行われていることが示されている。
なお、図8の例では、XMLを用いて状態情報を記述しているが、これはこの例に限定されず、他の形式で更新履歴を記述して状態情報としてもよい。更新履歴情報と他の情報とを纏めて状態情報としてもよいし、コンテンツデータに更新履歴情報を埋め込んでおくことも考えられる。また、更新日時のフォーマット、XMLのタグ名などは一例であって、他のフォーマット、他のタグ名を用いてもよい。
説明は図6のフローチャートに戻り、コンピュータ101は、サーバ装置102から返された状態情報を受け取る(ステップS24)。コンピュータ101がコンテンツデータの状態情報を取得すると、処理はステップS25に移行される。ステップS25では、取得した状態情報と、処理対象のリンク管理情報500における情報取得日時505とに基づき、情報取得日時505に示される日時から処理日時までの間に、当該状態情報に対応するコンテンツデータの更新が行われたか否かが判断される。
若し、コンテンツデータの更新が行われなかったと判断されれば、処理はステップS29に移行される。ステップS29では、コンピュータ101において、ポーリング間隔が予め決められた固定値に設定される。これに限らず、ユーザがコンピュータ101に対して指定した値をポーリング間隔として用いてもよい。ポーリング間隔が設定されると、設定されたポーリング間隔に基づき状態情報取得予定日時が決定される。そして、処理は後述するステップS30に移行される。
一方、ステップS25でコンテンツデータの更新が行われたと判断されれば、処理はステップS26に移行される。ステップS26では、コンテンツデータの更新があったことが、例えばコンピュータ101の表示装置214に対する所定の表示によって、ユーザに通知される。これに限らず、コンピュータ101が有するデータベースなどに自動的に登録するようにしてもよい。ユーザへの更新の通知がなされると、処理はステップS27に移行される。
ステップS27では、コンピュータ101において、受信された状態情報が解析され、当該コンテンツデータの状態情報を次に要求するためのポーリング間隔が求められる。ポーリング間隔が求められると、処理はステップS28に移行される。ステップS28では、求められたポーリング間隔から、当該コンテンツデータの状態情報を次に要求する予定のタイミングを示す日時である、状態情報取得予定日時が求められる。例えば、状態情報から、コンテンツデータに対してなされた最新の更新日時を示す最新更新日時を求め、この最新更新日時に対してステップS27で求められたポーリング間隔が示す時間を加算して、状態情報取得予定日時を求める。求められた状態情報取得予定日時は、例えばRAM211に記憶される。
ステップS28で状態情報取得予定日時が求められたら、処理はステップS30に移行され、ループ変数がインクリメントされる。そして、処理がステップS21に戻され、次のリンク管理情報500に対して同様の処理がなされる。この処理により得られた状態情報取得予定日時は、例えばRAM211に順次、記憶される。
上述したステップS21で、ループ変数がリンク管理情報500の登録数以上の値になったら、処理はステップS31に移行される。ステップS31では、ステップS28で取得された状態情報取得予定日時のうち、最も処理日時に近い日時を示す状態情報取得予定日時を選択する。選択された状態情報取得予定日時は、リンク管理情報500における新たな状態情報取得予定日時506に決定される。そして、処理はステップS32に移行され、この新たな状態情報取得予定日時506に上述のステップS20からの処理を開始するように、コンピュータ101のタイマ設定を行う。
一例として、コンピュータ101において、上述した図8に例示される状態情報に対応するリンク情報の登録が、状態情報の最新の更新日時である2007年1月5日の4時以降に行われたとする。コンピュータ101は、サーバ装置102へのこの状態情報に関する初回のアクセスで、この状態情報を取得することができる。この取得された状態情報には、対応するコンテンツデータの更新日時が履歴として記述されている。そのため、コンピュータ101は、取得した状態情報に基づきコンテンツデータの更新周期を算出することができる。したがって、コンピュータ101は、サーバ装置102への次回のアクセス時期を適応的に設定することができる。
更新周期は、例えば更新履歴から求めた更新間隔の平均値を用いることができる。この場合、更新履歴に記述される最新の更新日時に対して更新周期の値を加算した日時を、状態情報取得予定日時506として用いることができる。
更新周期の算出方法としては、他にも、更新履歴に基づく線形近似や、パターン比較が考えられる。また、最新の更新日時と最新の更新の1つ前の更新による更新日時との差分から、更新周期を求めるようにしてもよい。この場合には、最新の更新日時に対してこの差分を加算した日時を、状態情報取得予定日時506として用いることが考えられる。
コンピュータ101は、上述したようにして取得された状態情報に基づき、対応するコンテンツデータの更新の有無を判断することができる。そして、この判断結果に基づき、更新のあったコンテンツデータに選択的にアクセスすることで、インターネット100上に分散的に存在するコンテンツデータを、効率的に収集することができる。
なお、上述では、コンテンツデータをRSSフィードとして説明したが、これはこの例に限定されるものではない。例えば、RSSデータにおいてアイテム要素として記述される各リソースをコンテンツデータとして扱うことも可能である。この場合、サーバ装置102は、アイテム要素について、データ管理情報400およびデータ更新情報401を持つことになる。同様に、コンピュータ101が持つリンク管理情報500において、例えばデータのリンク情報503は、アイテム要素として記述されるリソースのURIとなる。
また、RSS2.0のように、RSSのタグを拡張できる場合がある。この場合は、RSSデータ中に更新履歴を拡張して設定することで、RSSデータそのものの取得で更新履歴も取得できることになる。
さらに、上述では、コンピュータ101において、登録された複数のリンク管理情報500について1つの状態情報取得予定日時を選択するように説明したが、これはこの例に限定されない。すなわち、複数のリンク管理情報500のそれぞれについて、状態情報取得予定日時を決定することができる。例えば、ステップS24からステップS28またはステップS29の処理を行う度に決定された状態情報取得予定日時のそれぞれについて、タイマを設定する。こうすることで、コンピュータ101において、コンテンツデータ毎にポーリング間隔を設定することができる。
<第1の変形例>
次に、本発明の実施形態の第1の変形例について説明する。第1の変形例では、コンピュータ101からサーバ装置102に対してコンテンツデータの状態情報をリクエストする際に、コンピュータ101がサーバ装置102から当該コンテンツデータの状態情報を前回取得した日時を示す情報をリクエストと共に送信する。
図9〜図11を用いて、この第1の変形例によるデータ状態情報の一例の取得処理について説明する。図9は、この第1の変形例による、コンピュータ101側がリンク情報を管理するために持つ管理情報の一例の構成を示す。図10は、コンピュータ101側の一例の処理を示すフローチャートである。図11は、図10のフローチャートによる処理に対応してサーバ装置102側で行われる一例の処理を示すフローチャートである。
図9に例示されるように、この第1の変形例においては、図5で説明したのと同様のリンク管理情報500に対して、当該リンク管理情報500の更新日時を示す管理情報更新情報510が関連付けられて構成される。
図10を用いて、コンピュータ101側の一例の処理について説明する。図10に例示される処理は、上述した図6のフローチャートにおけるステップS24〜ステップS29の処理に対応する。以下、第1の変形例によるコンピュータ101側の処理は、上述した図6のフローチャートによるステップS24〜ステップS29の処理を、図10のフローチャートによるステップS100〜ステップS109の処理で置き換えたものと見做す。
図10のフローチャートによる処理に先立って、コンピュータ101において、上述した図6のフローチャートにおけるステップS20〜ステップS23の処理が行われる。先ず、ループ変数の初期化やリンク管理情報500の登録数が取得される(ステップS20)。さらに、リンク管理情報500が取得され(ステップS22)、取得されたリンク管理情報500における状態情報取得予定日時506と、処理日時とが比較される(ステップS23)。状態情報取得予定日時506が処理日時よりも過去を示しているか、または、状態情報取得予定日時506とが一致すると判断されれば、処理は図10のステップS100に移行される。
コンピュータ101は、ステップS100で、上述した図6のステップS22で取得されたリンク管理情報500における情報取得日時505を取得する。すなわち、ステップS100では、コンピュータ101は、状態情報をリクエストしようとするコンテンツデータについて、前回、状態情報のリクエストを行った日時を示す情報を取得する。
コンピュータ101は、情報取得日時505を確認し、当該コンテンツデータに関して過去に状態情報を取得したことがあると判断されれば、処理はステップS102に移行される。ステップS102では、図6のステップS22で取得されたリンク管理情報500におけるリンク情報504が参照され、このリンク情報504が指し示すURIに対して情報状態をリクエストする。このとき、リクエストに対して、ステップS100で取得された情報取得日時505が付加されてサーバ装置102に送信される。
一方、ステップS101で、当該コンテンツデータに関して過去に状態情報を取得したことがないと判断されれば、処理はステップS103に移行される。ステップS103では、図6のステップS22で取得されたリンク管理情報500におけるリンク情報504が参照され、このリンク情報504が指し示すURIに対して情報状態をリクエストする。このとき、情報取得日時505は、付加されない。
ステップS102またはステップS103による、コンピュータ101からの状態情報のリクエストに応じて、サーバ装置102は、図11に一例が示される処理を行う。すなわち、サーバ装置102は、リクエストに基づきデータ管理情報400を識別する(ステップS120)。データ管理情報400が有するデータ識別情報がURIであれば、リクエストを受けたURIに一致するデータ識別情報を有するデータ管理情報400を検索する。次のステップS121で、サーバ装置102は、識別されたデータ管理情報400に関連付けられているデータ更新情報401を取得する。
そして、次のステップS122で、コンピュータ101から送信された、状態情報のリクエストに情報取得日時505が付加されているか否かが判断される。若し、情報取得日時505が付加されていないと判断されれば、処理はステップS123に移行される。ステップS123では、ステップS121で取得されたデータ更新情報401を全て用いて、状態情報が生成される。生成された状態情報は、リクエストの送信元であるコンピュータ101に返される。
一方、ステップS122で、状態情報のリクエストに情報取得日時505が付加されていると判断されれば、処理はステップS124に移行される。ステップS124では、ステップS121で取得されたデータ更新情報401のうち、リクエストに付加された情報取得日時505よりも時間的に後の日時を示すデータ更新情報を用いて、状態情報が生成される。生成された状態情報は、リクエストの送信元であるコンピュータ101に返される。
説明は図10のフローチャートに戻り、コンピュータ101は、サーバ装置102から返された状態情報を受け取る。そして、取得した状態情報と、リンク管理情報500の情報取得日時505とに基づき、情報取得日時505に示される日時から処理日時までの間に、当該状態情報に対応するコンテンツデータの更新が行われたか否かが判断される(ステップS104)。
若し、コンテンツデータの更新が行われなかったと判断されれば、処理はステップS109に移行される。例えば、取得した状態情報にデータ更新を行った日時を示す情報が含まれていなければ、コンテンツデータの更新が行われなかったと判断することができる。ステップS109では、コンピュータ101において、ポーリング間隔が予め決められた固定値に設定される。これに限らず、ユーザがコンピュータ101に対して指定した値をポーリング間隔として用いてもよい。ポーリング間隔が設定されると、設定されたポーリング間隔に基づき状態情報取得予定日時が決定される。そして、処理は図10のフローチャートによる一連の処理を抜け、図6のステップS30に移行される。
一方、ステップS104でコンテンツデータの更新が行われたと判断されれば、処理はステップS106に移行される。ステップS106では、コンテンツデータの更新があったことが、例えばコンピュータ101の表示装置214に対する所定の表示によって、ユーザに通知される。これに限らず、コンピュータ101が有するデータベースなどに自動的に登録するようにしてもよい。ユーザへの更新の通知がなされると、処理はステップS107に移行される。
ステップS107では、コンピュータ101において、受信された状態情報が解析され、当該コンテンツデータの状態情報を次に要求するためのポーリング間隔が求められる。そして、処理はステップS108に移行され、求められたポーリング間隔から、当該コンテンツデータの状態情報を次に要求する予定のタイミングを示す日時である、状態情報取得予定日時が求められる。求められた状態情報取得予定日時は、例えばRAM211に記憶される。そして、処理は図10のフローチャートによる一連の処理を抜け、図6のステップS30に移行される。
上述したように、この第1の変形例では、コンピュータ101は、あるコンテンツデータについて状態情報をリクエストする際に、当該コンテンツデータに関して前回、状態情報を取得した日時を示す情報取得日時505をリクエストに付加する。そして、サーバ装置102側では、リクエストに付加された情報取得日時505に基づき、当該情報取得日時505より新しいデータ更新情報に基づき状態情報を生成するようにしている。そのため、サーバ装置102から送信される状態情報のデータサイズが小さくなり、インターネット100上のトラフィックに対する負荷を軽減させることができる。
<第2の変形例>
次に、この実施形態の第2の変形例について、図12および図13を用いて説明する。この第2の変形例は、サーバ装置102において、コンテンツデータの更新履歴情報に基づきコンテンツデータの平均更新間隔を求め、この平均更新間隔を用いて状態情報を生成する例である。
図12は、この第2の変形例によりサーバ装置102が状態情報を生成する際の一例の処理を示すフローチャートである。サーバ装置102は、図6のステップS24によるコンピュータ101からのリクエストに基づき、データ管理情報400を識別する(ステップS50)。データ管理情報400が有するデータ識別情報がURIであれば、リクエストを受けたURIに一致するデータ識別情報を有するデータ管理情報400を検索する。次のステップS51で、サーバ装置102は、識別されたデータ管理情報400に関連付けられているデータ更新情報401を取得する。
次のステップS52で、取得したデータ更新情報401に基づきコンテンツデータを更新した間隔の平均値を求める。そして、求められた平均更新間隔を示す情報を用いて状態情報を生成する。生成された状態情報は、サーバ装置102により、リクエストの送信元であるコンピュータ101に返される。
図13は、図12のフローチャートに従い生成された一例の状態情報を示す。この図13の例では、状態情報がXMLを用いて記述されている。タグ<UPDATE>およびタグ</UPDATE>により、このデータがコンテンツデータの更新情報に関するものであることが示される。また、タグ<LAST_UPDATE>およびタグ</LAST_UPDATE>で挟まれた部分に、対応するコンテンツデータのサーバ装置102上での最新の更新日時を示す情報が記述される。さらに、タグ<AVERAGE>およびタグ</AVERAGE>に挟まれた部分に、コンテンツデータの平均更新間隔を示す情報が記述される。
この図13の例では、この状態情報に対応するコンテンツデータがサーバ装置102上で最新に更新されたのが2007年1月5日の4時であって、平均して25時間の間隔でコンテンツデータの更新が行われたことが示されている。
一例として、コンピュータ101において、上述した図13に例示される状態情報に対応するリンク情報の登録が最新の更新日時である2007年1月5日の4時以降に行われたとする。コンピュータ101は、コンピュータ101からサーバ装置102への初回のアクセスでこの状態情報を取得することができる。この取得された状態情報には、対応するコンテンツデータの最新の更新日時を示す情報と、平均の更新間隔を示す情報が記述されている。
コンピュータ101は、状態情報に記述される平均の更新間隔をコンテンツデータの更新周期として用いることができる。状態情報に記述される最新の更新日時に対して、この更新周期の値を加算した日時を、状態情報取得予定日時506として用いる。取得した状態情報に基づきコンテンツデータの更新周期を算出することができる。したがって、コンピュータ101は、サーバ装置102への次回のアクセス時期を適応的に設定することができる。
<第3の変形例>
次に、この実施形態の第3の変形例について、図14および図15を用いて説明する。この第3の変形例は、サーバ装置102において、コンテンツデータについて、最新の更新日時、更新回数および更新回数の基点を示す日時を示す情報を求め、これらの情報を用いて状態情報を生成する例である。
図14は、この第3の変形例によりサーバ装置102が状態情報を生成する際の一例の処理を示すフローチャートである。サーバ装置102は、図6のステップS24によるコンピュータ101からのリクエストに基づき、データ管理情報400を識別する(ステップS60)。例えば、データ管理情報400が有するデータ識別情報がURIであれば、リクエストを受けたURIに一致するデータ識別情報を有するデータ管理情報400を検索する。次のステップS61で、サーバ装置102は、識別されたデータ管理情報400に関連付けられているデータ更新情報401を取得する。
次のステップS62で、取得したデータ更新情報401に基づき、コンテンツデータについて、最新の更新日時、更新回数および更新回数を計数する基点となる日時を示す情報をそれぞれ求める。そして、これらコンテンツデータの最新の更新日時、更新回数および更新回数の基点となる日時を示す情報を用いて状態情報を生成する。生成された状態情報は、サーバ装置102により、リクエストの送信元であるコンピュータ101に返される。
図15は、図14のフローチャートに従い生成された一例の状態情報を示す。この図15の例では、状態情報がXMLを用いて記述されている。タグ<UPDATE>およびタグ</UPDATE>により、このデータがコンテンツデータの更新情報に関するものであることが示される。また、タグ<LAST_UPDATE>およびタグ</LAST_UPDATE>で挟まれた部分に、対応するコンテンツデータの最新の更新日時を示す情報が記述される。さらに、タグ<BASE>およびタグ</BASE>に挟まれた部分に、更新回数の基点となる日時を示す情報が記述される。さらにまた、タグ<COUNT>およびタグ</COUNT>に挟まれた部分に、更新回数を示す情報が記述される。
この図15の例では、この状態情報に対応するコンテンツデータの最新の更新日時が2007年1月5日の4時であって、更新回数の基点が2007年1月1日の0時とされている。したがって、当該コンテンツデータに対し、更新回数の基点となる日時から最新の更新日時までの間に4回の更新が行われたことが示されている。
一例として、コンピュータ101において、上述した図15に例示される状態情報に対応するリンク情報の登録が最新の更新日時である2007年1月5日の4時以降に行われたとする。コンピュータ101は、コンピュータ101からサーバ装置102への初回のアクセスでこの状態情報を取得することができる。この取得された状態情報には、対応するコンテンツデータの最新の更新日時、更新回数および更新回数の基点となる日時を示す情報が記述されている。
コンピュータ101は、状態情報に記述されるコンテンツデータの最新の更新日時と更新回数の基点となる日時との差分を更新回数で除して、これら最新の更新日時と更新回数の基点となる日時との間における平均の更新間隔を求める。この平均の更新間隔を更新周期と見做して、状態情報に記述される最新の更新日時に対してこの更新周期の値を加算した日時を、状態情報取得予定日時506として用いることができる。したがって、コンピュータ101は、サーバ装置102への次回のアクセス時期を適応的に設定することができる。
<第4の変形例>
次に、この実施形態の第4の変形例について、図16および図17を用いて説明する。この第4の変形例は、サーバ装置102において、コンテンツデータについて、最新の更新日時を示す情報と、この最新の更新日時による更新に対して1回前に行われた更新日時を示す情報とを求め、これらの情報を用いて状態情報を生成する例である。
図16は、この第4の変形例によりサーバ装置102が状態情報を生成する際の一例の処理を示すフローチャートである。サーバ装置102は、図6のステップS24によるコンピュータ101からのリクエストに基づき、データ管理情報400を識別する(ステップS70)。データ管理情報400が有するデータ識別情報がURIであれば、リクエストを受けたURIに一致するデータ識別情報を有するデータ管理情報400を検索する。次のステップS71で、サーバ装置102は、識別されたデータ管理情報400に関連付けられているデータ更新情報401を取得する。
次のステップS72で、取得したデータ更新情報401に基づき、コンテンツデータについて、最新の更新日時を示す情報と、この最新の更新日時による更新に対して1回前に行われた更新の更新日時を示す情報とを求める。そして、これらコンテンツデータの最新の更新日時を示す情報と、最新の更新日時による更新に対して1回前に行われた更新の更新日時を示す情報とを用いて状態情報を生成する。生成された状態情報は、サーバ装置102により、リクエストの送信元であるコンピュータ101に返される。
図17は、図16のフローチャートに従い生成された一例の状態情報を示す。この図17の例では、状態情報がXMLを用いて記述されている。タグ<UPDATE>およびタグ</UPDATE>により、このデータがコンテンツデータの更新情報に関するものであることが示される。また、タグ<LAST_UPDATE>およびタグ</LAST_UPDATE>で挟まれた部分に、対応するコンテンツデータの最新の更新日時を示す情報が記述される。さらに、タグ<PREV_UPDATE>およびタグ</PREV_UPDATE>に挟まれた部分に、最新の更新日時による更新の1回前に行われた更新の更新日時を示す情報が記述される。
この図17の例では、この状態情報に対応するコンテンツデータの最新の更新日時が2007年1月5日の4時であって、この最新の更新日時による更新の1回前の更新が2007年1月4日の3時に行われたことが示されている。これにより、当該コンテンツに対する最新の更新は、最新の更新の1回前の更新から25時間後に行われたことが分かる。
一例として、コンピュータ101において、上述した図17に例示される状態情報に対応するリンク情報の登録が最新の更新日時である2007年1月5日の4時以降に行われたとする。コンピュータ101は、コンピュータ101からサーバ装置102への初回のアクセスでこの状態情報を取得することができる。この取得された状態情報には、対応するコンテンツデータの最新の更新日時を示す情報と、当該最新の更新日時の1つ前の更新日時を示す情報とが記述されている。
コンピュータ101は、取得した状態情報に基づき、最新の更新日時と最新の更新の1つ前の更新による更新日時との差分を求め、最新の更新日時に対してこの差分を加算した日時を、状態情報取得予定日時506として用いる。このように、コンピュータ101は、サーバ装置102への次回のアクセス時期を適応的に設定することができる。
<第5の変形例>
次に、この実施形態の第5の変形例について、図18および図19を用いて説明する。この第5の変形例は、サーバ装置102において、コンテンツデータを次に更新することが予測される日時(予測更新日時と呼ぶ)を求め、この予測更新日時を示す情報と、コンテンツデータの最新の更新日時を示す情報とを用いて状態情報を生成する例である。
図18は、この第5の変形例によりサーバ装置102が状態情報を生成する際の一例の処理を示すフローチャートである。サーバ装置102は、図6のステップS24によるコンピュータ101からのリクエストに基づき、データ管理情報400を識別する(ステップS80)。データ管理情報400が有するデータ識別情報がURIであれば、リクエストを受けたURIに一致するデータ識別情報を有するデータ管理情報400を検索する。次のステップS81で、サーバ装置102は、識別されたデータ管理情報400に関連付けられているデータ更新情報401を取得する。
次のステップS82で、サーバ装置102は、取得したデータ更新情報401に基づき予測更新日時を求める。一例として、サーバ装置102は、取得したデータ更新情報401から更新間隔の平均値を求め、この更新間隔の平均値を最新の更新日時に加算した日時を、予測更新日時とすることが考えられる。データ更新情報401から線形近似を用いて、予測更新日時を求めるようにしてもよい。
これに限らず、データ更新情報401からコンテンツデータの更新パターンを求め、求められた更新パターンに基づき予測更新日時を求めるようにもできる。この場合、求められた更新パターンと予め用意されたパターンとを比較して予測更新日時を求めることが考えられる。また、最新の更新日時と、最新の更新日時による更新に対して1回前に行われた更新の更新日時とを比較して、これらの差分に基づき予測更新日時を求めるようにしてもよい。
サーバ装置102は、求められた予測更新日時を示す情報と、コンテンツデータの最新の更新日時を示す情報とを用いて状態情報を生成する(ステップS83)。生成された状態情報は、サーバ装置102により、リクエストの送信元であるコンピュータ101に返される。
図19は、図18のフローチャートに従い生成された一例の状態情報を示す。この図19の例では、状態情報がXMLを用いて記述されている。タグ<UPDATE>およびタグ</UPDATE>により、このデータがコンテンツデータの更新情報に関するものであることが示される。また、タグ<LAST_UPDATE>およびタグ</LAST_UPDATE>で挟まれた部分に、対応するコンテンツデータの最新の更新日時を示す情報が記述される。さらに、タグ<PREDICTION_DATE>およびタグ</PREDICTION_UPDATE>に挟まれた部分に、予測更新日時を示す情報が記述される。
この図19の例では、この状態情報に対応するコンテンツデータの最新の更新日時が2007年1月5日の4時であって、次の更新が2007年1月6日の5時に行われると予測されることが示されている。
一例として、コンピュータ101において、上述した図19に例示される状態情報に対応するリンク情報の登録が最新の更新日時である2007年1月5日の4時以降に行われたとする。コンピュータ101は、コンピュータ101からサーバ装置102への初回のアクセスでこの状態情報を取得することができる。この取得された状態情報には、対応するコンテンツデータが次に更新が行われると予測される、予測更新日時を示す情報が記述されている。そのため、コンピュータ101は、サーバ装置102への次回のアクセス時期を適切に設定することができる。
<第6の変形例>
次に、この実施形態の第6の変形例について説明する。この第6の変形例では、サーバ装置102において、ポーリングを行う間隔として、第1の間隔および第1の間隔より長い間隔の第2の間隔またはこれらのうち何れか一方を予め定める。第1の間隔は、ポーリングを行う最短の間隔を示し、第2の間隔は、ポーリングを行う最長の間隔を示す。以下、第1の間隔を最短間隔、第2の間隔を最長間隔として説明を行う。サーバ装置102は、このポーリングの最短間隔や最長間隔を示す情報を、コンピュータ101からのリクエストに応じて生成した状態情報に付加してコンピュータ101に返す。
コンピュータ101は、サーバ装置102から取得された状態情報に基づきポーリング間隔を求め、求められたポーリング間隔が、状態情報に付加された最短間隔より短ければ、当該最短間隔をポーリング間隔に再設定する。同様に、状態情報に基づき求められたポーリング間隔が、状態情報に付加された最長間隔より長ければ、当該最長間隔をポーリング間隔に再設定する。コンテンツデータの更新間隔が極端に短い場合や、極端に長い場合でも、ポーリング間隔を設定することができる。
図20は、この第6の変形例によるコンピュータ101側の一例の処理を示すフローチャートである。図20に例示される処理は、上述した図6のフローチャートにおけるステップS24〜ステップS29の処理に対応する。以下では、第6の変形例でのコンピュータ101側の処理は、上述した図6のフローチャートによるステップS24〜ステップS29の処理を、図20のフローチャートによるステップS130〜ステップS139の処理で置き換えたものと見做す。
図20のフローチャートによる処理に先立って、コンピュータ101において、上述した図6のフローチャートにおけるステップS20〜ステップS23の処理が行われる。先ず、ループ変数の初期化やリンク管理情報500の登録数が取得される(ステップS20)。さらに、リンク管理情報500が取得され(ステップS22)、取得されたリンク管理情報500における状態情報取得予定日時506と、処理日時とが比較される(ステップS23)。状態情報取得予定日時506が処理日時よりも過去を示しているか、または、状態情報取得予定日時506とが一致すると判断されれば、処理は図23のステップS130に移行される。
コンピュータ101は、ステップS130で、上述のステップS22で取得されたリンク管理情報500における、コンテンツデータの状態情報を示すリンク情報504を参照する。そして、このリンク情報504が指し示すURIに対してリクエストを行う。サーバ装置102は、このリクエストに対して、図7を用いて説明したような処理により状態情報を生成する。そして、生成された状態情報に対して、ポーリングの最短間隔および最長間隔またはこれらのうち何れか一方の情報を付加してリクエストの送信元であるコンピュータ101に送信する。
図21は、この第6の変形例においてサーバ装置102からコンピュータ101に対して送信される状態情報の一例の構成を示す。タグ<UPDATE>およびタグ</UPDATE>により、これらのタグで挟まれた部分にコンテンツデータの更新情報に関する情報が記述されることが示される。そして、タグ<DATE>およびタグ</DATE>で挟まれた部分に、データ更新情報401における更新日時を示す情報が列挙される。また、タグ<UPDATE>およびタグ</UPDATE>に対して、タグ<POLLING>およびタグ</POLLING>が付加される。このタグ<POLLING>およびタグ</POLLING>により、これらのタグで挟まれた部分にポーリングに関する情報が記述されることが示される。そして、タグ<MAX>およびタグ</MAX>で挟まれた部分に、ポーリングの最長間隔を示す情報が記述される。そして、タグ<MIN>およびタグ</MIN>で挟まれた部分に、ポーリングの最短間隔を示す情報が記述される。
この図21の例では、この状態情報に対応するコンテンツデータがサーバ装置102に登録されて以降、最初の更新日時を2007年1月3日の2時として、登録後に25時間周期で3回、更新が行われていることが示されている。また、ポーリングの最長間隔および最短間隔がそれぞれ48時間および10分とされていることが示されている。
コンピュータ101は、サーバ装置102から返された状態情報を受け取ると、処理をステップS131に移行させる。ステップS131では、取得した状態情報と、リンク管理情報500の情報取得日時505とに基づき、情報取得日時505に示される日時から処理日時までの間に、当該状態情報に対応するコンテンツデータの更新が行われたか否かが判断される。
若し、コンテンツデータの更新が行われなかったと判断されれば、処理はステップS139に移行され、コンピュータ101において、ポーリング間隔が予め決められた固定値に設定される。これに限らず、ユーザがコンピュータ101に対して指定した値をポーリング間隔として用いてもよい。ポーリング間隔が設定されると、設定されたポーリング間隔に基づき状態情報取得予定日時が決定される。そして、処理は図20による一連の処理を抜け、図6のステップS30に移行される。
一方、ステップS131でコンテンツデータの更新が行われたと判断されれば、処理はステップS132に移行される。ステップS132では、コンテンツデータの更新があったことが、例えばコンピュータ101の表示装置214に対する所定の表示によって、ユーザに通知される。これに限らず、コンピュータ101が有するデータベースなどに自動的に登録するようにしてもよい。ユーザへの更新の通知がなされると、処理はステップS133に移行される。
ステップS133では、コンピュータ101において、受信された状態情報が解析され、当該コンテンツデータの状態情報を次に要求するためのポーリング間隔が求められる。そして、処理はステップS134に移行され、受信した状態情報に付加されたポーリング最短間隔と、ステップS133で求められたポーリング間隔とが比較される。比較の結果、若し、ステップS133で求められたポーリング間隔が、状態情報に付加されたポーリング最短間隔よりも短い間隔であると判断されたら、処理はステップS136に移行される。ステップS136では、ポーリング間隔が、状態情報に付加されたポーリング最短間隔に再設定される。ポーリング間隔が設定されると、処理は後述するステップS138に移行される。
一方、ステップS134で、ステップS133で求められたポーリング間隔が、状態情報に付加されたポーリング最短間隔よりも長い間隔であると判断されたら、処理はステップS135に移行される。ステップS135では、状態情報に付加されたポーリング最長間隔と、ステップS133で求められたポーリング間隔とが比較される。比較の結果、若し、ステップS133で求められたポーリング間隔が、状態情報に付加されたポーリング最長間隔よりも長いと判断されたら、処理はステップS137に移行される。ステップS137では、ポーリング間隔が、状態情報に付加されたポーリング最長間隔に再設定される。ポーリング間隔が設定されると、処理はステップS138に移行される。
ステップS138では、ステップS134〜ステップS137の処理で求められたポーリング間隔から、当該コンテンツデータの状態情報を次に要求する予定のタイミングを示す日時である、状態情報取得予定日時が求められる。例えば、前回、状態情報を取得した日時に対してポーリング間隔が示す日時を加算することで、状態情報取得予定日時を求めることができる。求められた状態情報取得予定日時は、例えばRAM211に記憶される。そして、処理は図20のフローチャートによる一連の処理を抜け、図6のステップS30に移行される。
なお、この第6の変形例は、上述した実施形態および実施形態の第1乃至第5の変形例と組み合わせて実施することが可能である。
<第7の変形例>
次に、この実施形態の第7の変形例について、図22および図23を用いて説明する。この第7の変形例は、コンピュータ101が持つ時刻情報と、サーバ装置102が持つ時刻情報とを比較し、これらの差分の時間情報に応じてポーリング間隔を調整する例である。
コンピュータ101側とサーバ装置102側との間の時間差分を考慮しないと、サーバ装置102側で実際にコンテンツデータの更新がなされた時刻と、コンピュータ101側でリンク管理情報500で管理する日時との間で矛盾が生じる可能性がある。例えばサーバ装置102側の時刻がコンピュータ101側の時刻よりも遅いと、状態情報に基づきポーリング間隔を制御しても、ポーリングを行った時点ではサーバ装置102側でコンテンツデータの更新が行われていないという事態が起こり得る。
図22は、この第7の変形例によりサーバ装置102が状態情報を生成する際の一例の処理を示すフローチャートである。コンピュータ101は、図6のステップS24によりサーバ装置102に対して状態情報をリクエストする際に、コンピュータ101側の時刻を示す時刻情報をリクエストに付加する。時刻情報は、例えばコンピュータ101が持つ時計が示す情報を用いることができる。
サーバ装置102は、コンピュータ101から送信された、コンピュータ101側の時刻情報が付加された状態情報のリクエストを受け取ると、受け取ったリクエストからコンピュータ101側の時刻情報を取り出す。そして、取り出した時刻情報と、サーバ装置102側の時刻を示す時刻情報とを比較して、差分を算出する(ステップS90)。
次のステップS91で、サーバ装置102は、コンピュータ101からのリクエストに基づき、データ管理情報400を識別する。データ管理情報400が有するデータ識別情報がURIであれば、リクエストを受けたURIに一致するデータ識別情報を有するデータ管理情報400を検索する。次のステップS92で、サーバ装置102は、識別されたデータ管理情報400に関連付けられているデータ更新情報401を取得する。
サーバ装置102は、ステップS92で取得されたデータ更新情報401と、ステップS90で算出されたコンピュータ101側とサーバ装置102側との時刻の差分を示す差分時刻情報とから、状態情報を生成する(ステップS93)。生成された状態情報は、サーバ装置102からリクエストの送信元であるコンピュータ101に返される。
図23は、図22のフローチャートに従い生成された一例の状態情報を示す。この図23の例では、状態情報がXMLを用いて記述されている。タグ<UPDATE>およびタグ</UPDATE>により、このデータがコンテンツデータの更新情報に関するものであることが示される。また、タグ<DATE>およびタグ</DATE>で挟まれた部分に、データ更新情報401における更新日時を示す情報が列挙される。また、タグ<UPDATE>およびタグ</UPDATE>にに対して、タグ<DIFFERENCE_TIME>およびタグ</DIFFERENCE_TIME>が付加される。このタグ<DIFFERENCE_TIME>およびタグ</DIFFERENCE_TIME>で挟まれた部分に、差分時刻情報が記述される。
この図23の例では、この状態情報に対応するコンテンツデータがサーバ装置102に登録されて以降、最初の更新日時を2007年1月1日の0時として、登録後に25時間周期で4回、更新が行われていることが示されている。また、コンピュータ101側の時刻とサーバ装置102側の時刻とで9時間の時間差があることが示されている。この状態情報を受け取ったコンピュータ101は、状態情報を解析して求められた状態情報取得予定日時を、この差分時刻情報に基づき調整することができる。
なお、この第7の変形例では、コンピュータ101からのリクエストに対しサーバ装置102から状態情報を返す際に差分時刻情報を送信することで、コンピュータ101とサーバ装置102との間の時刻の調整を行うようにしている。これはこの例に限られず、例えばNTP(Network Time Protocol)を用いて、コンピュータ101が、リンク情報504の示すサーバ装置102毎に差分時刻情報を求めるようにしてもよい。
また、この第7の変形例は、上述した実施形態および実施形態の第1乃至第6の変形例と組み合わせて実施することが可能である。
<第8の変形例>
次に、本実施形態の第8の変形例について、図25〜図28を用いて説明する。上述した実施形態および実施形態の第1〜第7の変形例は、サーバ装置102では常に同じ情報を管理し、ポーリングを行う複数のクライアント(コンピュータ101)に対して同じ情報を送信することを前提としている。
これに対して、本第8の変形例では、サーバ装置102から送信された状態情報に基づき、複数のクライアントがポーリング間隔および次回のポーリング時間を算出することを前提としている。そして、算出されたポーリング間隔および時間に応じて、当該複数のクライアントが同一の時間にポーリングを行うことによって発生する、サーバ装置102へのアクセスの集中を避けるようにしている。
図25は、本第8の変形例に係る更新履歴の一例の管理構造を示す。本第8の変形例によるシステムでは、サーバ装置102が管理するコンテンツデータそれぞれを識別するためのデータ管理情報600と、当該データ管理情報600とID情報で関連付けられるデータ更新情報610とを持つ。データ管理情報600は、管理用のID601、名称、コンテンツデータを識別する識別情報としてのリンク情報、当該コンテンツデータの状態情報を示すリンク情報、情報取得日時および状態情報取得予定日時からなる。
一方、データ更新情報610は、ID611と、当該ID611に対応するコンテンツデータの更新日時612と、ポーリング回数613とが関連付けられる。ID611は、データ管理情報600における管理用のID601と対応する。データ更新情報610は、当該コンテンツデータが更新される度に追加される。ポーリング回数613は、コンテンツデータが更新されてからクライアントからポーリングのためのアクセスのあった回数を示す。すなわち、ポーリング回数613は、クライアントからサーバ装置102に対してなされた、状態情報の要求回数である。サーバ装置102は、コンピュータ101、101、…からポーリングのためのアクセスがあると、更新のあった最新にコンテンツデータに対応するデータ更新情報610について、ポーリング回数613を1ずつ加算する。
なお、図示は省略するが、データ管理情報600に対してコンテンツデータを識別するための識別情報に加えて、当該コンテンツデータそのものを含ませてもよいし、当該コンテンツデータへのパスなどの情報を含ませることもできる。データ管理情報600およびデータ更新情報610の生成や削除は、サーバ装置102において行われる。
図26は、本発明の実施形態の第8の変形例によるデータ状態情報の一例の取得処理を概略的に示すフローチャートである。ステップS150で、ユーザ側のコンピュータ101において所定の日時になると、ポーリングにより、予め登録されたリンク情報で指定されるコンテンツデータを持つサーバ装置102に対して要求送信がなされる。これにより、当該コンテンツデータの状態を示す状態情報がリクエスト(要求)される。
このリクエストを受けたサーバ装置102は、要求のあった最新のコンテンツデータに対応するデータ更新情報610のポーリング回数613に対して、1を加算する(ステップS151)。そして、次のステップS152で、当該リクエストがあったコンテンツデータの状態情報を、当該リクエストを行ったコンピュータ101に返す。この状態情報は、図25を用いて説明したように、ポーリング回数613を含む。
コンピュータ101は、受信した状態情報に基づき、対応するコンテンツデータに更新があったか否かを判断する(ステップS153)。若し、コンテンツデータに更新があったと判断されたら、処理はステップS154に移行される。また、当該コンテンツデータの状態情報に対する初回の要求であった場合も、処理はステップS154に移行される。
ステップS154では、コンテンツデータの更新があったことが、例えばコンピュータ101の表示装置214に対する所定の表示によって、ユーザに通知される。これに限らず、コンピュータ101が有するデータベースなどに自動的に登録するようにしてもよい。ユーザへの更新の通知がなされると、処理はステップS155に移行される。
ステップS155では、コンピュータ101において、受信された状態情報が解析され、当該コンテンツデータの状態情報を次にリクエストするためのポーリング間隔が求められる。そして、次のステップS156で、ステップS155で求められたポーリング間隔と、ステップS152でサーバ装置102から返された状態情報に含まれるポーリング回数とに基づき、次回のポーリングを行うポーリング間隔を調整する。この次回ポーリング間隔の調整処理の詳細は、後述する。
ステップS156で次回のポーリング間隔の調整が行われると、処理はステップS157に移行される。ステップS157では、調整されたポーリング間隔から、当該コンテンツデータを次にリクエストする予定のタイミングを示す日時である、状態情報取得予定日が求められる。
一方、上述のステップS153において、コンテンツデータに更新がなかったと判断されれば、処理はステップS158に移行される。ステップS158では、コンピュータ101において、ポーリング間隔が予め決められた固定値に設定される。これに限らず、ユーザがコンピュータ101に対して指定した値をポーリング間隔として用いてもよい。ポーリング間隔が設定されると、設定されたポーリング間隔に基づき、状態情報を次回取得する予定の日時が求められる。こうして求められた状態情報を次回取得する予定の日時により、状態情報取得予定日時が決定される。
コンピュータ101は、上述のようにしてステップS157またはステップS158で決定された状態情報取得予定日時になったら、ステップS150からの処理を再び行い、状態情報取得予定日時を更新する。
図27は、上述したステップS156で説明した、コンピュータ101(クライアント)において行われるポーリング間隔の調整処理を示す一例のフローチャートである。先ず、ステップS170で、予測コンテンツ更新間隔Tを取得する。この予測コンテンツ更新間隔Tは、上述のステップS155で求められたポーリング間隔である。
次のステップS171で、予測コンテンツ更新間隔Tの間に予測される予測ポーリング回数Cを求める。この予測ポーリング回数Cは、例えばコンピュータ101において、過去に確認されたコンテンツデータの更新の履歴と、各更新間隔内になされたポーリング回数とを保持しておき、各更新間隔内のポーリング回数の平均値として求めることが考えられる。これに限らず、予測ポーリング回数Cは、コンテンツデータの最新の更新が行われるまでの、直前の更新からのポーリング回数を用いてもよい。
さらに、次のステップS172で、最新のコンテンツデータに対するポーリング回数N、すなわち、コンピュータ101が最新のコンテンツデータに対してポーリングを行った何番目のクライアントであるかを取得する。これは、ステップS152でサーバ装置102から返された状態情報に含まれるポーリング回数613に基づき取得できる。
次のステップS173で、上述の予測コンテンツ更新間隔Tに予測ポーリング回数C回のアクセスがあると想定して、次式(1)により、予測コンテンツ更新間隔Tにおいて均等にポーリングを行う場合の時間間隔Uを取得する。
時間間隔U=予測コンテンツ更新間隔T/予測ポーリング回数C …(1)
次のステップS174で、最新のコンテンツデータに対するポーリング回数Nが予測ポーリング回数Cを越えているか否かが判断される。若し、越えていないと判断されれば、処理はステップS175に移行され、ポーリング回数Nと、ステップS173で求められた時間間隔Uとから、次式(2)により、ポーリング間隔の調整量Aを求める。この調整量Aを、ステップS155で求められたポーリング間隔に対して、例えば加算する。
調整量A=時間間隔U×ポーリング回数N …(2)
一方、ステップS174で、ポーリング回数Nが既に予測ポーリング回数Cを越えていると判断されたら、処理はステップS176に移行される。ステップS176では、ポーリング回数Nが予測ポーリング回数Cで除され、その剰余Rがポーリング回数Nと置換される。換言すれば、剰余Rが新たなポーリング回数Nとして用いられる。そして、処理はステップS175に移行され、剰余Rに置換されたポーリング回数Nを用いて、式(2)により調整量Aが算出される。
このようにして、コンピュータ101毎のポーリング間隔の調整量Aが求められる。各コンピュータ101、101、…のそれぞれにおいて、最新のコンテンツデータに対する当該コンピュータ101のポーリング回数Nに基づき調整量Aを求めている。そのため、例えば各コンピュータ101、101、…において予測コンテンツ更新間隔Tが同一であっても、実際にポーリングが行われる時間は、予測コンテンツ更新間隔T内で均一的に分散され、サーバ装置102へのアクセスの集中が抑えられる。
なお、上述では、予測コンテンツ更新間隔Tをそのまま用いて調整間隔Aを求めたが、これはこの例に限定されない。例えば、ステップS155で求められたポーリング間隔の一部の期間を予測コンテンツ更新間隔Tとして用いることができる。
図28は、本第8の変形例において、サーバ装置102からコンピュータ101(クライアント)に対して送信される状態情報の一例の構成を示す。タグ<UPDATE>およびタグ</UPDATE>により、これらのタグで挟まれた部分にコンテンツデータの更新情報に関する情報が記述されることが示される。タグ<DATE ACCESS=xxxx>およびタグ</DATE>で挟まれた部分に、データ更新情報610における更新日時612を示す情報が記述される。なお、タグ<DATE ACCESS=xxxx>内の「xxxx」は、ポーリング回数613を示す。すなわち、タグ<DATE ACCESS=xxxx>の属性である「ACCESS=xxxx」は、当該タグで示される更新から次の更新までの間に、コンピュータ101、101、…からリクエストされた回数(ポーリング回数613)を示す。
図28の例では、登録後に25時間周期で4回データの更新が行われていることが分かる。また、コンピュータ101、101、…からのリクエストが、1回目の更新が行われるまでに1200回、1回目と2回目の更新の間に1228回、2回目と3回目の更新の間に1312回、3回目と4回目の更新の間に1280回あったことが分かる。さらに、あるコンピュータ101からのポーリングが、4回目の更新以降の第625番目のリクエストであることが分かる。
この図28の状態情報の例を用いて、このデータで、2007年01月05日の4時以降に、コンピュータ101において、当該状態情報に対応するコンテンツデータの登録を行った場合について考える。この場合、図26のステップS153の判断により、この状態情報をサーバ装置102に対する初回のアクセスで取得できる。したがって、コンピュータ101は、サーバ装置102への次回のアクセス時期を適切に設定することができる。
また、過去4回の更新に関するポーリング実績から、コンテンツデータの更新と更新の間に平均1255回のポーリングがあると予測できる。そこで、式(1)により、略71秒毎(25時間/1255回)にポーリングを行うよう分散すればよいことが算出できる。そのため、調整量Aは、式(3)から、12時間19分35秒と算出できる(71秒×625回)。したがって、当該コンピュータ101からの次回ポーリング予定時間は、2007年01月06日の17時19分35秒となる。
なお、本第8の変形例におけるコンピュータ101側の処理には、図6を用いて説明した処理を適用することができる。この場合、図6のステップS14とステップS15の間に、図26のフローチャートにおけるステップS156による、ポーリング間隔の調整処理が行われることになる。
なお、本第8の変形例は、上述した第7の変形例と組み合わせて実施することが可能である。
<第9の変形例>
次に、本実施形態の第9の変形例について、図29を用いて説明する。本第9の変形例は、コンピュータ101によるポーリング間隔を、サーバ装置102の側から決めるようにした例である。
図29は、この第9の変形例によりサーバ装置102が状態情報を生成する際の一例の処理を示すフローチャートである。ステップS180で、サーバ装置102は、上述した図6のステップS24によるコンピュータ101からのリクエストに基づき、データ管理情報600を識別する。次のステップS181で、識別したデータ管理情報600に関連付けられているデータ更新情報610における、リクエストのあった最新のコンテンツデータに対するポーリング回数613に、1を加算する。
ステップS181でポーリング回数613の更新が行われたら、処理はステップS182に移行され、ステップS180で識別されたデータ管理情報600に関連付けられたデータ更新情報610から、更新日時612を取得する。そして、次のステップS183で、取得した更新日時612から、線形近似などを用いて当該コンテンツデータの更新間隔を予測する。
更新間隔を求める方法は、線形近似による方法の他にも、更新日時612から更新パターンを求め、マッチするパターンから更新の予測を行う方法が考えられる。また、更新間隔を求める方法は、前回の更新日時と今回の更新日時だけを単純に比較するような方法などでもよい。
次のステップS184で、ステップS183で求めた更新間隔と、ステップS181で更新されたポーリング回数613とに基づき、調整量Aを算出する。ここでの調整量Aの算出方法は、図27を用いて説明した方法と同一であるので、詳細な説明を省略する。例えば、ステップS183で求めた更新間隔を予測コンテンツ更新間隔Tとし、予想ポーリング回数Cを、最新以外の更新日時612に対応するポーリング回数613に基づき求める。また、最新の更新日時612に対応するポーリング回数613を、ポーリング回数Nとする。これらに基づき上述した式(2)の計算を行い、調整量Aを算出する。
調整量Aが算出されたら、処理はステップS185に移行し、ステップS183で求めた更新間隔と、ステップS184で求めた調整量Aとに基づき、予測更新日時を求める。例えば、データ更新情報610における最新の更新日時612に対して調整量Aを加えた日時を、予測更新日時とする。サーバ装置102は、求められた予測更新日時と最新の更新日時612とにより状態情報を生成する。この状態情報は、例えば、図19を用いて説明したような構造とすることができる。生成されたこの状態情報は、サーバ装置102から、リクエストの送信元であるコンピュータ101に返される。
コンピュータ101は、コンピュータ101からサーバ装置102への初回のアクセスでこの状態情報を取得することができる。この取得された状態情報には、対応するコンテンツデータの更新が次に行われると予測される、予測更新日時を示す情報が記述されている。そのため、コンピュータ101は、サーバ装置102への次回のアクセス時期を適切に設定することができる。
このように、本第9の変形例によれば、コンピュータ101のポーリング間隔を、サーバ装置102側で求めた調整量Aに基づき決めることができる。
本第9の変形例によれば、予測更新日時は、コンピュータ101からのリクエストに応じて加算されたポーリング回数Nを予測ポーリング回数Cで除した際の剰余Rに基づき求めた調整量Aを用いて生成される。そのため、例えば各コンピュータ101、101、…において予測コンテンツ更新間隔Tが同一であっても、実際にポーリングが行われる時間は、予測コンテンツ更新間隔T内で均一的に分散され、サーバ装置102へのアクセスの集中が抑えられる。
なお、本第9の変形例は、上述した第7の変形例と組み合わせて実施することが可能である。
なお、上述の実施形態および各変形例において、コンピュータ101が複数のリンク管理情報500を有している場合に、状態情報を取得する処理に対して、リンク管理情報500毎に優先順位を設定することができる。より具体的には、上述した図6におけるステップS20の処理を行うに先立って、図24のステップS95に例示されるように、リンク管理情報500に対し、情報取得日時505で降順、すなわち、現在から過去の順となるように順序を設定する。図6のステップS21以下の処理は、このステップS95で設定された順序に従い、複数のリンク管理情報500に対して順次、処理を行うようにする。
また、上述では、本発明がRSSフィードに対応し、RSSフィードの更新情報を取得するように説明したが、これはこの例に限定されない。すなわち、本発明は、インターネット上に分散的に存在する他のデータの更新情報を取得する際にも、用いて好適なものである。
具体的な例としては、インターネット上のWebサイトの更新情報を取得する際に、本発明を適用することができる。この場合、Webサイトそのもの、Webサイトを構成する各Webページ、Webページ内に表示される画像データやテキストデータなど、Webサイトの様々な階層のデータを更新情報の取得対象とすることができる。
<他の実施形態>
上述の実施形態および実施形態の各変形例においては、サーバ装置102およびコンピュータ101がそれぞれ単独の機器から構成されるように説明したが、これはこの例に限定されない。例えば、本発明のコンピュータ101やサーバ装置102と同等の機能を、それぞれ複数の機器から構成されるシステムによって実現しても良い。
さらに、上述の各実施形態をコンピュータで実現するために、該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施形態の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。
上述の実施形態を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムファイル)をサーバに記憶しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。
そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。
つまり、上述の各実施形態を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明の一つである。
また、上述の各実施形態を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。
また、上述の各実施形態を実現するためのコンピュータプログラムは、すでにコンピュータ上で稼働するOSの機能を利用するものであってもよい。
さらに、上述の実施形態を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。