(本発明の基礎となった知見)
初めに、以下では、本発明の基礎となった知見について述べられる。すなわち、パーソナルコンピュータ(PC)やデジタルカメラ、ビデオカメラなどの多様な機器のそれぞれにコンテンツが蓄積されていることがある。そこで、それらのコンテンツを管理する処理の煩わしさを解消するため、これらの機器からコンテンツを取得して一元管理するホームサーバ製品が存在する。ホームサーバがコンテンツを取得する機器を本書類では、クライアント機器という。
また、ホームサーバ機能は、PCやレコーダー製品などの多様な製品に搭載される。このため、クライアント機器に蓄積されたコンテンツを、複数のホームサーバが取得するケースが多い。家族全員で使うホームサーバと、個人で使うホームサーバとなど、個人が複数のホームサーバを使い分けているケースがある。このようなケースも、クライアント機器に蓄積されたコンテンツを複数のホームサーバが取得するケースの代表例である。
なお、ホームサーバとクライアント機器とは、イーサネット(登録商標)ケーブルや無線LAN(Local Area Network)などで接続されたネットワークを介して、クライアント機器からホームサーバへ、コンテンツを転送する。これらのネットワーク以外にも、USB(Universal Serial Bus)ケーブルなどの通信ケーブルを介して、クライアント機器からホームサーバへコンテンツを転送することもある。
従来、ホームサーバがクライアント機器からコンテンツを取得する方法の一つとして、次の方法がある。その方法では、クライアント機器が蓄積する全てのコンテンツに関する情報を記録したコンテンツリストを用いる(例えば、特許文献1および特許文献2参照)。このクライアント機器が蓄積する全てのコンテンツに関する情報を記録したコンテンツリストを、以下では、「全コンテンツリスト」という。全コンテンツリストを用いた方法では、ホームサーバがクライアント機器から全コンテンツリストを取得して、取得した全コンテンツリストと、ホームサーバが取得済みのコンテンツのリストとを比較する。これにより、ホームサーバは、そのホームサーバが未取得のコンテンツとして、取得された全コンテンツリストにより示される一方で、取得済みのコンテンツのリストには示されないコンテンツを特定する。そして、ホームサーバは、特定された未取得のコンテンツのみをクライアント機器から取得する。
その他にも、ホームサーバがクライアント機器からコンテンツを取得する方法の一つとして、クライアント機器が複数のホームサーバのそれぞれについて、未取得のコンテンツリストを作成する方法があった(例えば、特許文献3および特許文献4参照)。クライアント機器がホームサーバ毎に作成したこのコンテンツリストを、以下では、「個別コンテンツリスト」という。個別コンテンツリストを用いた方法では、クライアント機器は、次の管理をする。その管理では、蓄積するコンテンツそれぞれに対応付けて、そのコンテンツが各ホームサーバへ転送済みか未転送かを表す情報を管理する。これにより、クライアント機器は、ホームサーバから要求されたタイミングもしくは所定のタイミングで、ホームサーバに対応する個別コンテンツリストを生成し、そのホームサーバへと通知する。ホームサーバは、クライアント機器から通知された個別コンテンツリストに基づいて未取得コンテンツを特定し取得する。
しかしながら、全コンテンツリストには、ホームサーバがクライアント機器から未取得のコンテンツに関する情報だけでなく、取得済みのコンテンツに関する情報も記録されている。これら取得済みのコンテンツに関する情報はホームサーバに必要のない情報である。ホームサーバは、クライアント機器からコンテンツを取得して一元管理するという目的のためには、クライアント機器から未取得のコンテンツに関する情報だけ取得できればよい。
つまり、ホームサーバがクライアント機器からコンテンツを取得する方法として、全コンテンツリストを用いる方法がある。この方法では、ホームサーバが取得するコンテンツリストに無駄な情報が多く含まれてしまう。このため、この方法では、コンテンツリストの取得時間や、取得したコンテンツリストから、未取得のコンテンツを特定する処理の処理時間が長くなるというという問題があった。なお、クライアント機器に、ホームサーバが未取得のコンテンツが存在しない場合、全コンテンツリストに記録された情報はすべてホームサーバに必要のない情報であり、特に無駄が多い。
また、ホームサーバがクライアント機器からコンテンツを取得する方法として、個別コンテンツリストを用いる先述の方法は、次の通りである。つまり、この方法では、クライアント機器が蓄積するコンテンツそれぞれに対応付けて、各ホームサーバへ転送済みか未転送かを表す情報を管理する。このため、ホームサーバ毎に個別コンテンツリストを作成する必要がある。このため、クライアント機器の処理負荷が高くなるという課題があった。特に、個別コンテンツリストを作成するホームサーバの数が多いほど、処理負荷がより高くなる。デジタルカメラやビデオカメラなどのクライアント機器は一般的に処理能力が低く、個別コンテンツリストを作成できるホームサーバの数に制限があることが多い。また、個別コンテンツリスト作成の処理負荷が高まるほど、通常の撮影処理などに影響をおよぼす可能性が高まる。
本技術は、これら従来の問題を解決するもので、個別コンテンツリストを用いた方法に比べ、クライアント機器の処理負荷が低く、全コンテンツリストを用いた方法に比べ、無駄な情報の少ないコンテンツリストを用いたコンテンツ取得方法およびコンテンツ取得システムを提供する。
前記問題を解決するために、本発明の一態様に係るクライアント機器は、クライアント機器に蓄積された複数のコンテンツを1つ以上のサーバ装置が取得するコンテンツ取得システムのクライアント機器であって、複数のコンテンツを蓄積する蓄積部と、蓄積されている前記コンテンツを、1つ以上の前記サーバ装置に取得させるコンテンツ管理部と、蓄積されている前記コンテンツのうちで1つ以上の前記サーバ装置のいずれかが前記クライアント機器から取得していないコンテンツに関するコンテンツ情報が記録された差分情報を、1つ以上の前記サーバ装置に共通する情報として作成し、1つ以上の前記サーバ装置それぞれの要求に応じて前記差分情報を提供する差分情報管理部と、前記サーバ装置がすでに取得したコンテンツに関する前記コンテンツ情報である取得済みコンテンツ情報を、1つ以上の前記サーバ装置のそれぞれから受信する取得済みコンテンツ管理部と、を備え、前記差分情報管理部は、受信した前記取得済みコンテンツ情報に基づいて、すべての前記サーバ装置において取得済みとなったコンテンツに関する前記コンテンツ情報を前記差分情報から削除する。
このように、クライアント機器が管理する差分情報を、1つ以上のサーバ装置に対して共通の情報として作成する。このことで、1つ以上のサーバ装置に対してそれぞれ個別の差分リストを提供する先述の方法に比べて、クライアント機器の処理負荷を比較的低くすることができる。
さらに、サーバ装置から受信した取得済みコンテンツ情報に基づき、対象とするすべてのサーバ装置において取得済みであるコンテンツに関するコンテンツ情報を差分情報から削除する。ここで、差分情報が、サーバ装置のいずれかが取得していないコンテンツを示す差分情報であるのには、その差分情報に、このコンテンツ情報が含まれることが不要である。このような、不要なコンテンツ情報を削除することができ、差分情報のサイズを必要最小限に保つことができる。つまり、サーバ装置が差分情報を取得する時間や、差分情報から、未取得のコンテンツを特定する時間を短くすることができる。
また、前記クライアント機器は、さらに、1つ以上の前記サーバ装置を識別するためのサーバ識別子を1つ以上記憶するサーバ管理部を備え、前記差分情報管理部は、前記蓄積部に蓄積されている前記コンテンツに新たなコンテンツが追加され、または、蓄積されている前記コンテンツが更新、もしくは削除された場合、追加、更新、または削除された前記コンテンツに関する前記コンテンツ情報を新たなコンテンツ情報として前記差分情報に追加し、前記取得済みコンテンツ管理部は、前記サーバ装置から、前記サーバ識別子と前記取得済みコンテンツ情報とを受信し、受信した前記サーバ識別子と前記取得済みコンテンツ情報とを関連付けて記録し、前記差分情報管理部は、前記取得済みコンテンツ管理部が記録した前記取得済みコンテンツ情報のうちで、前記サーバ管理部により記憶されたすべての前記サーバ識別子に関連付けられた前記取得済みコンテンツ情報で示される前記コンテンツ情報を前記差分情報から削除してもよい。
このようにすることで、サーバ装置では、取得済みコンテンツに対して、クライアント機器内で更新または削除が行われた場合であっても、新たなコンテンツが追加された場合と同様にして、コンテンツの取得処理を行う。このことにより、取得済みコンテンツに対して、クライアント機器におけると同様の、更新または削除に対応する処理を行うことができる。
また、前記差分情報管理部は、前記クライアント機器に新たなコンテンツが追加され、または、蓄積されている前記コンテンツが更新、もしくは削除された場合、前記追加、更新、または削除された前記コンテンツに関する前記コンテンツ情報を前記差分情報に記録した後、前記差分情報が更新されたことを前記サーバ管理部にサーバ識別子が記憶されたすべての前記サーバ装置へ通知してもよい。
このようにすることで、サーバ装置は差分情報が更新されたことを知ることができ、サーバ装置が、差分情報が更新されたことをクライアント機器へ確認する処理を省くことができる。
また、前記差分情報管理部は、さらに、前記差分情報に、前記追加、更新、または削除された前記コンテンツに関する前記コンテンツ情報を記録した後、前記差分情報に記録されている前記コンテンツ情報の総数を、前記サーバ管理部にサーバ識別子が記憶されたすべての前記サーバ装置へ通知してもよい。
このようにすることで、サーバ装置は、差分情報に記録された情報の総数を知ることができ、サーバ装置は、差分情報の取得にかかる時間を、事前に見積もることができる。さらに、サーバ装置は、事前に見積もった時間をユーザに提示することもできる。
また、前記差分情報管理部は、前記サーバ装置のいずれかが前記クライアント機器から取得していないコンテンツに関するコンテンツ情報に関連付けて、大小関係によりコンテンツの追加、更新、または削除を含む状態変化の時系列を示す差分番号を管理し、前記クライアント機器に新たなコンテンツが追加され、またはすでに蓄積されている前記コンテンツが更新、もしくは削除される都度、前記差分番号を増加させ、増加させた前記差分番号を、前記状態変化のあったコンテンツに関するコンテンツ情報に関連付け、前記取得済みコンテンツ管理部は、前記サーバ装置から、前記サーバ識別子と前記取得済みコンテンツ情報とに関連付けられた前記差分番号の中で最大の差分番号を受信し、前記サーバ管理部は、受信した前記サーバ識別子と前記最大の差分番号とが関連付けられたサーバ管理テーブルを管理し、前記差分情報管理部は、前記サーバ管理部により記憶されているすべての前記サーバ装置の前記サーバ識別子に関連付けられた前記差分番号の中で最小の差分番号を選択し、前記差分情報の中で前記最小の差分番号以下の差分番号に関連付けられた前記コンテンツ情報を前記差分情報から削除してもよい。
このように、コンテンツに対して、大小関係により、コンテンツの追加、更新、または削除を含む状態変化の時系列を示す差分番号を関連付ける。ことで、コンテンツの変更順を管理することができる。そのため、クライアント機器は、サーバ装置からすべての取得済みコンテンツに関する情報を取得する必要がない。つまり、クライアント機器は、単に、取得済みコンテンツ情報に関連付けられた差分番号の中で最大の差分番号を取得するだけで、サーバ装置が取得済みのコンテンツをすべて把握することができる。つまり、サーバ装置からクライアント機器へ通知する情報量を削減すると共に、双方の処理負荷を削減することができる。
さらに、管理するすべてのサーバ装置が取得済みとなったコンテンツに関する情報は、どのサーバ装置にとっても不要な情報である。そうであるから、これらの情報をクライアント機器が差分情報から削除することで、差分情報への、不要な情報の掲載を防ぐことができる。つまり、サーバ装置が差分情報を取得する時間や、差分情報から、未取得のコンテンツを特定する時間を短くすることができる。さらに、クライアント機器が、差分情報から、不要な情報を削除する処理において、差分番号を利用する。このことにより、削除すべき情報を精査することなく、差分番号の大小関係だけで、差分リストから削除する情報を決定でき、クライアント機器の処理負荷を削減することができる。
また、前記差分情報管理部は、前記差分情報に前記状態変化のあったコンテンツに関するコンテンツ情報を記録した後、前記差分情報に記録されている差分番号の中で最大の前記差分番号を、前記サーバ管理部にサーバ識別子が記憶されたすべての前記サーバ装置へ通知してもよい。
このようにすることで、サーバ装置は、差分情報が更新されたことを知ることができ、サーバ装置は、差分情報が更新されたことをクライアント機器へ確認する処理を省くことができる。さらに、サーバ装置は、クライアント機器から取得済みのコンテンツに関連付けられた差分番号と、クライアント機器から通知された差分番号とを比較する。この比較をすることで、クライアント機器に、未取得のコンテンツが蓄積されているか否かを判断することができる。そして、サーバ装置は、クライアント機器に、未取得のコンテンツが蓄積されている場合にだけ、クライアント機器から差分情報を取得することができる。これにより、クライアント機器に、未取得のコンテンツが蓄積されていない場合に、クライアント機器から差分情報を取得することを防止することができる。
また、前記差分情報管理部は、前記差分情報に前記状態変化のあったコンテンツに関するコンテンツ情報を記録した後、前記差分情報に記録されている差分番号の中で最小の前記差分番号を、前記サーバ管理部にサーバ識別子が記憶されたすべての前記サーバ装置へ通知してもよい。
このように、サーバ装置は、クライアント機器から、差分情報に記録されている中で最大の差分番号と最小の差分番号とを通知される。このことで、事前に設定された、差分番号の定義に基づいた演算により、差分情報に記録されたコンテンツ情報の総数を見積もることができる(例えば、最大の差分番号から最小の差分番号を減算して1加えた値を総数とすることができる)。このため、サーバ装置は、見積もられた総数から、差分情報の取得にかかる時間を、事前に見積もることができる。さらに、サーバ装置は、事前に見積もった時間をユーザに提示することもできる。
また、前記差分情報管理部は、(1)前記差分番号に関連付けられた前記コンテンツ情報を第一の差分情報に記録し、前記第一の差分情報に記録された前記差分番号の中で最大の差分番号と前記第一の差分情報に関する情報とを関連付けて、前記第一の差分情報の上位の階層の第二の差分情報に記録し、さらに前記差分情報管理部は、(2)前記コンテンツ情報を前記第一の差分情報に記録する際、前記第一の差分情報に記録された前記コンテンツ情報の数が予め定められた数に達していた場合、新たに前記第一の差分情報と同じ階層の第三の差分情報を作成し、前記あらかじめ定められた数を超えた前記コンテンツ情報を前記第三の差分情報に記録し、前記第三の差分情報に記録された前記差分番号の中で最大の差分番号と前記第三の差分情報に関する情報とを関連付けて前記第二の差分情報に記録し、前記サーバ装置の要求に応じて前記第一の差分情報を提供するか、または前記第二の差分情報と、前記第一の差分情報もしくは前記第三の差分情報のいずれか1つ以上を提供してもよい。
このように、クライアント機器が差分情報を複数に分割して階層構造を持たせ、各差分情報と、差分情報に掲載された差分番号とを関連付ける。このことで、差分情報に記録された情報の中に、あるサーバ装置にとって不要な情報が記録されていた場合でも、このサーバ装置は、次の部分だけを取得できる。その部分とは、差分情報の中で必要な情報が記録された部分である。つまり、サーバ装置がクライアント機器から、差分情報の不要な部分を取得する必要がなくなる。このことで、サーバ装置の処理時間を短くすることができる。
また、前記差分情報管理部は、前記サーバ管理部によりサーバ識別子が記憶された前記サーバ装置が存在する場合のみ、前記コンテンツ情報を前記差分情報に記録してもよい。
このようにすることで、差分情報を必要とするサーバ装置が存在しない場合、クライアント機器は差分情報を生成しないので、クライアント機器の処理負荷を削減することができる。
また、前記サーバ管理部は、記憶する前記サーバ識別子の中で指定された前記サーバ識別子を削除し、前記差分情報管理部は、前記サーバ管理部が記憶する前記サーバ識別子が存在しなくなった場合、前記差分情報に記録されたすべての前記コンテンツ情報および前記差分情報を削除してもよい。
前記サーバ管理部が記憶する前記サーバ識別子が存在しないということは、差分情報を必要とするサーバ装置が存在しないことである。そうであるので、このように、必要のない差分情報と、その差分情報に記録された情報とを削除する。このことで、クライアント機器の記憶領域の消費量を削減できる。
また、前記サーバ管理部は、前記サーバ装置から前記サーバ識別子を含むサーバ登録要求を受信し、受信した前記サーバ識別子を記憶してもよい。
このように、サーバ識別子をサーバ装置から受信することで、ユーザがクライアント機器へサーバ識別子を設定する手間などを省くことができる。
また、前記クライアント機器は、当該クライアント機器のクライアント識別子を含む、当該クライアント機器に関する情報を記載したクライアント機器情報を、前記サーバ装置へ提供する機器情報提供部を備え、前記機器情報提供部は、前記クライアント機器情報に、前記差分情報を取得するための情報を記載してもよい。
このようにすることで、サーバ装置はクライアント機器情報を取得するだけで差分情報を直接取得できるようになる。
また、本発明の一態様に係るサーバ装置は、クライアント機器に蓄積された複数のコンテンツを1つ以上のサーバ装置が取得するコンテンツ取得システムにおけるサーバ装置であって、前記クライアント機器から、前記クライアント機器に蓄積されたコンテンツに関するコンテンツ情報が記録された、1つ以上の前記サーバ装置のいずれかが前記クライアント機器から取得していないコンテンツを示す差分情報を取得する差分情報取得部と、前記差分情報に記録された前記コンテンツ情報に基づき、未取得のコンテンツのみを前記クライアント機器から取得するコンテンツ取得部と、前記コンテンツ取得部が取得したコンテンツに関するコンテンツ情報を記録する取得済みコンテンツ管理部とを備え、前記差分情報には、前記コンテンツ情報がコンテンツ毎に記録され、さらに前記コンテンツ情報には大小関係によりコンテンツの追加、更新、または削除を含む状態変化の時系列を示す差分番号が関連付けられており、前記取得済みコンテンツ管理部は、前記コンテンツ取得部が取得したコンテンツに関する前記コンテンツ情報に関連付けられた前記差分番号の中で最大の差分番号を第一の差分番号として記録し、前記コンテンツ取得部は、前記差分情報の中で前記第一の差分番号より大きな前記差分番号が関連付けられた前記コンテンツ情報に対応するコンテンツのみを前記クライアント機器から取得し、さらに前記サーバ装置は、前記サーバ装置の識別子であるサーバ識別子と前記第一の差分番号を前記クライアント機器へ通知する取得済みコンテンツ通知部とを備える。
このように、差分情報に記録されたコンテンツ情報を差分番号に関連付けて管理する。このことで、サーバ装置は、差分番号の大小関係を比較するだけで、差分情報の中から、未取得のコンテンツに関するコンテンツ情報を取得することができる。さらに、サーバ装置は、取得済みのコンテンツ情報に関連付けられた差分番号の中で最大の差分番号1つをクライアント機器へ送信するだけで、すべての取得済みコンテンツに関するコンテンツ情報をクライアント機器へ通知することができる。さらに、クライアント機器は、通知された差分番号に基づいて差分情報から不要な情報を削除することができる。
また、前記サーバ装置は、前記クライアント機器から最新の差分番号を受信する差分番号受信部を備え、前記差分情報取得部は、前記差分番号受信部が受信した前記最新の差分番号と前記第一の差分番号とを比較し、前記差分番号受信部が受信した前記最新の差分番号が前記第一の差分番号より大きい場合のみ、前記クライアント機器から前記差分情報を取得してもよい。
このように、サーバ装置は、クライアント機器から受信した差分番号に基づいて差分情報を取得する。このことで、クライアント機器に差分情報が更新されたか否かを常に確認する必要がなくされる。さらに、サーバ装置は、クライアント機器から受信した差分番号と前記第一の差分番号との比較により、未取得のコンテンツがクライアント機器に蓄積されているか否かを判断できる。そうであるので、未取得のコンテンツがクライアント機器に蓄積されていない場合にサーバ装置がクライアント機器から不要な差分情報を取得することを防止することができる。
また、前記差分情報取得部は、前記クライアント機器から取得した第一の差分情報に前記第一の差分情報よりも下位の階層の第二の差分情報に関する情報が記載されていた場合、前記第二の差分情報に関する情報から前記第二の差分情報に記録されているコンテンツ情報に関連付けられた差分番号を取得して前記第一の差分番号と比較し、前記第二の差分情報に記録されているコンテンツ情報に関連付けられた前記差分番号が前記第一の差分番号より大きい場合にのみ、前記第二の差分情報を取得してもよい。
このようにすることで、差分情報が分割されて提供される場合に、サーバ装置は、差分情報のすべてを取得することなく、次の部分だけを取得できる。その部分とは、未取得のコンテンツに関する情報が記載されている部分である。つまり、サーバ装置がクライアント機器から差分情報を取得する時間を短くすることができる。
また、前記サーバ装置は、前記クライアント機器から前記差分情報を取得するための情報が記載された、クライアント識別子を含むクライアント機器情報を取得する機器情報取得部を備え、前記差分情報取得部は、前記クライアント機器情報に記載された前記情報に基づき前記差分情報を取得してもよい。
このようにすることで、サーバ装置は、クライアント機器情報を取得するだけで、差分情報を、クライアント機器から直接取得することができるようになる。
なお、本発明は、装置として実現するだけでなく、このような装置が備える処理手段を備える集積回路として実現したり、その装置を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを示す情報、データまたは信号として実現したりすることもできる。そして、それらプログラム、情報、データおよび信号は、CD−ROM等の記録媒体やインターネット等の通信媒体を介して配信してもよい。
上記の技術によれば、クライアント機器は複数のホームサーバに対して共通の1種類のコンテンツリストを管理するだけでよい。さらに、クライアント機器は、各ホームサーバから、そのホームサーバがこのクライアント機器から取得済みのコンテンツに関する情報を受信し、すべてのホームサーバが取得済みのコンテンツに関する情報をコンテンツリストから削除する。このことで、無駄な情報の少ないコンテンツリストとすることができる。つまり、クライアント機器は個別コンテンツリストを用いた方法に比べ小さな処理負荷でコンテンツリストを作成することができる。さらに、ホームサーバは、全コンテンツリストを用いた方法に比べ、無駄な情報の少ないコンテンツリストをクライアント機器から取得できる。これにより、ひいては、クライアント機器からコンテンツリストを取得する処理の処理時間や、コンテンツリストから、未取得のコンテンツを特定する時間を短くできる。
なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたは記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、各図面において、同じ構成要素については同じ符号が用いられている。
本実施の形態のコンテンツ取得システムでは、複数のホームサーバが、1つのクライアント機器からクライアント機器に蓄積されたコンテンツ(以下、「取得対象コンテンツ」という。)を取得するコンテンツ取得システムについて説明する。クライアント機器の具体例としては、デジタルカメラやビデオカメラなどが挙げられるがこれらに限るものではない。また、取得対象コンテンツの種類は、画像、動画、音声、文書などいずれでもよく、いずれかに限定しない。
図1は、実施の形態におけるコンテンツ取得システムの全体構成を示す図である。
図1に示すように、複数のコンテンツ取得サーバ200がクライアント機器300から、ネットワークを介してコンテンツを取得する。また、コンテンツ取得サーバ200は、ディスプレイ100を備えることができ、クライアント機器300から取得したコンテンツを表示したり、ユーザへの通知情報を表示したりすることができる。ネットワークとしては、有線や無線ネットワーク、もしくは通信ケーブルなどが挙げられるが、本実施の形態では、無線LANで接続されたネットワークを利用する。
本実施の形態のコンテンツ取得システムでは、クライアント機器300が、ネットワークを介して接続されるコンテンツ取得サーバ200に、差分リスト(図6の差分リスト502dを参照)を取得させる。このことは、そのコンテンツ取得サーバ200に、当該クライアント機器300内の未取得のコンテンツを特定させるために行われる。上述の差分リストは、いずれのコンテンツ取得サーバ200に対しても共通するリストである。このような差分リストを作成し、取得させることが、本技術の特徴である。差分リストとは、いずれかのコンテンツ取得サーバ200がまだ取得していないコンテンツのコンテンツ情報を記録したリストである。つまり、すべてのコンテンツ取得サーバ200が取得したコンテンツについては、そのコンテンツ情報は、差分リストから削除される。
図2は、コンテンツ取得サーバ200(図1)の構成を示すブロック図である。
図2に示すように、コンテンツ取得サーバ200は、クライアント機器情報取得部201、サーバ登録申請部202、コンテンツリスト取得部203、コンテンツ取得部204、取得済みコンテンツ申請部205、通信制御部206、表示制御部207、蓄積部208を備える。
クライアント機器情報取得部201は、クライアント機器300からクライアント機器情報を取得する。クライアント機器情報には、クライアント機器300に関する情報が記載されている。記載される情報は、例えば、クライアント機器300毎に固有の識別子であるクライアントID、および、クライアント機器300が提供する機能などである。
サーバ登録申請部202は、サーバ登録要求をクライアント機器300へ送信し、このコンテンツ取得サーバ200の登録を、送信されるクライアント機器300に申請する。送信されるサーバ登録要求は、このコンテンツ取得サーバ200のサーバIDを含む。
サーバ登録要求を受信したクライアント機器300(図1)は、そのサーバ登録要求に含まれる、そのサーバ登録要求を送信したコンテンツ取得サーバ200のサーバIDをそのクライアント機器300に登録する。そして、登録結果を、サーバ登録要求を送信したコンテンツ取得サーバ200へ通知する。
また、サーバ登録申請部202は、クライアント機器300から受信した登録結果に基づき、登録が完了したクライアント機器300のクライアントIDを、図示しない登録完了済みクライアントリストに記録する。サーバ登録申請部202は、この登録完了済みクライアントリストを蓄積部208へ記録して管理する。
なお、サーバIDは、コンテンツ取得サーバ200の工場出荷時または初期設定時に、蓄積部208に記録される。
図4は、取得済みコンテンツテーブル400を示す図である。
コンテンツリスト取得部203は、クライアント機器300からコンテンツリストを取得する。そして、コンテンツリスト取得部203は、取得したコンテンツリストと、図4に示す取得済みコンテンツテーブル400とを比較し、未取得のコンテンツを特定する。コンテンツリスト取得部203が取得する上述のコンテンツリストについては、図6から図10を用いて具体例を後で詳しく説明する。
コンテンツ取得部204は、コンテンツリスト取得部203が特定した、このコンテンツ取得サーバ200がまだ取得してない未取得コンテンツを取得する。コンテンツ取得部204は、コンテンツリストに記載された情報に基づき、クライアント機器300から未取得コンテンツを取得し、蓄積部208へ蓄積する。
例えば、後述の図10に示す分割差分リスト503において、IDが「REF−IMG09」のコンテンツ(第2行)が、未取得のコンテンツとして特定された場合が考えられる。この場合、コンテンツ取得部204は、リソースパスに記載された「http://10.0.0.2/REF−IMG09」(第2行第5列)に基づき、HTTP(HyperText Transfer Protocol)を用いてクライアント機器300へアクセスし、このリソースパスのコンテンツを取得する。
また、コンテンツ取得部204は、取得したコンテンツのID及び差分番号と、そのコンテンツの保存先ファイルパスなどを、図4に示す取得済みコンテンツテーブル400へ記録する。取得したコンテンツのIDと差分番号は、コンテンツリスト取得部203が取得したコンテンツリスト(先述)から得られる。
図5は、取得済み最大差分番号管理テーブル450を示す図である。
さらに、コンテンツ取得部204は、クライアント機器300内のコンテンツを取得する都度、取得したすべてのコンテンツに付与された差分番号のうちで最大の差分番号を、上述の取得済みコンテンツテーブル400(図4)から特定する。そして、コンテンツ取得部204は、特定した最大差分番号を、図5に示す取得済み最大差分番号管理テーブル450に記録する。なお、取得済みコンテンツテーブル400の詳細については図4を用いて、取得済み最大差分番号管理テーブル450の詳細については図5を用いて、それぞれ後で詳述する。
取得済みコンテンツ申請部205は、このコンテンツ取得サーバ200のサーバIDが含まれる取得済み最新差分番号通知をクライアント機器300へ送信する。この取得済み最新差分番号通知は、クライアント機器300から取得した1つ以上のコンテンツに関連付けられた差分番号の中で最大の差分番号を含む。なお、含まれるこの最大の差分番号は、上述の取得済み最大差分番号管理テーブル450から得られる、最大差分番号管理テーブル450へと記録される上述の最大差分番号である。
例えば、図4に示す取得済みコンテンツテーブル400、および、図5に示す取得済み最大差分番号管理テーブル450の場合が考えられる。この場合、取得済みコンテンツ申請部205は、クライアントIDが「CLIENT01」(図4の第2〜第9列)であるクライアント機器300に対しては、差分番号として、このクライアントID「CLIENT01」に対応付けられる各差分番号のうちで最大の差分番号である「8」(第9行第4列)を送信する。そして、取得済みコンテンツ申請部205は、クライアントIDが「CLIENT02」(第10行)であるクライアント機器300に対しては、差分番号として、この「CLIENT02」に対応する各差分番号のうちの最大の差分番号「1」(第10行第4列)を送信する。
通信制御部206は、コンテンツ取得サーバ200がネットワークを介して行う通信を制御する。
表示制御部207は、蓄積部208に蓄積されたコンテンツや、ユーザへの通知情報をディスプレイ100へ表示するための制御を行う。
蓄積部208は、コンテンツ取得サーバ200の蓄積機能を提供する部であり、コンテンツ取得部204が取得したコンテンツや、図4に示す取得済みコンテンツテーブル400などを蓄積する。
図3は、クライアント機器300(図1)の構成を示すブロック図である。
図3に示すように、クライアント機器300は、クライアント機器情報管理部301、サーバ管理部302、コンテンツ管理部303、差分リスト管理部304、通信制御部305、蓄積部306を備える。
クライアント機器情報管理部301は、上述のクライアント機器情報を管理する。そして、クライアント機器情報管理部301は、コンテンツ取得サーバ200からの要求に応じて、そのコンテンツ取得サーバ200へと、管理するクライアント機器情報を提供する。なお、クライアント機器情報に掲載されるクライアントIDは、クライアント機器300の工場出荷時または初期設定時に、蓄積部306に記録される。
サーバ管理部302は、コンテンツ取得サーバ200から、先述のサーバ登録申請部202により送信される、そのコンテンツ取得サーバ200のサーバIDを含むサーバ登録要求を受信する。サーバ登録要求を受信したサーバ管理部302は、コンテンツ取得サーバ200をこのクライアント機器300に登録してよいかをユーザへ尋ねる。尋ねられたのに応じて、ユーザから、登録をすることの許可がされると、そのサーバ登録要求をしたコンテンツ取得サーバ200をこのクライアント機器300へ登録する。
図12は、サーバ管理テーブル1100を示す図である。
また、サーバ管理部302は、受信されたサーバ登録要求に含まれるサーバID(上述)を、図12(後述)に示すサーバ管理テーブル1100へ記録する。このことで、サーバ管理部302は、そのサーバ登録要求を送信したコンテンツ取得サーバ200をクライアント機器300へ登録する。
図11は、コンテンツテーブル1000を示す。
コンテンツ管理部303は、蓄積部306に蓄積されたコンテンツに関する情報が記録されたコンテンツテーブル1000(図11)の生成や更新を行う。さらに、コンテンツ管理部303は、コンテンツ取得サーバ200からの、クライアント機器300への要求に応じて、次の動作をする。その動作では、コンテンツテーブル1000からコンテンツリストを生成し、コンテンツ取得サーバ200へ送信する。コンテンツテーブルの詳細については、図11を用いて後述する。また、コンテンツリストの詳細については図6から図10を用いて後述する。
コンテンツ管理部303はさらに、差分リスト管理部304(図3)を備える。差分リスト管理部304は、コンテンツ管理部303の各機能のうちの、特に次の機能を果たす。つまり、差分リスト管理部304は、先述のサーバ管理テーブル1100(図12)に記録された、いずれかのコンテンツ取得サーバ200が未取得であるコンテンツに関する情報を管理する。例えば、そのようなコンテンツが1つ以上あり、そのような情報が1つ以上管理される。そして、コンテンツ管理部303は、これらの1つ以上の情報を掲載した差分リストを生成する。
この差分リストは、サーバ管理テーブル1100に記録された、すべてのコンテンツ取得サーバ200が取得済みのコンテンツに関する情報は掲載されない。このため、この差分リストは、先述の全コンテンツリストに比べ、コンテンツ取得サーバ200にとって無駄な情報が比較的少ないリストである。つまり、コンテンツ取得サーバ200は、クライアント機器300からまだ取得していない未取得のコンテンツを特定するために、この差分リストを取得する。このことで、全コンテンツリストを取得する場合に比べ、取得する情報量を削減し、未取得のコンテンツを特定する処理にかかる時間を短くできる。以下、特に明示しない限り、差分リストと表記した場合は、差分リスト管理部304が生成する差分リストのことを指す。
なお、差分リストとしては、複数のリストがあってもよい。これらの複数のリストにおける個々のリスト内に記載されるコンテンツ情報の上限数が定められていてもよい。リストに記載されるコンテンツ情報の数が、その上限数を超えると、そのリストが、複数の差分リストに分割される。以下では、この分割された差分リストを分割差分リストという。また、差分リストではない他のコンテンツリストと同様に、差分リストも、階層構造を有してもよい。つまり、分割差分リストの上位に親リストとして、差分ルートリストが作成される。本実施の形態においては、分割差分リストと、差分ルートリストとを総称して、差分リストという。
さらに差分リスト管理部304は、差分番号とよぶ数値を管理する。差分番号とは、コンテンツのそれぞれがサーバに取得されたか否かを示す指標であり、大小関係により、コンテンツの状態変化(例えば、コンテンツの追加、更新、削除など)の時系列を示すものである。
例えば、差分番号は、「0」から始まり、状態変化の都度、「1」ずつ増加する番号と定めてもよい。
このように、コンテンツに対して、状態変化の時系列が一意に定まるように、差分番号を定めておく。このことによって、クライアント機器300ごとに、一通りの差分番号を定めておくだけで事が足りる。すなわち、それぞれのコンテンツ取得サーバ200は、クライアント機器300において生成された最新の差分番号と、1つ以上の取得済みコンテンツに付与された差分番号のうちの最大の差分番号との大小比較を行う。この大小比較をするだけで、未取得のコンテンツがあるか否かを簡単に識別することができる。
なお、差分番号は、本実施の形態では「1」ずつ繰り上がる連続番号とした。一方、差分番号は、何らかの大小関係を有することによって一意に並び順が特定できるものであれば、連続番号に限られない。つまり、差分番号は、所定の規則を持って並ぶ数列、文字列、タイムスタンプなど、システムで合意がとれていればどのようなデータであってもよい。
差分リスト管理部304は、状態が変わる都度、差分番号の付与をする。つまり、クライアント機器300に新たにコンテンツが追加される、もしくは蓄積済みのコンテンツが更新、削除されるなどして、クライアント機器300に蓄積されたコンテンツの状態が変わる。差分リスト管理部304は、こうして状態が変わる都度、その時点での差分番号を、状態が変わったコンテンツに付与して、その時点における最大の差分番号を「1」だけ増加させる。状態が変わったコンテンツの情報と、付与された差分番号とは、差分コンテンツ情報として、差分リスト管理部304が、コンテンツテーブル1000(後述の図11)に記録する。差分リスト管理部304は、この差分コンテンツ情報を基に分割差分リストを生成する。以下、特に明示しない限り、差分番号と表記した場合は、差分リスト管理部304が管理する差分番号のことを指す。
さらに差分リスト管理部304は、コンテンツ取得サーバ200から、先述の取得済み最新差分番号通知を受信する。取得済み最新差分番号通知には、先述の通り、そのコンテンツ取得サーバ200のサーバIDと、先述の最大差分番号(取得済み最新差分番号)とが含まれる。この取得済み最新差分番号は、先述の通り、コンテンツ取得サーバ200がクライアント機器300から取得した各コンテンツに関連付けられた差分番号の中で最大の差分番号を表す。
取得済み最新差分番号通知を受信した差分リスト管理部304は、図12に示すサーバ管理テーブル1100の各エントリの中で、受信された取得済み最新差分番号通知に含まれるサーバIDに対応する取得済み最新差分番号を更新後の番号へと更新する。更新後の番号は、その取得済み最新差分番号通知に含まれる取得済み最新差分番号である。
さらに差分リスト管理部304は、任意のタイミングでコンテンツ取得サーバ200から、そのコンテンツ取得サーバ200のサーバIDを含む差分番号通知要求を受信する。
図13は、差分番号管理テーブル1200を示す図である。
差分番号通知要求を受信した差分リスト管理部304は、図13に示す差分番号管理テーブル1200(後述)に記録された最新差分番号と、このクライアント機器300のクライアントIDとを、差分番号通知要求を受信したコンテンツ取得サーバ200に通知する。
また、差分リスト管理部304は、受信された差分番号通知要求に含まれるサーバIDを揮発性メモリに記憶する。そして、差分リスト管理部304は、この差分リスト管理部304が管理する差分番号が更新された場合、記憶するそれぞれのサーバIDに対応するコンテンツ取得サーバ200へ、差分番号管理テーブル1200の最新差分番号と、このクライアント機器300のクライアントIDとを通知する。
さらに、差分リスト管理部304は、クライアント機器300に蓄積されたコンテンツの状態が変わる都度、上述の最新差分番号とともに、後述の総数も通知してもよい。通知される総数は、複数の分割差分リスト503それぞれに記載された情報(差分コンテンツ情報)の総数である。状態が変わる都度、この総数を、記憶するそれぞれのサーバIDに対応するコンテンツ取得サーバ200へ通知するとしてもよい。これにより、コンテンツ取得サーバ200において、未取得のコンテンツを取得するために必要な時間を見積もることができる。
通信制御部305は、クライアント機器300がネットワークを介して行う通信を制御する。
蓄積部306は、クライアント機器300の蓄積機能を提供する部である。つまり、蓄積部306は、コンテンツや、図11に示すコンテンツテーブル1000、図12に示すサーバ管理テーブル1100、図13に示す差分番号管理テーブル1200などを蓄積する。
先述の図4により、コンテンツ取得サーバ200が蓄積する取得済みコンテンツテーブル400のデータ構成が示される。
図4に示すように、取得済みコンテンツテーブル400には、クライアントID、コンテンツID、ファイルパス、および差分番号が記録される。
図4のそれぞれの行における、クライアントIDの項目(第1列)には、その行のコンテンツをこのコンテンツ取得サーバ200が取得したクライアント機器300の識別子が記録される。なお、このクライアントIDは、図2のクライアント機器情報取得部201が取得する先述のクライアント機器情報に掲載されている。
コンテンツIDの項目(第2列)には、クライアント機器300から取得した、その項目の行のコンテンツの識別子が記録される。なお、このコンテンツIDは、コンテンツリスト取得部203が取得するコンテンツリスト(上述)に掲載されている。
ファイルパスの項目(第3列)には、コンテンツ取得サーバ200内における、その項目の行のコンテンツが蓄積されている場所が記録される。
差分番号の項目(第4列)には、差分番号が記録される。記録される差分番号は、コンテンツ取得サーバ200がクライアント機器300から取得した、その項目の行のコンテンツである取得済みのコンテンツに関連付けられていた差分番号である。この差分番号は、コンテンツリスト取得部203が取得するコンテンツリストに掲載されている。
例えば、図4の例における取得済みコンテンツテーブル400には、9つのコンテンツに関する情報(第2行〜第10行)が記録されている。これら9つのコンテンツのうちの1つ目のコンテンツに関する情報(第2行)は、次のことを示す。つまり、その情報は、クライアントIDが「CLIENT01」のクライアント機器300からそのコンテンツを取得したこと、そのコンテンツのコンテンツIDが「IMG01」であること、コンテンツ取得サーバ200の、「/Data/IMG01.jpg」が示す場所にそのコンテンツが蓄積されていること、そのコンテンツの差分番号は「1」であることをそれぞれ示す。但し、取得済みコンテンツテーブル400に記録する情報は、これらに限らず、コンテンツのサイズなどの情報を記録してもよい。
図5は、取得済み最大差分番号管理テーブル450のデータ構成を示す図である。
図5に示すように、取得済み最大差分番号管理テーブル450のそれぞれの行には、クライアントID(第1列)と、そのクライアントIDに対応する最大差分番号(第2列)とが記録される。取得済み最大差分番号管理テーブル450に記録されるクライアントIDの一覧(第1列)は、サーバ登録申請部202によって管理される、図示しない登録完了済みクライアントリスト(先述)に記録される、クライアントIDの一覧と同じものである。
なお、この取得済み最大差分番号管理テーブル450は、コンテンツ取得サーバ200がクライアント機器300と最初に紐付けられたときに作成される。この作成では、この最大差分番号管理テーブル450の行における、クライアントIDの項目(第1列)には、最初に紐付けられた上述のクライアント機器300の識別子が記録される。また、この作成では、その行における、最大差分番号の項目(第2列)には初期値として「0」が設定される。
この取得済みコンテンツテーブル400は、例えば、コンテンツ取得サーバ200が、クライアント機器300からコンテンツを取得し、図4の取得済みコンテンツテーブル400を更新するごとに更新される。
なお、図5の取得済み最大差分番号管理テーブル450は必ずしも作成される必要はない。つまり、例えば、クライアント機器300から最新差分番号の通知(先述)を受ける都度、図4の取得済みコンテンツテーブル400から最大差分番号を検索するようにしてもよい。
図6は、クライアント機器300がコンテンツ取得サーバ200に提供するコンテンツリスト(コンテンツリスト500a)の階層構造を例示した図である。
このコンテンツリストを構成する各エントリ(要素)は、リスト(図6の四角型)もしくはコンテンツ情報(丸型)の何れか一方に分類される。このため、コンテンツリストは複数のエントリ(リストやコンテンツ情報)から構成される。つまり、コンテンツリストは、図6に示すように、階層構造を持つ。コンテンツ情報(丸型)は、コンテンツに関する情報から構成される。
コンテンツリストの各エントリは、そのエントリが、リストとコンテンツ情報とのどちらである場合にも、コンテンツ管理部303がコンテンツテーブル1000(図11)に記録した情報から生成される。
図6において、リストは四角型で表され、コンテンツ情報は丸型で表される。また、括弧書きで表された文字は、リストとコンテンツ情報の識別子を示す。
例えば、図6において、コンテンツリストは、ルートリスト500から始まる。ルートリスト500は、画像リスト501と、音楽リストと、差分ルートリスト502とを含む。さらに、画像リスト501は、画像に関するコンテンツ情報を30個(「IMG01」から「IMG30」まで)含む。
差分ルートリスト502は、3つの分割差分リスト503を含む。これらの3つの分割差分リスト503のうちで、分割差分リスト「DIFF−LIST01」は、2つの差分コンテンツ情報(「REF−LIST09」および「REF−LIST10」)を含む。なお、分割差分リスト「DIFF−LIST02」と、分割差分リスト「DIFF−LIST03」とは、いずれも、10個の差分コンテンツ情報を含んでいるが、ここでは、その点の図示を省略する。
また、以下では、図6において破線で囲んで示すように、差分ルートリスト502、各分割差分リスト503、および、差分コンテンツ情報をまとめて「差分リスト」という。また、差分コンテンツ情報(「REF−IMG09」など)は、コンテンツ取得サーバ200の未取得コンテンツを特定するためだけに存在し、実態がないコンテンツである。このため、分割差分リストには必ずしも、丸型で示される下位のエントリを記述する必要はない。一方、図示されるケースでのように、差分リストにおいても、リストの最下位の階層において、差分コンテンツ情報を記述する構成とすることによって、差分エントリを、「画像」および「音楽」等の通常の他のエントリと同様に取り扱うことができるという効果がある。図6におけるルートリスト500と、画像リスト501と、差分ルートリスト502と、分割差分リスト503との具体例については、図7から図10を用いて後述する。なお、説明の便宜のため、差分ルートリスト502と、分割差分リスト503とを区別するが、それぞれの構成要素に本質的な違いはない。
図7は、図6におけるルートリスト500のデータ構造を示した図である。
図7に示すように、ルートリスト500には、コンテンツID、参照先ID、タイプ、子数、リソースパス、差分番号、および差分状態が記録される。エントリの種類がリストであっても、コンテンツ情報であっても、データ構成は同じである。つまり、例えば、後述のように、この図7における構成は、何れのリストの構成にも共通する共通の構成である(後述の図8〜図10を参照)。
なお、各構成要素の値に「−1」が設定されている場合、値が設定されていないことを示す。以降、特に明示しない限り、ルートリスト500の構成要素に限らず、値として「−1」が設定されている場合、当該項目に値が設定されていないことを示すものとする。
ルートリスト500のそれぞれの行における、コンテンツIDの項目(第1列)には、コンテンツリストを構成するすべてのエントリのうちから、その行のエントリを特定する、エントリ毎に固有の識別子が記録される。
参照先IDの項目(第2列)には、その行のコンテンツIDで示されるコンテンツ情報(例えば、図6のREF−IMG09)が、コンテンツリストに含まれる他のコンテンツ情報(IMG09)を参照している場合に、参照先のコンテンツ情報のコンテンツIDが記録される(図10の第2行第2列など)。コンテンツリストに、関連するコンテンツ情報を複数掲載する場合(図6のREF−IMG09、IMG09など参照)、参照先IDを用いることで、オリジナルのコンテンツ情報を特定することができる。但し、エントリがリストである場合と、コンテンツ情報であっても他のコンテンツ情報を参照していない場合とにおいて、参照先IDの項目には「−1」が設定される(図7など参照)。
タイプの項目(第3列)には、エントリの種類が記録される。タイプの項目に設定される値には、「ルートリスト」、「画像リスト」、「音楽リスト」、「差分ルートリスト」、「分割差分リスト」、「画像」、「音楽」、および「差分」がある。それぞれ、次のリストを表す。つまり、「ルートリスト」は、コンテンツリストにおける最上位の階層のリスト(図6のルートリスト500)を表す。「画像リスト」は、画像コンテンツ情報を含むリスト(図7の第2行第3列、図8を参照)を表し、「音楽リスト」は、音楽コンテンツ情報を含むリストを表し(図7の第3行第3列、など参照)、「分割差分リスト」は分割差分リストを表し(図9の第3列、図10を参照)、「画像」は画像のコンテンツ情報を表し(図8)、「音楽」は音楽のコンテンツ情報を表し、「差分」は差分コンテンツ情報を表す(図10)。但し、タイプの項目に設定される種類はこれらに限るものではなく、例えば動画コンテンツ情報をコンテンツリストに掲載する場合には、「動画リスト」や「動画」が設定されてもよい。なお、差分コンテンツ情報とは、上で述べた通り、クライアント機器300における、削除、追加などの変更があったコンテンツのコンテンツ情報を表し、差分リスト管理部304がコンテンツテーブル1000(図11)に記録する。
子数の項目(第4列)には、その項目が含まれる行(エントリ)がリストである場合(図7の第2行、第4行など)、そのリストに掲載されているエントリの数が記録される。但し、エントリがコンテンツ情報である場合(第3行)、それより下位のエントリがないので「−1」が設定される。
リソースパスの項目(第5列)には、リストもしくはコンテンツを取得するためのアクセス先パスとしてHTTPアドレスが記録される。
差分番号の項目(第6列)には、上で述べた通り、差分リスト管理部304が管理する数値が設定される。ただし、エントリのタイプが「差分ルートリスト」、「分割差分リスト」もしくは「差分」の場合にのみ、設定がされる。エントリのタイプがそれら以外である場合、「−1」が設定される。
また、差分番号の項目には、エントリのタイプが「差分」である場合、該エントリが示す差分コンテンツ情報に関連付けられた差分番号が設定される。一方、差分番号の項目には、エントリのタイプが「分割差分リスト」である場合、該エントリが示す分割差分リストに掲載される差分コンテンツ情報に関連付けられた差分番号の中で最大の差分番号が記録される。
差分状態の項目(第7列)には、差分コンテンツ情報が示すコンテンツの状態が記録され、エントリのタイプが「差分」の場合にのみ設定される。エントリのタイプが「差分」以外の場合、「−1」が設定される。差分状態の項目に設定される値には「追加」、「更新」、「削除」がある。これらの値は、それぞれ、差分コンテンツ情報が示すコンテンツが、新たに追加されたこと、更新されたこと、削除されたことを示す。差分状態が「削除」のエントリの、参照先IDの項目と、リソースパスの項目とには「−1」が設定される。
例えば、図7においてルートリスト500は、3つのエントリ(第2行〜第4行)を持つことがわかる。また、1つ目のエントリでは、コンテンツIDが「IMG−LIST01」で、タイプが、「画像リスト」のリストであり、このリストのエントリ数は「30」、そして「http://10.0.0.2/IMG−LIST01」にアクセスすることで、このエントリのコンテンツが取得できることがわかる。
なお、ルートリスト500のリソースパスは、クライアント機器情報管理部301が管理するクライアント機器情報(先述)に掲載される。但し、このような、ルートリスト500のリソースパスを、クライアント機器情報に掲載する方法に限定されない。リソースパスを、コンテンツ収集システムに事前に設定しておいてもよい。
なお、ルートリスト500の構成や各構成要素が表す意味は、ルートリスト500に限らず、コンテンツリストに含まれるすべてのリストで共通である。但し、コンテンツリストの構成要素はこれらに限らず、例えばコンテンツのサイズを示す情報などがあってもよい。
図8は、図6における画像リスト501の構成を示した図である。
上で述べたように、画像リスト501の構成は、ルートリスト500と共通であるので詳しい説明は省略される。図8において、画像リスト501は「IMG01」から「IMG30」までの30のエントリを持つことがわかる。また、1つ目のエントリでは、コンテンツIDが「IMG01」で、タイプが、「画像」のコンテンツ情報であり、「http://10.0.0.2/IMG01.jpg」にアクセスすることで、このエントリのコンテンツである画像を取得できることがわかる。
図9は、図6における差分ルートリスト502の構成を示した図である。
上で述べたように、差分ルートリスト502の構成は、ルートリスト500と共通であるので詳しい説明は省略される。図9において、差分ルートリスト502は「DIFF−LIST01」から「DIFF−LIST03」までの3つのエントリを持つことがわかる。また、1つ目のエントリでは、コンテンツIDが「DIFF−LIST01」で、タイプが、「分割差分リスト」の分割差分リストであり、この分割差分リストのエントリ数は「2」、差分番号は「10」、そして「http://10.0.0.2/DIFF−LIST01」にアクセスすることで、このエントリのコンテンツを取得できることがわかる。
なお、この例では、この差分ルートリスト502のリソースパスは、ルートリスト500に掲載されている(図7の第4行第5列)。一方、このリソースパスを、クライアント機器情報管理部301が管理するクライアント機器情報に掲載してもよい。このように、クライアント機器情報に、差分ルートリスト502のリソースパスを掲載してもよい。こうすることで、コンテンツ取得サーバ200は、ルートリスト500を取得することなく、差分ルートリスト502を直接取得することができ、コンテンツリストを取得するのにかかる処理時間を更に短くできる。
図10は、図6における分割差分リスト503の構成を示した図である。
上で述べたように、分割差分リスト503の構成は、ルートリスト500と共通であるので詳しい説明は省略される。図10において、分割差分リスト503は、「REF−IMG09」および「REF−IMG10」の2つのエントリを持つことがわかる。また、1つ目のエントリでは、コンテンツIDが「REF−IMG09」で、参照先IDが「IMG09」、タイプが、「差分」の差分コンテンツ情報であり、差分番号が「9」、差分状態が「追加」、そして「http://10.0.0.2/REF−IMG09」にアクセスすることで、このエントリのコンテンツを取得できることがわかる。また、第7列の「追加」により、このエントリは、コンテンツIDが「IMG09」のコンテンツが、クライアント機器300に新たに追加されたことを示す差分コンテンツ情報であるともわかる。
図11は、クライアント機器300が蓄積するコンテンツに関する情報を記録したコンテンツテーブル1000の構成を示した図である。
コンテンツテーブル1000は、コンテンツ管理部303により生成される。コンテンツ管理部303は、クライアント機器300においてコンテンツが追加され、変更され、削除される都度、このコンテンツテーブル1000を更新する。また、コンテンツ管理部303は、コンテンツ取得サーバ200からの要求に応じて、このコンテンツテーブル1000の情報に基づき、コンテンツリストを生成する。
図11において、コンテンツテーブル1000は、コンテンツID、参照先ID、タイプ、親リスト、子数、ファイルパス、差分番号、差分状態を備える(第1列〜第8列)。但し、親リスト(第4列)とファイルパス(第6列)以外の構成要素については、図7から図10に示すコンテンツリストにおける、その構成要素の名前と同じ名前の構成要素と同じ意味を持つため詳しい説明は省略される。
コンテンツテーブル1000のそれぞれの行(例えば第6行)における、親リストの項目(「IMG−LIST01」)は、その行のコンテンツ(図8の画像リスト501)のエントリ(図7の第2行)が掲載される、コンテンツリストに含まれるリスト(図7のルートリスト500)のコンテンツID(ROOT−LIST)を表す。例えば、上述のように、コンテンツIDが「IMG−LIST01」のリスト(図8)のエントリ(図7の第2行)は、コンテンツIDが「ROOT」(図7のROOT−LIST)のリストに掲載されることが表される(図11の第6行第4列)。コンテンツ管理部303は、この親リストの情報を基に、コンテンツリストの階層構造を生成する。
ファイルパスの項目(図11の第6列)は、蓄積部306における、コンテンツの保存先を表す。ここで、コンテンツリストのリソースパスの項目(図7の第5列など)には、コンテンツ取得サーバ200がクライアント機器300からリストもしくはコンテンツを取得するためのアクセス先パス(クライアント機器300のネットワークホスト名もしくはIPアドレスを含む)が記録されている。これに対し、ファイルパスの項目には、クライアント機器300の内部における、コンテンツの保存先(ディレクトリ名やファイル名から構成される)が記録される。コンテンツ管理部303は、コンテンツ取得サーバ200からの要求に応じて、コンテンツテーブル1000のファイルパスから、コンテンツリストのリソースパスを生成する。
図12は、クライアント機器300が管理するサーバ管理テーブル1100の構成を示した図である。
サーバ管理テーブル1100は、上で述べたように、クライアント機器300がコンテンツ取得サーバ200から受信した取得済み最新差分番号通知(先述)に関する情報を記録するテーブルである。図12において、サーバ管理テーブル1100は、サーバID(第1列)と取得済み最新差分番号(第2列)とを記録する。
サーバIDの項目(第1列)には、コンテンツ取得サーバ200毎に固有の識別子であるサーバIDが記録される。
取得済み最新差分番号の項目(第2列)には、コンテンツ取得サーバ200がクライアント機器300から取得したコンテンツに関連付けられた各差分番号の中で最大の差分番号が記録される。なお、取得済み最新差分番号の項目に「−1」が記録されている場合、その「−1」に対応するサーバIDのコンテンツ取得サーバ200から取得済み最新差分番号通知を受信していないことを示す。このとき、クライアント機器300は、対応するコンテンツ取得サーバ200がクライアント機器300から、差分リストに記載されたコンテンツを取得していないものとして扱う。
サーバ管理テーブル1100において、例えば1つ目のエントリ(第2行)は、サーバIDが「SERVER01」であり、このサーバIDが示すコンテンツ取得サーバ200は、「8」以下の差分番号が関連付けられたコンテンツをすべて取得済みであることを示す。また、サーバ管理テーブル1100の3つ目のエントリ(第4行)は、サーバIDが「SERVER03」であり、このサーバIDが示すコンテンツ取得サーバ200から取得済み最新差分番号通知を受信していないことを示す。
図13は、クライアント機器300が管理する差分番号管理テーブル1200の構成を示した図である。
図13において、差分番号管理テーブル1200は、クライアント機器300における最新差分番号を記録する。最新差分番号の項目(第1列)には、差分リスト管理部304が管理する差分番号の現在の値が記録される。先述のように、差分リスト管理部304は、この差分番号管理テーブル1200の情報に基づいて、クライアント機器300に新たに追加されたコンテンツ、もしくは更新、削除されたコンテンツに対して新たな差分番号を付与する。
次に、クライアント機器300に新たにコンテンツが追加された場合、蓄積済みのコンテンツが更新された場合、削除された場合のそれぞれについて、クライアント機器300の動作を説明する。
クライアント機器300に新たにコンテンツが追加された場合、クライアント機器300において、コンテンツ管理部303は、状態が変わったコンテンツに関する情報をコンテンツテーブル1000(図11)に記録する。このとき、コンテンツテーブル1000の、コンテンツIDの項目には、コンテンツ管理部303が自動的に割り当てた識別子を記録する。そして、タイプの項目には、追加されたコンテンツの種類に応じて、「画像」または「音楽」などを記録する。また、親リストの項目には、追加されたコンテンツの種類が「画像」であれば画像リスト、「音楽」であれば「音楽リスト」といったように、コンテンツの種類に応じたタイプであるリストのコンテンツIDを記録する。また、ファイルパスの項目には、蓄積部306における、コンテンツの保存先を記録し、参照先ID、子数、差分番号、および差分状態の項目にはそれぞれ「−1」を記録する。
クライアント機器300に蓄積済みのコンテンツが更新された場合、コンテンツ管理部303は、コンテンツテーブル1000を更新せず処理を終了する。但し、コンテンツテーブル1000の構成要素に、最終更新日時などの情報があった場合には、該当する情報を更新する。
クライアント機器300に蓄積済みのコンテンツが削除された場合、コンテンツ管理部303は、コンテンツテーブル1000から、当該コンテンツの情報を削除する。
図14は、本発明の実施の形態においての、蓄積するコンテンツの状態が変わった場合の、クライアント機器の処理の流れの一部を示すフロー図である。
具体的には、クライアント機器300に蓄積済みのコンテンツの状態が変わった場合とは、すなわち、クライアント機器300に新たにコンテンツが追加された場合、蓄積済みのコンテンツが更新された場合、または、削除された場合である。それぞれの場合に、クライアント機器300が、削除の処理などの上述の処理を行った後に、差分リスト管理部304が、図14のフロー図に示される共通の処理をする。なお、以降、コンテンツが、クライアント機器300において追加されたコンテンツであるか、更新されたコンテンツであるか、削除されたコンテンツであるかを区別しない場合、そのコンテンツを、状態が変わったコンテンツと言う。
図14について説明する。まず、コンテンツ管理部303は、クライアント機器300において、状態が変わったコンテンツがあるかを一定間隔で監視する(S1300)。
状態が変わったコンテンツがあった場合(S1300でYES)、差分リスト管理部304は、サーバ管理テーブル1100(図12)を参照し、登録済みのコンテンツ取得サーバ200が1台以上存在するか確認する(S1301)。登録済みのコンテンツ取得サーバ200が存在しない場合(S1301でNO)、処理を終了する。
登録済みのコンテンツ取得サーバ200が存在する場合(S1301でYES)、差分リスト管理部304は、状態が変わったコンテンツに応じて生成した差分コンテンツ情報をコンテンツテーブル1000(図11)に記録する(S1302)。
次に、差分リスト管理部304は、クライアント機器300がネットワークに接続済みか否か確認する(S1303)。クライアント機器300がネットワークに接続済みでない場合(S1303でNO)、処理を終了する。
クライアント機器300がネットワークに接続済みである場合(S1303でYES)、差分リスト管理部304は、次の動作をする。その動作では、各コンテンツ取得サーバ200のうちに、クライアント機器300が、そのコンテンツ取得サーバ200から差分番号通知要求(先述)を受信したコンテンツ取得サーバ200が存在するか確認する(S1304)。上で述べたように、差分リスト管理部304は、任意のタイミングで、コンテンツ取得サーバ200から差分番号通知要求を受信し、受信した差分番号通知要求に含まれるサーバIDを揮発性メモリに記憶しておく。
差分番号通知要求を受信したコンテンツ取得サーバ200が存在しない場合(S1304でNO)、処理を終了する。差分番号通知要求を受信したコンテンツ取得サーバ200が存在する場合(S1304でYES)、差分リスト管理部304は、差分番号通知要求を受信したすべてのコンテンツ取得サーバ200に対して、差分番号管理テーブル1200の最新差分番号を通知する(S1305)。
なお、差分リスト管理部304は、この差分リスト管理部304などに対して、時間間隔を設定してもよい。差分リスト管理部304は、設定される時間間隔で、コンテンツ取得サーバ200に対して最新の差分番号を通知してもよい。この場合、前回の通知から設定された時間間隔が経っていないと、差分リスト管理部304は、S1305の処理を実行しない。例えば、通知の時間間隔は200ミリ秒と設定することができる。このように、通知に時間間隔を設定することにより、クライアント機器300において、短時間の間に、状態が変わったコンテンツが複数発生した場合に、不適切な動作がされてしまうことが防がれる。つまり、差分リスト管理部304がコンテンツ取得サーバ200に短時間に複数の通知を連続的に送信することを防ぐことができる。これにより、コンテンツ取得サーバ200の処理負荷を削減できる。
図15は、本発明の実施の形態における、クライアント機器が分割差分リストを生成する処理の流れを示すフロー図である。図15は、図14のS1302における処理に対応する。以下、図15について説明する。
まず、差分リスト管理部304は、コンテンツテーブル1000を参照し、最も新しい分割差分リストを選択する(S1401)。ここで、最も新しい分割差分リストとは、コンテンツテーブル1000における、タイプが「分割差分リスト」の各エントリの中で、差分番号の値が最大のエントリの分割差分リストである。但し、コンテンツテーブル1000に、タイプが「分割差分リスト」のエントリが存在しない場合、タイプが「分割差分リスト」のエントリを新たに作成する。そして、作成したエントリの親リストにルートリストを示す「ROOT」を設定する。
次に、差分リスト管理部304は、最も新しい分割差分リストの子数を確認し、確認された子数が、事前に定められた数以上であるか確認する(S1402)。本実施の形態において、この事前に定められた数は10である。分割差分リストの子数が、事前に定められた数以上でない場合(S1402でNO)、S1404に進む。分割差分リストの子数が事前に定められた数以上である場合(S1402でYES)、差分リスト管理部304は、コンテンツテーブル1000に、新たな分割差分リストを追加する(S1403)。差分リスト管理部304は、差分番号管理テーブル1200(図13)の最新差分番号を、1加算した値に更新する(S1404)。差分リスト管理部304は、状態が変化したコンテンツに基づいて差分コンテンツ情報を生成し、コンテンツテーブル1000に追加する(S1405)。このとき、差分コンテンツ情報の親リストの値は、S1401で選択した最新の分割差分リストのコンテンツIDとする。但し、親リストの値は、S1403を実行した場合には、S1403で追加した分割差分リストのコンテンツIDとする。なお、差分リスト管理部304は、差分コンテンツ情報をコンテンツテーブル1000に追加した場合、追加した差分コンテンツ情報の親リストが指すリストの差分番号の値を、追加したコンテンツ情報の差分番号の値に更新する。
このように、差分リスト管理部304は、図15で示した処理を行うことで、クライアント機器300における、状態が変わったコンテンツに関する情報を、コンテンツテーブル1000に記録する。
図16は、本発明の実施の形態における、コンテンツ取得サーバがクライアント機器からコンテンツを取得する、初回の処理の流れを示すシーケンス図である。
ここで初回の動作とは、クライアント機器300のクライアントIDが、コンテンツ取得サーバ200に蓄積された登録完了済みクライアントリストに存在しない場合の動作を指す。具体的には、コンテンツ取得サーバ200がクライアント機器情報を取得したとき(図16のS1502)に、初回の動作であるか2回目以降の動作であるかを決定(判定)することができる。なお、この点については、下記のS1502の説明で、詳しく述べられる。
図16について説明する。まず、クライアント機器300は、ネットワークに接続すると、ネットワーク接続済み通知を、ネットワーク上のすべての端末へ送信する(S1501)。但し、ネットワーク上のすべての端末へ情報を送信するための方法は、ネットワーク毎に定められた方法に従う。また、コンテンツ取得サーバ200がネットワークに接続した場合もある。この場合には、コンテンツ取得サーバ200が、ネットワーク上のすべての端末へ、ネットワーク接続済み通知を要求する。コンテンツ取得サーバ200は、この要求をすることで、クライアント機器300からネットワーク接続済み通知を得る。
ネットワーク接続済み通知を受信したコンテンツ取得サーバ200のクライアント機器情報取得部201は、クライアント機器情報管理部301からクライアント機器情報を取得する(S1502)。
次に、サーバ登録申請部202は、S1502で取得したクライアント機器情報に掲載されたクライアントIDが、蓄積部208に記録した登録完了済みクライアントリスト(先述)に存在するか確認する。クライアントIDが登録完了済みクライアントリストに存在する場合、クライアント機器情報が取得された上述のクライアント機器300からのコンテンツ取得は2回目以降である。この場合における、上述の確認がされて以降の処理は、図17で説明する。一方、クライアントIDが登録完了済みクライアントリストに存在しない場合、サーバ登録申請部202(図2)は、自動的に、もしくはユーザの許可を得て、サーバIDを含むサーバ登録要求(先述)をサーバ管理部302へ送信する(S1503)。
サーバ登録要求を受信したサーバ管理部302は、ユーザの許可が得られた場合、サーバ登録要求に含まれるサーバIDをサーバ管理テーブル1100に記録し(図12の第1列)、登録が成功した旨をサーバ登録申請部202へ通知する。このとき、サーバ管理部302は、サーバ管理テーブル1100における、記録された上述のサーバID(図12の第1列)に対応する取得済み最新差分番号(第2列)には、「−1」を設定する。ユーザの許可が得られなかった場合、サーバ管理部302は、登録が失敗した旨をサーバ登録申請部202へ通知する。なお、サーバ登録要求を受信したサーバ管理部302は、ユーザに許可を得ることなく、自動的に、サーバIDをサーバ管理テーブル1100に記録してもよい。こうして、自動的に記録することで、ユーザの手間を省くことができる。
サーバ登録要求が成功した場合、サーバ登録申請部202は、登録が成功したクライアント機器300のクライアントIDを登録完了済みクライアントリスト(先述)に追記する。サーバ登録要求が失敗した場合、コンテンツ取得サーバ200は、その旨をユーザに通知して処理を終了する。
次に、コンテンツリスト取得部203(図2)は、コンテンツ管理部303(図3)からコンテンツリストを取得する(S1504)。このとき、例えばコンテンツリストの構造が図6のようである場合、コンテンツリスト取得部203は、まずルートリストを取得する。そして、ルートリストに掲載された情報に基づき、画像リストと音楽リストを取得する。このように、一方のリストに他方のリストが掲載されていた場合、コンテンツリスト取得部203は、再帰的に他方のリストを取得する。但し、クライアント機器300からコンテンツを取得する、初回の動作においては、差分ルートリストや分割差分リストは取得しない。
次に、コンテンツ取得部204は、S1504で取得したコンテンツリストに基づきコンテンツ管理部303からコンテンツを取得する(S1505)。コンテンツ取得部204は、取得したコンテンツに関する情報を取得済みコンテンツテーブル400(図4)に記録する。このとき、コンテンツ取得部204は、コンテンツリストに掲載されたすべてのコンテンツを取得する。
次に、コンテンツリスト取得部203(図2)は、差分リスト管理部304(図3)へ、サーバIDを含む最新の差分番号通知要求(先述)を送信する(S1506)。最新の差分番号通知要求を受信した差分リスト管理部304は、受信した差分番号通知要求に含まれるサーバIDを揮発性メモリに記憶し、また、次の通知を行う。その通知では、差分番号管理テーブル1200(図13)に記録された最新差分番号を、このクライアント機器300のクライアントIDと共にコンテンツリスト取得部203へ通知する(S1507)。
さらに、これ以後、差分リスト管理部304は、差分番号が更新された場合、サーバIDが記憶されたコンテンツ取得サーバ200の各々へ、差分番号管理テーブル1200の最新差分番号を通知する。この通知では、最新差分番号を、このクライアント機器300のクライアントIDと共に通知する。最新差分番号を受信した差分リスト管理部304は、図17で示すS1605以降の処理を行う。
なお、差分リスト管理部304は、S1507において、差分番号管理テーブル1200に記録された最新差分番号とクライアントIDとに加え、次の数を通知してもよい。つまり、コンテンツテーブル1000(図11)における、タイプ(第3列)が「差分」のエントリのエントリ数(分割差分リストに掲載される差分コンテンツ情報の総数)がある。最新差分番号などに加えて、このエントリ数を、コンテンツリスト取得部203へ通知してもよい。タイプが「差分」のエントリ数を通知することで、コンテンツリスト取得部203は、分割差分リストの取得に必要な時間を見積もることができ、見積もった時間をユーザに提示するなどもできる。例えば、図11に示すコンテンツテーブル1000において、タイプが「差分」のエントリ数は22である。
また、本実施の形態では差分番号は「1」ずつ増加すると予め定めている。このような、差分番号の設定規則が予め定められている場合には、タイプが「差分」のエントリ数を通知する代わりに、次の番号を通知してもよい。つまり、コンテンツテーブル1000における、タイプが「差分」の各エントリがある。これらの各エントリに設定された差分番号のうちで最小の差分番号を、コンテンツリスト取得部203へ、上述のエントリ数の代わりに通知してもよい。本実施の形態のように、差分番号が「1」ずつ増加することが予め定められている場合には、受信した最新差分番号(図13の「30」を参照)から、この最小の差分番号を減算し、1を加えた値が、分割差分リストに掲載されるエントリ数となる。つまり、この最小の差分番号から、上述のエントリ数が特定される。このため、このような、最小の差分番号を通知する場合にも、タイプが「差分」のエントリ数を通知した先述の場合と同等の効果を得られる。
例えば、図13に示す差分番号管理テーブル1200において最新差分番号は30である。一方、図11に示すコンテンツテーブル1000において、タイプが「差分」のエントリに設定された最小の差分番号は9である。これらの30及び9より、タイプが「差分」のエントリ数は、式「30−9+1」により22と計算できる。
図17は、本発明の実施の形態における、コンテンツ取得サーバがクライアント機器からコンテンツを取得する、2回目以降の処理の流れを示すシーケンス図である。
ここで、2回目以降の動作がされる場合とは、クライアント機器300のクライアントIDが、コンテンツ取得サーバ200に蓄積された登録完了済みクライアントリスト(先述)に存在している場合を指す。具体的には、コンテンツ取得サーバ200がクライアント機器情報を取得したとき(図16のS1502、図17のS1602)に、初回の動作であるか2回目以降の動作であるか決定(判定)することができる。
なお、図17のS1601およびS1602における処理は、図16のS1501およびS1502における処理と同じである。また、図17のS1603およびS1604における処理は、図16のS1506およびS1507の処理と同じであり、図17のS1609における処理は図16のS1505における処理と同じである。図16の各ステップにおける処理についてはすでに説明しているので、図16と同じ処理については、詳しい説明を適宜、省略する。
図17について説明する。まず、クライアント機器300はネットワークに接続すると、ネットワーク接続済み通知を、ネットワーク上のすべての端末へ送信する(S1601)。ネットワーク接続済み通知を受信したコンテンツ取得サーバ200のクライアント機器情報取得部201は、クライアント機器情報管理部301からクライアント機器情報を取得する(S1602)。
サーバ登録申請部202は、S1602で取得したクライアント機器情報に掲載されたクライアントIDが、蓄積部208に記録した登録完了済みクライアントリストに存在するか確認する。クライアントIDが登録完了済みクライアントリストに存在しない場合、対応するクライアント機器300からのコンテンツ取得は初回であるので、以降の処理は図16で説明した通りである。クライアントIDが登録完了済みクライアントリストに存在する場合、コンテンツリスト取得部203は、差分リスト管理部304へ、サーバIDを含む最新の差分番号通知要求を送信する(S1603)。最新の差分番号通知要求を受信した差分リスト管理部304は、受信したサーバIDを揮発性メモリに記憶し、差分番号管理テーブル1200に記録された最新差分番号を、クライアントIDと共にコンテンツリスト取得部203へ通知する(S1604)。
クライアントIDと最新差分番号とを受信したコンテンツリスト取得部203は、取得済み最大差分番号管理テーブル450から、クライアントIDの項目に、受信したクライアントIDの値と同じ値が設定された最大差分番号の項目を読み出す。そして、コンテンツリスト取得部203は、この読み出した最大差分番号と、受信した最新差分番号とを比較する(S1605)。コンテンツリスト取得部203は、この比較により、読み出した最大差分番号が、受信した最新差分番号以上と特定される場合、クライアント機器300に、コンテンツ取得サーバ200が未取得のコンテンツは蓄積されていないと判断する。この判断がされる場合、コンテンツ取得サーバ200は、クライアント機器300からのコンテンツ取得処理を終了する。
コンテンツリスト取得部203は、上述の比較により、読み出した最大差分番号が、受信した最新差分番号より小さいと特定される場合、クライアント機器300に、コンテンツ取得サーバ200が未取得のコンテンツが蓄積されていると判断する。この判断がされる場合、コンテンツ取得サーバ200は、コンテンツ取得処理を継続する。
コンテンツリスト取得部203は、差分リスト取得要求を、差分リスト管理部304に送信する(S1606)。差分リスト取得要求を受信した差分リスト管理部304は、図11に示したコンテンツテーブル1000から、図9に示す差分ルートリスト502、および、図10に示す分割差分リスト503を動的に生成する(S1607)。差分リスト管理部304は、生成した差分ルートリスト502および分割差分リスト503を、コンテンツリスト取得部203に送信する。
コンテンツリスト取得部203は、差分リスト管理部304から、差分ルートリスト502および分割差分リスト503を取得する(S1608)。なお、S1605からS1608における、コンテンツリスト取得部203の処理の詳細については、図18を用いて後述する。
次に、コンテンツ取得部204は、S1608で取得した差分リストに基づき、コンテンツ管理部303からコンテンツを取得する(S1609)。コンテンツ取得部204は、取得したコンテンツに関する情報を、取得済みコンテンツテーブル400(図4)に記録する。コンテンツ取得部204は、この記録をするとともに、取得済みエントリの差分番号の中で最大の差分番号を、取得済み最大差分番号管理テーブル450(図5)に記録する(S1610)。このとき、コンテンツ取得部204は、分割差分リスト503に掲載されたすべてのコンテンツを取得する。但し、差分状態(図10の第7列)が「削除」に設定されたコンテンツについては、リソースパス(第5列)に「−1」が設定されている。このため実際には取得しないものの、取得したものと見なして以降の処理を行う。
次に、取得済みコンテンツ申請部205は、取得済み最大差分番号管理テーブル450の最大差分番号(図5の第2列)を参照する。つまり、先述の取得済み最新差分番号通知は、この最大差分番号である、S1609で取得したすべてのコンテンツの中で最大の差分番号と、サーバIDとを含む。取得済みコンテンツ申請部205は、上述の参照をして、この取得済み最新差分番号通知を、差分リスト管理部304へ送信する(S1611)。
取得済み最新差分番号通知を受信した差分リスト管理部304は、受信した情報を、サーバ管理テーブル1100に記録し、サーバ管理テーブル1100を更新する(S1612)。S1612の処理の詳細については、図19を用いて後述する。
次に差分リスト管理部304は、取得済みコンテンツ申請部205へ、取得済み最新差分番号通知の受信完了通知を送信する(S1613)。
なお、S1609において、コンテンツ取得部204は、次の動作をする。つまり、S1608で取得した分割差分リスト(図10)において、差分状態の項目(第6列)に「削除」と設定されたエントリがあることがある。その動作では、このようなエントリのコンテンツが、取得済みコンテンツテーブル400(図4)に記録されている場合、当該コンテンツに関する情報を取得済みコンテンツテーブル400から削除する。その動作では、この削除をした上で、蓄積部208からも当該コンテンツのファイルを削除したり、何も、この削除以外の他の処理を行わなかったり、ユーザに通知したり、システムにより事前に設定された情報に基づき処理を行ったりする。なお、これらの処理のうちの1つの処理だけ実行してもよいし、複数の処理を実行してもよい。コンテンツ取得部204が、当該コンテンツに関する情報やファイルを削除した場合、コンテンツ取得サーバ200に蓄積されるコンテンツを、クライアント機器300に蓄積されたコンテンツと一致させることができる。
図18は、本発明の実施の形態においてコンテンツ取得サーバがクライアント機器から分割差分リストを取得する処理の流れを示すフロー図である。図18は、図17のS1605からS1608において、コンテンツリスト取得部203が分割差分リストを取得する処理に対応する。
図18について説明する。まず、コンテンツリスト取得部203は、取得済み最大差分番号管理テーブル450(図5)から、S1604で受信したクライアントIDの値(第2列)に対応する最大差分番号を読み出す。
コンテンツリスト取得部203は、この読み出した最大差分番号と、S1604で受信した最新差分番号とを比較する(S1700、S1605と同等)。
コンテンツリスト取得部203は、読み出した最大差分番号が、受信した最新差分番号以上の場合(S1700でNO)、クライアント機器300に、コンテンツ取得サーバ200が未取得のコンテンツは蓄積されていないと判断し、図18の処理を終了する。つまり、この場合、図17を用いて説明したように、コンテンツ取得サーバ200は、クライアント機器300からのコンテンツ取得処理を終了する。
コンテンツリスト取得部203は、読み出した最大差分番号が、受信した最新差分番号より小さい場合(S1700でYES)、クライアント機器300に、コンテンツ取得サーバ200が未取得のコンテンツが蓄積されていると判断する。この判断をした場合、コンテンツ管理部303からルートリスト500を取得する(S1701)。
次に、コンテンツリスト取得部203は、次のリストについての動作をする。そのリストとは、S1701で取得したルートリスト500、もしくは、後述のS1703で取得した差分リスト(差分ルートリストと分割差分リストの総称)である。そのリストには差分リストが記載される。その動作では、記載されたすべての差分リストの差分番号の値と、S1700で読み出した最大差分番号とを比較する(S1702)。
その動作では、すべての差分リストの差分番号の値が、S1700で読み出した最大差分番号以下の値であれば(S1702でNO)、クライアント機器300に、コンテンツ取得サーバ200が未取得のコンテンツは蓄積されていないと判断し、図18の処理を終了する。
その動作では、S1700で読み出した最大差分番号より大きな値を持つ差分リストが1つでもあれば(S1702でYES)、その差分リストに、コンテンツ取得サーバ200が、クライアント機器300から未取得のコンテンツに関する情報が掲載されていると判断する。そして、その動作では、S1700で読み出した最大差分番号より大きな値を持つ差分リストをすべて取得する(S1703)。そして、その動作では、S1703で取得したすべての差分リストに対して再度S1702を実行する。このように、S1700で読み出した最大差分番号より大きな値を持つ差分リスト(コンテンツ取得サーバ200がクライアント機器300から未取得のコンテンツに関する情報が掲載されている分割差分リストや差分ルートリスト)が無くなるまで、S1702を繰り返し実行する。
ここで、例えば、コンテンツ取得サーバ200が、クライアントIDが「CLIENT01」(図5の第2行)であるクライアント機器300から差分リストを取得する場合を考える。但し、クライアントIDが「CLIENT01」のクライアント機器300は図6に示す構造のコンテンツリストを持ち、コンテンツ取得サーバ200の取得済みコンテンツテーブル400(図4)は、図4に示す情報を記録しているものとする。また、図17のS1604において、クライアントIDが「CLIENT01」であるクライアント機器300が、コンテンツ取得サーバ200へ、最新の差分番号として「30」を通知したものとする。
このとき、コンテンツリスト取得部203は、図18の処理を次のように実行する。まず、コンテンツリスト取得部203は、取得済み最大差分番号管理テーブル450(図5)から、「CLIENT01」が設定された、クライアントIDの項目に対応する、最大差分番号の項目として「8」を読み出す(図5参照)。そして、コンテンツリスト取得部203は、この「8」を、受信した差分番号である上述の「30」と比較する(S1700)。読み出した最大差分番号「8」は、受信した差分番号「30」より小さいため(S1700でYES)、コンテンツリスト取得部203は、ルートリスト500を取得する(S1701)。
そして、コンテンツリスト取得部203は、ルートリスト500に記載された差分ルートリスト502(DIFF−ROOT)の差分番号「30」(図7の第4行第7列)と、S1700で読み出した最大の差分番号「8」とを比較する(S1702)。そして、コンテンツリスト取得部203は、差分ルートリスト502の差分番号がS1605で読み出した最大の差分番号より大きいので(S1702でYES)、差分ルートリスト502(図9)を取得する(S1703)。
次に、コンテンツリスト取得部203は、差分ルートリスト502に記載された、3つの分割差分リスト(第2行の「DIFF−LIST01」から、第4行の「DIFF−LIST03」)それぞれの差分番号と、S1700で読み出した最大の差分番号「8」とを比較する(S1702)。コンテンツリスト取得部203は、これらの比較により、いずれの分割差分リストの差分番号も、S1605で読み出した最大の差分番号より大きいことを特定するので(S1702でYES)、3つの分割差分リストをすべて取得する(S1703)。そして、取得した3つの分割差分リストのいずれについても、それよりも下位の分割差分リストがないので処理を終了する(S1702でNO)。但し、3つの分割差分リスト(「DIFF−LIST01」から「DIFF−LIST03」)のいずれについても、それより下位の分割差分リストがないとする。
なお、上で述べたように、例えば、差分ルートリスト502のリソースパスは、ルートリスト500に掲載されている。一方、このリソースパスは、クライアント機器情報管理部301が管理するクライアント機器情報に掲載されてもよい。このとき、コンテンツリスト取得部203は、ルートリスト500を取得することなく差分ルートリスト502を直接取得する。これにより、コンテンツリスト取得部203がコンテンツリスト取得をするのにかかる処理時間を短くできる。
図19は、本発明の実施の形態における、コンテンツ取得サーバから取得済み最新差分番号通知を受信したクライアント機器の処理の流れを示すフロー図である。
つまり、図17のS1612において、取得済み最新差分番号通知を受信した差分リスト管理部304が、次の処理をする。その処理では、受信した情報をサーバ管理テーブル1100(図12)に記録し、分割差分リストを更新する。図19は、この処理に対応する。
図19について説明する。まず、差分リスト管理部304は、サーバ管理テーブル1100(図12)における、受信した取得済み最新差分番号通知のサーバID(第1列)に対応する取得済み最新差分番号(第2列)を、置き換え後の番号に置き換える。置き換え後の番号とは、受信した取得済み最新差分番号通知の差分番号である(S1801)。
次に差分リスト管理部304は、サーバ管理テーブル1100に記録されたすべてのサーバIDに対応する取得済み最新差分番号の中で最小の差分番号を取得する(S1802)。次に差分リスト管理部304は、コンテンツテーブル1000(図11)における次のようなエントリを削除する。削除されるエントリは、タイプが「差分」であり、S1802で取得した最小の差分番号以下の差分番号を持つエントリである。すべてのこのようなエントリをコンテンツテーブル1000から削除する(S1803)。ここで、タイプが「差分」のエントリは、差分コンテンツ情報を示すので、S1803において削除対象となるのは差分コンテンツ情報だけである。さらに、タイプが「差分」のエントリを削除したことにより、子数が「0」となった分割差分リスト(タイプが「分割差分リスト」のエントリ)も削除する。
ここで、S1802で選択した最小の差分番号は、次のような1個以上の差分コンテンツ情報の差分番号の中で最小の差分番号である。つまり、分割差分リストに掲載された各差分コンテンツ情報の中には、サーバ管理テーブル1100に登録されたすべてのコンテンツ取得サーバ200が取得済みとなった差分コンテンツ情報が含まれる。選択される最小の差分番号は、1個以上の、このような、すべてのコンテンツ取得サーバ200が取得済みの差分コンテンツ情報の差分番号の中で最小の差分番号を表す。
つまり、S1802で選択した最小の差分番号以下の差分番号を持つ何れの差分コンテンツ情報についても、次の通りである。つまり、その差分コンテンツ情報は、どのコンテンツ取得サーバ200にも必要とされない。よって、S1803の処理において、このような、選択された最小の差分番号以下の差分番号のそれぞれの差分コンテンツ情報を、コンテンツテーブル1000から削除できる。
また、どのコンテンツ取得サーバ200も必要としない差分コンテンツ情報を削除することで、この削除をして以降、分割差分リストに、不要な差分コンテンツ情報が掲載されることが防がれる。これにより、コンテンツ取得サーバ200が取得する分割差分リストの情報量を削減し、このシステムで行われる処理の処理時間を短くできる。
さらに、図16のS1507において、差分リスト管理部304は、コンテンツの追加、更新または削除により、コンテンツの状態が変化する都度、次の動作をするものとした。その動作では、クライアント機器300における最新の差分番号をすべてのコンテンツ取得サーバ200に通知する。
一方、差分リスト管理部304は、さらに、次の通知もしてもよい。つまり、図19のS1803における処理がされる。この処理では、すべてのコンテンツ取得サーバ200の取得済み最新差分番号の中で最小の差分番号以下の差分番号が関連付けられた差分エントリをすべて差分リストから削除する。この削除をした後、差分リスト管理部304は、すべてのコンテンツ取得サーバ200から受信した取得済み最新差分番号の中で最小の差分番号を、このクライアント機器300のクライアントIDと共に、コンテンツリスト取得部203へ通知するとしてもよい。これにより、コンテンツリスト取得部203では、現在、差分リストに記録されている差分エントリの数を算出することができる。これにより、分割差分リストを取得するために要する時間、および未取得のコンテンツを取得するために要する時間を、算出された上述の数から概算することができる。
図20は、本発明の実施の形態においての、コンテンツ取得サーバからサーバ登録解除要求を受信したクライアント機器の処理の流れを示すフロー図である。
具体的には、その処理では、コンテンツ取得サーバ200のサーバ登録申請部202がサーバ登録解除要求をクライアント機器300に送信した場合に、クライアント機器300が、当該コンテンツ取得サーバ200の登録を解除する。
コンテンツ取得サーバ200は、サーバ登録要求を送信した(図16のS1503)後、サーバ登録解除要求をクライアント機器300に送信する。このことで、クライアント機器300へ登録の解除を要求することができる。サーバ登録解除要求は、ユーザの指示や、コンテンツ取得サーバ200の初期設定により送信される。なお、サーバ登録解除要求には、登録を解除するコンテンツ取得サーバ200のサーバIDが含まれる。
図20について説明する。まず、サーバ管理部302は、サーバ管理テーブル1100(図12)から、受信したサーバ登録解除要求に含まれるサーバIDを持つエントリを削除する(S1901)。
次に、差分リスト管理部304は、サーバ管理テーブル1100を参照し、登録済みのコンテンツ取得サーバ200が1台以上存在するか確認する(S1902)。登録済みのコンテンツ取得サーバ200が存在する場合(S1902でYES)、処理を終了する。登録済みのコンテンツ取得サーバ200が存在しない場合(S1902でNO)、差分リスト管理部304は、コンテンツテーブル1000から差分コンテンツ情報(タイプが「差分」のエントリ)と差分リスト(タイプが「差分ルートリスト」または「分割差分リスト」のエントリ)をすべて削除する(S1903)。
サーバ管理テーブル1100に記録された、コンテンツ取得サーバ200のエントリが削除され、そのエントリが存在しないということは、次のことを表わす。つまり、そのコンテンツ取得サーバ200が、分割差分リストを必要とせず、その分割差分リストを必要とするコンテンツ取得サーバ200が存在しないということを表す。したがって、サーバ登録解除要求により、サーバ管理テーブル1100に記録された、コンテンツ取得サーバ200のエントリが存在しなくなった場合、クライアント機器300は、次の削除ができる。つまり、コンテンツテーブル1000から、差分コンテンツ情報と差分リスト(差分ルートリストおよび分割差分リスト)を削除できる。このように、必要のない差分コンテンツ情報や差分リストを削除することで、クライアント機器300の記憶領域の消費量を削減できる。また、これ以降、サーバ登録要求により、サーバ管理テーブル1100にコンテンツ取得サーバ200が記録されるまで、クライアント機器300は、差分コンテンツ情報をコンテンツテーブル1000に記録しない。このように、必要のない差分コンテンツ情報をコンテンツテーブル1000に記録しないことで、クライアント機器300の処理量を削減できる。
なお、図20では、コンテンツ取得サーバ200のサーバ登録申請部202がサーバ登録解除要求をクライアント機器300に送信した場合に次の解除がされる例について説明した。つまり、その場合に、クライアント機器300が当該コンテンツ取得サーバ200の登録を解除する例について説明した。一方、ユーザがクライアント機器300に備えられた図示しない入力部を操作することによって、次の指定をしてもよい。つまり、その指定により、登録を解除するコンテンツ取得サーバ200が指定されてもよい。例えば、デジタルカメラなどでは、液晶パネルに表示されるメニュー画面などから、登録されたコンテンツ取得サーバ200の一覧を表示させることができる。このような、登録コンテンツ取得サーバ200の一覧の中から上下ボタンなどにより、ユーザの選択を受け付けてもよい。この選択でユーザが選択したコンテンツ取得サーバ200の登録を解除するようにしてもよい。
なお、ブロック図(図2、図3など)の各機能ブロックは典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。
例えばメモリ以外の機能ブロックが1チップ化されていても良い。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
また、各機能ブロックのうち、コンテンツを格納する手段だけ1チップ化せずに別構成としても良い。
以上、図面を参照してこの発明の実施の形態を説明したが、この発明は、図示した実施の形態のものに限定されない。図示した実施の形態に対して、この発明と同一の範囲において、あるいは均等の範囲内において、種々の修正や変形を加えることが可能である。
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態のクライアント機器などを実現するソフトウェアは、次のようなプログラムである。
例えば、そのプログラムは、複数のコンテンツを蓄積する蓄積部に蓄積された複数のコンテンツを1つ以上のサーバ装置が取得するコンテンツ取得システムにおけるクライアント機器の、コンピュータ用非一時的コンピュータ読み取り可能な記録媒体に記録されたプログラムであって、コンピュータを、蓄積されている前記コンテンツを、1つ以上の前記サーバ装置に取得させるコンテンツ管理部と、蓄積されている前記コンテンツのうちで1つ以上の前記サーバ装置のいずれかが前記クライアント機器から取得していないコンテンツに関するコンテンツ情報が記録された差分情報を、1つ以上の前記サーバ装置に共通する情報として作成し、1つ以上の前記サーバ装置それぞれの要求に応じて前記差分情報を提供する差分情報管理部と、前記サーバ装置がすでに取得したコンテンツに関する前記コンテンツ情報である取得済みコンテンツ情報を、1つ以上の前記サーバ装置のそれぞれから受信する取得済みコンテンツ管理部として動作させ、前記差分情報管理部に、受信した前記取得済みコンテンツ情報に基づいて、すべての前記サーバ装置において取得済みとなったコンテンツに関する前記コンテンツ情報を前記差分情報から削除させるプログラムである。
また、例えば、そのプログラムは、クライアント機器に蓄積された複数のコンテンツをサーバ装置が取得するコンテンツ取得システムにおけるサーバ装置の、コンピュータ用非一時的コンピュータ読み取り可能な記録媒体に記録されたプログラムであって、コンピュータを、前記クライアント機器から、前記クライアント機器に蓄積されたコンテンツに関するコンテンツ情報が記録された、1つ以上の前記サーバ装置のいずれかが前記クライアント機器から取得していないコンテンツを示す差分情報を取得する差分情報取得部と、前記差分情報に記録された前記コンテンツ情報に基づき、未取得のコンテンツのみを前記クライアント機器から取得するコンテンツ取得部と、前記コンテンツ取得部が取得したコンテンツに関するコンテンツ情報を記録する取得済みコンテンツ管理部として動作させ、前記差分情報には、前記コンテンツ情報がコンテンツ毎に記録され、さらに前記コンテンツ情報には大小関係によりコンテンツの追加、更新、または削除を含む状態変化の時系列を示す差分番号が関連付けられており、前記取得済みコンテンツ管理部に、前記コンテンツ取得部が取得したコンテンツに関する前記コンテンツ情報に関連付けられた前記差分番号の中で最大の差分番号を第一の差分番号として記録させ、前記コンテンツ取得部に、前記差分情報の中で前記第一の差分番号より大きな前記差分番号が関連付けられた前記コンテンツ情報に対応するコンテンツのみを前記クライアント機器から取得させ、さらに前記サーバ装置において、前記サーバ装置の識別子であるサーバ識別子と前記第一の差分番号とを前記クライアント機器へ通知する取得済みコンテンツ通知部として動作させるプログラムである。