(57)【要約】【課題】情報処理装置間の同時接続数の制限内で、コンテンツを要求した情報処理装置へのコンテンツの送信完了までの時間を短縮する。【解決手段】接続中ＣＳ探索部２３が、第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、第１の情報処理装置との接続を保持した第２の情報処理装置を探索する。委譲部２５が、送信要求されたコンテンツと、そのコンテンツを第１の情報処理装置へ送信する指示とを、探索された第２の情報処理装置に送信する。【選択図】図５
2016042230.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、前記第１の情報処理装置との接続を保持した第２の情報処理装置を探索し、
前記コンテンツと、前記コンテンツを前記第１の情報処理装置へ送信する指示とを、探索された前記第２の情報処理装置に送信する
ことを含む処理を実行させるためのコンテンツ送信プログラム。
【請求項２】
前記第２の情報処理装置を探索する際、前記第１の情報処理装置との接続を保持した情報処理装置から、前記第１の情報処理装置との接続の解放予定時刻を取得し、
自装置からの前記コンテンツの送信が、前記解放予定時刻までに完了する情報処理装置を、前記第２の情報処理装置として選択する
請求項１記載のコンテンツ送信プログラム。
【請求項３】
前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、前記解放予定時刻が早い情報処理装置から優先的に前記第２の情報処理装置として選択する請求項２記載のコンテンツ送信プログラム。
【請求項４】
前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、他の情報処理装置との同時接続数が少ない情報処理装置から優先的に前記第２の情報処理装置として選択する請求項１〜請求項３のいずれか１項記載のコンテンツ送信プログラム。
【請求項５】
前記第２の情報処理装置を探索する際、保持する送信待ちのコンテンツ数が所定の保持数上限値未満の情報処理装置から、前記第２の情報処理装置を選択する請求項１〜請求項４のいずれか１項記載のコンテンツ送信プログラム。
【請求項６】
第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、前記第１の情報処理装置との接続を保持した第２の情報処理装置を探索する探索部と、
前記コンテンツと、前記コンテンツを前記第１の情報処理装置へ送信する指示とを、探索された前記第２の情報処理装置に送信する委譲部と、
を含むコンテンツ送信装置。
【請求項７】
コンピュータに、
第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、前記第１の情報処理装置との接続を保持した第２の情報処理装置を探索し、
前記コンテンツと、前記コンテンツを前記第１の情報処理装置へ送信する指示とを、探索された前記第２の情報処理装置に送信する
ことを含む処理を実行させるコンテンツ送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツ送信プログラム、コンテンツ送信装置、及びコンテンツ送信方法に関する。
【背景技術】
【０００２】
近年、ＳＮＳなど、特定のユーザ間でコンテンツを共有するサービスが増えている。また、端末の高機能化により高画質なコンテンツが作られるようになった結果、共有されるコンテンツのサイズが肥大化し、コンテンツのアップロードやダウンロードにかかる待ち時間が長くなる傾向にある。
【０００３】
コンテンツのアップロードやダウンロードにかかる待ち時間を短くする手法として、キャッシュサーバを用いた手法が広く利用されている。例えば、あるキャッシュサーバの配下にいる不特定多数のユーザが参照するコンテンツを対象に、参照回数の多いコンテンツをそのキャッシュサーバに配備しておく。これにより、そのキャッシュサーバの配下のユーザは、コンテンツのダウンロードにかかる時間を短縮することができる。
【０００４】
例えば、ネットワーク上に設置されたコンテンツサーバおよび複数のキャッシュサーバを含むコンテンツ配信システムが提案されている。このシステムでは、コンテンツサーバに格納されたコンテンツデータを、キャッシュサーバ上に一時的に保存させながら、コンテンツデータを複数のクライアント端末に配信する。このシステムにおいて、各キャッシュサーバは、自己の状態、他のキャッシュサーバの状態、およびリクエストの種類または量に応じて、リクエストの処理をコンテンツサーバまたはキャッシュサーバに振り分ける。
【０００５】
また、取得予約されたコンテンツをモバイル端末へ所定のタイミングで配信するコンテンツ提供方法が提案されている。この方法では、コンテンツを配信する際の地理的および時間的条件を満足する一時記憶手段にコンテンツを記憶し、時間的条件を満足するタイミングで、モバイル端末へコンテンツを配信する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１７１８２２号公報
【特許文献２】特開２００２−４９７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
キャッシュサーバ、コンテンツサーバ、ユーザ端末等の情報処理装置は、他の情報処理装置と通信する際に接続を確立した上で通信を行うが、他の情報処理装置との間に同時に確立できる接続数（以下、「同時接続数」という）には上限がある。コンテンツの送信先の情報処理装置において同時接続数が上限を超えている場合には、自装置と送信先の情報処理装置とは通信できないため、コンテンツを即時に送信することができない。この場合、送信先の情報処理装置において接続が解放されるのを待って、自装置と送信先の情報処理装置との間で接続を確立してから、送信先の情報処理装置へコンテンツを送信しなければならない。しかし、送信先の情報処理装置での接続が解放されるまでに時間がかかる場合や、解放を待つ間に自装置において同時接続数が上限を超える場合もある。
【０００８】
従来技術では、上記のような同時接続数の問題が考慮されていないため、ユーザ端末からコンテンツが要求されるまでに、そのユーザ端末がアクセスするキャッシュサーバに事前にコンテンツを配備することができない場合がある、という問題がある。
【０００９】
本発明は、一つの側面として、情報処理装置間の同時接続数の制限内で、コンテンツを要求した情報処理装置へのコンテンツの送信完了までの時間を短縮することを目的とする。
【課題を解決するための手段】
【００１０】
一つの態様では、第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、前記第１の情報処理装置との接続を保持した第２の情報処理装置を探索する。そして、前記コンテンツと、前記コンテンツを前記第１の情報処理装置へ送信する指示とを、探索された前記第２の情報処理装置に送信する。
【発明の効果】
【００１１】
一つの側面として、情報処理装置間の同時接続数の制限内で、コンテンツを要求した情報処理装置へのコンテンツの送信完了までの時間を短縮することができる、という効果を有する。
【図面の簡単な説明】
【００１２】
【図１】コンテンツ送信システムの概略構成を示すブロック図である。
【図２】コンテンツ管理装置の概略構成を示すブロック図である。
【図３】コンテンツリストの一例を示す図である。
【図４】コンテンツ位置リストの一例を示す図である。
【図５】キャッシュサーバの概略構成を示すブロック図である。
【図６】速度リストの一例を示す図である。
【図７】第１実施形態における設定情報テーブルの一例を示す図である。
【図８】予約リストの一例を示す図である。
【図９】送信中コンテンツリストの一例を示す図である。
【図１０】グループ登録を説明するための図である。
【図１１】グループ登録を説明するための図である。
【図１２】コンテンツを取得するキャッシュサーバの選択を説明するための図である。
【図１３】同時接続数の制限下でのコンテンツの送信を説明するための図である。
【図１４】同時接続数の制限下でのコンテンツの送信を説明するための図である。
【図１５】同時接続数の制限下でのコンテンツの送信を説明するための図である。
【図１６】同時接続数の制限下でのコンテンツの送信を説明するための図である。
【図１７】キャッシュサーバとして機能するコンピュータの概略構成を示すブロック図である。
【図１８】コンテンツ要求取得処理の一例を示すフローチャートである。
【図１９】第１実施形態における探索委譲処理の一例を示すフローチャートである。
【図２０】第１実施形態における接続状態回答処理の一例を示すフローチャートである。
【図２１】送信予約管理処理の一例を示すフローチャートである。
【図２２】コンテンツ送信処理の一例を示すフローチャートである。
【図２３】送信予約管理処理を説明するための図である。
【図２４】第２実施形態における設定情報テーブルの一例を示す図である。
【図２５】第２実施形態における探索委譲処理の一例を示すフローチャートである。
【図２６】第２実施形態における接続状態回答処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明に係る実施形態の一例を詳細に説明する。本実施形態では、複数のユーザが所属するグループで共有して参照されるコンテンツを、ユーザの近隣のキャッシュサーバに事前配備するコンテンツ送信システムに、本発明を適用した場合について説明する。より具体的には、ユーザからのコンテンツ要求に先立って、ユーザからのグループ登録（Ｓｕｂｓｃｒｉｂｅ）を受けたキャッシュサーバに、そのユーザが所属するグループで共有のコンテンツを事前配備するシステムである。
【００１４】
＜第１実施形態＞
【００１５】
図１に示すように、第１実施形態に係るコンテンツ送信システム１０は、コンテンツ管理装置４０と、複数のキャッシュサーバ（ＣＳ）２０１〜２０６と、複数の記憶装置３０１〜３０６と、複数のユーザ端末６０１〜６０４とを含む。コンテンツ管理装置４０は、広域ネットワーク７００に接続されている。また、広域ネットワーク７００は、ローカルネットワーク７０１、７０２、７０３の各々と接続されている。なお、一般に、ローカルネットワークに設けられる中継装置の数より、広域ネットワークに設けられる中継装置の数の方が多い。すなわち、ローカルネットワーク内での通信に比べ、広域ネットワークを介したローカルネットワーク間の通信の方が、経由する中継装置の数が多くなるため、通信コストが大きい。
【００１６】
また、図１の例では、キャッシュサーバ２０１〜２０６の各々と、記憶装置３０１〜３０６の各々とは、１対１で接続されている。また、キャッシュサーバ２０１、２０２は、ローカルネットワーク７０１に接続され、キャッシュサーバ２０３、２０４は、ローカルネットワーク７０２に接続され、キャッシュサーバ２０５、２０６は、ローカルネットワーク７０３に接続されている。
【００１７】
なお、キャッシュサーバ２０１〜２０６の各々の構成は同様であるため、以下では、キャッシュサーバ２０１〜２０６を区別することなく説明する場合には、「キャッシュサーバ２０ｎ」と表記する。また、記憶装置３０１〜３０６の各々の構成は同様であるため、以下では、記憶装置３０１〜３０６を区別することなく説明する場合には、「記憶装置３０ｎ」と表記する。
【００１８】
また、図１の例では、ユーザ端末６０１は、ローカルネットワーク７０１に接続され、ユーザ端末６０２は、ローカルネットワーク７０２に接続され、ユーザ端末６０３、６０４は、ローカルネットワーク７０３に接続されている。ただし、ユーザ端末６０１〜６０４の各々は、携帯電話、スマートフォン、タブレット端末、ノート型パーソナルコンピュータ等の可搬可能な端末であり、ローカルネットワーク７０１、７０２、７０３のいずれにも接続可能である。以下では、ユーザ端末６０１〜６０４を区別することなく説明する場合には、「ユーザ端末６０ｎ」と表記する。
【００１９】
なお、コンテンツ送信システム１０のネットワーク構成は図１の例に限定されない。また、コンテンツ送信システム１０に含まれるキャッシュサーバ２０ｎの数、記憶装置３０ｎの数、及びユーザ端末６０ｎの数も図１の例に限定されない。
【００２０】
コンテンツ管理装置４０は、図２に示すように、制御部４１と、コンテンツ記憶部４２と、コンテンツリスト記憶部４３と、コンテンツ位置リスト記憶部４４とを含む。
【００２１】
コンテンツ記憶部４２には、ユーザに配信するための複数のコンテンツが記憶されている。コンテンツは、例えば画像データ、映像データ、音楽データ、テキストデータ等である。
【００２２】
制御部４１は、過去にユーザにより参照されたコンテンツの履歴に基づいて、同じコンテンツを共有して参照するユーザのグループを抽出する。そして、制御部４１は、各グループに所属するユーザが共有して参照するコンテンツを、そのグループにおける共有のコンテンツとし、グループ毎の共有のコンテンツの情報を登録したコンテンツリストを作成する。
【００２３】
図３に、コンテンツリスト１００の一例を示す。図３の例では、グループ毎に、そのグループの識別情報であるグループＩＤと、そのグループの共有のコンテンツの識別情報であるコンテンツＩＤと、その共有のコンテンツのサイズとが対応付けられている。すなわち、図３に示すコンテンツリスト１００の＜Ｇｒ１，ａｂｃ，５０Ｍｂ＞というエントリは、「グループＩＤ＝Ｇｒ１のグループは、ファイルサイズが５０ＭｂのコンテンツＩＤ＝ａｂｃのコンテンツを共有で参照する」という意味を示す。制御部４１は、作成したコンテンツリスト１００をコンテンツリスト記憶部４３に記憶すると共に、各キャッシュサーバ２０ｎへ配信する。なお、以下では、グループＩＤ＝Ｇｒｎのグループを「グループｎ」と表記し、コンテンツＩＤ＝ｎのコンテンツを「コンテンツｎ」と表記する。
【００２４】
また、制御部４１は、コンテンツ記憶部４２に記憶された複数のコンテンツの各々を、キャッシュサーバ２０ｎのいずれかに配備する。１つのコンテンツを１つのキャッシュサーバに配備してもよいし、複数のキャッシュサーバへ配備してもよい。ここで、キャッシュサーバ２０ｎへのコンテンツの配備とは、キャッシュサーバ２０ｎに対応する記憶装置３０ｎのコンテンツ記憶部３６（詳細は後述）に、コンテンツを記憶することである。
【００２５】
また、制御部４１は、どのコンテンツをどのキャッシュサーバ２０ｎに配備したか、すなわち各コンテンツの位置を示すコンテンツ位置リストを作成する。図４に、コンテンツ位置リスト１０１の一例を示す。図４の例では、コンテンツのコンテンツＩＤと、そのコンテンツが配備されたキャッシュサーバの識別情報であるキャッシュサーバＩＤ（ＣＳ−ＩＤ）とが対応付けられている。例えば、図４に示すコンテンツ位置リスト１０１は、＜ａｂｃ，ＣＳ２０１＞というエントリを含む。これは、「コンテンツａｂｃは、キャッシュサーバ２０１に保持されている」ことを意味する。制御部４１は、作成したコンテンツ位置リスト１０１を、コンテンツ位置リスト記憶部４４に記憶する。なお、本実施形態では、キャッシュサーバ２０ｎのＣＳ−ＩＤを「ＣＳ２０ｎ」としている。
【００２６】
また、制御部４１は、後述する処理により、各キャッシュサーバ２０ｎへのコンテンツの配備状況に変更が生じた場合には、各キャッシュサーバ２０ｎからその情報を取得する。そして、制御部４１は、取得した情報に基づいて、コンテンツ位置リスト記憶部４４に記憶されたコンテンツ位置リスト１０１を更新する。
【００２７】
次に、キャッシュサーバ２０ｎ及び記憶装置３０ｎについて詳述する。図５に示すように、記憶装置３０ｎは、コンテンツリスト記憶部３１と、速度リスト記憶部３２と、設定情報記憶部３３と、予約リスト記憶部３４と、送信中コンテンツリスト記憶部３５と、コンテンツ記憶部３６とを含む。
【００２８】
コンテンツリスト記憶部３１には、コンテンツ管理装置４０から配信されたコンテンツリスト１００（例えば図３）が記憶される。
【００２９】
速度リスト記憶部３２には、記憶装置３０ｎに対応するキャッシュサーバ２０ｎと、他のキャッシュサーバ２０ｎの各々との間の通信状況を示す速度リストが記憶される。図６に、一例として、キャッシュサーバ２０５の速度リスト記憶部３２に記憶された速度リスト１０２を示す。図６の例では、他のキャッシュサーバ２０ｎのＣＳ−ＩＤと、他のキャッシュサーバ２０ｎとの間の単位時間当たりのデータ転送量で表されるスループット（Ｍｂｐｓ）とが対応付けられている。さらに、速度リスト１０２には、他のキャッシュサーバ２０ｎとの間の中継装置の数を示すホップ数が対応付けられている。すなわち、図６に示すキャッシュサーバ２０５が保持する速度リスト１０２の＜ＣＳ２０１，２Ｍｂｐｓ，７＞というエントリは、「キャッシュサーバ２０５とキャッシュサーバ２０１との間のスループットは２Ｍｂｐｓ、ホップ数は７である」という意味を示す。
【００３０】
速度リスト１０２には、他のキャッシュサーバ２０ｎの数だけエントリが登録される。また、速度リスト１０２に登録されるスループットの値は、その速度リスト１０２を保持しているキャッシュサーバ２０ｎからみたスループットであり、それぞれのキャッシュサーバ２０ｎが保持する速度リスト１０２の値は、キャッシュサーバ２０ｎ毎に異なる。なお、キャッシュサーバ２０ｎが保持する速度リスト１０２とは、キャッシュサーバ２０ｎに対応する記憶装置３０ｎの速度リスト記憶部３２に記憶された速度リスト１０２である。
【００３１】
設定情報記憶部３３には、キャッシュサーバ２０ｎで実行されるコンテンツ送信処理に関する設定情報が記憶される。例えば、図７に示すような、同時接続数の上限値及び事前配備の上限時間を定めた設定情報テーブル１０３が記憶される。各パラメータの詳細については後述する。
【００３２】
予約リスト記憶部３４には、他のキャッシュサーバ２０ｎから受け付けたコンテンツの送信要求（詳細は後述）に応じて、送信予定のコンテンツを示すエントリが登録された予約リストが記憶される。図８に、予約リスト１０４の一例を示す。図８の例では、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤと、送信するコンテンツのコンテンツＩＤと、そのコンテンツのサイズと、開始時刻が対応付けられている。すなわち、図８の予約リスト１０４の＜ＣＳ２０５，ｄｅｆ，３０＞というエントリは、「キャッシュサーバ２０５に、サイズ３０Ｍｂのコンテンツｄｅｆを送信予定である」という意味を示す。なお、「開始時刻」は、所定時間待機後にコンテンツを送信する場合などに、送信の開始可能な時刻を登録しておく項目であり、コンテンツを即時送信する場合には、「開始時刻」の項目には時刻を登録する必要はない。
【００３３】
送信中コンテンツリスト記憶部３５には、現在送信中のコンテンツを示すエントリが登録された送信中コンテンツリストが記憶される。図９に、送信中コンテンツリスト１０５の一例を示す。図９の例では、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤと、送信中のコンテンツのコンテンツＩＤと、コンテンツの送信完了までの残りのデータサイズとが対応付けられている。すなわち、図９の送信中コンテンツリスト１０５の＜ＣＳ２０５，ａｂｃ，２０＞というエントリは、「キャッシュサーバ２０５に、コンテンツａｂｃを送信中であり、送信完了までの残りのデータサイズは２０Ｍｂである」という意味を示す。
【００３４】
コンテンツ記憶部３６には、コンテンツ管理装置４０、または他のキャッシュサーバ２０ｎから取得したコンテンツが記憶される。
【００３５】
キャッシュサーバ２０ｎは、グループ情報取得部２１と、選択部２２と、接続中ＣＳ探索部２３と、接続状態回答部２４と、委譲部２５と、送信予約管理部２６と、コンテンツ送信部２７と、コンテンツ取得部２８とを含む。
【００３６】
グループ情報取得部２１は、自装置の配下に付いたユーザ端末６０ｎから、グループ情報を取得する。例えば、図１０に示すように、キャッシュサーバ２０ｎの物理的な位置に応じて、各キャッシュサーバ２０ｎが担当する領域を定めておく。そして、あるキャッシュサーバ２０ｎの領域において、ユーザがユーザ端末６０ｎを操作することにより、その領域に対応するキャッシュサーバ２０ｎに、ユーザ端末６０ｎからグループ登録（Ｓｂｓｃｒｉｂｅ）が行われる。その領域に対応するキャッシュサーバ２０ｎは、ユーザ端末６０ｎにとっての近隣キャッシュサーバである。グループ登録は、例えば、ユーザ端末６０ｎで対象のアプリケーションを起動した場合などに、ユーザが所属するグループのグループ情報を含むメッセージを、近隣キャッシュサーバに送信することにより行うことができる。ユーザ端末６０ｎが近隣キャッシュサーバにグループ登録した状態を、ユーザ端末６０ｎがそのキャッシュサーバ２０ｎの配下に付いたという。
【００３７】
例えば、図１０の例では、キャッシュサーバ２０１の領域で操作されるユーザ端末６０１は、キャッシュサーバ２０１の配下に付く。また、キャッシュサーバ２０４の配下についていたユーザ端末６０２が移動することにより、キャッシュサーバ２０５の領域に入る場合もある。この場合、ユーザ端末６０２は、キャッシュサーバ２０４の配下を離れ、キャッシュサーバ２０５の配下に付く。
【００３８】
ここで、ユーザ端末６０ｎから送信されたグループ情報が、近隣キャッシュサーバに届く仕組みについて説明する。例えば、ユーザ端末６０ｎで起動されるアプリケーション（以下、「端末アプリ」という）が通常行うＤＮＳ（Domain Name Service）問い合わせを利用することができる。端末アプリは通常、端末アプリに予め設定されている接続先ＵＲＬをキーにＤＮＳ問い合わせを行い、接続先のＩＰアドレスを得て、そのＩＰアドレス宛にメッセージを送信する。
【００３９】
例えば、図１１に示すように、グループ登録の際も、ユーザ端末６０１は、まずコンテンツ管理装置４０のＵＲＬをキーにＤＮＳサーバに問い合わせを行う（図１１中の（１））。ＤＮＳサーバでは、アクセスポイント（ＡＰ）と、そのＡＰに近いキャッシュサーバのＩＰアドレスとを対応付けておく。そして、ＤＮＳサーバは、ユーザ端末６０１の接続ＡＰに近いキャッシュサーバ２０１のＩＰアドレス（１０．２５．１．１０）を返す（図１１中の（２））。これにより、ユーザ端末６０１の近隣キャッシュサーバ２０１にグループ登録がされる（図１１中の（３））。
【００４０】
なお、ＤＮＳサーバが、ユーザ端末の接続ＡＰを把握する方法としては、例えば、ユーザ端末に割り当てるＩＰアドレスの範囲を、接続ＡＰ毎に決めておくことで、送信元ＩＰアドレスから接続ＡＰを知ることができる。
【００４１】
また、図１０に示したユーザ端末６０２のように移動した場合には、端末アプリを既に起動した状態で、新たな近隣キャッシュサーバに対してグループ登録を行う必要がある。この方法としては、例えば、端末アプリで、接続ＡＰのＩＤ（基地局ＩＤや無線ＢＳＳＩＤ（(Basic Service Set ID、通常は接続ＡＰのＭＡＣアドレス））を監視する。そして、接続ＡＰのＩＤ変更時に、グループ情報を近隣キャッシュサーバに送信する。
【００４２】
なお、本実施形態では、グループ情報取得部２１は、グループ情報として、グループの識別情報であるグループＩＤを含むメッセージを、ユーザ端末６０ｎから受信する場合について説明するが、これに限定されない。例えば、グループ情報取得部２１は、ユーザの識別情報（例えば、ユーザＩＤ）を受信してもよい。この場合、グループ情報取得部２１は、ユーザの識別情報とグループ情報との対応リストを予め保持しておき、受信したユーザの識別情報と、この対応リストとから、そのユーザのグループ情報を取得することができる。
【００４３】
選択部２２は、グループ情報取得部２１により取得されたグループＩＤに基づいて、そのグループＩＤが示すグループで共有のコンテンツが自装置に配備されているか否かを判定する。自装置に配備されていない場合には、選択部２２は、他のいずれのキャッシュサーバ２０ｎからコンテンツを取得するかを選択する。選択部２２は、できるだけ早くコンテンツを取得完了できるキャッシュサーバ２０ｎを選択する。
【００４４】
具体的には、選択部２２は、まず、コンテンツリスト記憶部３１に記憶されたコンテンツリスト１００を参照して、グループ情報取得部２１により取得されたグループＩＤに対応した共有のコンテンツのコンテンツＩＤを取得する。例えば、図１２に示すように、ユーザ端末６０２からキャッシュサーバ２０５へのグループ登録に基づいて、キャッシュサーバ２０５のグループ情報取得部２１により、グループＩＤ＝Ｇｒ１が取得されたとする（図１２中の（１））。キャッシュサーバ２０５の選択部２２は、コンテンツリスト記憶部３１に記憶された、例えば図３に示すコンテンツリスト１００から、グループＩＤ＝Ｇｒ１をキーにして、コンテンツＩＤ＝ａｂｃ、及びそのコンテンツのサイズ＝５０Ｍｂを取得する。
【００４５】
そして、選択部２２は、取得したコンテンツＩＤをキーにして、コンテンツ管理装置４０に、そのコンテンツＩＤのコンテンツの位置を問い合わせる（図１２中の（２））。コンテンツ管理装置４０では、コンテンツ位置リスト記憶部４４に記憶されたコンテンツ位置リスト１０１を参照して、コンテンツの位置をキャッシュサーバ２０ｎへ返す。例えば、コンテンツ管理装置４０が、キャッシュサーバ２０５から、コンテンツａｂｃの位置の問い合わせを受けたとする。コンテンツ管理装置４０は、例えば図４に示すコンテンツ位置リスト１０１に基づいて、コンテンツａｂｃの位置として、キャッシュサーバ２０１及びキャッシュサーバ２０４のＣＳ−ＩＤ＝ＣＳ２０１及びＣＳ２０４を、キャッシュサーバ２０５に送信する。
【００４６】
選択部２２は、コンテンツ管理装置４０から送信されたコンテンツの位置を取得する。選択部２２は、取得したコンテンツの位置毎、すなわち共有のコンテンツが配備されたキャッシュサーバ２０ｎ毎に、そのキャッシュサーバ２０ｎからコンテンツを取得した場合の取得完了予定時刻を計算する。
【００４７】
具体的には、選択部２２は、取得したＣＳ−ＩＤをキーに、速度リスト１０２から、コンテンツの位置である各キャッシュサーバ２０ｎと自装置との間のスループットを取得する。そして、選択部２２は、コンテンツリスト１００から取得したコンテンツのサイズと、各キャッシュサーバ２０ｎとのスループットとに基づいて、各キャッシュサーバ２０ｎからコンテンツを取得した場合に要する取得時間を計算する。そして、選択部２２は、現在時刻＋取得時間で表される時刻を取得完了予定時刻とする。
【００４８】
例えば図６に示す速度リスト１０２から、キャッシュサーバ２０１とのスループット＝２Ｍｂｐｓ、及びキャッシュサーバ２０４とのスループット＝５Ｍｂｐｓが取得される。コンテンツａｂｃのサイズは５０Ｍｂであるので、キャッシュサーバ２０１からの取得時間は２５秒、キャッシュサーバ２０４からの取得時間は１０秒となる。従って、現在時刻を１１：２０：１５とすると、キャッシュサーバ２０１からの取得完了予定時刻は、１１：２０：１５の２５秒後の１１：２０：４０、キャッシュサーバ２０４からの取得完了予定時刻は、１１：２０：１５の１０秒後の１１：２０：２５となる。
【００４９】
図１２に示すように、端末アプリ起動時（図１２中の（１））から、ユーザ端末６０ｎからのコンテンツの要求（図１２中の（４））までに、ユーザ端末６０ｎの近隣キャッシュサーバ２０ｎにコンテンツを事前配備しておきたい。すなわち、端末アプリ起動時から、ユーザ端末６０ｎからのコンテンツの要求までの時間が、事前配備のための上限時間となる。そこで、現在、共有のコンテンツを保持しているキャッシュサーバ２０１、２０４のうち、取得完了予定時刻が早い方のキャッシュサーバ２０４からコンテンツを取得するように選択する（図１２中の（３））。なお、事前配備の上限時間は、上述の設定情報テーブル１０３にパラメータとして定めておくことができる。
【００５０】
また、選択部２２は、選択したキャッシュサーバ２０ｎに、取得したいコンテンツのコンテンツＩＤを指定したコンテンツの送信要求を送信する。
【００５１】
ここで、コンテンツの送信要求を受け付けたキャッシュサーバ２０ｎは、送信要求元のキャッシュサーバ２０ｎに要求されたコンテンツを送信するが、このとき、下記のような問題がある。
【００５２】
例えば、図１３に示すように、キャッシュサーバ２０５に対して、グループ１に属するユーザ端末６０２からグループ登録があった直後に、グループ２に属するユーザ端末６０３からグループ登録があったとする。この場合、グループ１及び２の各々で共有のコンテンツを、キャッシュサーバ２０５に事前配備する。グループ１で共有のコンテンツがコンテンツａｂｃ、グループ２で共有のコンテンツがコンテンツｅｆｇであるとする。また、コンテンツａｂｃはキャッシュサーバ２０１に保持され、コンテンツｅｆｇはキャッシュサーバ２０２に保持されているとする。
【００５３】
まず、先に行われたユーザ端末６０２からのグループ登録に応じて、キャッシュサーバ２０５とキャッシュサーバ２０１との間に通信の接続が確立され、キャッシュサーバ２０１からキャッシュサーバ２０５へコンテンツａｂｃが送信される（図１３中のＡ）。次に、キャッシュサーバ２０１とキャッシュサーバ２０５とが接続中の状態で、直後に行われたユーザ端末６０３からのグループ登録に応じて、キャッシュサーバ２０５とキャッシュサーバ２０２との間に通信の接続が確立される。そして、キャッシュサーバ２０２からキャッシュサーバ２０５へコンテンツｅｆｇが送信される（図１３中のＢ）。
【００５４】
この場合、図１４に示すように、複数（ここでは２つ）のコンテンツが同時にネットワークに送出されるため、ネットワークのトラフィック量が増加してしまう。特に、図１３に示すように、異なるローカルネットワーク間の通信の場合、広域ネットワーク７００におけるトラフィック量が増加する。多くのユーザの要求に対応するためには、トラフィック量の増加を抑制することが望ましい。そこで、同一の送信先にコンテンツを送信中の他のキャッシュサーバが存在する場合には、その送信が完了するのを待って、自装置からのコンテンツの送信を開始すれば、複数のコンテンツを同時に送信する場合より、トラフィック量の増加を抑制することができる。
【００５５】
しかし、各キャッシュサーバには、同時接続数の上限値が設定されている。同時接続数は、キャッシュサーバやユーザ端末等の負荷の上昇を防ぐために設けられているものである。例えば、１つのＴＣＰ接続のスループットには上限があり、通常、その上限は物理リンクの帯域幅より小さいため、複数のＴＣＰ接続を利用して、トータルでのスループットを確保する策がとられる。ただし、接続数を増やしても、物理リンクの帯域幅以上にスループットは上げられない上、接続管理にはメモリ消費やＣＰＵ負荷等のコストもかかることから、同時接続数には上限値が設けられている。
【００５６】
上記のように、各キャッシュサーバには、同時接続数の上限値が設定されているため、他のキャッシュサーバからのコンテンツの送信完了を待つ間に、自装置が他の送信要求等に対応するなどのために接続を確立し、同時接続数の上限に達している場合がある。より具体的には、図１３の例で、キャッシュサーバ２０１からキャッシュサーバ２０５へのコンテンツａｂｃの送信完了を待って、キャッシュサーバ２０２からキャッシュサーバ２０５へコンテンツｅｆｇを送信するとする。キャッシュサーバ２０１からのコンテンツａｂｃの送信完了時に、キャッシュサーバ２０２と他のキャッシュサーバ等との接続状態が同時接続数の上限値に達している場合には、キャッシュサーバ２０５へコンテンツｅｆｇを送信することができない。この場合、キャッシュサーバ２０２におけるいずれかの接続が解放され、同時接続数が上限値未満となるまで待ってから、キャッシュサーバ２０５との接続を確立し、コンテンツｅｆｇを送信する。同時接続数が上限値未満となるまでの待ち時間が長い場合には、図１５に示すように、上述の事前配備上限時間内に、キャッシュサーバ２０５にコンテンツｅｆｇを配備できない場合がある。
【００５７】
そこで、本実施形態では、送信要求元のキャッシュサーバ２０ｎと既に接続を保持したキャッシュサーバ２０ｎにコンテンツの送信を委譲する。これにより、送信要求元のキャッシュサーバ２０ｎと既に接続中のキャッシュサーバ２０ｎから、送信要求元のキャッシュサーバ２０ｎへ順次コンテンツが送信される。そのため、図１６に示すように、ネットワークのトラフィック量の増加を抑制すると共に、待ち時間なくコンテンツを送信することができる。以下、上記処理を担う機能部について詳述する。
【００５８】
接続中ＣＳ探索部２３は、他のキャッシュサーバ２０ｎから送信されたコンテンツの送信要求を受信すると、送信中コンテンツリスト１０５を参照し、送信要求元のキャッシュサーバ２０ｎと自装置とが接続中か否かを判定する。例えば、送信中コンテンツリスト１０５に、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤを含むエントリが存在する場合には、接続中であると判定することができる。接続中の場合には、接続中ＣＳ探索部２３は、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを決定する。この場合、接続中ＣＳ探索部２３は、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤ、送信要求で指定されたコンテンツＩＤ、及びそのコンテンツＩＤが示すコンテンツのサイズを含む情報を、送信予約管理部２６へ通知する。なお、コンテンツのサイズは、コンテンツリスト１００から取得する。
【００５９】
自装置が送信要求元のキャッシュサーバ２０ｎと接続中ではない場合には、接続中ＣＳ探索部２３は、送信要求元のキャッシュサーバ２０ｎと接続中の周辺のキャッシュサーバ２０ｎを探索する。具体的には、接続中ＣＳ探索部２３は、自装置の周辺のキャッシュサーバ２０ｎに、送信要求元のキャッシュサーバ２０ｎと接続中か否か、及び接続中の場合には、その接続の解放予定時刻を含む接続状態の問い合わせを送信する。また、接続状態の問い合わせでは、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤを指定する。自装置の周辺のキャッシュサーバ２０ｎは、例えば、速度リスト１０２を参照して、自装置との間のホップ数が所定数以下のキャッシュサーバ２０ｎとすることができる。また、自装置が接続されたローカルネットワークと同一のローカルネットワークに接続されたキャッシュサーバ２０ｎを周辺のキャッシュサーバ２０ｎとしてもよい。
【００６０】
また、接続中ＣＳ探索部２３は、接続状態の問い合わせに対する周辺のキャッシュサーバ２０ｎからの回答を受信する。接続中ＣＳ探索部２３は、受信した接続状態の回答に基づいて、回答を送信した周辺のキャッシュサーバ２０ｎにおける接続の解放予定時刻までに、そのキャッシュサーバ２０ｎに対してコンテンツの送信を完了できるか否かを判定する。具体的には、回答を送信した周辺のキャッシュサーバ２０ｎとのスループットを速度リスト１０２から取得し、送信するコンテンツのサイズを、取得したスループットで割って求めた時間を現在時刻に加算することにより、送信完了予定時刻を計算する。そして、送信完了予定時刻が解放予定時刻よりも早い場合に、回答を送信した周辺のキャッシュサーバ２０ｎに対するコンテンツの送信を、解放予定時刻までに完了できると判定することができる。解放予定時刻までに送信を完了できる場合には、接続中ＣＳ探索部２３は、そのキャッシュサーバ２０ｎを委譲先キャッシュサーバ２０ｎとして決定し、委譲部２５に通知する。
【００６１】
また、接続中ＣＳ探索部２３は、接続状態の回答を複数のキャッシュサーバ２０ｎから受信した場合、回答を送信した周辺のキャッシュサーバ２０ｎの各々に対する送信完了予定時刻を計算する。さらに、解放予定時刻までにコンテンツの送信を完了できるキャッシュサーバ２０ｎが複数存在する場合には、接続中ＣＳ探索部２３は、送信完了予定時刻が早いキャッシュサーバ２０ｎから優先的に委譲先のキャッシュサーバ２０ｎとして決定する。これにより、より早く送信要求元のキャッシュサーバ２０ｎへコンテンツを事前配備することができる。
【００６２】
また、接続中ＣＳ探索部２３は、周辺のキャッシュサーバ２０ｎから接続状態の回答を受信しなかった場合には、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを決定する。この場合、接続中ＣＳ探索部２３は、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤ、送信要求で指定されたコンテンツＩＤ、及びそのコンテンツＩＤが示すコンテンツのサイズを含む情報を、送信予約管理部２６へ通知する。なお、コンテンツのサイズは、コンテンツリスト１００から取得する。また、接続中ＣＳ探索部２３は、解放予定時刻までにコンテンツの送信を完了できるキャッシュサーバ２０ｎが存在しない場合も、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを決定する。この場合、ＣＳ−ＩＤ、コンテンツＩＤ、及びコンテンツＩＤの情報に、受信した接続状態の回答に含まれる解放予定時刻を加えた情報を、送信予約管理部２６へ通知する。
【００６３】
接続状態回答部２４は、他のキャッシュサーバ２０ｎから送信された接続状態の問い合わせを受信すると、問い合わせで指定された送信要求元のキャッシュサーバ２０ｎと接続中で、かつ同時接続数が上限値未満か否かを判定する。具体的には、接続状態回答部２４は、送信中コンテンツリスト１０５に、送信要求元のキャッシュサーバ２０ｎを示すＣＳ−ＩＤを含むエントリが存在する場合には、送信要求元のキャッシュサーバ２０ｎと接続中であると判定する。また、接続状態回答部２４は、送信中コンテンツリスト１０５のエントリ数をカウントすることにより、現在の同時接続数を求め、予め定めた上限値と比較して同時接続数が上限値未満か否かを判定する。送信要求元のキャッシュサーバ２０ｎと接続中、かつ同時接続数が上限値未満の場合には、接続状態回答部２４は、その接続の解放予定時刻を求める。
【００６４】
例えば、キャッシュサーバ２０１の接続状態回答部２４が、ＣＳ−ＩＤ＝ＣＳ２０５を指定する接続状態の問い合わせを受信したとする。接続状態回答部２４は、例えば図９に示すような送信中コンテンツリスト１０５のエントリ数をカウントし、現在の同時接続数「１」を得て、設定情報テーブル１０３に定められた同時接続数の上限値と比較する。同時接続数の上限値未満の場合には、ＣＳ−ＩＤ＝ＣＳ２０５を含むエントリを、例えば図９に示す送信中コンテンツリスト１０５から検索する。ここでは該当のエントリが存在するため、自装置は送信要求元のキャッシュサーバ２０５と接続中であると判定する。そして、例えば速度リスト１０２から、キャッシュサーバ２０５との間のスループット「５Ｍｂｐｓ」が取得されたとする。また、図９に示す送信中コンテンツリスト１０５の該当のエントリの「残りサイズ」から「２０Ｍｂ」を取得する。さらに、現在時刻を「１１：２０：２０」とする。この場合、解放予定時刻＝現在時刻＋（残りサイズ／スループット）＝「１１：２０：２０」＋（２０Ｍｂ／５Ｍｂｐｓ）＝「１１：２０：２４」と求められる。
【００６５】
接続状態回答部２４は、送信要求元のキャッシュサーバ２０ｎと接続中であると判定した場合には、送信要求元のキャッシュサーバ２０ｎと接続中である旨、及び解放予定時刻を含む回答を、問い合わせ先に回答する。例えば、「接続状態＝キャッシュサーバ２０ｎと接続中，解放予定時刻＝ＨＨ：ＭＭ：ＳＳ」のような回答を送信する。送信要求元のキャッシュサーバ２０ｎと接続中ではない場合は、接続状態回答部２４は、接続状態の回答を行わない。なお、同時接続数が上限値に達している場合は、コンテンツの送信委譲要求（詳細は後述）を受け付け可能な状態ではないと判断し、送信要求元のキャッシュサーバ２０ｎとは接続中ではないとみなす。
【００６６】
委譲部２５は、送信要求元のキャッシュサーバ２０ｎへ送信する送信対象のコンテンツの送信を、接続中ＣＳ探索部２３から通知された委譲先のキャッシュサーバ２０ｎへ委譲する。具体的には、委譲部２５は、コンテンツ記憶部３６から、送信対象のコンテンツを取得する。そして、委譲部２５は、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤ及び送信を委譲するコンテンツのコンテンツＩＤを指定した送信委譲依頼と共に、コンテンツ記憶部３６から取得したコンテンツを委譲先のキャッシュサーバ２０ｎへ送信する。
【００６７】
また、委譲部２５は、委譲先のキャッシュサーバ２０ｎにコンテンツの送信を委譲した旨を、送信要求元のキャッシュサーバ２０ｎへ通知する。通知は、例えば、「コンテンツＩＤ＝ｅｄｆ，委譲先＝ＣＳ２０５」のような内容とすることができる。
【００６８】
送信予約管理部２６は、自装置が送信要求元のキャッシュサーバ２０ｎと接続中であることを示す接続中ＣＳ探索部２３からの通知を受信すると、通知に基づくエントリを予約リスト１０４に追加する。この際のエントリには、通知に含まれるＣＳ−ＩＤ、コンテンツＩＤ、コンテンツのサイズが含まれる。送信予約管理部２６は、委譲依頼を受信した際も同様に、委譲依頼に含まれるＣＳ−ＩＤ、コンテンツＩＤ、コンテンツのサイズの情報を含むエントリを、予約リスト１０４に追加する。
【００６９】
また、送信予約管理部２６は、委譲先のキャッシュサーバ２０ｎが探索できなかったために、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを示す接続中ＣＳ探索部２３からの通知を受信する。この通知を受信した場合には、自装置の同時接続数の状況に応じたエントリを、予約リスト１０４に追加する。具体的には、同時接続数が上限値未満の場合には、他のキャッシュサーバ２０ｎと送信要求元のキャッシュサーバ２０ｎとの接続が解放されるのを待って、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを示すエントリを追加する。より具体的には、通知に含まれるＣＳ−ＩＤ、コンテンツＩＤ、コンテンツのサイズの情報に、通知に含まれる解放予定時刻の情報を「開始時刻」として加えたエントリを、予約リスト１０４に追加する。同時接続数が上限値に達している場合には、予約リスト１０４に追加するエントリに「開始時刻」の情報を含めない。
【００７０】
自装置から送信要求元のキャッシュサーバ２０ｎへ、解放予定時刻を待ってコンテンツを送信することは、他のキャッシュサーバ２０ｎへコンテンツの委譲依頼をした場合と同様に、ネットワークのトラフィック量の抑制を図るものである。ただし、他のキャッシュサーバ２０ｎへ委譲した場合とは異なり、解放予定時刻に自装置や送信要求元のキャッシュサーバ２０ｎの同時接続数が上限値に達して、コンテンツを送信できない可能性もある。そのため、解放予定時刻を待って送信する場合には、同時接続数が上限値に達してコンテンツを送信できないといった事態を回避すべく、接続数に余裕がある場合（同時接続数が上限値未満の場合）を条件とする。一方、接続数に余裕がない場合（同時接続数が上限値に達している場合）には、解放予定時刻を考慮することなく、送信要求元のキャッシュサーバ２０ｎへコンテンツを送信可能な状態になった場合には即時にコンテンツを送信できるようにする。これは、処理中のコンテンツの送信要求にできるだけ即時応答し、他のキャッシュサーバ２０ｎからの他の送信要求を処理可能な状態にするものである。
【００７１】
また、送信予約管理部２６は、送信中コンテンツリスト１０５の「残りサイズ」を監視し、残りサイズが「０」になった場合には、そのエントリが示すコンテンツの送信が完了したと判定して、そのエントリを送信中コンテンツリスト１０５から削除する。また、送信予約管理部２６は、削除するエントリのＣＳ−ＩＤと同一のＣＳ−ＩＤを含むエントリを、予約リスト１０４から検索する。該当のエントリが存在する場合には、送信予約管理部２６は、そのＣＳ−ＩＤが示すキャッシュサーバ２０ｎと自装置との接続を維持したまま、予約リスト１０４の該当のエントリを送信中コンテンツリスト１０５へ移す。予約リスト１０４から該当のエントリが検索されなかった場合には、そのＣＳ−ＩＤが示すキャッシュサーバ２０ｎと自装置との接続を解放する。
【００７２】
コンテンツ送信部２７は、送信中コンテンツリスト１０５に登録されたエントリに含まれるコンテンツＩＤが示すコンテンツを、コンテンツ記憶部３６から取得する。また、コンテンツ送信部２７は、送信中コンテンツリスト１０５に登録されたエントリに含まれるＣＳ−ＩＤが示すキャッシュサーバ２０ｎとの接続の有無を確認する。接続されていない場合には接続を確立した後、コンテンツ記憶部３６から取得したコンテンツを送信する。接続が確立できない場合には、所定時間間隔でリトライする。また、コンテンツ送信部２７は、送信中のコンテンツの送信完了までの残りのデータサイズを取得し、送信中コンテンツリスト１０５の「残りサイズ」を更新する。
【００７３】
コンテンツ取得部２８は、他のキャッシュサーバ２０ｎから送信されたコンテンツを取得し、コンテンツ記憶部３６に記憶する。また、コンテンツ取得部２８は、コンテンツの取得が完了すると、自装置にコンテンツが配備されたことをコンテンツ管理装置４０へ通知する。例えば、コンテンツ取得部２８は、取得完了したコンテンツのコンテンツＩＤ、及び自装置のＣＳ−ＩＤを含む情報＜ａｂｃ，ＣＳ５＞を、コンテンツ管理装置４０へ送信する。これにより、コンテンツ管理装置４０のコンテンツ位置リスト記憶部４４に記憶されたコンテンツ位置リスト１０１に、＜ａｂｃ，ＣＳ５＞のエントリが追加される。
【００７４】
キャッシュサーバ２０ｎは、例えば図１７に示すコンピュータ８０で実現することができる。コンピュータ８０はＣＰＵ８１、一時記憶領域としてのメモリ８２、及び不揮発性の記憶部８３を備える。また、コンピュータ８０は、入出力装置８８が接続される入出力インターフェース（Ｉ／Ｆ）８４を備える。また、コンピュータ８０は、記録媒体８９に対するデータの読み込み及び書き込みを制御するｒｅａｄ／ｗｒｉｔｅ（Ｒ／Ｗ）部８５、及びインターネット等のネットワークに接続されるネットワークＩ／Ｆ８６を備える。ＣＰＵ８１、メモリ８２、記憶部８３、入出力Ｉ／Ｆ８４、Ｒ／Ｗ部８５、及びネットワークＩ／Ｆ８６は、バス８７を介して互いに接続される。
【００７５】
また、コンピュータ８０は、ネットワークＩ／Ｆ８６を介して、記憶装置３０ｎと接続される。また、コンピュータ８０は、ネットワークＩ／Ｆ８６を介して、ローカルネットワーク７０１、７０２、７０３のいずれかと接続される。
【００７６】
記憶部８３はＨＤＤ（Hard Disk Drive）、ＳＳＤ（solid state drive）、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部８３には、コンピュータ８０をキャッシュサーバ２０ｎとして機能させるためのコンテンツ送信プログラム９０が記憶される。ＣＰＵ８１は、コンテンツ送信プログラム９０を記憶部８３から読み出してメモリ８２に展開し、コンテンツ送信プログラム９０が有するプロセスを順次実行する。また、ＣＰＵ８１は、記憶装置３０ｎの各記憶部に記憶された情報を読み出して、例えば図３及び図６〜図９に示すような各リストとしてメモリ８２に展開する。
【００７７】
コンテンツ送信プログラム９０は、グループ情報取得プロセス９１と、選択プロセス９２と、接続中ＣＳ探索プロセス９３と、接続状態回答プロセス９４と、委譲プロセス９５と、送信予約管理プロセス９６とを有する。また、コンテンツ送信プログラム９０は、コンテンツ送信プロセス９７と、コンテンツ取得プロセス９８とを有する。
【００７８】
ＣＰＵ８１は、グループ情報取得プロセス９１を実行することで、図５に示すグループ情報取得部２１として動作する。また、ＣＰＵ８１は、選択プロセス９２を実行することで、図５に示す選択部２２として動作する。また、ＣＰＵ８１は、接続中ＣＳ探索プロセス９３を実行することで、図５に示す接続中ＣＳ探索部２３として動作する。また、ＣＰＵ８１は、接続状態回答プロセス９４を実行することで、図５に示す接続状態回答部２４として動作する。また、ＣＰＵ８１は、委譲プロセス９５を実行することで、図５に示す委譲部２５として動作する。また、ＣＰＵ８１は、送信予約管理プロセス９６を実行することで、図５に示す送信予約管理部２６として動作する。また、ＣＰＵ８１は、コンテンツ送信プロセス９７を実行することで、図５に示すコンテンツ送信部２７として動作する。また、ＣＰＵ８１は、コンテンツ取得プロセス９８を実行することで、図５に示すコンテンツ取得部２８として動作する。これにより、コンテンツ送信プログラム９０を実行したコンピュータ８０が、キャッシュサーバ２０ｎとして機能することになる。
【００７９】
なお、コンテンツ管理装置４０、及びユーザ端末６０ｎの各々についても、ＣＰＵ、メモリ、記憶部、入出力Ｉ／Ｆ、Ｒ／Ｗ部、ネットワークＩ／Ｆ、及びバスを備えたコンピュータで実現することができる。また、キャッシュサーバ２０ｎ、コンテンツ管理装置４０、及びユーザ端末６０ｎの各々は、例えば半導体集積回路、より詳しくはＡＳＩＣ（Application Specific Integrated Circuit）等で実現することも可能である。
【００８０】
次に、第１実施形態に係るコンテンツ送信システム１０の作用について説明する。ユーザ端末６０ｎからグループ登録が行われると、そのユーザ端末６０ｎの近隣キャッシュサーバ２０ｎが、図１８に示すコンテンツ要求取得処理を実行する。また、キャッシュサーバ２０ｎは、他のキャッシュサーバ２０ｎからコンテンツの送信要求を受信すると、図１９に示す探索委譲処理を実行する。また、キャッシュサーバ２０ｎは、他のキャッシュサーバから接続状態の問い合わせを受信すると、図２０に示す接続状態回答処理を実行する。また、キャッシュサーバ２０ｎは、接続中ＣＳ探索部２３から送信予約管理部２６への通知が発生すると、または他のキャッシュサーバ２０ｎから委譲依頼を受信すると、図２１に示す送信予約管理処理を実行する。また、各キャッシュサーバ２０ｎは、図２２に示すコンテンツ送信処理を実行する。以下、各処理について詳述する。
【００８１】
図１８に示すコンテンツ要求取得処理のステップＳ１０で、グループ情報取得部２１が、ユーザ端末６０ｎから送信されたグループ登録のメッセージを受信し、メッセージに含まれるグループＩＤを取得する。そして、選択部２２が、グループ情報取得部２１により取得されたグループＩＤに基づいて、そのグループＩＤが示すグループで共有のコンテンツが自装置に配備されているか否かを判定する。具体的には、選択部２２は、コンテンツリスト記憶部３１に記憶されたコンテンツリスト１００を参照して、グループＩＤに対応したコンテンツのコンテンツＩＤを取得する。そして、選択部２２は、取得したコンテンツＩＤに対応するコンテンツが、記憶装置３０ｎのコンテンツ記憶部３６に記憶されているか否かを判定する。記憶されている場合には、事前配備が完了しているため、そのままコンテンツ要求取得処理を終了する。記憶されていない場合には、ステップＳ１１へ移行する。
【００８２】
ステップＳ１１では、選択部２２が、コンテンツリスト１００から、グループＩＤをキーにして、コンテンツＩＤ、及びそのコンテンツのサイズを取得する。コンテンツＩＤは、上記ステップＳ１０で取得したコンテンツＩＤをそのまま用いればよい。
【００８３】
次に、ステップＳ１２で、選択部２２が、取得したコンテンツＩＤをキーにして、コンテンツ管理装置４０に、そのコンテンツＩＤが示すコンテンツの位置を問い合わせる。コンテンツ管理装置４０は、コンテンツ位置リスト記憶部４４に記憶されたコンテンツ位置リスト１０１を参照して、コンテンツの位置として、コンテンツが配備されているキャッシュサーバのＣＳ−ＩＤを、キャッシュサーバ２０ｎに送信する。選択部２２は、コンテンツ管理装置４０から送信されたＣＳ−ＩＤを取得する。
【００８４】
次に、ステップＳ１３で、選択部２２が、取得したＣＳ−ＩＤをキーに、速度リスト１０２から、ＣＳ−ＩＤに対応した各キャッシュサーバ２０ｎとのスループットを取得する。そして、選択部２２は、コンテンツリスト１００から取得したコンテンツのサイズと、各キャッシュサーバ２０ｎとのスループットとに基づいて、各キャッシュサーバ２０ｎからコンテンツを取得した場合に要する取得時間を計算する。そして、選択部２２は、現在時刻＋取得時間で表される時刻を取得完了予定時刻として計算する。
【００８５】
次に、ステップＳ１４で、選択部２２が、コンテンツ位置リスト１０１から取得したキャッシュサーバ２０ｎのうち、取得完了予定時刻が最も早いキャッシュサーバ２０ｎを選択する。
【００８６】
次に、ステップＳ１５で、選択部２２が、上記ステップＳ１４で選択したキャッシュサーバ２０ｎに、例えば、取得したいコンテンツのコンテンツＩＤを指定したコンテンツの送信要求を送信する。
【００８７】
次に、ステップＳ１６で、コンテンツ取得部２８が、コンテンツの取得に成功したか否かを判定する。コンテンツの取得に失敗した場合には、処理はステップＳ１７へ移行する。ステップＳ１７では、選択部２２が、上記ステップＳ１４で選択したキャッシュサーバ２０ｎを除き、上記ステップＳ１３で計算した取得完了予定時刻が最も早いキャッシュサーバ２０ｎを選択し、ステップＳ１５に戻る。
【００８８】
一方、コンテンツの取得に成功した場合には、処理はステップＳ１８へ移行する。ステップＳ１８では、コンテンツ取得部２８が、取得したコンテンツをコンテンツ記憶部３６に記憶する。また、コンテンツ取得部２８は、例えば、取得完了したコンテンツのコンテンツＩＤ、及び自装置のＣＳ−ＩＤを含む情報を、コンテンツ管理装置４０へ送信し、コンテンツ送信処理は終了する。なお、ステップＳ１７で選択可能なキャッシュサーバ２０ｎが存在しなくなった場合にも、コンテンツ送信処理は終了する。
【００８９】
次に、図１９に示す探索委譲処理のステップＳ２１で、接続中ＣＳ探索部２３は、送信中コンテンツリスト１０５を参照し、送信要求元のキャッシュサーバ２０ｎと自装置とが接続中か否かを判定する。接続中の場合には、接続中ＣＳ探索部２３は、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを決定し、処理はステップＳ３１へ移行する。自装置が送信要求元のキャッシュサーバ２０ｎと接続中ではない場合には、処理はステップＳ２２へ移行する。
【００９０】
ステップＳ２２では、接続中ＣＳ探索部２３が、自装置の周辺のキャッシュサーバ２０ｎに、送信要求元のキャッシュサーバ２０ｎと接続中か否か、及び接続中の場合には、その接続の解放予定時刻を含む接続状態の問い合わせを送信する。
【００９１】
次に、ステップＳ２３で、接続中ＣＳ探索部２３が、接続状態の問い合わせに対する周辺のキャッシュサーバ２０ｎからの回答を受信したか否かを判定する。受信した場合には、処理はステップＳ２４へ移行する。一方、所定時間以内に接続状態の回答を受信しなかった場合には、接続中ＣＳ探索部２３は、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを決定し、処理はステップＳ３１へ移行する。
【００９２】
ステップＳ２４では、接続中ＣＳ探索部２３が、回答を送信した周辺のキャッシュサーバ２０ｎの各々へ自装置からコンテンツを送信した場合の送信完了予定時刻を計算する。次に、ステップＳ２５で、接続中ＣＳ探索部２３は、上記ステップＳ２４で計算した送信完了予定時刻が最も早い周辺のキャッシュサーバ２０ｎを選択する。
【００９３】
次に、ステップＳ２６で、接続中ＣＳ探索部２３が、選択した周辺のキャッシュサーバ２０ｎへコンテンツを送信した場合の送信完了予定時刻が、選択した周辺のキャッシュサーバ２０ｎでの解放予定時刻よりも早いか否かを判定する。すなわち、選択した周辺のキャッシュサーバ２０ｎでの解放予定時刻までに、そのキャッシュサーバ２０ｎへコンテンツを送信できるか否かを判定する。送信完了予定時刻の方が早い場合には、処理はステップＳ２７へ移行し、解放予定時刻の方が早い場合には、処理はステップＳ２９へ移行する。
【００９４】
ステップＳ２７では、接続中ＣＳ探索部２３が、選択した周辺のキャッシュサーバ２０ｎを委譲先のキャッシュサーバ２０ｎとして決定し、委譲部２５に通知する。そして、委譲部２５が、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤ及び送信を委譲するコンテンツのコンテンツＩＤを指定した送信委譲依頼と共に、コンテンツ記憶部３６から取得したコンテンツを委譲先のキャッシュサーバ２０ｎへ送信する。
【００９５】
次に、ステップＳ２８で、委譲部２５が、委譲先のキャッシュサーバ２０ｎにコンテンツの送信を委譲した旨を、送信要求元のキャッシュサーバ２０ｎへ通知して、探索委譲処理を終了する。
【００９６】
一方、ステップＳ２９では、接続中ＣＳ探索部２３が、上記ステップＳ２３で接続状態の回答を受信した周辺のキャッシュサーバ２０ｎが他に存在するか否かを判定する。存在する場合には、ステップＳ３０へ移行し、接続中ＣＳ探索部２３が、上記ステップＳ２５で選択済みの周辺のキャッシュサーバ２０ｎを除いて、送信完了予定時刻が最も早い周辺のキャッシュサーバ２０ｎを選択し、処理はステップＳ２６に戻る。一方、他の周辺のキャッシュサーバ２０ｎが存在しない場合には、接続中ＣＳ探索部２３が、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを決定し、処理はステップＳ３１へ移行する。
【００９７】
ステップＳ３１では、接続中ＣＳ探索部２３が、送信要求元のキャッシュサーバ２０ｎのＣＳ−ＩＤ、送信要求で指定されたコンテンツＩＤ、及びそのコンテンツＩＤが示すコンテンツのサイズを含む情報を、送信予約管理部２６へ通知する。なお、コンテンツのサイズは、コンテンツリスト１００から取得する。また、上記ステップＳ２９を経由して本ステップへ移行した場合には、上記ステップＳ２３で受信した接続状態の回答に含まれる解放予定時刻の情報も加えて、送信予約管理部２６へ通知する。そして、探索委譲処理は終了する。
【００９８】
次に、図２０に示す接続状態回答処理のステップＳ４１で、接続状態回答部２４が、送信中コンテンツリスト１０５に、受信した接続状態の問い合わせで指定されたＣＳ−ＩＤを含むエントリが存在するか否かを判定する。エントリが存在する場合には、接続状態の問い合わせで指定されたＣＳ−ＩＤが示す送信要求元のキャッシュサーバ２０ｎと接続中であると判定し、処理はステップＳ４２へ移行する。エントリが存在しない場合、すなわち、送信要求元のキャッシュサーバ２０ｎと接続中ではない場合には、接続状態の回答を行うことなく、接続状態回答処理を終了する。
【００９９】
ステップＳ４２では、接続状態回答部２４が、送信中コンテンツリスト１０５のエントリ数をカウントすることにより、現在の同時接続数を求める。そして、接続状態回答部２４は、設定情報テーブル１０３に定められた同時接続数の上限値と比較して、同時接続数が上限値未満か否かを判定する。上限値未満の場合には、処理はステップＳ４３へ移行し、上限値に達している場合には、接続状態の回答を行うことなく、接続状態回答処理を終了する。
【０１００】
ステップＳ４３では、接続状態回答部２４が、速度リスト１０２から、送信要求元のキャッシュサーバ２０５との間のスループットを取得し、送信中コンテンツリスト１０５の該当のエントリから「残りサイズ」を取得する。そして、解放予定時刻＝現在時刻＋（残りサイズ／スループット）で、接続の解放予定時刻を計算する。
【０１０１】
次に、ステップＳ４４で、接続状態回答部２４が、送信要求元のキャッシュサーバ２０ｎと接続中である旨、及び上記ステップＳ４３で計算した解放予定時刻を含む回答を、問い合わせ先に回答し、接続状態回答処理を終了する。
【０１０２】
次に、図２１に示す送信予約管理処理のステップＳ５１で、送信予約管理部２６が、受信した通知等が、委譲依頼、または自装置が送信要求元のキャッシュサーバ２０ｎと接続中であることを示す接続中ＣＳ探索部２３からの通知か否かを判定する。肯定判定の場合には、処理はステップＳ５２へ移行し、送信予約管理部２６が、ＣＳ−ＩＤ、コンテンツＩＤ、コンテンツのサイズを含むエントリを予約リスト１０４に追加して、送信予約管理処理を終了する。
【０１０３】
一方、受信した通知等が、委譲先のキャッシュサーバ２０ｎが探索できなかったために、自装置から送信要求元のキャッシュサーバ２０ｎへコンテンツを送信することを示す接続中ＣＳ探索部２３からの通知の場合には、ステップＳ５３へ移行する。ステップＳ５３では、送信予約管理部２６が、送信中コンテンツリスト１０５のエントリ数をカウントして、現在の自装置の同時接続数を求め、設定情報テーブル１０３に定められた同時接続数の上限値と比較して、同時接続数が上限値未満か否かを判定する。上限値未満の場合には、処理はステップＳ５４へ移行し、上限値に達している場合には、処理はステップＳ５２へ移行する。
【０１０４】
ステップＳ５４では、送信予約管理部２６が、受信した通知に、解放予定時刻の情報が含まれるか否かを判定する。含まれる場合には、処理はステップＳ５５へ移行し、含まれない場合には、処理はステップＳ５２へ移行する。ステップＳ５５では、送信予約管理部２６が、通知に含まれるＣＳ−ＩＤ、コンテンツＩＤ、コンテンツのサイズの情報に、通知に含まれる解放予定時刻の情報を「開始時刻」として加えたエントリを、予約リスト１０４に追加する。そして、送信予約管理処理を終了する。
【０１０５】
次に、図２２に示すコンテンツ送信処理のステップＳ６１で、コンテンツ送信部２７が、送信中のコンテンツの送信完了までの残りのデータサイズを取得し、送信中コンテンツリスト１０５の「残りサイズ」を更新する。そして、送信予約管理部２６が、送信中コンテンツリスト１０５の「残りサイズ」が「０」になったエントリが存在するか否かを判定することにより、そのエントリが示すコンテンツの送信が完了したか否かを判定する。例えば、図２３のＡで示す送信中コンテンツリスト１０５のエントリは、「残りサイズ」が「０」となっているため、このエントリが示すコンテンツの送信が完了したと判定することができる。コンテンツの送信が完了した場合には、処理はステップＳ６２へ移行し、コンテンツの送信が完了していない場合には、本ステップの判定を繰り返す。また、送信中コンテンツリスト１０５が、初期状態等で空の場合にも、本ステップで肯定判定されて、ステップＳ６２へ移行する。
【０１０６】
ステップＳ６２では、送信予約管理部２６が、コンテンツの送信が完了したことを示すエントリを、送信中コンテンツリスト１０５から削除し、送信中コンテンツリスト１０５を、図２３のＢに示すように更新する。
【０１０７】
次に、ステップＳ６３で、送信予約管理部２６が、上記ステップＳ６２で削除したエントリのＣＳ−ＩＤと同一のＣＳ−ＩＤを含むエントリを、予約リスト１０４から検索する。例えば、図２３のＡに示すように、ＣＳ−ＩＤ＝ＣＳ２０５のエントリを削除した場合、予約リスト１０４から、図２３のＣに示すように、ＣＳ−ＩＤ＝ＣＳ２０５のエントリが検索される。また、送信中コンテンツリスト１０５が初期状態等で空の場合には、予約リスト１０４の先頭から、ＣＳ−ＩＤ毎に１つずつのエントリを検索する。なお、予約リスト１０４からのエントリの検索の際、「開始時刻」に現在時刻よりも先の時刻が登録されているエントリは、検索の対象外とする。
【０１０８】
次に、ステップＳ６４で、送信予約管理部２６が、該当のエントリが予約リスト１０４から検索されたか否かを判定する。検索された場合には、処理はステップＳ６５へ移行し、検索されなかった場合には、処理はステップＳ６６へ移行する。
【０１０９】
ステップＳ６５では、送信予約管理部２６が、予約リスト１０４から検索したエントリを、「開始時刻」の項目を除いて、送信中コンテンツリスト１０５へ移す。従って、図２３のＤに示すように、予約リスト１０４からは該当のエントリが削除され、図２３のＥに示すように、送信中コンテンツリスト１０５には該当のエントリが追加される。
【０１１０】
一方、ステップＳ６６では、上記ステップＳ６２で送信中コンテンツリスト１０５から削除したエントリのＣＳ−ＩＤが示すキャッシュサーバ２０ｎとの接続を解放する。すなわち、該当のエントリが予約リスト１０４から検索された場合は、コンテンツの送信が終了したキャッシュサーバ２０ｎとの接続を解放することなく、維持したままの状態となる。
【０１１１】
ステップＳ６７ではコンテンツ送信部２７が、送信中コンテンツリスト１０５に追加されたエントリに含まれるコンテンツＩＤが示すコンテンツを、コンテンツ記憶部３６から取得する。また、コンテンツ送信部２７は、送信中コンテンツリスト１０５に追加されたエントリに含まれるＣＳ−ＩＤが示すキャッシュサーバ２０ｎとの接続の有無を確認する。接続されていない場合には接続を確立した後、コンテンツ記憶部３６から取得したコンテンツを送信する。上述のように、コンテンツの送信完了に伴い新たにエントリが追加された場合には、送信要求元のキャッシュサーバ２０ｎとの接続が維持されたままであるため、その既存の接続を利用して、コンテンツを送信することになる。コンテンツの送信を開始すると、処理はステップＳ６１に戻る。
【０１１２】
なお、空の送信中コンテンツリスト１０５に新たにエントリを追加した場合など、新たに送信要求元のキャッシュサーバ２０ｎとの接続を確立する場合には、接続を確立できない場合もある。例えば、自装置または送信要求元のキャッシュサーバ２０ｎの同時接続数が上限値に達している場合などである。この場合には、所定時間間隔で接続の確立をリトライする。
【０１１３】
以上説明したように、第１実施形態に係るコンテンツ送信システム１０では、キャッシュサーバ２０ｎが、コンテンツの送信を要求された場合に、コンテンツの送信要求元のキャッシュサーバと既に接続中のキャッシュサーバを探索する。接続中のキャッシュサーバが存在する場合には、そのキャッシュサーバにコンテンツの送信を委譲することにより、ネットワークのトラフィック量の増加を抑制する。また、既存の接続を利用することで、同時接続数の制限内で、隙間なく順次コンテンツを送信することができるため、送信要求元のキャッシュサーバへのコンテンツの送信完了までの時間を短縮することができる。
【０１１４】
また、委譲先のキャッシュサーバを探索する際、自装置の周辺のキャッシュサーバから探索することで、広域ネットワークを利用した通信を減少させることができるため、通信コストの削減を図ることができる。
【０１１５】
また、委譲先のキャッシュサーバの候補が複数存在する場合には、自装置から周辺のキャッシュサーバの各々へコンテンツを送信した場合の送信完了予定時刻が早いキャッシュサーバから優先的に委譲先のキャッシュサーバとして決定する。これにより、送信要求元のキャッシュサーバへのコンテンツの事前配備を、より早く完了することができる。
【０１１６】
なお、第１実施形態では、他のキャッシュサーバと送信要求元のキャッシュサーバとの接続が解放されるのを待ってコンテンツを転送する場合を、予約リストに設けた「開始時刻」の項目で管理する場合について説明したが、これに限定されない。例えば、他のキャッシュサーバと送信要求元のキャッシュサーバとの接続が解放されるのを待って、予約リストにエントリを追加するようにしてもよい。
【０１１７】
＜第２実施形態＞
次に、第２実施形態について説明する。なお、第１実施形態に係るコンテンツ送信システム１０と同一の部分については、同一符号を付して詳細な説明を省略する。
【０１１８】
図５に、第２実施形態に係るキャッシュサーバ２０ｎＡ及び記憶装置３０ｎＡを示す。図５に示すように、記憶装置３０ｎＡは、コンテンツリスト記憶部３１と、速度リスト記憶部３２と、設定情報記憶部３３Ａと、予約リスト記憶部３４と、送信中コンテンツリスト記憶部３５と、コンテンツ記憶部３６とを含む。
【０１１９】
設定情報記憶部３３Ａには、例えば、図２４に示すように、同時接続数の上限値及び事前配備の上限時間に加え、予約リスト保持数の上限値を定めた設定情報テーブル１０３Ａが記憶される。予約リスト保持数の上限値の詳細については後述する。
【０１２０】
キャッシュサーバ２０ｎＡは、グループ情報取得部２１と、選択部２２と、接続中ＣＳ探索部２３Ａと、接続状態回答部２４Ａと、委譲部２５と、送信予約管理部２６と、コンテンツ送信部２７と、コンテンツ取得部２８とを含む。
【０１２１】
接続状態回答部２４Ａは、第１実施形態の接続状態回答部２４と同様に、他のキャッシュサーバ２０ｎＡから送信された接続状態の問い合わせに対し、問い合わせで指定された送信要求元のキャッシュサーバ２０ｎＡとの接続状態を回答する。この際、接続状態回答部２４Ａは、予約リスト１０４のエントリ数が、設定情報テーブル１０３Ａに定められた予約リスト保持数の上限値未満か否かを判定する。接続状態回答部２４Ａは、送信要求元のキャッシュサーバ２０ｎＡと接続中、かつ同時接続数が上限値未満の場合に加え、予約リスト１０４のエントリ数が上限値未満の場合に、送信要求元のキャッシュサーバ２０ｎＡとの接続の解放予定時刻を求める。
【０１２２】
そして、接続状態回答部２４Ａは、送信要求元のキャッシュサーバ２０ｎＡと接続中である旨、解放予定時刻、及び同時接続数を含む回答を、問い合わせ先に回答する。すなわち、予約リスト１０４のエントリ数が上限値以上の場合には、送信要求元のキャッシュサーバ２０ｎＡと接続されていないものとみなし、接続状態の回答を行わない。予約リスト１０４のエントリ数が多いことは、そのキャッシュサーバ２０ｎＡが保持する送信待ちのコンテンツ数が多いことを表している。そこで、予約リスト１０４のエントリ数が上限値以上の場合には、さらなるコンテンツの送信を引き受けないようにし、保持するコンテンツ数の増加を抑制する。これにより、キャッシュサーバ２０ｎＡに障害が生じた場合などの影響範囲の拡大を防止することができる。
【０１２３】
接続中ＣＳ探索部２３Ａは、第１実施形態の接続中ＣＳ探索部２３と同様に、接続状態の問い合わせに対する周辺のキャッシュサーバ２０ｎＡからの回答に基づいて、委譲先のキャッシュサーバ２０ｎＡを決定する。第２実施形態では、接続状態の回答を複数のキャッシュサーバ２０ｎＡから受信し、解放予定時刻までにコンテンツの送信を完了できるキャッシュサーバ２０ｎＡが複数存在する場合の委譲先のキャッシュサーバ２０ｎＡの決定方法が第１実施形態と異なる。第２実施形態において、接続中ＣＳ探索部２３Ａは、回答に含まれる同時接続数が少ないキャッシュサーバ２０ｎＡから優先的に委譲先のキャッシュサーバ２０ｎＡとして決定する。
【０１２４】
次に、第２実施形態に係るコンテンツ送信システム１０の作用について、第１実施形態と異なる点について説明する。キャッシュサーバ２０ｎＡは、他のキャッシュサーバ２０ｎＡからコンテンツの送信要求を受信すると、図２５に示す探索委譲処理を実行する。また、キャッシュサーバ２０ｎＡは、他のキャッシュサーバ２０ｎＡから接続状態の問い合わせを受信すると、図２６に示す接続状態回答処理を実行する。なお、第１実施形態と同様の処理については、同一符号を付して詳細な説明を省略する。
【０１２５】
図２５に示す探索委譲処理のステップＳ２３で、接続中ＣＳ探索部２３Ａが、接続状態の問い合わせに対する周辺のキャッシュサーバ２０ｎＡからの回答を受信した場合には、処理はステップＳ７１へ移行する。
【０１２６】
ステップＳ７１では、接続中ＣＳ探索部２３Ａが、受信した回答に含まれる同時接続数が最小の周辺のキャッシュサーバ２０ｎＡを選択する。次に、ステップＳ７２で、接続中ＣＳ探索部２３Ａが、上記ステップＳ７１で選択した周辺のキャッシュサーバ２０ｎＡへ自装置からコンテンツを送信した場合の送信完了予定時刻を計算し、処理はステップＳ２６へ移行する。
【０１２７】
また、ステップＳ２９で肯定判定されると、処理はステップＳ７３へ移行し、接続中ＣＳ探索部２３Ａが、上記ステップＳ７２で選択済みの周辺のキャッシュサーバ２０ｎＡを除いて、同時接続数が最小の周辺のキャッシュサーバ２０ｎＡを選択する。そして、処理はステップＳ２６に戻る。
【０１２８】
次に、図２６に示す接続状態回答処理のステップＳ４２で肯定判定されると、処理はステップＳ８１へ移行し、接続状態回答部２４Ａが、予約リスト１０４のエントリ数が、設定情報テーブル１０３Ａに定められた予約リスト保持数の上限値未満か否かを判定する。上限値未満の場合には、処理はステップＳ４３へ移行し、上限値以上の場合には、接続状態の回答を行うことなく、接続状態回答処理を終了する。
【０１２９】
また、ステップＳ４３に続くステップＳ８２では、接続状態回答部２４Ａが、送信要求元のキャッシュサーバ２０ｎＡと接続中である旨、解放予定時刻、及び同時接続数を含む回答を、問い合わせ先に回答して、接続状態回答処理を終了する。
【０１３０】
以上説明したように、第２実施形態に係るコンテンツ送信システム１０では、キャッシュサーバ２０ｎＡが、コンテンツの送信を要求された場合に、コンテンツの送信要求元のキャッシュサーバと既に接続中のキャッシュサーバを探索する。そして、接続中のキャッシュサーバが存在する場合には、そのキャッシュサーバにコンテンツの送信を委譲する。従って、第１実施形態と同様に、ネットワークのトラフィック量の増加を抑制しつつ、同時接続数の制限内で、送信要求元のキャッシュサーバへのコンテンツの送信完了までの時間を短縮することができる。
【０１３１】
また、委譲先のキャッシュサーバの候補が複数存在する場合には、同時接続数が小さいキャッシュサーバから優先的に委譲先のキャッシュサーバとして決定する。これにより、委譲先のキャッシュサーバへの負荷を軽減することができる。
【０１３２】
なお、上記各実施形態では、キャッシュサーバによるコンテンツの事前配備のトリガーが、ユーザ端末からのグループ登録（Ｓｕｂｓｃｒｉｂｅ）である場合について説明したが、これに限定されない。ユーザによるログイン、ユーザ端末のキャッシュサーバに対応したアクセスポイントへの接続など、ユーザ端末からのコンテンツ要求に先立って行われる接続をトリガーとすることができる。
【０１３３】
また、上記各実施形態では、周辺のキャッシュサーバの接続の解放予定時刻より、自装置から周辺のキャッシュサーバへのコンテンツの送信完了予定時刻の方が早い場合に、コンテンツの送信を委譲する場合について説明したが、これに限定されない。解放予定時刻までの時間が長い場合などには、委譲した結果、事前配備上限までに送信要求元のキャッシュサーバにコンテンツを配備できない場合も発生し得る。そこで、送信待ちの上限時間を設けておく。そして、現在時刻から解放予定時刻までの時間が、送信待ちの上限時間を超える場合には、送信完了予定時刻が解放予定時刻より早い場合でも、コンテンツの送信を委譲することなく、自装置から送信要求元のキャッシュサーバへ送信するようにしてもよい。送信待ちの上限時間は、事前配備の上限時間と、周辺のキャッシュサーバへコンテンツの送信を委譲した場合のコンテンツの送信時間とを考慮して定めておくことができる。
【０１３４】
また、上記各実施形態では、記憶装置３０ｎ、３０ｎＡに記憶された各種情報に基づいて、コンテンツを取得するキャッシュサーバを選択する場合について説明したが、これに限定されない。キャッシュサーバを選択する際に、コンテンツ管理装置４０や他のキャッシュサーバに問い合わせを行うなどして、必要な情報を取得するようにしてもよい。
【０１３５】
また、上記各実施形態では、コンテンツ管理装置４０にコンテンツ位置リスト１０１を記憶する場合について説明したが、これに限定されない。コンテンツ管理装置４０とは別に、コンテンツ位置リスト１０１を管理するコンテンツ位置リスト管理装置を設けてもよい。
【０１３６】
また、上記各実施形態では、異なるユーザからの異なるグループ登録に応じて、異なるコンテンツを１つのキャッシュサーバへ配備する場合を例に説明したが、これに限定されない。１つのキャッシュサーバに異なる複数のコンテンツを送信する場合であればよく、例えば、１人のユーザによるグループ登録が行われたキャッシュサーバに、異なる複数のコンテンツを配備する場合も同様に、本発明を適用することができる。
【０１３７】
また、上記では、コンテンツ送信プログラム９０が記憶部８３に予め記憶（インストール）されている態様を説明したが、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記憶媒体に記録された形態で提供することも可能である。
【０１３８】
以上の各実施形態に関し、更に以下の付記を開示する。
【０１３９】
（付記１）
コンピュータに、
第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、前記第１の情報処理装置との接続を保持した第２の情報処理装置を探索し、
前記コンテンツと、前記コンテンツを前記第１の情報処理装置へ送信する指示とを、探索された前記第２の情報処理装置に送信する
ことを含む処理を実行させるためのコンテンツ送信プログラム。
【０１４０】
（付記２）
前記第２の情報処理装置を探索する際、前記第１の情報処理装置との接続を保持した情報処理装置から、前記第１の情報処理装置との接続の解放予定時刻を取得し、
自装置からの前記コンテンツの送信が、前記解放予定時刻までに完了する情報処理装置を、前記第２の情報処理装置として選択する
付記１記載のコンテンツ送信プログラム。
【０１４１】
（付記３）
前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、前記解放予定時刻が早い情報処理装置から優先的に前記第２の情報処理装置として選択する付記２記載のコンテンツ送信プログラム。
【０１４２】
（付記４）
前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、他の情報処理装置との同時接続数が少ない情報処理装置から優先的に前記第２の情報処理装置として選択する付記１〜付記３のいずれか１項記載のコンテンツ送信プログラム。
【０１４３】
（付記５）
前記第２の情報処理装置を探索する際、保持する送信待ちのコンテンツ数が所定の保持数上限値未満の情報処理装置から、前記第２の情報処理装置を選択する付記１〜付記４のいずれか１項記載のコンテンツ送信プログラム。
【０１４４】
（付記６）
前記第２の情報処理装置を探索する際、自装置との間のホップ数が所定数以下の情報処理装置から、前記第２の情報処理装置を選択する付記１〜付記５のいずれか１項記載のコンテンツ送信プログラム。
【０１４５】
（付記７）
前記第２の情報処理装置を探索する際、他の情報処理装置との同時接続数が所定の接続上限値未満の情報処理装置から、前記第２の情報処理装置を選択する付記１〜付記６のいずれか１項記載のコンテンツ送信プログラム。
【０１４６】
（付記８）
前記第２の情報処理装置を探索する際、他の情報処理装置に、前記第１の情報処理装置と接続中か否かを問い合わせる付記１〜付記７のいずれか１項記載のコンテンツ送信プログラム。
【０１４７】
（付記９）
前記コンテンツと前記指示とを前記第２の情報処理装置に送信する際、前記第２の情報処理装置に前記コンテンツの送信を指示したことを、前記第１の情報処理装置に通知する付記１〜付記８のいずれか１項記載のコンテンツ送信プログラム。
【０１４８】
（付記１０）
第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、前記第１の情報処理装置との接続を保持した第２の情報処理装置を探索する探索部と、
前記コンテンツと、前記コンテンツを前記第１の情報処理装置へ送信する指示とを、探索された前記第２の情報処理装置に送信する委譲部と、
を含むコンテンツ送信装置。
【０１４９】
（付記１１）
前記探索部は、前記第１の情報処理装置との接続を保持した情報処理装置から、前記第１の情報処理装置との接続の解放予定時刻を取得し、自装置からの前記コンテンツの送信が、前記解放予定時刻までに完了する情報処理装置を、前記第２の情報処理装置として選択する付記１０記載のコンテンツ送信装置。
【０１５０】
（付記１２）
前記探索部は、前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、前記解放予定時刻が早い情報処理装置から優先的に前記第２の情報処理装置として選択する付記１１記載のコンテンツ送信装置。
【０１５１】
（付記１３）
前記探索部は、前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、他の情報処理装置との同時接続数が少ない情報処理装置から優先的に前記第２の情報処理装置として選択する付記１０〜付記１２のいずれか１項記載のコンテンツ送信装置。
【０１５２】
（付記１４）
前記探索部は、保持する送信待ちのコンテンツ数が所定の保持数上限値未満の情報処理装置から、前記第２の情報処理装置を選択する付記１０〜付記１３のいずれか１項記載のコンテンツ送信装置。
【０１５３】
（付記１５）
前記探索部は、自装置との間のホップ数が所定数以下の情報処理装置から、前記第２の情報処理装置を選択する付記１０〜付記１４のいずれか１項記載のコンテンツ送信装置。
【０１５４】
（付記１６）
前記探索部は、他の情報処理装置との同時接続数が所定の接続上限値未満の情報処理装置から、前記第２の情報処理装置を選択する付記１０〜付記１５のいずれか１項記載のコンテンツ送信装置。
【０１５５】
（付記１７）
前記探索部は、他の情報処理装置に、前記第１の情報処理装置と接続中か否かを問い合わせる付記１０〜付記１６のいずれか１項記載のコンテンツ送信装置。
【０１５６】
（付記１８）
前記委譲部は、前記第２の情報処理装置に前記コンテンツの送信を指示したことを、前記第１の情報処理装置に通知する付記１０〜付記１７のいずれか１項記載のコンテンツ送信装置。
【０１５７】
（付記１９）
コンピュータに、
第１の情報処理装置からコンテンツの送信要求を受け付けた場合に、前記第１の情報処理装置との接続を保持した第２の情報処理装置を探索し、
前記コンテンツと、前記コンテンツを前記第１の情報処理装置へ送信する指示とを、探索された前記第２の情報処理装置に送信する
ことを含む処理を実行させるためのコンテンツ送信方法。
【０１５８】
（付記２０）
前記第２の情報処理装置を探索する際、前記第１の情報処理装置との接続を保持した情報処理装置から、前記第１の情報処理装置との接続の解放予定時刻を取得し、
自装置からの前記コンテンツの送信が、前記解放予定時刻までに完了する情報処理装置を、前記第２の情報処理装置として選択する
付記１９記載のコンテンツ送信方法。
【０１５９】
（付記２１）
前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、前記解放予定時刻が早い情報処理装置から優先的に前記第２の情報処理装置として選択する付記２０記載のコンテンツ送信方法。
【０１６０】
（付記２２）
前記第１の情報処理装置との接続を保持した情報処理装置が複数存在する場合、他の情報処理装置との同時接続数が少ない情報処理装置から優先的に前記第２の情報処理装置として選択する付記１９〜付記２１のいずれか１項記載のコンテンツ送信方法。
【０１６１】
（付記２３）
前記第２の情報処理装置を探索する際、保持する送信待ちのコンテンツ数が所定の保持数上限値未満の情報処理装置から、前記第２の情報処理装置を選択する付記１９〜付記２２のいずれか１項記載のコンテンツ送信方法。
【０１６２】
（付記２４）
前記第２の情報処理装置を探索する際、自装置との間のホップ数が所定数以下の情報処理装置から、前記第２の情報処理装置を選択する付記１９〜付記２３のいずれか１項記載のコンテンツ送信方法。
【０１６３】
（付記２５）
前記第２の情報処理装置を探索する際、他の情報処理装置との同時接続数が所定の接続上限値未満の情報処理装置から、前記第２の情報処理装置を選択する付記１９〜付記２４のいずれか１項記載のコンテンツ送信方法。
【０１６４】
（付記２６）
前記第２の情報処理装置を探索する際、他の情報処理装置に、前記第１の情報処理装置と接続中か否かを問い合わせる付記１９〜付記２５のいずれか１項記載のコンテンツ送信方法。
【０１６５】
（付記２７）
前記コンテンツと前記指示とを前記第２の情報処理装置に送信する際、前記第２の情報処理装置に前記コンテンツの送信を指示したことを、前記第１の情報処理装置に通知する付記１９〜付記２６のいずれか１項記載のコンテンツ送信方法。
【符号の説明】
【０１６６】
１０  コンテンツ送信システム
２０ｎ  キャッシュサーバ
２１  グループ情報取得部
２２  選択部
２３  接続中ＣＳ探索部
２４  接続状態回答部
２５  委譲部
２６  送信予約管理部
２７  コンテンツ送信部
２８  コンテンツ取得部
３０ｎ  記憶装置
６０ｎ  ユーザ端末
８０  コンピュータ
８１  ＣＰＵ
８２  メモリ
８３  記憶部
９０  コンテンツ送信プログラム
１００  コンテンツリスト
１０１  コンテンツ位置リスト
１０２  速度リスト
１０３  設定情報テーブル
１０４  予約リスト
１０５  送信中コンテンツリスト
７００  広域ネットワーク
７０１、７０２、７０３  ローカルネットワーク
【図１】
2016042230.tif 000003
【図２】
2016042230.tif 000004
【図３】
2016042230.tif 000005
【図４】
2016042230.tif 000006
【図５】
2016042230.tif 000007
【図６】
2016042230.tif 000008
【図７】
2016042230.tif 000009
【図８】
2016042230.tif 000010
【図９】
2016042230.tif 000011
【図１４】
2016042230.tif 000012
【図１５】
2016042230.tif 000013
【図１６】
2016042230.tif 000014
【図１７】
2016042230.tif 000015
【図１８】
2016042230.tif 000016
【図１９】
2016042230.tif 000017
【図２０】
2016042230.tif 000018
【図２１】
2016042230.tif 000019
【図２２】
2016042230.tif 000020
【図２３】
2016042230.tif 000021
【図２４】
2016042230.tif 000022
【図２５】
2016042230.tif 000023
【図２６】
2016042230.tif 000024
【図１０】
2016042230.tif 000025
【図１１】
2016042230.tif 000026
【図１２】
2016042230.tif 000027
【図１３】
2016042230.tif 000028