(57)【要約】【解決課題】本発明は，サーバクライアントシステムにおいて，各クライアント端末にコンテンツデータを配信する際に，ボトルネックが発生する不具合を解消しつつ，データ伝送の高速化を実現することを解決課題とする。【解決手段】本発明は，コンテンツデータを複数のデータに分割し，クライアント端末からあるコンテンツデータのダウロード要求があった際には，そのクライアント端末に対して，当該コンテンツデータを保有するサーバからだけでなく，当該コンテンツデータの分割データがキャッシュ領域に残存している他のクライアント端末からＰ２Ｐ通信網を介して当該コンテンツデータの分割データを転送し，クライアント端末内にてコンテンツデータを再構築させることにより，サーバにトラフィックが集中するボトルネックを解消しつつ，マルチパスによってデータ転送速度の高速化を実現することができるという知見に基づくものである。【選択図】図３
2013069329.tif 000002
【特許請求の範囲】
【請求項１】
一又は複数のサーバ装置により構成されるサーバ手段と，複数のクライアント端末とが，通信ネットワークを介してデータの授受ができるように接続されたデータ送受信システムであって，
前記サーバ手段は，
任意のコンテンツデータを記憶するコンテンツ記憶部と，
前記コンテンツ記憶部に記憶されているコンテンツデータを分割して分割データを生成するデータ分割部と，
前記データ分割部により生成された分割データを前記クライアント端末に対して送信する送信部と，を有し，
前記複数のクライアント端末のそれぞれは，
前記サーバ手段に対して，前記コンテンツデータのダウンロード要求を送信するサーバ通信部と，
前記サーバ通信部を介したダウンロード要求に応じて前記サーバ手段から送信された前記コンテンツデータの前記分割データをダウンロードする受信部と，
前記受信部によってダウンロードした前記分割データを一時的に記憶するキャッシュ領域と，を有し，
前記サーバ手段は，さらに，
各クライアント端末の前記キャッシュ領域に記憶されている前記分割データに関するメタデータを記憶するメタデータデータベースを備えており，
前記複数のクライアント端末のそれぞれは，さらに，
前記コンテンツデータのダウンロード要求をサーバ手段に送信した際，前記メタデータデータベースを参照し，前記メタデータに基づいて，当該コンテンツデータの分割データを記憶している他のクライアント端末に関する情報を取得するメタデータ取得部と，
前記メタデータ取得部によって取得した前記他のクライアント端末に関する情報に基づいて，当該他のクライアント端末の前記キャッシュ領域から，当該コンテンツデータの分割データをダウンロードするＰ２Ｐ通信部と，
前記受信部によってダウンロードした分割データ及び前記Ｐ２Ｐ通信部によってダウンロードした分割データの両方又はいずれか一方を統合して，前記コンテンツデータを再構築する再構築部と，
前記再構築部により再構築した前記コンテンツデータを記憶するデータ記憶部を備える
データ送受信システム。
【請求項２】
前記サーバ手段は，複数のサーバ装置を含み，
前記複数のサーバ装置のそれぞれは，
前記コンテンツ記憶部を冗長化したストレージと，
前記ストレージに記憶されている前記コンテンツデータを分割して分割データを生成するデータ分割部と，
前記クライアント端末からのダウンロード要求に応じて，前記データ分割部により生成された分割データを前記クライアント端末に対して送信する送信部を有する
請求項１に記載のデータ送受信システム。
【請求項３】
前記サーバ手段は，複数のサーバ装置を含み，
前記複数のサーバ装置は，
前記データ分割部により生成された分割データを記憶するストレージと，
前記クライアント端末からのダウンロード要求に応じて，前記分割データを記憶するストレージにより記憶されている当該分割データを前記クライアント端末に対して送信する送信部を有する
請求項１に記載のデータ送受信システム。
【請求項４】
前記クライアント端末のそれぞれは，
当該クライアント端末によって編集した編集後のコンテンツデータを前記サーバ手段の前記コンテンツ記憶部にアップロードするアップロード部を，さらに備え
前記サーバ手段は，
各クライアント端末からアップロードされた編集後のコンテンツデータに関する情報を記憶するリポジトリストレージと，
前記リポジトリストレージに記憶された前記編集後のコンテンツデータに関する情報を基に，前記コンテンツ記憶部に記憶されているコンテンツデータのビルド処理を行うビルド処理部と，をさらに備え，
前記クライアント端末のそれぞれは，
前記サーバ手段の前記ビルド処理部によってビルド処理が施されたビルド後のコンテンツデータと，前記編集後のコンテンツデータを比較し，前記ビルド後のコンテンツデータのバージョンが，前記編集後のコンテンツデータのバーションよりも新しい場合には，前記サーバ通信部を介して，前記サーバ手段に対し，前記編集後のコンテンツデータのダウンロード要求を送信する
請求項１に記載のデータ送受信システム。
【請求項５】
前記クライアント端末のそれぞれは，
当該クライアント端末によって編集した編集後のコンテンツデータを前記サーバ手段の前記コンテンツ記憶部にアップロードするアップロード部を，さらに備え
前記サーバ手段は，
各クライアント端末からアップロードされた編集後のコンテンツデータに関する情報を記憶するリポジトリストレージと，
前記リポジトリストレージに記憶された前記編集後のコンテンツデータに関する情報を基に，各コンテンツデータのバージョン管理を行う構成管理システムを，さらに備え，
前記構成管理システムは，
前記サーバ手段が，クライアント端末から，コンテンツデータのダウンロード要求を受信した際，前記サーバ手段の前記コンテンツ記憶部に記憶されている当該コンテンツデータのバージョンと，当該クライアント端末のデータ記憶部に記憶されている当該コンテンツデータのバージョンを比較し，その差分データを抽出する差分抽出部を有し，
前記送信部を介して，前記差分抽出部において抽出した差分データを，前記クライアント端末に対して送信し，
前記クライアント端末の再構築部は，
前記送信部から送信された前記差分データを，前記データ記憶部に記憶されている前記コンテンツデータに適用し，コンテンツデータを再構築する
請求項１に記載のデータ送受信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，データ送受信システムに関する。具体的に説明すると，本発明のデータ送受信システムは，複数のサーバ装置で構成されたサーバ手段と複数のクライアント端末が通信ネットワークを介して接続されており，相互にデータの送受信が可能なシステムに関するものである。
【背景技術】
【０００２】
従来から，コンテンツデータをサーバにおいて管理し，クライアント端末が，必要に応じて当該コンテンツデータをサーバからダウンロードするサーバクライアントシステムが知られている。このようなサーバクライアントシステムは，例えば，インターネット・プロトコル技術を利用してコンピュータが相互接続されたインターネットや，それを社内などの組織内ネットワークに使用したイントラネットにおいて構築されている。【０００３】
例えば，ソフトウェアの開発現場では，ソフトウェアの構成管理や開発中ファイルの更新管理をサーバ装置において一元管理しながら，サーバに接続された各クライアント端末が，適宜必要なときに，サーバ装置からソースファイルやコンテンツをダウンロードし，ダウンロードしたコンテンツの様々な編集作業を行う。このように，サーバクライアントシステムを利用することで，サーバ内のコンテンツデータを常に最新に維持しながら，それを各クライアント端末で共有することができるというメリットがある。【０００４】
また，従来から，コンピュータなどの情報処理装置を相互に接続し，相手の装置にデータを送信する通信技術として，ピアツーピア（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ；  以下，Ｐ２Ｐという）の通信技術が知られている。Ｐ２Ｐ型の通信では各パーソナルコンピュータが対等なものとなり，専用のサーバが不要であるため，比較的に容易に通信網を構成することができる。Ｐ２Ｐ型の通信は，例えば４台〜６台程度のパーソナルコンピュータを用いる小規模ＬＡＮの構築に適しており，直接相手に対して送信を行うために通信量（トラフィック）を小さくすることができるというメリットがある。【０００５】
さらに，例えば，特許文献１には，サーバクライアントシステムにおいて，サーバを経由するトラフィックを軽減して，コンテンツデータを処理装置間で効率よく伝送し，各情報処理装置の利用者間における円滑且つ多様なコミュニケーションを実現するための通信技術が開示されている。この特許文献１に開示された技術によれば，クライアント・サーバ型の接続からＰ２Ｐ型の接続へ遷移させることによって，サーバに対するトラフィックの一局集中を避けることができ，システム全体としてのトラフィックの最適化を図ることができるとされている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−２０３０２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した通り，従来のクライアントサーバシステムは，サーバによってコンテンツデータを一元管理し，それを適宜各クライアント端末にダウンロードして作業を行うものであるが，サーバからクライアント端末へのデータ転送の待ち時間は，コンテンツデータが大量であるほど，データを扱う処理の作業効率を低下させることとなる。特に，テラバイトクラスの動画等を含むデジタルアセットを日常的に扱うデジタルコンテンツ業界では，クライアント端末からのダウンロード要求がサーバに集中すると，データ転送に際してボトルネックが発生し，作業効率の低下を招く恐れがあった。【０００８】
また，例えば，映像制作業界やデジタルエンターテイメント業界では，一般的に，クリエイタの出社時間帯に，複数のクライアント端末からサーバに対して一斉にコンテンツデータの要求が行われる。このため，この出社時間帯においては，サーバにアクセスが集中し，サーバから各クライアント端末に対してコンテンツデータを送信するデータ転送速度が著しく低下する恐れがある。また，サーバにおいては，各種アセットやソースコードを日常的にビルドし生成する必要があるため，各クライアント端末においてコンテンツデータのレンダリング作業等が終わり，クリエイタの退社時間帯になると，複数のクライアント端末からサーバに対して一斉に編集後のコンテンツデータがアップロードされる。このため，退社時間帯においても，サーバにアクセスが集中することとなり，各クライアント端末からサーバに対してコンテンツデータを送信するデータ転送速度が著しく低下する可能性がある。このように，従来のクライアントサーバシステムにおいては，イントラネットや外部サーバにおけるトラフィックが増加し，ボトルネックが日常的に発生するというという問題があった。【０００９】
また，従来のクライアントサーバシステムにおいては，各クライアント端末間のデータ送受信の場合にも，サーバを介してデータを送る必要がある。このため，各クライアント端末間でデータが大量となる動画を転送したり，接続するクライアントの数が増加した場合において，サーバを経由するデータトラフィックが増大化して，データ送信の低速化やボトルネックが発生するという不具合があった。【００１０】
また，特許文献１に記載の通信技術は，各クライアント端末がサーバにアクセスし，サーバクライアント型通信においてコンテンツデータを取得するか，Ｐ２Ｐ通信が可能なクライアント端末を特定して，その特定したクライアント端末との間のＰ２Ｐ型通信において，コンテンツデータを取得するものである。しかしながら，特許文献１の技術では，クライアント端末とサーバ，又はクライアント端末とクライアント端末が，一対一の関係でコンテンツデータの送受信を行うものであるため，結局，一つの情報処理装置に対するトラフィックが増大した場合に，データ送信の低速化やボトルネックが発生する可能性があるという問題を有するものであった。すなわち，特許文献１に記載の技術は，クライアント端末同士が通信を行う場合に，サーバクライアント型通信からＰ２Ｐ型通信に遷移させることにより，サーバクライアント型通信においてサーバにトラフィックが集中することを回避したものに過ぎず，サーバからクライアント端末へ，又はクライアント端末からクライアント端末へデータを送信する際の通信障害を解消することはできなかった。【００１１】
このため，現在では，サーバクライアントシステムにおいて，各クライアント端末にコンテンツデータを配信する際に，サーバにトラフィックが集中し，ボトルネックが発生する不具合を解消しつつ，コンテンツデータを要求しているクライアント端末に対し，マルチパスでデータを配信することにより，データ伝送の高速化を実現することのできるデータ送受信システムが求められている。
【課題を解決するための手段】
【００１２】
そこで，本発明の発明者らは，上記の従来発明の問題点を解決する手段について鋭意検討した結果，コンテンツデータを複数のデータに分割し，クライアント端末からあるコンテンツデータのダウロード要求があった際には，そのクライアント端末に対して，当該コンテンツデータを保有するサーバからだけでなく，当該コンテンツデータの分割データがキャッシュ領域に残存している他のクライアント端末から，Ｐ２Ｐ通信網を介して当該コンテンツデータの分割データを転送し，クライアント端末内にてコンテンツデータを再構築させることにより，サーバにトラフィックが集中するボトルネックを解消しつつ，マルチパスによってデータ転送速度の高速化を実現することができるという知見を得た。そして，本発明者らは，上記知見に基づけば，従来技術の課題を解決できることに想到し，本発明を完成させた。
具体的に本発明は，以下の構成を有する。【００１３】
本発明は，データ送受信システムに関する。
本発明のデータ送受信システムは，一又は複数のサーバ装置により構成されるサーバ手段と，複数のクライアント端末とを有している。サーバ手段とクライアント端末，及び複数のクライアント端末同士は，通信ネットワークを介してデータの授受ができるように接続されている。
サーバ手段は，コンテンツ記憶部と，データ分割部と，送信部を有する。
コンテンツ記憶部は，一又は複数の任意のコンテンツデータを記憶している。コンテンツデータの例は，画像データ，動画データ，音声データ，及び文字データであるが，これらのものに限定されず，クライアント端末において記憶，演算される種々のデータを含む。
データ分割部は，コンテンツ記憶部に記憶されているコンテンツデータを分割して分割データを生成するための機能を有する。
サーバの送信部は，データ分割部により生成された分割データを，クライアント端末に対して送信するための機能を有する。
一方，複数のクライアント端末のそれぞれは，サーバ通信部と，受信部と，キャッシュ領域を有する。
サーバ通信部は，サーバ手段に対して，コンテンツデータのダウンロード要求を送信するための機能を有する。
受信部は，サーバ通信部を介したダウンロード要求に応じてサーバ手段から送信されたコンテンツデータの分割データをダウンロードするための機能を有する。
キャッシュ領域は，受信部によってダウンロードした分割データを一時的に記憶するための機能を有する。
また，サーバ手段は，さらに，メタデータデータベースを備えている。このメタデータデータベースは，各クライアント端末のキャッシュ領域に記憶されている分割データに関するメタデータを記憶しており，少なくとも，分割データの種類に応じて，どの分割データが，どのクライアント端末のキャッシュ領域に記憶されているかについてのメタデータが記憶されている。
また，複数のクライアント端末のそれぞれは，さらに，メタデータ取得部と，Ｐ２Ｐ通信部，再構築部と，データ記憶部を有する。
メタデータ取得部は，コンテンツデータのダウンロード要求をサーバ手段に送信した際，メタデータデータベースを参照し，分割データに関するメタデータに基づいて，当該コンテンツデータの分割データを記憶している他のクライアント端末に関する情報を取得する機能を有する。
Ｐ２Ｐ通信部は，メタデータ取得部によって取得した他のクライアント端末に関する情報に基づいて，当該他のクライアント端末のキャッシュ領域から，コンテンツデータの分割データをダウンロードするための機能を有する。
再構築部は，受信部によってダウンロードした分割データ及びＰ２Ｐ通信部によってダウンロードした分割データの両方又はいずれか一方を統合して，コンテンツデータを再構築するための機能を有する。
データ記憶部は，再構築部により再構築したコンテンツデータを記憶する。【００１４】
上記のように，本発明のデータ送受信システムでは，あるクライアント端末によるコンテンツデータのダウンロード要求に応じて，コンテンツデータを保有するサーバ手段からだけでなく，当該コンテンツデータがキャッシュ領域に記憶されている他のクライアント端末からも，ダウンロード要求を行ったクライアント端末に対して，コンテンデータの一部又は全部を転送することができる。このため，複数のクライアント端末に対するデータ転送が，特定のサーバ装置に一局集中する事態を回避することができ，データ転送に際して生じるボトルネックの問題を解消することができる。また，あるクライアント端末が，サーバ手段に格納されているデータを要求するとき，そのクライアント端末の近傍の他のクライアント端末に要求データの分割データがある場合には，これを活用することでデータの全量をサーバ手段から取得せずに済むため，サーバ手段の負荷の低減と，サーバ手段との通信経路上のボトルネックの軽減が達成される。さらに，本発明のデータ送受信システムでは，あるクライアント端末に対し，コンテンツデータを，サーバ手段及び他のクライアント端末から分割データとして転送することが可能である。このように，本発明は，コンテンツデータの要求を行ったクライアント端末に対して，マルチパスで，コンテンツデータをダウンロードさせることができ，データ転送速度の高速化を実現できる。【００１５】
本発明において，サーバ手段は，複数のサーバ装置により構成されるものとし，複数のサーバ装置のそれぞれは，コンテンツ記憶部を冗長化したストレージを有することとしてもよい。この場合，サーバ手段のデータ分割部は，ストレージに記憶されているコンテンツデータを分割して分割データを生成し，サーバ手段の送信部は，クライアント端末からのダウンロード要求に応じて，データ分割部により生成された分割データをクライアント端末に対して送信する。【００１６】
このように，コンテンツデータを記憶しているコンテンツ記憶部を冗長化し，各サーバ装置のストレージに記憶させることにより，複数のサーバ装置から，コンテンツデータを要求するクライアント端末に対して，コンテンツデータの分割データを転送することができる。このように，複数のサーバ装置のストレージに冗長化され保存されているデータが，マルチパスで，クライアント端末に送信されるため，１コネクションあたりの通信速度が原因で通信完了までの速度が遅くなる問題を解決することができる。さらに，複数のストレージに冗長化され保存されている分割データ（たとえば同一ファイルの異なるブロック）が並列処理，かつ，マルチパスでクライアント端末に送信されるため，データ転送の更なる高速化を実現できる。【００１７】
本発明において，サーバ手段は，複数のサーバ装置により構成されるものとし，複数のサーバ装置のそれぞれは，データ分割部により生成された分割データを記憶するストレージを有するものであることが好ましい。この場合，サーバ手段の送信部は，クライアント端末からのダウンロード要求に応じて，分割データを記憶するストレージにより記憶されている当該分割データを，前記クライアント端末に対して送信する。【００１８】
このように，複数のサーバ装置のそれぞれが，コンテンデータの分割データを記憶するストレージを有することによっても，クライアント端末に対して，コンテンツデータをマルチパスで送信することができる。このため，サーバ手段とクライアント端末の間において通信速度が低下することを防止することができ，データ転送の更なる高速化を実現できる。また，各サーバ装置のストレージには，コンテンツデータの全てではなく，その一部（分割データ）を記憶させればよいため，ストレージの記憶容量を節約することもできる。【００１９】
本発明においては，コンテンツデータの配信処理を自動化することとしてもよい。
すなわち，まず，クライアント端末のそれぞれは，当該クライアント端末によって編集した編集後のコンテンツデータをサーバ手段のコンテンツ記憶部にアップロードするアップロード部をさらに備える。
また，サーバ手段は，各クライアント端末からアップロードされた編集後のコンテンツデータに関する情報を記憶するリポジトリストレージと，リポジトリストレージに記憶された編集後のコンテンツデータに関する情報を基に，コンテンツ記憶部に記憶されているコンテンツデータのビルド処理を行うビルド処理部をさらに備える。ビルド処理は，ソースコードファイルを独立したソフトウェア生成物に変換する処理である。
そして，クライアント端末のそれぞれは，サーバ手段のビルド処理部によってビルド処理が施されたビルド後のコンテンツデータと，編集後のコンテンツデータを比較し，ビルド後のコンテンツデータのバージョンが，編集後のコンテンツデータのバーションよりも新しい場合には，サーバ通信部を介して，サーバ手段に対し，編集後のコンテンツデータのダウンロード要求を送信する。【００２０】
上記構成を有することにより，クライアント端末においてデータの編集作業が完了し，サーバ手段においてビルド処理が行われた後，クライアント端末は，最新のバージョンのデータをサーバ手段からダウンロードすることができる。例えば，コンテンツデータの編集作業（レンダリング等）を行うクリエイタの退社後や休日においては，サーバ手段へのアクセスが緩和される。このため，退社後の時間帯や休日のうちに，サーバ手段から，各クライアント端末に対して最新バージョンのコンテンツデータを配信しておけば，クリエイタの出社時間帯にサーバ手段へアクセスが集中する問題を解消できる。また，例えば，サーバ手段において，クリエイタの退社後の時間帯にビルド処理を行い，その生成物と各クライアント端末内のコンテンツデータを比較し，クライアント端末において，コンテンツデータが最新でないと判断した場合に，最新のコンテンツデータのダウンロード要求を送信させる。このため，例えばサーバ手段のＣＰＵ使用量が低下する時間帯に，サーバ手段から，各クライアント端末に対して最新バージョンのコンテンツデータを配信しておくことが可能になる。【００２１】
また，サーバ手段は，リポジトリストレージに記憶された編集後のコンテンツデータに関する情報を基に，各コンテンツデータのバージョン管理を行う構成管理システムを，さらに備えるものであってもよい。構成管理システムは，サーバ手段が，クライアント端末から，コンテンツデータのダウンロード要求を受信した際，サーバ手段の前記コンテンツ記憶部に記憶されている当該コンテンツデータのバージョンと，当該クライアント端末のデータ記憶部に記憶されている当該コンテンツデータのバージョンを比較し，その差分データを抽出する差分抽出部を有する。そして，構成管理システムは，送信部を介して，差分抽出部において抽出した差分データを，クライアント端末に対して送信する。この場合，クライアント端末の再構築部は，サーバ手段の送信部から送信された差分データを，データ記憶部に記憶されているコンテンツデータに適用し（パッチ当てを行い），コンテンツデータを再構築する。【００２２】
このように，サーバ手段の構成管理システムにおいて，サーバ手段に格納されている最新のバージョンのデータと，各クライアント端末に記憶されているコンテンツデータを比較し，バイナリ単位での変更箇所を差分データとして抽出することにより，サーバ手段と各クライアント端末間の通信が差分データ分のみで完了するため，データの転送量を減らし，転送の際に生じるボトルネックを解消することができる。
【発明の効果】
【００２３】
以上の通り，本発明のデータ転送システムによれば，各クライアント端末にコンテンツデータを配信する際に，サーバにトラフィックが集中し，ボトルネックが発生する不具合を解消しつつ，コンテンツデータを要求しているクライアント端末に対し，マルチパスでデータを配信することにより，データ伝送の高速化を実現することができる。
【図面の簡単な説明】
【００２４】
【図１】図１は，本発明のデータ送受信システムの全体構成を示した図である。
【図２】図２は，本発明のデータ送受信システムの構成の例を示すブロック図である。
【図３】図３は，本発明の実施形態におけるデータの流れを模式的に示した図である。
【図４】図４は，本発明の実施形態おける処理を示すフロー図である。
【図５】図５は，本発明の他の実施形態におけるデータの流れを模式的に示した図である。
【図６】図６は，本発明の他の実施形態におけるデータの流れを模式的に示した図である。
【図７】図７は，本発明の他の実施形態おける処理を示すフロー図である。
【図８】図８は，本発明の他の実施形態おける処理を示すフロー図である。
【発明を実施するための形態】
【００２５】
以下，図面を用いて本発明を実施するための形態について説明する。本発明は，以下に説明する形態に限定されるものではなく，以下の形態から当業者が自明な範囲で適宜修正したものを含む。
【００２６】
（１．データ送受信システム）
図１は，本発明に係るデータ送受信システムのシステム構成を示す概略図である。図１に示されるように，データ送受信システム１は，複数のサーバ装置１１によって構成されたサーバ手段１０，及び複数のクライアント端末２０が，通信ネットワークを介して相互に接続されている。すなわち，各サーバ装置１１同士，サーバ装置１１とクライアント端末２０，及び各クライアント端末２０同士は，通信ネットワークを利用して，互いにデータの送受信を行うことができる。本発明のデータ送受信システムは，インターネットを介したネットワーク網で構築されるものであってもよいし，例えば会社内のような限定された範囲に構築されたイントラネットワーク網で構築されるものであってもよい。データ送受信システム１において，サーバ手段１０及び複数のクライアント端末２０間における通信は，有線によるものだけでなく，公知の無線通信手段によるものであってもよい。
【００２７】
図２は，サーバ手段１０と各クライアント端末２０を構成する要素を概念的に示したものである。図２に示された各要素は，サーバ手段１０及びクライアント端末２０が保有する機能に従って分類したものである。基本的に，サーバ手段１０を構成するサーバ装置１１や，各クライアント端末２０は，入出力装置，制御装置，演算装置，及び記憶装置等のハードウェアを有し，これらのハードウェアがバスなどによって接続されている。すなわち，入力装置から所定の情報が入力されると，制御装置は，記憶装置のメインメモリに格納されている制御プログラムを読み出す。また，制御装置は，制御プログラムの指令に従って，適宜記憶部に記憶されたデータを読み出し，演算装置にて所定の演算を行う。そして，演算結果を記憶装置に一時的に記憶して，出力部から情報を出力することができるようになっている。以下に説明するサーバ手段１０と各クライアント端末２０に含まれる要素は，これらの入出力装置，制御装置，演算装置，及び記憶装置等を利用して，コンピュータに所定の機能を実行させるための要素である。
【００２８】
以下では，図２を参照しながら，データ送受信システム１に含まれるサーバ手段１０，及びクライント端末２０の各部構成について説明する。
【００２９】
（１−１．サーバ手段）
サーバ手段１０は，コンテンツデータを各クライアント端末２０に対して配信するための機能と，データ送受信システムの構成やコンテンツデータを管理する機能を有する。図２に示された実施形態において，サーバ手段１０は，複数のサーバ装置１１により構成されている。サーバ手段１０は，コンテンツ記憶部１１０，データ分割部１２０，送信部１３０，メタデータデータベース１４０，リポジトリストレージ１５０，ビルド処理部１６０，構成管理システム１７０，及びクライアント通信部１８０を含むものであることが好ましく，その他にも適宜有用な機能を付加することも可能である。サーバ手段１０を構成するこれらの要素は，単一のサーバ装置１１に集約されたものであってもよいし，複数のサーバ装置１１に分散して機能するものであってもよい。
【００３０】
サーバ手段１０を構成するサーバ装置１１としては，クライアント端末２０からの要求に応じて，所定の処理や情報を提供することができる公知のものを採用することが可能である。例えばサーバ装置１１としては，例えば，ＵＮＩＸサーバ（登録商標），ミッドレンジサーバ，又はメインフレームサーバ等を必要に応じて利用することができる。
【００３１】
コンテンツ記憶部１１０は，任意のコンテンツデータを記憶している。サーバ手段１０が複数のサーバ装置１１により構成される場合，コンテンツ記憶部１１０の実体は，ネットワーク上の複数ノードにわたって配備される複数のサーバ装置１１のストレージ１１１により構成される。コンテンツ記憶部１１０に記憶されるコンテンツデータの例は，画像データ，動画データ，音声データ，及び文字データであるが，これらのものに限定されず，クライアント端末に入力，記憶，演算，又は出力される種々のデータを含む。コンテンツデータとしては，例えば，ＭＰＥＧ（ｍｏｖｉｎｇ  ｐｉｃｔｕｒｅｅｘｐｅｒｔｓ  ｇｒｏｕｐ）方式で圧縮されたカラー動画映像ファイル，ＭＰ３（ＭＰＥＧ  ａｕｄｉｏ  ｌａｙｅｒ３）方式で圧縮された音声ファイル，又はＪＰＥＧ（ｊｏｉｎｔ  ｐｈｏｔｏｇｒａｐｈｉｃ  ｅｘｐｅｒｔｓ  ｇｒｏｕｐ）方式で圧縮されたカラー静止画像ファイルが挙げられる。また，例えば，ゲームソフト開発現場においては，開発を行う際に用いるソースコードやその他のデジタルコンテンツが，コンテンツ記憶部１１０に記憶される。コンテンツ記憶部１１０に格納されているデータは，クライアント端末２０からのダウンロード要求に応じて適宜配信される。コンテンツ記憶部１１０は，例えば複数のストレージノードに接続された複数の磁気記憶装置の集合により構成されているものであってもよいし，単一の磁気記憶装置により構成されているものであってもよい。
【００３２】
データ分割部１２０は，コンテンツ記憶部１１０に記憶されているコンテンツデータを，データの種類やデータの容量に応じて，複数の分割データに分割する。データ分割部１２０は，例えば，コンテンツデータを予め定めるデータ量の分割データ（データブロック）に分割する。また，例えば，コンテンツデータをシリアル送信する順番に，予め定めるデータ量となるように分割して，分割データを生成することとしてもよい。データ分割部１１には，例えばＣＰＵ内部のデータバスが接続され，このデータバスを介してコンテンツ記憶部１１０から所定のデータが与えられる。そして，データ分割部１２０は，データバス幅をデータブロックとして区切る。具体的には，ＣＰＵ内部のデータバスを介してパラレルデータが伝送されると，データ分割部１２０は，データバス幅分のデータ量のパラレルデータを１つの分割データとして，データバッファに記憶する。また，データ１２０部により分割された分割データは，サーバ手段１０を構成する複数のサーバ装置１１のそれぞれに備えられたストレージ１１１に分散して格納されることとしてもよい。
【００３３】
送信部１３０は，データ分割部１２０により生成された分割データを，クライアント端末２０に対して送信するための出力部である。送信部１３０には，公知のインターフェイスを採用することができる。
【００３４】
メタデータデータベース１４０は，各クライアント端末２０のキャッシュ領域２３０に記憶されている分割データに関するメタデータ（以下，分割キャッシュ情報ともいう）を記憶している。メタデータは，情報を整理するために用いられる情報に関する情報であり，例えば，分割データが記憶されているキャッシュ領域２３０を有するクライアント端末２０の所在を示す情報（ＩＰアドレス）や，分割データの種類に関する情報等である。サーバ２０の構成管理システム１７０は，クライアント通信部１８０を介して，定期的に各クライアント端末２０にアクセスし，各クライアント端末２０のキャッシュ領域２３０に記憶されている分割データから，そのメタデータを取得して，メタデータデータベース１４０を更新する。このため，サーバ手段１０やクライアント端末２０は，メタデータデータベース１４０に記憶されているメタデータを参酌することにより，分割データの所在を把握することができる。
【００３５】
リポジトリストレージ１５０は，各クライアント端末からアップロードされた編集後のコンテンツデータに関する情報を記憶する。リポジトリストレージ１５０は，ソフトウェア開発および保守における各工程の様々な情報を一元管理する機能を有しており，ソフトウェア開発の各工程での成果物をメタ情報として記憶することができるようになっている。
このため，リポジトリストレージ１５０は，後述するビルド処理に際して参酌される。また，リポジトリストレージ１５０は，バージョン管理システムによってサーバにプログラムを溜めておくことができる。クライアント端末２０は，コンテンツデータをコピーして編集作業が終わったら，コンテンツ記憶部１１０に編集後のコンテンツデータをアップロードすると共に，リポジトリストレージ１５０にコミットし，リポジトリストレージに編集後の差分情報を記憶させることができる。このため，リポジトリストレージ１５０を参酌することにより，各コンテンツデータのバージョン管理を行うことが可能になる。本実施の形態において，各コンテンツデータのバージョン管理は，構成管理システム１７０により行われる。
【００３６】
ビルド処理部１６０は，リポジトリストレージ１５０を参酌して，コンテンツ記憶部１１０に記憶されているコンテンツデータのビルド処理を行う。ビルド処理部１６０は，リポジトリストレージ１５０で管理されているソースコードを読み出し，バイナリコードにコンパイルすることによって，独立したソフトウェア生成物に変換する。例えば，ビルド処理１６０には，ソースコードをバイナリコードにコンパイルした後，バイナリコードのパッケージ化や，テストの実行，生産システムの配備，文書やリリースノートの作成等の工程が含まれる。ビルド処理は，システム管理者が任意の時間帯に実行することとしてもよいし，リポジトリストレージ１５０にソースファイルの変更がコミットされるたびに自動的に実行することとしてもよい。特に，ビルド処理は，夜間などのＣＰＵ使用率が低下した時間帯に実行する（ナイトリービルドを行う）ことが好ましい。
【００３７】
構成管理システム１７０は，コンテンツ記憶部１１０に記憶されているコンテンツデータの最新版や変更履歴といったバージョンの管理や，各クライアント端末２０に記憶されている分割データのメタデータを取得しメタデータデータベース１４０の更新を行う等，システム全体の構成管理を行う機能を担う。構成管理システム１７０は，例えば，差分抽出部１７１を備える。差分抽出部１７１は，サーバ手段１０がクライアント端末２０から，コンテンツデータのダウンロード要求を受信した際，リポジトリストレージ１５０を参酌して，サーバ手段１０のコンテンツ記憶部１１０に記憶されているコンテンツデータのバージョンと，当該クライアント端末２０に記憶されている当該コンテンツデータのバージョンを比較し，その差分データを抽出することができる。差分データは，例えばバイナリ単位で取得することが好ましい。このように，構成管理システム１７０は，差分抽出部１７１によって差分データを抽出することにより，差分データによってコンテンツデータのバージョン管理を行うことができる。ただし，構成管理システム１７０は，各バージョンごとに，コンテンツデータの実データを生成して，この実データを記憶しておくことにより，コンテンツデータのバージョン管理を行うものであってもよい。
【００３８】
クライアント通信部１８０は，各クライアント端末２０との情報の授受に使用される。例えば，クライアント通信部１８０は，各クライアント端末２０からのコンテンツデータのダウンロード要求を受信する等，サーバ手段１０と各クライアント端末２０との情報のやり取りに際して利用される。また，例えば，クライアント通信部１８０によって受信した各クライアント端末２０からの要求は，構成管理システム１７０に伝えられ，構成管理システム１７０は，サーバ手段１０の各要素に対して処理命令を伝達する。
【００３９】
サーバ手段１０は，トラッカーサーバ１９０を含むものであってもよい。トラッカーサーバ１９０は，クライアント端末２０のＰ２Ｐ通信部２５０との間で情報の授受が可能なように接続されており，Ｐ２Ｐ通信網の新規接続者にＰ２Ｐ通信において使用するＩＰアドレスを割り振る。すなわち，クライアント端末２０は，Ｐ２Ｐ通信を開始する際，トラッカーサーバ１９０にアクセスし，ＩＰアドレスを受取り，他のクライアント端末との間でデータの送受信を開始する。
【００４０】
また，サーバ手段１０を構成する複数のサーバ装置１１のそれぞれは，コンテンツデータを記憶するためのストレージ１１１を有することが好ましい。各ストレージ１１１には，コンテンツ記憶部１１０と同一のコンテンツデータが格納され，冗長化したものであることが好ましい。また，各ストレージ１１１は，コンテンツデータの分割データが分散して格納されたものであってもよい。複数のサーバ装置１１のそれぞれは，各クライアント端末２０と通信ネットワークを介して接続されているため，各ストレージ１１１に，コンテンツデータを冗長化又は分散して格納することにより，クライアント端末２０からのダウンロード要求に応じて，マルチパスで，コンテンツデータを送信することができるようなる。
【００４１】
（１−２．クライアント端末）
クライアント端末２０は，サーバ手段１０に接続され，サーバ手段１０からダウンロードしたコンテンツデータの編集作業を行う機能を有する。コンテンツデータの編集作業は，クライアント端末２０が有する種々のアプリケーションによって実行される。また，本発明において，複数のクライアント端末２０は，Ｐ２Ｐ型の通信によってそれぞれ接続されており，データの授受が可能になっている。図２に示された実施形態において，各クライアント端末２０は，サーバ通信部２１０，クライアント端末２０の受信部２２０，キャッシュ領域２３０，メタデータ取得部２４０，Ｐ２Ｐ通信部２５０，再構築部２６０，データ記憶部２７０，及びアップロード部２８０を含むことが好ましく，その他にも適宜有用な機能を付加することも可能である。
【００４２】
サーバ通信部２１０は，サーバ手段１０に対して，所望のコンテンツデータのダウンロード要求を送信する。つまり，クライアント端末２０は，入力装置，制御装置，演算装置，記憶装置，及び出力装置を備え，端末のユーザが入力装置を介してコンテンツデータのダウンロード要求を入力すると，制御装置は，記憶装置のメインメモリに格納されている制御プログラムの指令に従って，演算装置にて所定の演算を行い，出力部であるサーバ通信部２１０を介して，ダウンロード要求をサーバ手段１０に送信する。また，サーバ通信部２１０は，その他種々の情報をサーバ手段１０に送信することが可能であり，例えば，サーバ手段１０のメタデータデータベースに記憶されているメタデータのダウンロード要求を，サーバ手段１０に送信することも可能である。
【００４３】
クライアント端末２０の受信部２２０は，サーバ手段１０から送信されたコンテンツデータの分割データを受信することができる。なお，クライアント端末２０の受信部２２０は，例えば，サーバ手段１０から，あるコンテンツデータを構成する全ての分割データを受信するものであってもよいし，また，分割されていない状態のコンテンツデータを受信するものであってもよい。クライアント端末２０の受信部２２０により受信されたコンテンツデータの分割データは，例えば一時的にキャッシュメモリ（図示しない）に記憶される。
【００４４】
キャッシュ領域２３０は，サーバ手段１０や他のクライアント端末２０からダウンロードした，コンテンツデータの分割データを一時的に記憶する記憶装置の領域である。キャッシュ領域２３０は，例えば，クライアント端末２０の主記憶装置とＣＰＵなどの演算装置との間に構成され，演算装置の演算処理に必要なデータや状態，設定などの属性情報をコピーし保持することで，本来アクセスすべき主記憶装置に代わってデータが入出力される。例えば，ＣＰＵからの転送要求があり，そのデータが既にキャッシュ２３０に格納されている場合は，主記憶装置からの転送は行わずキャッシュが転送を代行する。このため，コンテンツデータの分割データをキャッシュ領域２３０に一時保存することで，他の装置から当該分割データの要求が合った際，要求された分割データをキャッシュ領域２３０から読み出し，迅速にデータ転送を行うことができる。
【００４５】
メタデータ取得部２４０は，コンテンツデータのダウンロード要求をサーバ手段１０に送信した際，メタデータデータベース１４０に記憶されているメタデータに基づいて，コンテンツデータの分割データを記憶している他のクライアント端末に関する情報（分割キャッシュ情報）を取得する。ここにいう分割キャッシュ情報には，他のクライアント端末の所在を把握するための情報が含まれ，具体的には，他のクライアント端末のＰ２Ｐ通信におけるＩＰアドレス等の情報が含まれる。メタデータ取得部２０は，サーバ手段１０のメタデータデータベース１４０に記憶されているメタデータの一部を取得して，コンテンツデータの分割データを記憶している他のクライアント端末の所在を把握するものであってもよいし，サーバ手段１０のメタデータデータベース１４０に記憶されているメタデータの全部を取得するものであってもよい。メタデータ取得部２４０が，サーバ手段１０のメタデータデータベース１４０に記憶されているメタデータの全部を取得した場合，クライアント端末２０にも，メタデータデータベースを構築することとしてもよい。クライアント端末２０にメタデータデータベースを構築することにより，他のクライアント端末２０は，サーバ手段１０にアクセスしなくても，分割キャッシュ情報を取得することができる。
【００４６】
Ｐ２Ｐ通信部２５０は，あるクライアント端末２０と，他のクライアント端末２０の間において，Ｐ２Ｐ通信を可能にするための機能を有する。Ｐ２Ｐ通信は，ネットワークに接続されたクライアント端末（ピア）の各々が，あるときは他のピアに対して所定のサービスを提供してサーバのように動作し，あるときは他のピアが提供するサービスを利用してクライアントのように動作し，各ピアが対等な関係となる。Ｐ２Ｐ通信部２５０は，各クライアント端末２０において通信を行う際，各クライアント端末２０が有する共通のコミュニケーションアプリケーションを起動させ，各クライアント端末２０の間に設けられた通信路を用いて，各クライアント端末２０を接続する。あるクライアント端末２０から，分割データのダウンロード要求を受けた他のクライアント端末２０は，キャッシュ領域２３０から分割データを読み出し，Ｐ２Ｐ通信部２５０を介して，あるクライアント端末２０に送信する。Ｐ２Ｐ通信の接続形態としては，クライアント端末間で一対一のコミュニケーションを行う一対一型通信であってもよいし，クライアント端末間のノード接続をカスケード状に多段階層化して，ツリー構造を形成した放送型通信であってもよい。
【００４７】
このようなＰ２Ｐ通信網は，インターネットやイントラネットに構築することができ，各クライアント端末２０に付与されたＩＰアドレスを用いて，端末の所在を把握する。Ｐ２Ｐ通信は，複数のクライアント端末を相互に接続することが可能であり，その場合には最短経路である通信路を介してクライアント端末同士を接続すれば良い。Ｐ２Ｐ通信部２３５は，メタデータ取得部２４０によって取得した分割キャッシュ情報に基づいて，一又は複数のクライアント端末２０のキャッシュ領域２３０に記憶されている分割データを，Ｐ２Ｐ通信によって相互に送受信させる。Ｐ２Ｐ通信部２３５によって受信した分割キャッシュデータは，一時的にキャッシュ領域２３０に記憶される。
【００４８】
再構築部２６０は，クライント端末２０の受信部２２０によってサーバ手段２０から受信した分割データ，及び／又は，Ｐ２Ｐ通信部２５０によって他のクライアント端末から受信した分割データを，キャッシュ領域２３０から読み出し，読み出した分割データを統合してコンテンツデータを再構築する。そして，再構築部２６０により再構築されたコンテンツデータは，データ記憶部２７０に記憶される。
【００４９】
また，クライント端末２０は，所定の編集作業を行った編集後のコンテンツデータを，サーバ手段１０のコンテンツ記憶部１１０にアップロードするアップロード部２８０を備えている。すなわち，クライント端末２０は，制御プログラムの指令に従って，適宜記憶部にデータ記憶部２７０に記憶されたコンテンツデータを読み出し，レンダリングアプリケーション等を起動して，コンテンツデータの編集処理を行うことができる。アップロード部２８０は，この編集後のコンテンツデータを，サーバ手段１０のコンテンツ記憶部１１０にアップロードすることができるようになっている。コンテンツ記憶部１１０にアップロードされた編集後のコンテンツデータは，ソフトウェア開発の各工程でのメタ情報がリポジトリストレージ１５０に記憶され，サーバ手段１０の構成管理システム１７０によって，コンテンツデータの最新版や変更履歴といったバージョンの管理が行われる。
【００５０】
（２．データ送受信システムの処理フロー）
次に，図３及び図４を参照して，本発明の実施形態に係るデータ送受信システムの処理フローについて説明する。まず，図３及び図４は，送受信システムのある実施形態に処理フローを示したものである。図３はデータの送受信の流れを概念的に示したものであり，図４はシステムのフローチャートの例を示している。
【００５１】
図４に示されるように，サーバ手段１０は，データ分割部１２０によって，予めコンテンツデータを分割する（ステップＳ１）。分割部１２０によって分割された分割データは，コンテンツ記憶部１１０に記憶される（ステップＳ２）。例えば，図３に示されるように，あるコンテンツデータは，データＡ，データＢ，及びデータＣの分割データに分割されコンテンツ記憶部１１０に記憶されている。
【００５２】
図４に示されるように，あるクライアント端末２０は，サーバ通信部２１０を通じて，サーバ手段１０に対し，コンテンツデータのダウンロード要求を送信する（ステップＳ３）。例えば，図３に示された例では，複数のクライアント端末のうち，あるクライアント端末２０ａが，データＡ，データＢ，及びデータＣから構成されるコンテンツデータのダウンロード要求を，サーバ手段１０に送信している。
【００５３】
図４に示されるように，あるクライアント端末２０ａは，コンテンツデータのダウンロード要求をサーバ手段１０に送信した際，サーバ手段１０のメタデータデータベース１４０を参照し，メタデータ取得部２４０によって，メタデータデータベース１４０に記憶されているメタデータに基づいて，分割キャッシュ情報を取得する（ステップＳ４）。分割キャッシュ情報は，所望のコンテンツデータの分割データを記憶している他のクライアント端末に関する情報であり，例えば，他のクライアント端末のＰ２Ｐ通信におけるＩＰアドレス等の情報が含まれる。
【００５４】
図３に示された例においては，あるクライアント端末２０ａがダウンロード要求を行ったコンテンツデータの分割データを，サーバ手段１０の他に，他のクライアント端末２０ｂ及び２ｃが保有している。すなわち，図３に示された例では，他のクライアント端末２０ｂのキャッシュ領域２３０にはデータＢが記憶され，他のクライアント端末２０ｃのキャッシュ領域２３０にはデータＣが記憶されている。これらの情報は，分割キャッシュ情報として，メタデータデータベース１４０に記憶されている。このため，あるクライアント端末２０ａは，メタデータデータベース１４０から分割キャッシュ情報を取得することにより，データＢを保有する他のクライアント端末２０ｂの所在と，データＣを保有する他のクライアント端末２０ｃの所在とを把握することができる。
【００５５】
次に，図４に示されるように，あるクライアント端末２０は，分割キャッシュ情報に基づいて，分割データの要求先を特定する（ステップＳ５）。そして，クライアント端末２０は，特定した要求先に対して，分割データのダウンロード要求を送信する（ステップＳ６）。基本的に，サーバ手段１０へのトラフィックが増大化することを防止するために，クライアント端末２０が保有する分割データについては，当該クライアント端末に対してダウンロード要求を送信することを優先することが好ましい。このため，あるクライアント端末２０は，基本的に，他のクライアント端末が分割データを保有する場合には，当該分割データについては当該他のクライアント端末に対してダウンロード要求を送信することを優先し，他のクライアント端末が保有していない分割データのみについて，サーバ手段１０に対してダウンロード要求を行うことが好ましい。
【００５６】
ただし，クライアント端末２０は，分割キャッシュ情報に基づいて，例えば，分割データを保有する他のクライアント端末がＰ２Ｐ通信可能な状態にあるかどうかや，自己と他のクライアント端末の接続距離が近いかどうかを判断することができる。図３の例を参照して説明すると，あるクライアント端末２０ａは，他のクライアント端末２０ｃの電源が切れている場合等，他のクライアント端末２０ｃとの間でＰ２Ｐ通信が不可能な状態にあると判断した場合には，他のクライアント端末２０ｃが保有している分割データ（データＣ）については，サーバ手段１０に対してダウンロード要求を送信すれば良い。また，例えば，あるクライアント端末２０ａは，自己と他のクライアント端末２０ｃを接続する際に通過するノードの数などによって，自己と他のクライアント端末２０ｃ接続距離を把握し，自己と他のクライアント端末２０ｃ接続距離が所定距離以上離れていると判断した場合には，他のクライアント端末２０ｃが保有している分割データ（データＣ）については，サーバ手段１０に対してダウンロード要求を送信することもできる。この際，あるクライアント端末２０ａは，分割データ（データＣ）を，他のクライアント端末２０ｃから受信するのに必要な時間と，サーバ手段１０から受信するのに必要な時間を比較し，受信するための時間が短い方に対し，分割データ（データＣ）のダウンロード要求を送信することとしてもよい。
【００５７】
図４に示されるように，あるクライアント端末２０から分割データのダウンロード要求を受信したサーバ手段１０及び／又は他のクライアント端末２０は，ダウンロード要求された分割データを，当該クライアント端末２０に対して送信する（ステップＳ７）。例えば，図３の例を参照して説明すると，あるクライアント端末２０ａから，分割データ（データＡ）のダウンロードを要求されたサーバ手段１０は，コンテンツ記憶部１１０から分割データ（データＡ）を読み出して，送信部１３０を介して，あるクライアント端末２０ａに送信する。また，あるクライアント端末２０ａから，分割データ（データＢ）のダウンロードを要求された他のクライアント端末２０ｂは，キャッシュ領域２３０からデータＢを読み出して，Ｐ２Ｐ通信部２５０を介して，あるクライアント端末２０ａに送信する。同様に，あるクライアント端末２０ａから，分割データ（データＣ）のダウンロードを要求された他のクライアント端末２０ｃは，キャッシュ領域２３０からデータＣを読み出して，Ｐ２Ｐ通信部２５０を介して，あるクライアント端末２０ａに送信する。なお，図３に示された例において，あるクライアント端末２０ａは，サーバ手段１０と他のクライアント端末２０ｂ，２０ｃのそれぞれから，分割データ（データＡ，Ｂ，Ｃ）をダウンロードすることとしているが，あるクライアント端末２０ａは，分割データ（データＡ，Ｂ，Ｃ）を一括して，サーバ手段１０からダウンロードすることや，他の一のクライアント端末からダウンロードすることもできる。あるクライアント端末２０ａは，サーバ手段１０及び／又は他のクライアント端末２０からダウンロードした分割データを，一時的にキャッシュ領域２３０に記憶する。
【００５８】
次に，クライアント端末２０は，再構築部２６０によって，サーバ手段１０及び／又は他のクライアント端末２０からダウンロードした分割データを統合し，コンテンツデータを再構築する（ステップＳ８）。そして，クライアント端末２０は，再構築したコンテンツデータをデータ記憶部２７０記憶する（ステップＳ９）。このようにして，クライアント端末２０は，所望のコンテンツデータを取得することが可能になる。
【００５９】
以上のように，本発明のデータ送受信システムでは，あるクライアント端末によるコンテンツデータのダウンロード要求に応じて，コンテンツデータを保有するサーバ手段からだけでなく，当該コンテンツデータがキャッシュ領域に記憶されている他のクライアント端末からも，ダウンロード要求を行ったクライアント端末に対して，コンテンデータの一部又は全部を転送される。このため，複数のクライアント端末に対するデータ転送が，特定のサーバ装置に一局集中する事態を回避することができ，データ転送に際して生じるボトルネックの問題を解消することができる。また，あるクライアント端末が，サーバ手段に格納されているデータを要求するとき，そのクライアント端末の近傍の他のクライアント端末に要求データの分割データがある場合には，これを活用することでデータの全量をサーバ手段から取得せずに済むため，サーバ手段の負荷の低減と，サーバ手段との通信経路上のボトルネックの軽減が達成される。さらに，あるクライアント端末に対し，コンテンツデータを，サーバ手段及び他のクライアント端末から分割データとして転送することが可能であるため，コンテンツデータの要求を行ったクライアント端末に対して，マルチパスで，コンテンツデータをダウンロードさせることができ，データ転送速度の高速化を実現できる。
【００６０】
（２−１．冗長化／分散化）
次に，データ送受信システムの好ましい形態について説明する。
図５には，サーバ手段１０を構成する複数のサーバ装置１１が，コンテンツ記憶部１１０を冗長化したストレージ１１１を有している形態の例を示している。図５に示された例では，コンテンツ記憶部１１０にデータＡ，データＢ，及びデータＣからなるコンテンツデータが含まれている。そして，コンテンツ記憶部１１０が冗長化され，各サーバ装置１１のストレージ１１１にも，データＡ，データＢ，及びデータＣからなるコンテンツデータが記憶されている。
【００６１】
図５に示されるように，各サーバ装置１１のストレージ１１１に記憶されているコンテンツデータは，データ分割部１３０によって，データＡ，データＢ，及びデータＣの分割データに分割される。複数のサーバ装置１１とクライアント端末２０はそれぞれ通信ネットワークによって接続されている。このため，あるクライアント端末２０ａが，データＡ，データＢ，及びデータＣからなるコンテンツデータのダウンロードを要求すると，サーバ手段１０は，ダウンロード要求に従い，クライアント端末２０ａに対して，コンテンツデータの分割データを送信する。このとき，サーバ手段１０は，複数のサーバ装置１１を介して，クライアント端末２０ａに対し，コンテンツデータの分割データを送信することができる。例えば，図５に示されるように，サーバ装置１１ａからは，クライアント端末２０ａに対し，データＡが送信される。また，サーバ装置１１ｂからは，クライアント端末２０ａに対し，データＢが送信される。同様に，サーバ装置１１ｃからはクライアント端末２０ａに対し，データＣが送信される。このように，複数のサーバ装置１１に，コンテンツ記憶部１１０を冗長化したストレージ１１１を備えることにより，ストレージ１１１に冗長化され保存されているコンテンツデータを，マルチパスで，クライアント端末２０に送信することができるため，１コネクションあたりの通信速度が原因で通信完了までの速度が遅くなる問題を解消できる。また，並列処理かつマルチパスで，クライアント端末２０にコンテンツデータの分割データを送信できるため，通信処理の更なる高速化を実現できる。
【００６２】
図６は，サーバ手段１０を構成する複数のサーバ装置１１のストレージ１１１に，コンテンツ記憶部１１０の記憶されているコンテンツデータが，分散して格納されている例を示している。図５に示された例では，コンテンツ記憶部１１０にデータＡ，データＢ，及びデータＣからなるコンテンツデータが含まれている。そして，コンテンツ記憶部１１０のコンテンツデータが，データ分割部１２０により分割されて，各サーバ装置１１のストレージ１１１に分散して記憶されている。すなわち，図５に示された例では，データＡがサーバ装置１１ａのストレージ１１１に，データＢがサーバ装置１１ｂのストレージ１１１に，データＣがサーバ装置１１ｃのストレージ１１１に，それぞれ格納されている。
【００６３】
この場合において，あるクライアント端末２０ａが，データＡ，データＢ，及びデータＣからなるコンテンツデータのダウンロードを要求すると，サーバ手段１０は，ダウンロード要求に従い，クライアント端末２０ａに対して，コンテンツデータの分割データを送信する。このとき，サーバ手段１０は，複数のサーバ装置１１を介して，クライアント端末２０ａに対し，コンテンツデータの分割データを送信する。例えば，図５に示されるように，サーバ装置１１ａからは，クライアント端末２０ａに対し，データＡが送信される。また，サーバ装置１１ｂからは，クライアント端末２０ａに対し，データＢが送信される。同様に，サーバ装置１１ｃからはクライアント端末２０ａに対し，データＣが送信される。このように，複数のサーバ装置１１のストレージ１１１に，コンテンツデータの分割データを分散して記憶させておくことにより，複数のサーバ装置１１のストレージ１１１に保存されているコンテンツデータを，マルチパスで，クライアント端末２０に送信することができるため，１コネクションあたりの通信速度が原因で通信完了までの速度が遅くなる問題を解消できる。また，並列処理かつマルチパスで，クライアント端末２０にコンテンツデータの分割データを送信できるため，通信処理の更なる高速化を実現できる。
【００６４】
上記のように，コンテンツ記憶部１１０におけるコンテンツデータの格納を，複数台のサーバ装置１１にわたっては冗長化，及び／又は分散化させることが好ましい。コンテンツデータの格納の冗長化と分散化は互いに排他的なものではなく，コンテンツデータの格納を冗長化させたサーバ装置１１と，分散化させたサーバ装置１１を併存させることとしてもよい。また，コンテンツデータの格納を冗長化及び／又は分散化させた場合であっても，コンテンツデータのダウンロード要求を行ったあるクライアント端末２０は，他のクライアント端末２０からＰ２Ｐ通信網を介して，分割データを取得することができる。
【００６５】
（２−２．コンテンツデータの自動配信）
次に，図７を参照して，クライアント端末に対して，最新のコンテンツデータを自動で配信するための処理フローについて説明する。
【００６６】
図７に示されるように，本システムに含まれる複数のクライアント端末は，それぞれ，データ記憶部２７０に記憶されているコンテンツデータ読み出した，読み出したコンテンツデータを編集する（ステップＳ１０）。編集後のコンテンツデータは，サーバ手段１０に集積され，構成管理システム１７０によって最新版や変更履歴といったバージョンの管理が行われる。このため，本システムに含まれる各クライアント端末は，編集後のコンテンツデータを，アップロード部２８０を介して，サーバ手段１０にアップロードする（ステップＳ１１）。
【００６７】
各クライント端末２０によってアップロードされた編集後のコンテンツデータは，サーバ手段１０のコンテンツ記憶部１１０に記憶される（ステップＳ１２）。また，このとき，サーバ手段１０にアップロードされた編集後のコンテンツデータに関し，ソフトウェア開発の各工程で生成されたソースコード等の成果物が，リポジトリストレージ１５０に記憶される。また，リポジトリストレージ１５０にコミットされた際，リポジトリストレージに編集後のコンテンツデータの差分情報がアップデートされるため，構成管理システム１７０は，リポジトリストレージ１５０を参酌することにより，各コンテンツデータのバージョン管理を行うことが可能になる。
【００６８】
次に，ビルド処理部１６０は，リポジトリストレージ１５０を参酌して，コンテンツ記憶部１１０に記憶されているコンテンツデータのビルド処理を行う。ビルド処理部１６０は，リポジトリストレージ１５０で管理されているソースコードを読み出し，バイナリコードにコンパイルすることによって，独立したソフトウェア生成物に変換する。例えば，ビルド処理１６０には，ソースコードをバイナリコードにコンパイルした後，バイナリコードのパッケージ化や，テストの実行，生産システムの配備，文書やリリースノートの作成等の工程が含まれる。ビルド処理は，システム管理者が任意の時間帯に実行することとしてもよいし，リポジトリストレージ１５０にソースファイルの変更がコミットされるたびに自動的に実行することとしてもよい。特に，ビルド処理は，夜間などのＣＰＵ使用率が低下した時間帯に実行する（ナイトリービルドを行う）ことが好ましい。
【００６９】
構成管理システム１７０は，ビルド処理後のコンテンツデータを再びコンテンツ記憶部１１０に格納するとともに，コンテンツデータのバージョンを最新ものに更新する（ステップＳ１４）。このとき，構成管理システム１７０は，差分データによってコンテンツデータのバージョン管理を行うこととしてもよいし。各バージョンごとに，コンテンツデータの実データを生成して，この実データを記憶しておくことにより，コンテンツデータのバージョン管理を行うものであってもよい。
【００７０】
その後，サーバ手段は，上記ステップＳ１及びステップＳ２と同じく，データ分割部１２０によって，コンテンツ記憶部１１０に記憶されているコンテンツデータを分割して，分割データを生成し，記憶しておく（ステップＳ１５，ステップＳ１６）。
【００７１】
次に，各クライント端末２０は，自己のデータ記憶部２７０に記憶されている編集後のコンテンツデータのバージョンと，サーバ手段１０のコンテンツ記憶部１１０に記憶されているビルド処理後のコンテンツデータのバージョンを比較する（ステップＳ１７）。上述した通り，構成管理システム１７０によって，各コンテンツデータのバージョン管理が行われているため，各クライント端末２０は，構成管理システム１７０にアクセスすることにより，編集後のコンテンツデータのバージョンとビルド処理後のコンテンツデータのバージョンの差分を把握できる。この比較処理は，サーバ手段１０が，ビルド処理が完了したことの情報を各クライアント端末２０に伝達し，この完了情報を受けったことを契機として，各クライアント端末２０が自動で行うこととしてもよい。また，構成管理システム１７０によりクライアント端末ごとの比較処理を行う時間を管理しておき，構成管理システム１７０の指示に従って，クライアント端末ごとに異なる時間帯に比較処理を開始することとしてもよい。
【００７２】
各クライント端末２０は，上記比較処理の結果，サーバ手段１０のコンテンツ記憶部１１０に記憶されているビルド処理後のコンテンツデータのバージョンが，自己のデータ記憶部２７０に記憶されている編集後のコンテンツデータのバージョンよりも新しいものであると判断した場合には，サーバ手段１０に対し，最新のバージョンのコンテンツデータのダウンロード要求を行う（ステップＳ１８）。その後，図４に記載されたステップＳ４〜ステップＳ９と同様の処理を行う。これにより，各クライアント端末２０は，編集後のコンテンツデータをアップロードした後，自動的に最新バージョンのコンテンツデータをダウンロードすることができるようになる。例えば，ビルド処理は，夜間などのＣＰＵ使用率が低下した時間帯に実行することにより，夜間のうちに，各クライアント端末２０に，最新のコンテンツデータが配信される。このため，例えば，コンテンツデータの編集作業を行うクリエイタが出社したときには，すでに自己のクライアント端末に，必要なコンテンツデータの最新バージョンがダウンロードされているという状況を作ることも可能になる。
【００７３】
（２−３．差分データの活用）
次に，図８を参照して，クライアント端末に対して，コンテンツデータの差分データを配信するための処理フローについて説明する。各クライアント端末２０のデータ記憶部２７０に格納されているコンテンツデータと，サーバ手段１０のコンテンツ記憶部１１０に記憶されているコンテンツデータの差分データの抽出し，この差分データのみをクライアント端末に対して送信することにより，データの転送量を減らし，転送の際に生じるボトルネックを解消することができる。
【００７４】
図８に示されるように，クライアント端末２０は，サーバ手段１０に対し，所望のコンテンツデータのダウンロード要求を行う（ステップＳ１９）。そして，コンテンツデータのダウンロード要求を受信したサーバ手段１０は，サーバ手段１０のコンテンツ記憶部１１０に記憶されている当該コンテンツデータのバージョンと，当該クライアント端末のデータ記憶部２７０に記憶されている当該コンテンツデータのバージョンを比較する（ステップＳ２０）。このとき，クライアント端末２０のデータ記憶部２７０に，ダウンロード要求の対象となっているコンテンツデータが存在していない場合には，図４に示された処理フローのステップＳ４〜ステップＳ９を実行する。
【００７５】
一方，クライアント端末２０のデータ記憶部２７０に，ダウンロード要求の対象となっているコンテンツデータが既に存在している場合には，サーバ手段１０の構成管理システム１７０は，差分抽出部１７１によって，例えばバイナリ単位で，サーバ手段１０のコンテンツ記憶部１１０に記憶されているコンテンツデータと，クライアント端末のデータ記憶部２７０に記憶されているコンテンツデータの差分データを抽出する（ステップＳ２１）。差分抽出部１７１によって抽出された差分データは，一時的にキャッシュメモリ（図示しない）に記憶される。
【００７６】
その後，サーバ手段１０は，差分抽出部１７１によって抽出した差分データのみを，送信部１３０を介して，クライアント端末２０に対して送信する（ステップＳ２２）。
【００７７】
差分データを受信したクライアント端末２０は，再構築部２６０によって，受信した差分データを，前記データ記憶部に記憶されている前記コンテンツデータに適用する（ステップＳ２３）。これにより，受信した差分データに基づいて，クライアント端末２０が記憶するコンテンツデータの一部分を更新することができる。パッチが適用されたコンテンツデータは，クライアント端末２０のデータ記憶部２７０に記憶される。
【００７８】
このような差分データの活用したコンテンツデータ更新処理を行うことにより，コンテンツデータのダウンロードを行うに際し，ＣＰＵでの前処理や後処理にコストを掛ける代わりに，サーバ手段１０とクライアント端末２０間でのデータ転送量を減らすことができるため，転送のボトルネックを解消することができる。また，例えば，クライアント端末２０のデータ記憶部２７０に，ダウンロード要求の対象となっているコンテンツデータが存在していない場合には，図４に示された通常のダウンロード処理を実行し，一方で，ダウンロード要求の対象となっているコンテンツデータが既に存在している場合には，図８に示された差分データのみの転送処理を実行することにより，データ転送が効率化するため，システムのユーザが意識せずともデータの転送を高速化させることができる。
【００７９】
本願明細書では，本発明の内容を表現するために，図面を参照しながら発明の実施形態を通して説明を行った。ただし，本願明細書に記載された事項に基づいて当業者が実施する変更形態又は改良形態が，本発明の趣旨を逸脱するものでない限り，本発明の範囲には，当該変更形態又は当該改良形態が包含される。
【符号の説明】
【００８０】
１      データ送受信システム
１０    サーバ手段
１１    サーバ装置
１１１  ストレージ
１１０  コンテンツ記憶部
１２０  データ分割部
１３０  送信部
１４０  メタデータデータベース
１５０  リポジトリストレージ
１６０  ビルド処理部
１７０  構成管理システム
１７１  差分抽出部
１８０  クライアント通信部
２０    クライアント端末
２１０  サーバ通信部
２２０  受信部
２３０  キャッシュ領域
２４０  メタデータ取得部
２５０  Ｐ２Ｐ通信部
２６０  再構築部
２７０  データ記憶部
２８０  アップロード部
【図１】
2013069329.tif 000003
【図２】
2013069329.tif 000004
【図３】
2013069329.tif 000005
【図４】
2013069329.tif 000006
【図５】
2013069329.tif 000007
【図６】
2013069329.tif 000008
【図７】
2013069329.tif 000009
【図８】
2013069329.tif 000010
【国際調査報告】
2013069329.tif 000011
2013069329.tif 000012
2013069329.tif 000013
2013069329.tif 000014