本発明は上記従来の課題を解決するためになされたものであり、その目的とするところは、1つの端末装置またはコンテンツサーバーに、コンテンツ送信処理が集中することを防止するコンテンツ配信システムを提供することにある。
本発明の好ましい実施形態によるコンテンツ配信システムは、センターサーバーと該センターサーバーに接続可能な複数の端末装置とを備える。該センターサーバーは、コンテンツが複数に分割された部分コンテンツのうち、該端末装置が既に格納する部分コンテンツに隣接する直前および/または直後の部分コンテンツを特定する手段と、該特定した部分コンテンツを格納する他の端末装置を特定する手段とを含む。該端末装置は、該特定された他の端末装置から該特定された部分コンテンツを受信し、格納する手段を含む。
好ましくは、コンテンツ配信システムは、上記複数の端末装置が接続可能なコンテンツサーバーをさらに備える。該コンテンツサーバーは、コンテンツが複数に分割された前記部分コンテンツを格納する手段と、該部分コンテンツの各々を、それぞれ異なる該端末装置に送信する手段とを含む。該端末装置は、該コンテンツサーバーから送信された部分コンテンツを格納する手段を含む。
本発明の好ましい実施形態によるセンターサーバーは、複数の端末装置が接続可能であり、コンテンツが複数に分割された部分コンテンツのうち、該端末装置が受信すべき部分コンテンツとして、該端末装置が既に格納する部分コンテンツに隣接する直前および/または直後の部分コンテンツを特定する手段と、該端末装置に該特定した部分コンテンツを送信する他の端末装置として、該特定した部分コンテンツを格納する他の端末装置を特定する手段とを含む。
好ましくは、センターサーバーは、上記端末装置の各々から動作状態情報を受信し、管理する手段をさらに含む。上記他の端末装置を特定する手段は、該端末装置の動作状態情報に基づいて、該他の端末装置を特定する。
好ましくは、上記他の端末装置を特定する手段は、該特定した他の端末装置が複数ある場合に、上記端末装置と該他の端末装置との間の伝送効率に基づいて、該他の端末装置をさらに特定する。
好ましくは、センターサーバーは、上記各端末装置毎に、該端末装置が未だ格納していない前側の部分コンテンツの数を示す前側残り数と、該端末装置が未だ格納していない後側の部分コンテンツの数を示す後側残り数との差分値を記憶する手段をさらに備える。上記部分コンテンツを特定する手段は、全端末装置の該差分値の合計に基づいて、直前の部分コンテンツまたは直後の部分コンテンツのいずれかを特定する。
好ましくは、上記部分コンテンツを特定する手段は、上記他の端末装置を特定できない場合に、上記端末装置自身の前記差分値に基づいて、直前の部分コンテンツまたは直後の部分コンテンツのいずれかを特定する。
好ましくは、センターサーバーはコンテンツを格納するコンテンツサーバーに接続可能であり、該コンテンツサーバーが接続された通信回線の帯域と、該コンテンツサーバーがコンテンツを送信する転送レートとに基づいて、該コンテンツを分割する分割数を算出する手段と、該算出した分割数に基づいて、該コンテンツを複数の部分コンテンツに分割するように該コンテンツサーバーに指示する手段と、該部分コンテンツの各々を該コンテンツサーバーから受信するよう、それぞれ異なる端末装置に指示する手段とをさらに備える。
本発明の好ましい実施形態による端末装置は、コンテンツが複数に分割された部分コンテンツのうち、端末装置が既に格納する部分コンテンツに隣接する直前および/または直後の部分コンテンツを特定し、かつ、該特定した部分コンテンツを格納する他の端末装置を特定するセンターサーバーに接続可能であり、該複数の部分コンテンツのうち、該センターサーバによって特定された、自身が既に格納する部分コンテンツに隣接する直前または直後の部分コンテンツを、該センターサーバーによって特定された他の端末装置から受信し、格納する受信手段と、自身が格納する部分コンテンツを他の端末装置に送信する送信手段とを含む。
本発明の好ましい実施形態によるコンテンツ配信方法は、コンテンツが複数に分割された部分コンテンツのうち、端末装置が既に格納する部分コンテンツに隣接する直前および/または直後の部分コンテンツを特定するステップと、該特定された部分コンテンツを格納する他の端末装置を特定するステップと、該端末装置において、該特定された他の端末装置から該特定された部分コンテンツを受信し、格納するステップとを含む。
本発明の別の局面においては、複数の端末装置が接続可能なセンターサーバーの動作方法が提供され得る。この方法は、コンテンツが複数に分割された部分コンテンツのうち、端末装置が受信すべき部分コンテンツとして、該端末装置が既に格納する部分コンテンツに隣接する直前および/または直後の部分コンテンツを特定するステップと、該端末装置に該特定した部分コンテンツを送信する他の端末装置として、該特定した部分コンテンツを格納する他の端末装置を特定するステップとを含む。
本発明のさらに別の局面においては、コンテンツが複数に分割された部分コンテンツのうち、端末装置が既に格納する部分コンテンツに隣接する直前および/または直後の部分コンテンツを特定し、かつ、該特定した部分コンテンツを格納する他の端末装置を特定するセンターサーバーに接続可能な端末装置の動作方法が提供され得る。この方法は、コンテンツが複数に分割された部分コンテンツのうち、該センターサーバーによって特定された、自身が既に格納する部分コンテンツに隣接する直前または直後の部分コンテンツを、該センターサーバーによって特定された他の端末装置から受信し、格納するステップと、自身が格納する部分コンテンツを他の端末装置に送信するステップとを含む。
以下、本発明の作用について説明する。
本発明のコンテンツ配信システムにおいては、端末装置はコンテンツサーバーからコンテンツ全体を受信するのではなく、1つの部分コンテンツのみを受信し、その他の部分コンテンツは他の端末装置から受信する。そして、端末装置は、自身が格納する部分コンテンツを他の端末装置に送信する。そのため、コンテンツサーバーに送信処理が集中することがなく、コンテンツサーバーの負荷増大を防止できる。
さらに、端末装置間においても、コンテンツ全体ではなく1つの部分コンテンツを送受信するので、端末装置が部分コンテンツを送信し終わるまでに必要な時間は、コンテンツ全体を送信し終わるまでの時間に比べてはるかに短い。そのため、端末装置は、より短い時間で部分コンテンツの送信を完了した後、自身が他の端末装置から部分コンテンツを受信したり、さらに他の端末装置に部分コンテンツを送信することができる。さらに、端末装置は、自身が格納する部分コンテンツに隣接する部分コンテンツを他の端末装置から受信する。すなわち、端末装置は、自身が格納する最小アドレスを有する部分コンテンツの直前のアドレスを有する部分コンテンツ、または自身が格納する最大アドレスを有する部分コンテンツの直後のアドレスを有する部分コンテンツのうち特定された方を受信して格納する。次に受信すべき部分コンテンツはその都度特定される。つまり、端末装置は先頭または末尾から順番に部分コンテンツを受信しない。そのため、端末装置ごとに、格納済の部分コンテンツに基づいて、次に受信すべき部分コンテンツが異なる。また、受信すべき部分コンテンツ毎に送信元になる端末装置をその都度特定する。その結果、端末装置ごとに、部分コンテンツの送信元になる端末装置が異なる。従って、1つの端末装置に部分コンテンツの送信処理が集中することがなく、1つの端末装置の負荷が増大することを防止できる。
また、センターサーバーが、端末装置が次に受信すべき部分コンテンツおよび端末装置に当該部分コンテンツを送信する他の端末装置を特定する。そして、センターサーバーは、特定した他の端末装置から特定した部分コンテンツを受信するよう端末装置に指示する。そのため、各端末装置は、複数存在する他の端末装置の中から部分コンテンツを送信する端末装置を特定する必要がない。すなわち、各端末装置は、他の端末装置の動作状態情報および格納する部分コンテンツを管理する必要がない。従って、複数存在する端末装置の処理を簡素化することができるので、システム全体の処理を簡素化できる。
好ましくは、部分コンテンツを格納するコンテンツサーバーが各端末装置にそれぞれ異なる部分コンテンツを送信する。各端末装置はそれぞれ異なる部分コンテンツを格納する。そのため、各端末装置が、自身が既に格納する部分コンテンツに隣接する部分コンテンツを他の端末装置から受信する際に、部分コンテンツの送信元になる端末装置がそれぞれ異なる。従って、1つの端末装置に送信処理が集中することをさらに良好に防止できる。
好ましくは、センターサーバーは端末装置の動作状態情報に基づいて部分コンテンツの送信元になる端末装置を特定する。具体的には、動作状態情報が待機中である端末装置を特定する。従って、1つの端末装置に部分コンテンツの送信処理が集中することを防止できる。
好ましくは、センターサーバーは、端末装置間の伝送効率に基づいて、部分コンテンツの送信元になる端末装置を特定する。従って、端末装置間で部分コンテンツが送受信完了するまでの時間を短縮できる。そのため、全ての端末装置が部分コンテンツの全てを格納し終わるまでの時間を短縮できる。
好ましくは、コンテンツは、コンテンツサーバーが接続された通信回線の帯域と、コンテンツサーバーからの実際の転送レートとに基づいて算出された分割数の部分コンテンツに分割されている。そのため、コンテンツサーバーは部分コンテンツの全てを異なる端末装置に一斉に(同時に)送信することができる。従って、部分コンテンツが端末装置に格納されるまでの時間を短縮することができる。
好ましくは、センターサーバーは、端末装置毎に、前側残り数と後側残り数との差分値とを記憶する。差分値は、前側の部分コンテンツと後側の部分コンテンツとのどちらの残り数が多いかを表している。センターサーバーは、全端末装置の差分値の合計を算出する。差分値の合計がプラスの値の場合、センターサーバーは、全端末装置にわたり前側の部分コンテンツの方が残り数が多いと判断し、端末装置が前側の部分コンテンツを他の端末装置から受信することを特定する。一方、差分値の合計がマイナスの値の場合、センターサーバーは、全端末装置にわたり後側の部分コンテンツの方が残り数が多いと判断し、端末装置が後側の部分コンテンツを他の端末装置から受信することを特定する。従って、全端末装置にわたって、前側または後側の一方に偏って部分コンテンツが格納されることを防止できる。
好ましくは、センターサーバーは、部分コンテンツを受信する端末装置の差分値に基づいて、差分値がプラスの値の場合、前側の部分コンテンツを他の端末装置から受信することを特定し、差分値がマイナスの値の場合、後側の部分コンテンツを他の端末装置から受信することを特定する。従って、部分コンテンツを受信する端末装置に関して、前側または後側の一方に偏って部分コンテンツを受信することを防止できる。
本発明のコンテンツ配信システムは、端末装置が自身が格納する部分コンテンツに隣接する部分コンテンツを他の端末装置から受信するので、コンテンツサーバーおよび端末装置に送信処理が集中することを防止することができる。
以下、本発明の好ましい実施形態について、図面を参照して具体的に説明するが、本発明はこれらの実施形態には限定されない。図1は、本発明の好ましい実施形態によるコンテンツ配信システム1を説明するブロック図である。コンテンツ配信システム1は、サーバーシステム2および複数の端末装置3(端末装置A〜J)を備える。サーバーシステム2は、センターサーバー4およびコンテンツサーバー5を含む。センターサーバー4は、端末装置3の動作状態情報および端末装置3が格納する部分コンテンツ(後述)等を管理し、端末装置3に部分コンテンツの送受信を指示するサーバーである。コンテンツサーバー5は、コンテンツが複数に分割された部分(以下、その各部分を部分コンテンツとする)を格納し、端末装置3に部分コンテンツを送信するサーバーである。センターサーバー4とコンテンツサーバー5とは一体であってもよく、別々であってもよい。すなわち、センターサーバー4とコンテンツサーバー5とを1つの事業者が運営してもよく、異なる事業者が運営してもよい。センターサーバー4およびコンテンツサーバー5は、それぞれ通信回線YおよびXを介してインターネット等のIP通信網6に接続されている。センターサーバー4とコンテンツサーバー5とが一体である場合には、通信回線XおよびYは共通である。端末装置3は、通信回線W(W1〜W10)を介してIP通信網6に接続されている。端末装置3は、コンテンツサーバー5および他の端末装置3から部分コンテンツを受信して格納する。また、端末装置3は、他の端末装置3に部分コンテンツを送信する。コンテンツは、例えば、音楽、映像および/または静止画等を含むが、データ容量の大きい映像に特に好適に採用され得る。
センターサーバー4の構成を図2に示す。センターサーバー4は、コンテンツ管理データベース21、端末情報データベース22、端末伝送効率データベース23、コンテンツ分割数データベース24およびサーバー伝送効率データベース25等の各種データベースと、動作管理インターフェース26と、コンテンツ管理インターフェース27と、センターサーバーアプリケーション28と、全体の動作を制御するマイコン29と、ROM、RAM等のメモリ20とを有する。各種データベースおよびセンターサーバーアプリケーション28は、図示しないハードディスクに格納されている。動作管理インターフェース26は、端末装置3からの動作状態情報を受信するインターフェースである。コンテンツ管理インターフェース27は、端末装置3からコンテンツ情報(例えば、タイトル、コンテンツの長さ等)を受信するインターフェースである。センターサーバーアプリケーション28は、動作管理インターフェース26より受信した動作状態情報を端末情報データベース22に登録し、コンテンツ管理インターフェース27より受信したコンテンツ情報をコンテンツ管理データベース21および端末情報データベース22に登録する。さらに、センターサーバーアプリケーション28は、図5〜図10に示すセンターサーバーの各種動作を実行する。センターサーバー4は、図示しないコンテンツ情報テーブルをコンテンツ管理データベース21に格納している。コンテンツ情報テーブルには、部分コンテンツID(後述)に対応して、コンテンツ情報(例えば、タイトル、コンテンツの長さ等)を管理する。
センターサーバー4は、端末情報データベース22に表1に示す端末情報テーブルを格納している。端末情報テーブルは、各端末装置3に関する情報をセンターサーバー4が管理するためのテーブルである。
端末情報テーブルは、端末名と、部分コンテンツIDと、通信条件と、端末特定情報と、動作状態情報とを含む。端末名は、各端末装置に付与される名称であり、例えばホスト名である(本例では、簡単のため端末装置A〜Jとする)。部分コンテンツIDは、各端末装置が既に格納する部分コンテンツの識別番号を表す。例えば、コンテンツZは8つの部分コンテンツに分割されており、部分コンテンツIDとしてZ1〜Z8が付与されている。端末装置Aは部分コンテンツZ2〜Z4を格納し、端末装置Bは部分コンテンツZ1〜Z3を格納していることを表している。通信条件は、端末装置間、あるいはコンテンツサーバーと端末装置との間の伝送効率を決定するための条件であり、例えば、回線種別(FTTH、ADSL)、プロバイダ、通信事業者、地域情報(例えば、都道府県等)である(本例では、通信事業者A〜Cとする)。端末特定情報は、端末装置が部分コンテンツを送受信する際に使用される特定情報であり、例えば、IPアドレスである。動作状態情報は、各端末装置の動作状態を表し、例えば、通信可能状態、待機中、通信中等を示すステータス情報を含む。センターサーバー4は、端末装置3が通信可能状態であれば部分コンテンツの受信指示が可能であり、待機中であれば部分コンテンツ送信元として特定可能であり、通信中であれば現在端末装置3が通信中であるので部分コンテンツの受信の指示および部分コンテンツ送信元としての特定が不可能であると判断できる。端末情報テーブルの各値は、最初は何も登録されておらず、各端末装置3から動作状態情報が通知されることによって、端末情報テーブルに登録される。
センターサーバー4は、端末伝送効率データベース23に表2に示す端末伝送効率テーブルを格納している。
端末伝送効率テーブルは、端末装置間の伝送効率を表し、ある端末装置に部分コンテンツを送信する端末装置をセンターサーバー4が特定するために使用される。端末伝送効率テーブルは、送信元の通信条件(通信事業者)と、送信先の通信条件(通信事業者)と、送信元から送信先に部分コンテンツを送信する際の伝送効率とを含む。伝送効率は、例えば、送信元から送信先への転送レートの比に基づいて決定され、この値が小さいほど伝送効率が高い。伝送効率が高いほど、部分コンテンツの送信に必要な時間が短い。例えば、通信事業者Aを使用した端末装置から通信事業者Cを使用した端末装置に送信する場合は、通信事業者Aを使用した端末装置から通信事業者Bを使用した端末装置に送信する場合に比べて、送信に必要な時間が長い。
センターサーバー4は、コンテンツ分割数データベース24に表3に示すコンテンツ分割数テーブルを格納している。
コンテンツ分割数テーブルは、センターサーバー4が、コンテンツの分割数を管理するテーブルである。センターサーバー4は、コンテンツ分割数テーブルに基づいて、端末装置3が、部分コンテンツの全て(コンテンツ全体)を格納済であるかを判断する。また、センターサーバー4は、コンテンツ分割数テーブルに基づいて、端末装置3が次に格納すべき部分コンテンツが存在するかを判断する。例えば、表3は、コンテンツZは8つの部分コンテンツに分割されていること(Z1〜Z8で1つのコンテンツZを構成すること)を示す。
センターサーバー4は、サーバー伝送効率データベース25に表4に示すサーバー伝送効率テーブルを格納している。
サーバー伝送効率テーブルは、コンテンツサーバー5から端末装置3への伝送効率を表し、センターサーバー4が、コンテンツサーバー5の部分コンテンツ送信先となる端末装置3を特定するために使用される。サーバー伝送効率テーブルは、送信元(コンテンツサーバー)と、送信先(端末装置)の通信条件(通信事業者)と、送信元から送信先に送信する場合の伝送効率とを含む。伝送効率は、例えば、送信元から送信先への転送レートの比を表しており、この値が小さいほど伝送効率が高い。伝送効率が高いほど、送信に必要な時間が短い。例えば、コンテンツサーバーから通信事業者Aを使用した端末装置に送信する場合は、通信事業者Cを使用した端末装置に送信する場合に比べて、送信に必要な時間が長い。
コンテンツサーバー5の構成を図3に示す。コンテンツサーバー5は、コンテンツストレージデバイス31と、コンテンツインターフェース32と、コンテンツサーバーアプリケーション33と、全体の動作を制御するマイコン34と、ROM、RAM等のメモリ35とを有する。コンテンツストレージデバイス31およびコンテンツサーバーアプリケーション33は、図示しないハードディスクによって構成または格納される。コンテンツストレージデバイス31は、コンテンツを格納し、あるいはコンテンツが後述する所定の分割数で分割された部分コンテンツを格納する。コンテンツインターフェース32は、外部から受信したコンテンツおよびコンテンツ情報をコンテンツストレージデバイス31に格納し、端末装置3に部分コンテンツを送信するためのインターフェースである。コンテンツサーバーアプリケーション33は、センターサーバー4からの指示に基づいて、コンテンツを複数の部分コンテンツに分割し、コンテンツストレージデバイス31に格納する。さらに、コンテンツサーバーアプリケーション33は、各部分コンテンツをそれぞれ異なる端末装置3に送信する。
端末装置3の構成を図4に示す。端末装置3は、ダウンローダ41と、ローカルストレージデバイス42と、再生アプリケーション43と、端末アプリケーション44と、動作通知インターフェース45と、コンテンツ通知インターフェース46と、全体の動作を制御するマイコン47と、ROM、RAM等のメモリ48とを有する。ダウンローダ41は、コンテンツサーバー5または他の端末装置3から部分コンテンツを受信する。ローカルストレージデバイス42は、ハードディスクによって構成され、受信された部分コンテンツおよび部分コンテンツのコンテンツ情報を格納する。再生アプリケーション43は、ローカルストレージデバイス42から所望のコンテンツを読み出し、そのコンテンツに基づいて映像、音楽および/または静止画を再生する。端末アプリケーション44は、自身の動作状態情報を動作通知インターフェース45を介してセンターサーバー4に通知し、自身が格納した部分コンテンツのコンテンツ情報をコンテンツ通知インターフェース46を介してセンターサーバー4に通知する。さらに、端末アプリケーション44は、図6、図7に示す各種処理を実行する。
次に、コンテンツ配信システムの配信方法について図5〜図9のフロチャートを用いて説明する。まず、コンテンツ配信方法の概略について説明する。センターサーバー4は、コンテンツの分割数を算出する。コンテンツサーバー5は、センターサーバー4が算出した分割数に基づいてコンテンツを分割数分の部分コンテンツに分割する(図5)。端末装置3は、自身の動作状態が変化した場合、センターサーバー4に動作状態情報を通知する。センターサーバー4は端末装置3の動作状態情報を受信して管理する。コンテンツサーバー5は、部分コンテンツを端末装置3に送信する(図6)。端末装置3は部分コンテンツを受信して格納し、他の端末装置から自身が格納していない部分コンテンツを受信し、他の端末装置に自身が格納する部分コンテンツを送信する(図7〜図9)。以下、詳細に説明する。
図5は、サーバーシステム2のコンテンツ分割動作を示す。S501において、センターサーバー4は、コンテンツサーバー5が接続されている通信回線X、すなわちコンテンツサーバー5が部分コンテンツを送信する通信回線Xの帯域(回線容量)(bit per second)を設定する。この値は、代表的にはセンターサーバー4の管理者によって入力されるものであるが、センターサーバー4が自動的に設定するようにしても構わない。
S502において、センターサーバー4は、コンテンツサーバー5から端末装置3に部分コンテンツを送信する際の転送レート(bit per second)を設定する。すなわち、コンテンツサーバー5が接続された通信回線Xにおける実際の転送レートが設定される。この値は、代表的にはセンターサーバーの管理者によって入力されるものであるが、センターサーバーが自動的に設定するようにしてもよい。
S503において、センターサーバー4は、S501で設定した通信回線Xの帯域aと、S502で設定した転送レートbとに基づいて、コンテンツの分割数を算出する。具体的には、センターサーバー4は、通信回線Xの帯域aを転送レートbで除算して、分割数(整数)を算出する。すなわち、コンテンツの分割数Pは、P=a/bで表される。例えば、通信回線Xの帯域aが40Mbpsであり、転送レートbが5Mbpsである場合には、コンテンツの分割数Pは8となる。
S504において、センターサーバー4は、コンテンツをS503で算出した分割数で分割した場合に、分割後の部分コンテンツのサイズが、端末装置3が管理できるサイズであるかを判断する。具体的には、センターサーバー4は、コンテンツの全体サイズを確認し、当該コンテンツサイズを分割数で除算し、部分コンテンツ当たりのサイズを算出する。そして、部分コンテンツのサイズが、端末装置3が管理可能なサイズ以上であるかを判断する。端末装置3が管理可能なサイズとは、例えば、32bitのOS(operating system)が管理可能な1ファイル当たりの最大サイズである。部分コンテンツのサイズが、端末装置が管理可能なサイズ以上である場合には、コンテンツの分割数をS503で算出した分割数よりも増加させる。例えば、端末装置が管理可能なサイズが2GBであり、コンテンツの分割数が8であるとする。コンテンツのサイズが12GBである場合には、部分コンテンツのサイズは1.5GBとなり、端末装置の管理可能なサイズ未満であるので、分割数は8に決定される。一方、コンテンツのサイズが32GBの場合には、部分コンテンツのサイズは4GBとなり、端末装置の管理可能なサイズ以上であるので、センターサーバー4は、部分コンテンツのサイズが端末装置の管理可能なサイズ未満になるように、コンテンツの分割数を増加させ、例えば20に決定する。
S505において、センターサーバー4は、S503およびS504で算出した分割数に基づいて、コンテンツを分割するようにコンテンツサーバー5に指示する。具体的には、センターサーバー4はコンテンツサーバー5に、分割するコンテンツのコンテンツIDおよび分割数を含む分割コマンドを送信する。コンテンツサーバー5は、センターサーバー4からの分割コマンドに応答して、指示されたコンテンツをコンテンツストレージデバイス31から読み出し、指示された分割数の部分コンテンツに分割する(代表的には均等のサイズに分割する)。そして、コンテンツサーバー5は、コンテンツストレージデバイス31に部分コンテンツを格納する(S551)。その際に、コンテンツサーバー5は、各部分コンテンツに部分コンテンツID(Z1〜Z8)をアドレスの順番に付与する(S552)。S553において、コンテンツサーバー5は、センターサーバー4にコンテンツを分割完了した旨の動作状態情報を通知する(S553)。センターサーバー4は、動作状態情報通知に応答して、例えば、コンテンツZの分割数8をコンテンツ分割数テーブルに登録する(S506)。
以上のように、コンテンツの分割数は、通信回線Xの帯域とコンテンツサーバー5からの実際の転送レートとに基づいて算出されているので、コンテンツサーバー5は部分コンテンツを端末装置3に一斉に送信することができる。例えば、転送レート5Mbpsで8つの部分コンテンツを一斉送信しても、通信回線Xの帯域40Mbpsを越えないからである。すなわち、コンテンツサーバー5は、通信回線Xの帯域について、最大限の分割数でコンテンツを分割して端末装置3に一斉に送信する。そのため、各端末装置3が部分コンテンツを格納し終わるまでの時間が短くなるので、次の端末装置間での部分コンテンツの送受信処理に移行するまでの時間を短縮できる。なお、S504で分割数を増加させた場合には、S503で算出された分割数の部分コンテンツのみを端末装置に一斉に送信する。
図6は、サーバーシステム2から端末装置3に部分コンテンツを送信する動作を説明するフローチャートである。S601〜S604において、部分コンテンツが送信される端末装置3を特定する。具体的には、S601において、センターサーバー4は、コンテンツサーバー5からの伝送効率が最高の通信条件を有する端末装置3を特定する。すなわち、センターサーバー4はサーバー伝送効率テーブルを参照して、コンテンツサーバー5からの伝送効率が最高の通信条件として通信事業者B(伝送効率:10)を特定する。センターサーバー4は、端末情報テーブルを参照して、通信条件が通信事業者Bである6台の端末装置A,B,D,F,G,Hを特定する。
S602において、図5で算出したコンテンツの分割数がS601で特定した端末装置の数以下であるかを判断する。本例では、コンテンツの分割数が8であり、特定した端末装置の数6よりも大きいので、S603において、センターサーバー4は、コンテンツサーバー5からの伝送効率が次に高い通信条件を有する端末装置3を特定する。具体的には、センターサーバー4は、コンテンツサーバー5からの伝送効率が次に高い通信条件として通信事業者C(伝送効率:50)を特定する。センターサーバー4は、端末情報テーブルを参照して、通信条件が通信事業者Cである3台の端末装置C,E,Jを特定する。S602において、コンテンツの分割数8がS601およびS603で特定した端末装置の総数9以下になるので、S604に進む。
S604において、センターサーバー4は、S601およびS603で特定した9台の端末装置の中から、コンテンツの分割数(8台)の端末装置に絞り込む。具体的には、センターサーバー4は、S603で後から特定した3台の端末装置C,E,Jの中から、端末情報テーブルの最後段に登録されている端末装置Jを除外する。その結果、センターサーバー4は、8台の端末装置A,B,C,D,E,F,G,Hを特定する。
S605において、センターサーバー4は各端末装置A〜Hに部分コンテンツ受信を指示する。具体的には、センターサーバー4は各端末装置A〜Hに、コンテンツサーバー5のIPアドレスおよびそれぞれ異なる部分コンテンツの部分コンテンツIDを含むコンテンツ受信コマンドを送信する。なお、端末装置と部分コンテンツとの組合せは本例では特に限定されない。端末装置は、部分コンテンツ受信コマンドに応答して(S671)、指示された部分コンテンツをコンテンツサーバー5に要求する(S672)。具体的には、端末装置は部分コンテンツの部分コンテンツIDを含むコンテンツ要求コマンドをコンテンツサーバーに送信する。コンテンツサーバー5は、コンテンツ要求コマンドに応答して、端末装置に要求された部分コンテンツを送信する。各端末装置A〜Hからほぼ同時に部分コンテンツ要求を受けるので、コンテンツサーバー5は、各端末装置A〜Hに対して、それぞれ異なる部分コンテンツZ1〜Z8を一斉に(ほぼ同時に)送信する。一斉送信することにより、各端末装置A〜Hが部分コンテンツを受信し格納し終わるまでの時間を短縮できる。一斉送信できるのは、図5のS501〜S503において、通信回線Xの帯域とセンターサーバー5からの転送レートとに基づいてコンテンツの分割数を決定しているからである。端末装置3は、部分コンテンツを受信し、ローカルストレージデバイス42に格納し、センターサーバーに動作状態情報(受信完了、待機中)を通知する(S673)。センターサーバー4は、端末装置3から動作状態情報を受信し、端末情報テーブルを更新する(S606)。具体的には、センターサーバー4は、端末情報テーブルの動作状態情報を待機中に更新し、部分コンテンツID欄に端末装置が格納した部分コンテンツの部分コンテンツIDを登録する。
表5は、端末装置3がコンテンツサーバー5から部分コンテンツを受信および格納した後に、更新された端末情報テーブルを示す。
表5に示すとおり、端末装置A〜Hにはそれぞれ異なる部分コンテンツが格納されている。この後、各端末装置は、自身が未だ格納していない部分コンテンツを他の端末装置から受信して格納するが、好ましくは、既に格納済の部分コンテンツに隣接する(直前および/または直後の)部分コンテンツを格納する。端末装置ごとに他の端末装置から受信する部分コンテンツが異なり、他の端末装置に送信する部分コンテンツが異なる。しかも、コンテンツ全体を送信するのではなく、部分コンテンツごとに送信するので、端末装置間での部分コンテンツの送受信が完了するまでの時間が短い。従って、一部の端末装置のみに部分コンテンツの送信処理が集中することがないので、端末装置の負荷を分散し、軽減することができる。例えば、端末装置Aであれば、部分コンテンツZ2を端末装置Hから受信するか、または部分コンテンツZ4を端末装置Fから受信する。端末装置Dであれば、部分コンテンツZ6を端末装置Cから受信するか、または部分コンテンツZ8を端末装置Gから受信する。
図7は、端末装置間の部分コンテンツ送受信を説明するフローチャートである。S701において、端末装置Aは動作状態情報をセンターサーバー4に通知する。ここでは、端末装置Aは、待機中が一定時間継続した後に、通信可能状態であることをセンターサーバー4に通知する。部分コンテンツ受信指示をセンターサーバー4に促すためである。S731において、センターサーバー4は、端末装置Aから動作状態情報を受信して、端末情報テーブルの動作状態情報欄を更新する。S732において、センターサーバー4は、端末装置Aから受信した動作状態情報が通信可能状態であるかを判断する。動作状態情報が通信可能状態ではなく、例えば通信中である場合には、センターサーバー4は端末装置Aにコンテンツ受信を指示することなく、次の動作状態情報を受信するまで待機する(S732:NO)。通信可能状態でない端末装置にコンテンツ受信を指示しないことにより、端末装置の負荷が増大することを防止することができる。本例では、動作状態情報が通信可能状態であるので(S732:YES)、センターサーバー4は端末装置Aが受信する部分コンテンツおよび端末装置Aに部分コンテンツを送信する端末装置を特定する部分コンテンツ特定処理を実行する(S733)。
部分コンテンツ特定処理(S733)の詳細を図8に示す。S801において、センターサーバー4は、コンテンツ受信を指示する端末装置Aを特定して、端末情報テーブルに登録された端末名Aの欄を照合する。センターサーバー4は、端末装置Aが格納する部分コンテンツがZ2〜Z4であると判断する。S802において、センターサーバー4は、端末装置Aが受信して格納すべき部分コンテンツを特定する。すなわち、端末装置Aが既に格納する部分コンテンツの直前または直後に隣接する部分コンテンツを特定する。
S802の詳細を図9に示す。S901において、センターサーバー4は、端末装置Aが格納する部分コンテンツのうち、最小アドレスを有する(部分コンテンツIDが最小である)部分コンテンツZ2を特定する。すなわち、最前の部分コンテンツZ2を特定する。S902において、センターサーバー4は、部分コンテンツZ2の直前の部分コンテンツIDが付与された部分コンテンツ(部分コンテンツZ2の直前のアドレスを有する部分コンテンツ)Z1が存在するかをコンテンツ分割数テーブルを参照して判断する。すなわち、コンテンツ分割数テーブルを参照すると、コンテンツZの分割数が8であり、部分コンテンツZ1〜Z8が存在するので、センターサーバー4は、S903において、部分コンテンツZ2の直前の部分コンテンツIDが付与された部分コンテンツとして、部分コンテンツZ1を特定する。
同様にS904において、センターサーバー4は、端末装置Aが格納する部分コンテンツのうち、最大アドレスを有する(部分コンテンツIDが最大である)部分コンテンツZ4を特定する。S905において、センターサーバー4は、部分コンテンツZ4の直後の部分コンテンツIDが付与された部分コンテンツ(部分コンテンツZ4の直後のアドレスを有する部分コンテンツ)Z5が存在するかをコンテンツ分割数テーブルを参照して判断する。すなわち、コンテンツZの分割数が8であり、部分コンテンツZ1〜Z8が存在するので、センターサーバー4は、S906において、部分コンテンツZ4の直後の部分コンテンツIDが付与された部分コンテンツとして、部分コンテンツZ5を特定する。
なお、例えば、端末装置Aが部分コンテンツZ3〜Z8を既に格納している場合には、S905において部分コンテンツZ9は存在しないと判断され、直前の部分コンテンツZ2のみが特定される。
図8に戻って、S803において、センターサーバー4は、端末装置AがコンテンツZの部分コンテンツZ1〜Z8を全て格納済であるかを判断する。具体的には、図9において端末装置Aが格納する部分コンテンツに直前または直後に隣接する部分コンテンツを特定できたかを判断し、特定できなければ全ての部分コンテンツを格納済であると判断する。部分コンテンツの全てを格納していれば(S803:YES)、センターサーバー4は、端末情報テーブルの端末装置Aの動作状態情報を待機中に更新して(S808)、動作を終了する。本例では、端末装置Aは部分コンテンツの全てを未だ格納していないので(S803:NO)、S804に進む。
S804において、センターサーバー4は、S802において特定した部分コンテンツZ1および/またはZ5を格納する端末装置を、表1の端末情報テーブルの部分コンテンツIDを参照して特定する。本例では、センターサーバー4は、端末装置Bが部分コンテンツZ1を格納し、端末装置C、EおよびFが部分コンテンツZ5を格納していると判断する。
S805において、センターサーバー4は、S804で特定した端末装置のうち動作状態情報が待機中のものに限定する。すなわち、端末装置Aに部分コンテンツを送信する端末装置として、動作状態情報が待機中以外の端末装置を除外する。これは、待機中でない端末装置が部分コンテンツを送信して端末装置の負荷が増大することを防止するためである。具体的には、センターサーバー4は、端末情報テーブルの動作状態情報を参照して、待機中である端末装置B,EおよびFを特定し、通信中である端末装置Cを除外する。
S806において、センターサーバー4は、S805で動作状態情報が待機中である端末装置を特定できたかを判断する。待機中である端末装置を特定できない場合には(S806:NO)、S808においてセンターサーバー4は、端末装置Aの動作状態情報を待機中に更新して、終了する。すなわち、センターサーバー4は、端末装置Aが次に格納すべき部分コンテンツを格納する端末装置の中で、待機中のものがなければ部分コンテンツの送受信を端末装置に指示しない。本例では、待機中である端末装置を特定できるので(S806:YES)、S807に進む。
S807〜S813では、端末装置Aが受信すべき部分コンテンツZ1またはZ5を格納する端末装置が複数存在する場合に、端末装置Aに部分コンテンツを送信する端末装置を以下の条件に基づいて1つに絞り込む。S807において、部分コンテンツZ1またはZ5を格納する端末装置が複数存在するかを判断する。本例では、複数の端末装置B,E,Fが存在するので、S809に進む。
S809において、センターサーバー4は、端末装置Aに部分コンテンツを送信する際の伝送効率が最高の端末装置を、端末装置Aに部分コンテンツを送信する端末装置として特定する。端末装置Aが部分コンテンツを格納し終わるまでの時間を短縮できるからである。センターサーバー4は、端末伝送効率テーブルおよび端末情報テーブルを参照して、端末装置B,F(通信事業者B)から端末装置A(通信事業者B)に部分コンテンツを送信する際の伝送効率が、端末装置E(通信事業者C)から端末装置Aに部分コンテンツを送信する際の伝送効率よりも高いと判断する。従って、センターサーバー4は、端末装置Aに部分コンテンツを送信する端末装置として、端末装置B,Fを特定する。S810において、S807と同様に端末装置Aに部分コンテンツを送信する端末装置を複数特定しているかを判断する。本例では、複数の端末装置B,Fを特定しているので、S811に進む。
S811において、センターサーバー4は、コンテンツZについて部分コンテンツ格納数が最大の端末装置を、部分コンテンツを送信する端末装置として特定する。部分コンテンツ格納数の多い端末装置は、今後他の端末装置から部分コンテンツを受信し格納する回数が少ない。そのため、部分コンテンツ格納数の多い端末装置から優先的に部分コンテンツを受信する。逆に部分コンテンツ格納数の少ない端末装置は、可能な限り部分コンテンツの送信元にはならず、部分コンテンツの送信先となる。これにより、全ての端末装置が部分コンテンツ全体を格納し終わるまでの時間を短縮することができる。本例では、センターサーバー4は、端末情報テーブルを参照して、端末装置Aに部分コンテンツを送信する端末装置として、端末装置Fを特定する。S812において、複数の端末装置が特定されていないので、最終的に端末装置Fが特定される。
なお、S811で端末装置を特定した結果、複数の端末装置が特定されている場合(S812:YES)、S813において、センターサーバー4は端末情報テーブルの最前段に登録されている(最初に検索される)端末装置を、部分コンテンツを送信する端末装置として特定する。
図7に戻って、S734において、センターサーバー4は、S733で特定した部分コンテンツを受信するように端末装置Aに指示する。具体的には、センターサーバー4は、受信すべき部分コンテンツの部分コンテンツID(Z5)、および当該部分コンテンツを送信する端末装置FのIPアドレスを含む、部分コンテンツ受信コマンドを端末装置Aに送信する。端末装置Aは、部分コンテンツ受信コマンドを受信し(S702)、センターサーバー4に動作状態情報(通信中)を通知する(S703)。センターサーバー4は、動作状態情報を受信し、端末情報テーブルの端末装置Aの動作状態情報を通信可能状態から通信中に更新する(S735)。
S704において、端末装置Aは、端末装置Fに部分コンテンツを要求する。具体的には、端末装置Aは、受信すべき部分コンテンツの部分コンテンツID(Z5)を含む部分コンテンツ要求コマンドを端末装置Fに送信する。端末装置Fは、部分コンテンツ要求コマンドを受信して(S751)、センターサーバー4に動作状態情報(通信中)を通知する(S752)。センターサーバー4は、動作状態情報を受信し、端末情報テーブルの端末装置Fの動作状態情報を待機中から通信中に更新する(S736)。端末情報テーブルの端末装置A,Fの動作状態情報が通信中になるので、端末装置A,Fはセンターサーバー4から他の受信指示が与えられることはない。従って、端末装置A,Fの負荷が増大することを防止できる。
S753において、端末装置Fは端末装置Aに部分コンテンツZ5を送信する。端末装置Aは端末装置Fから部分コンテンツZ5を受信し、ローカルストレージデバイス42に格納する(S705)。端末装置Fは、端末装置Aに部分コンテンツZ5を送信完了すれば、センターサーバー4に動作状態情報(待機中)を通知し(S754)、センターサーバー4は動作状態情報を受信し、端末情報テーブルの端末装置Fの動作状態情報を通信中から待機中に更新する(S737)。同様に、端末装置Aは、端末装置Fから部分コンテンツZ5を受信および格納完了すれば、センターサーバー4に動作状態情報(受信完了,待機中)を通知し(S706)、センターサーバー4は動作状態情報を受信し、端末情報テーブルの端末装置Aの動作状態情報を通信中から待機中に更新する(S737)。端末情報テーブルの端末装置A,Fの動作状態情報が待機中になるので、センターサーバー4は、別の部分コンテンツ特定処理S733において、端末装置A,Fを特定できるようになる。また、センターサーバー4は、端末装置Aからの動作状態情報通知に応答して、端末情報テーブルの部分コンテンツID欄にZ5を追加するよう更新する。そのため、端末装置Aは、次に部分コンテンツZ1またはZ6を受信指示されることになる。さらに、端末装置A,Fは待機中を所定時間継続した後に、再びセンターサーバー4に動作状態情報(通信可能状態)を通知するので、端末装置A,Fは部分コンテンツを他の端末装置からさらに受信し格納することができる。全ての端末装置がこれらの処理を繰り返し、自身が未だ格納していない部分コンテンツを順次格納していくことにより、最終的には全ての端末装置が部分コンテンツの全てを格納することができる。
以上のように、本実施形態では、コンテンツサーバーが部分コンテンツをそれぞれ異なる端末装置に送信した後、端末装置が自身が格納する部分コンテンツの前後の部分コンテンツを他の端末装置から受信し格納する。そのため、コンテンツサーバーおよび1つの端末装置に負荷が集中することを防止できる。さらにセンターサーバーが部分コンテンツを送信する端末装置を端末情報テーブルに基づいて特定しているので、端末装置の負荷をさらに良好に低減できる。
次に、本発明の別の好ましい実施形態について説明するが、前の実施形態と同一部分については説明を省略する。本例では、センターサーバー4は、全端末装置A〜Hが格納している部分コンテンツに関して、前側(先頭側、すなわちZ1側)の部分コンテンツと後側(末尾側、すなわちZ8側)の部分コンテンツとのどちらがより多く未だ取得されていないかを判断して、より多く取得されていない側の部分コンテンツを端末装置Aが取得する部分コンテンツとして特定する。これにより、各端末装置が、システム全体に亘って、前側または後側のどちらか一方に偏って、部分コンテンツを取得しないようにすることができる。
本例の端末情報テーブルは表6に示す通り、表1の構成に加えて、前側残り数、後側残り数、および差分値を含んでいる。これらの値は、端末装置から受信してもよく、または、センターサーバー4が端末情報テーブルの部分コンテンツIDの欄を基にして算出してもよい。
前側残り数は、端末装置が未だ格納していない部分コンテンツのうち、前側(先頭側、部分コンテンツZ1側)の部分コンテンツの個数である。後側残り数は、端末装置が未だ格納していない部分コンテンツのうち、後側(末尾側、部分コンテンツZ8側)の部分コンテンツの個数である。差分値は、未だ格納していない部分コンテンツのうち、前側または後側のどちらが多く残っているかを表すものであり、「差分値」=「前側残り数」−「後側残り数」で表される。差分値がプラスの値であるとき、未だ格納していない部分コンテンツのうち、前側の部分コンテンツの残り数が後側の部分コンテンツの残り数より多いことを表す。一方、差分値がマイナスの値であるとき、未だ格納していない部分コンテンツのうち、後側の部分コンテンツの残り数が前側の部分コンテンツの残り数より多いことを表す。例えば、端末装置Aは、部分コンテンツZ2〜Z4を有しているので、前側残り数は1、後側残り数は4、差分値は−3となる。
次に、本例の動作を図10のフローチャートを参照して説明する。図8と同一処理には同一符号を付し、説明を省略する。図10では、S1001〜S1006の処理が追加されている。S807において、センターサーバー4は、部分コンテンツZ1またはZ5を格納する端末装置として、複数の端末装置B,E,Fを特定するので、S1001に進む。センターサーバー4は、全端末装置A〜Hの差分値の合計を算出して、当該値に基づいて、端末装置Aに部分コンテンツを送信する端末装置を絞り込む(S1001)。具体的には、全端末装置の差分値の合計がプラスの値であれば、センターサーバー4は、端末装置A〜H全体にわたり、前側の部分コンテンツの残り数が後側の部分コンテンツの残り数より多いと判断する。その結果、センターサーバー4は、端末装置Aが前側の部分コンテンツであるZ1を格納すべきと判断し、かつ、部分コンテンツZ1を格納する端末装置を端末装置B、E、Fの中から特定する。一方、差分値の合計がマイナスの値であれば、センターサーバー4は、端末装置A〜H全体にわたり、後側の部分コンテンツの残りが前側の部分コンテンツの残り数より多いと判断する。その結果、センターサーバー4は、端末装置Aが後側の部分コンテンツであるZ5を格納すべきと判断し、かつ、部分コンテンツZ5を格納する端末装置を端末装置B、E、Fの中から特定する。本例では、差分値の合計が4であるので、前側の部分コンテンツZ1を格納する端末装置Bを特定する。S1002において、センターサーバー4は端末装置を特定できたと判断し(S1002:YES)、複数の端末装置を特定していないと判断するので(S1003:NO)、端末装置Bから端末装置Aに部分コンテンツZ1を送信することを特定する。なお、センターサーバー4は、複数の端末装置を特定している場合(S1003:YES)、S809に進み、端末装置をさらに絞り込む。
一方、例えば、部分コンテンツZ1を格納する端末装置が存在せず、S1002で端末装置を特定できなかったと判断されると、センターサーバー4は、S801で特定した端末装置A自身の差分値に基づいて、端末装置Aに部分コンテンツを送信する端末装置を特定する(S1004)。具体的には、端末装置Aの差分値がプラスの値であれば、センターサーバー4は、端末装置Aについて、前側の部分コンテンツの残り数が後側の部分コンテンツの残り数より多いと判断する。その結果、センターサーバー4は、端末装置Aが前側の部分コンテンツであるZ1を格納すべきと判断し、かつ、部分コンテンツZ1を格納する端末装置を端末装置B、E、Fの中から特定する。一方、端末装置Aの差分値がマイナスの値であれば、センターサーバー4は、端末装置Aについて、後側の部分コンテンツの残り数が前側の部分コンテンツの残り数より多いと判断する。その結果、センターサーバー4は、端末装置Aが後側の部分コンテンツであるZ5を格納すべきと判断し、かつ、部分コンテンツZ5を格納する端末装置を端末装置B、E、Fの中から特定する。本例では、差分値が−3であるので、後側の部分コンテンツZ5を格納する端末装置E,Fを特定する。センターサーバー4は、端末装置を特定できたと判断し(S1005:YES)、複数の端末装置を特定したと判断する(S1006:YES)ので、S809に進み、端末装置をさらに絞り込む。なお、S1006で1つの端末装置しか特定していないと判断されると、センターサーバー4は、その端末装置を端末装置Aに部分コンテンツを送信する端末装置として特定する。さらに、S1004での処理の結果、端末装置を特定できなかったと判断されると(S1005:NO)、S808に進み、端末装置Aの動作状態を待機中に更新し、処理を終了する。
以上のように、本実施形態では、まず、全端末装置にわたり、前側の部分コンテンツまたは後側の部分コンテンツのうち、どちらの残り数が多いかを判断して、残り数が多い側の部分コンテンツを優先的に端末装置に格納させるようにしている。そのため、全端末装置にわたり、前側または後側のどちらか一方に偏って部分コンテンツが格納されることを防止できる。例えば、全端末装置にわたり、後側の部分コンテンツばかりが偏って格納されている場合、各端末装置が前側の部分コンテンツを取得する時期が重なってしまい、かつ、前側の部分コンテンツを格納する端末装置が少ないので、前側の部分コンテンツを格納する端末装置の送信処理が集中するという問題があるが、本例ではそのような問題を解決できる。次に、全端末装置の差分値に基づいて端末装置を特定できない場合、端末装置A自身について、前側または後側の部分コンテンツのうち、残り数が多い側の部分コンテンツを優先的に格納させるようにしている。従って、端末装置Aが前側または後側の一方に偏って部分コンテンツを格納することを防止できる。全ての端末装置についてこの処理を実行することによって、全端末装置にわたり、前側または後側のいずれか一方に偏って部分コンテンツが格納されることを防止できる。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態には限定されない。例えば、S811において、部分コンテンツ格納数が最小である端末装置を特定してもよい。部分コンテンツ格納数の少ない端末装置は、格納する部分コンテンツの種類が少ないので、他の端末装置にコンテンツを送信する可能性が低い。逆に部分コンテンツ格納数の多い端末装置は、他の端末装置に部分コンテンツを送信する機会が多い。従って、部分コンテンツ格納数の多い端末装置は、他の端末装置が部分コンテンツを取得可能であるように、待機状態としておく。これにより、できるだけ多くの端末装置が他の端末装置から同時にコンテンツを受信できるので、全て端末装置にコンテンツ全体が格納されるまでの時間を短縮することができる。さらに、本例では、センターサーバーが端末装置Aに部分コンテンツを受信するように指示しているが、端末装置Fに部分コンテンツを送信するように指示して、端末装置Fが強制的に部分コンテンツを端末装置Aに送信してもよい。なお、上述した動作をコンピュータに実行させるためのプログラムが提供され、これらプログラムが記録された記録媒体が提供され得る。