以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態では、映画、アニメ、音楽等のコンテンツの複製データ(レプリカ)を本発明のデータファイルの一例として説明する。また、コンテンツ分散保存システムを本発明のデータファイル分散保存システムの一例として説明する。
1.コンテンツ分散保存システムの構成及び動作概要
始めに、図1等を参照して、本実施形態に係るコンテンツ分散保存システムSの構成及び動作概要について説明する。
図1は、本実施形態に係るコンテンツ分散保存システムSにおける各ノード装置の接続態様の一例を示す図である。
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4a,4b、DSL(Digital Subscriber Line)回線事業者(の装置)5a,5b、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界の通信ネットワーク)8が構築されている。なお、図1の例におけるネットワーク8には、データ(パケット)を転送するためのルータが、適宜挿入されているが図示を省略している。
このようなネットワーク8には、複数のノード装置(以下、「ノード」という)Nn(n=1,2,3・・・の何れか)が接続されている。また、各ノードNnには、固有の製造番号およびIP(Internet Protocol)アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムSは、これらのノードNnのうち、図1の上部枠100内に示すように、何れか複数のノードNnの参加により形成されるピアツーピア方式のネットワークシステムとなっている。
なお、図1の上部枠100内に示すネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク9(論理的なネットワーク)である。オーバーレイネットワーク9は、特定のアルゴリズム、例えば、DHTを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムS(言い換えれば、オーバーレイネットワーク9)に参加している各ノードNnには、ノードID(ノード装置識別情報の一例)が割り当てられている。ノードIDは、所定桁数からなる固有の識別情報である。
また、ノードIDは、例えば、各ノードNnに個別に割り当てられたIPアドレス或いは製造番号を共通のハッシュ関数によりによりハッシュ化した値である。例えば、SHA−1等のハッシュ関数を用いて、例えば、bit長が160bitの値を得る。ノードIDは、ID空間に偏りなく分散して配置されることになる。
また、各ノードNnは、夫々、DHTを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムS上における各種メッセージの転送先を規定している。具体的には、ルーティングテーブルは、ID空間内で適度に離れたノードNnのノードID、アドレス情報(IPアドレス及びポート番号等)を含むノード情報を複数登録している。
ところで、コンテンツ分散保存システムSにおいては、データファイルの一例として、内容の異なる様々なコンテンツのレプリカが所定のファイル形式で複数のノードNnに分散して保存(格納)されている。レプリカは、各ノードNn間で利用可能になっている。例えば、ノードN5には、タイトルがXXXの映画のコンテンツのレプリカが保存されている。一方、ノードN3には、タイトルがYYYの映画のコンテンツのレプリカが保存されている。上述したように、各コンテンツのレプリカが、複数のノードNn(以下、「コンテンツ保持ノード」という)に分散されて保存されている。
また、これらのコンテンツのレプリカには、夫々、コンテンツ名(タイトル)及びコンテンツID(コンテンツ毎に固有の識別情報(コンテンツ識別情報の一例))等の情報が付加されている。このコンテンツIDは、例えば、コンテンツ名+任意の数値(或いは、コンテンツの先頭数バイトでも良い)が、上記ノードIDを得るときと共通のハッシュ関数によりハッシュ化されて生成される(ノードIDと同一のID空間に配置)。或いは、システム管理者が、コンテンツ毎に一意のID値(ノードIDと同一ビット長)を付与しても良い。
コンテンツ分散保存システムSに分散保存されているコンテンツのレプリカの所在を示すインデックス情報は、ルートノードに記憶される。ルートノードは、コンテンツのレプリカの所在を管理しているノードNnである。インデックス情報は、レプリカを保存したノードNnのノード情報とコンテンツのコンテンツID等の組を含む情報である。
このようなコンテンツ分散保存システムSにおいて、コンテンツのレプリカがダウンロード(取得)される際には、コンテンツをリクエストするユーザノードが、取得を所望するのコンテンツのコンテンツIDを含むクエリを生成する。ユーザノードは、クエリをルーティングテーブルに従ってルートノードに向けて送出する。ユーザノードは、ルートノードからコンテンツのレプリカを保持するコンテンツ保持ノードのノード情報を受信する。受信したノード情報に基づいて、ユーザノードは、コンテンツ保持ノードにアクセスする。ユーザノードは、コンテンツ送信要求メッセージを送信し、コンテンツ保持ノードからコンテンツのレプリカをダウンロードする。或いは、クエリを受信したルートノードがコンテンツ保持ノードへコンテンツ送信要求メッセージを送信し、コンテンツ保持ノードがユーザノードへレプリカを送信することもできる。
なお、このようなDHTを用いたルーティングテーブルや、当該ルーティングテーブルを利用して各ノードNn間におけるメッセージの転送については、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。
本実施形態では、コンテンツ分散保存システムS1(第1システムの一例。以下、「システムS1」と言う。)と、コンテンツ分散保存システムS2(第2システムの一例。以下、「システムS2」と言う。)と、が構築されているものとする。システムS1は、特定ユーザー向けのコンテンツが分散保存されたシステムである。またシステム2は、一般ユーザー向けのコンテンツが分散保存されたシステムである。
図2は、ノードNnが、システムS1又はS2から所望のコンテンツのレプリカを取得する様子を示す概念図である。
特定ユーザー向けのコンテンツのレプリカとは、例えば、課金処理を必須とする有料コンテンツ、所定条件を満たす会員のみが取得(視聴)できる会員向けコンテンツ、映画等が(ダイジェストではなく)全編収録されている全編コンテンツ等である。システムS1へ参加して、特定ユーザー向けのコンテンツのレプリカを取得する場合には、予めユーザーデータベースサーバDSへのユーザー情報の登録が必要となる。
一般ユーザー向けのコンテンツのレプリカは、無料コンテンツ、非会員向けコンテンツ、ダイジェスト版コンテンツ等である。
例えば、タイトルが「コンテンツA」という映画のコンテンツの場合、同じタイトルのコンテンツのレプリカがシステムS1とシステムS2に保存されている。システムS1には、「コンテンツA」の全編収録されている全編コンテンツのレプリカが保存されている。システムS2には、「コンテンツA」のダイジェスト版のダイジェストコンテンツのレプリカが分散保存されている。
なお、「システムS1(又はS2)にコンテンツのレプリカが分散保存されている」とは、「システムS1(又はS2)に参加している何れかのノードNn(コンテンツ保持ノード)に、コンテンツのレプリカが分散保存されている」ことを示す。
システムS1に分散保存されているコンテンツのレプリカは、システムS2には(分散)保存されていない。システムS2に分散保存されているコンテンツのレプリカは、システムS1には(分散)保存されていない。言い換えれば、システムS1に参加しているノードNnにのみ、特定ユーザー向けのコンテンツのレプリカが保存され、システムS2に参加しているノードNnにのみ一般ユーザー向けのコンテンツのレプリカが保存される。
なお、システムS1(又はS2)にのみ参加しているノードNnもあれば、システムS1とS2の双方に参加しているノードNnもある。
システムS1が構成するID空間と、システムS2が構成するID空間とは別個独立したものである。システムS1(又はS2)にのみ参加しているノードNnには、システムS1(又はS2)のID空間におけるノードIDが割り当てられる。システムS1とS2の双方に参加しているノードNnには、システムS1とS2の双方のID空間におけるノードIDがそれぞれ割り当てられる。割り当てられたノードIDに基づいて、各ノードNnは、それぞれのシステムに参加することとなる。
なお、システムS1及びS2への参加は、参加していないノードNnがコンタクトノードへ参加メッセージを送信することによって行われる。参加メッセージは、システムS1またはシステムS2への参加要求を示すメッセージである。コンタクトノードは、例えば、当該システムS1又はS2に常時参加している任意のノードNnである。
WebサーバWSは、ユーザー情報を送信してきたノードNnに対して、ユーザーの認証処理を行なう。ユーザー情報は、ユーザーIDと登録パスワードとである。
認証処理結果により、ユーザー情報を送信してきたノードNnがシステムS1へ参加可能なとき、WebサーバWSは、セッション情報(参加可否情報の一例)を生成する。セッション情報は、システムS1へ参加可能である旨の情報を含む。生成されたセッション情報は、当該ノードNnとデータベースサーバDSとへ送信される。このセッション情報は、各ユーザーに一意に生成されるものである。
データベースサーバDSは、ユーザー情報と、当該ユーザーのセッション情報とを対応付けて記憶する。記憶されるユーザー情報は、システムS1への登録が行なわれた(認証済み)ユーザーのユーザー情報である。データベースサーバDSは、当該ユーザー情報は、WebサーバWSから受信する。
そして、認証済みユーザーのノードNnは、WebサーバWSから受信したセッション情報を、自己のRAM等に記憶している。
以下、図2及び図3を参照して、ノードNnが、コンテンツのレプリカを取得する動作について説明する。
あるノードNnのユーザーが、あるコンテンツ(例えば、アニメ)のレプリカを取得したい場合、例えば、ユーザーは、ノードNnの表示画面上で、取得したいアニメのタイトル「ジョーの明日」を入力する。システムS1及びS2を運営するシステム運営者によるセンターサーバ(図示しない)にアクセスしてタイトル「ジョーの明日」の検索を行なうと、例えば図3(A)に示す検索結果がノードNnの表示画面に表示される。
図3(A)に示す例では、「ジョーの明日 第一話」から「ジョーの明日 第四話」まで4つのコンテンツが検索されている。
そして、ノードNnのユーザーがノードNnに具備するマウス等を操作することで、所望のコンテンツがカーソルにより指定される。指定されたコンテンツのコンテンツ名を含む情報(以下、「指定コンテンツ情報」と言う。)が、ノードNnにより生成される。ノードNnは、指定コンテンツ情報をWebサーバWSへ送信する(図2[1])。
そして、WebサーバWSが、受信した指定コンテンツ情報に基づいて、ページデータを作成する(図2[2])。ページデータは、ユーザーに対する提示内容が記述された情報である。ページデータは、Webブラウザで閲覧することができるHTML(HyperText Markup Language)文書やXHTML(Extensible HyperText Markup Language)文書等である。
ページデータには、システムS1を示す「第1システム情報」と、システムS2を示す「第2システム情報」と、が記述されている。システムS1は、指定コンテンツ情報にて指定されたコンテンツの特定ユーザー向けコンテンツを分散保存する。システムS2は、指定コンテンツ情報にて指定されたコンテンツの一般ユーザー向けコンテンツを分散保存する。
図4は、WebサーバWSが作成するページデータの一例である。objectタグを使用しているが、embedタグやappletタグ等も同様なパラメータでの記述が可能である。
図4は、ページデータがHTML文書の場合の一例である。図4のパラメータAには、システムS1又はシステムS2に接続するための「システム接続情報」を取得するためのサーバ装置のURL(Uniform Resource Locator)「xxx.brr-eee.com」が記述されている。パラメータBには、第1システム情報「P2P-NW-1」と第2システム情報「P2P-NW-2」が記述されている。パラメータCには、指定コンテンツの特定ユーザー向けコンテンツコンテンツID「aaaa」と一般ユーザー向けコンテンツのコンテンツID「bbbb」とが記述されている。コンテンツIDは、指定コンテンツを示すファイル情報の一例である。
「システム接続情報」は、システムS1又はS2に参加するために必要な情報である。例えば、「システム接続情報」は、コンタクトノードにアクセスするためのアドレス情報等である。コンタクトノードは、例えば、システムS1又はS2に常時参加しているノードノードNnである。
なお、本実施形態におけるコンテンツIDは説明を簡単にするため4桁と簡略化している。また、「システム接続情報」を取得するためのサーバ装置として、WebサーバWSを用いることとする。
WebサーバWSは、作成したHTML文書をノードNnに送信する(図2[3])。
ノードNnは、HTML文書を受信する。ノードNnには、予めWeb埋め込みプレイヤーがインストールされている。HTML文書を受信してWebブラウザで閲覧することによって、プレイヤーが起動するようになっている。
また、HTML文書のパラメータAには、システム接続情報を取得するためのサーバ装置のURLが記述されている。パラメータBの第一項目目には第1システム情報が記述されている。パラメータBの第二項目目には第2システム情報が記述されている。更に、パラメータCの第一項目目には特定ユーザー向けコンテンツのコンテンツIDが記述されている。パラメータCの第二項目目には一般ユーザー向けコンテンツのコンテンツIDが記述されている。ノードNnは、上述したHTMLのパラメータ記載ルールに従って、WebサーバWSから受信したHTML文書を解釈する。
先ず、ノードNnは、受信したHTML文書に基づいて参加するシステムSを決定する(図2[4])。
ノードNnは、自己のRAM等からセッション情報を取得する。ノードNnは、当該セッション情報に基づいてシステムS1への参加可否を判定する。具体的には、RAM等に、セッション情報が記憶されていれば、システムS1への参加が可能であると判定される。セッション情報が記憶されていない場合には、システムS1への参加が不可能であると判定される。
システムS1への参加が可能であると判定された場合には、パラメータAのURLに基づいて、ノードNnはWebサーバWSへ、パラメータBの第1システム情報「P2P-NW-1」を送信する。第1システム情報「P2P-NW-1」を送信することで、ノードNnは、システムS1へ接続するためのシステム接続情報の送信をWebサーバWSへ要求する。システムS1への参加が不可能であると判定された場合には、パラメータBの第2システム情報「P2P-NW-2」をWebサーバWSへ送信する。第2システム情報「P2P-NW-2」を送信することで、ノードNnは、システムS2へ接続するためのシステム接続情報の送信をWebサーバWSへ要求する(図2[5])。
続いて、WebサーバWSは、第1システム情報を受信した場合には、システムS1へ接続するためのシステム接続情報をノードNnに返信する。WebサーバWSが第2システム情報を受信した場合には、WebサーバWSは、システムS2へ接続するためのシステム接続情報をノードNnに返信する(図2[6])。
ノードNnは、システムS1へ接続するためのシステム接続情報を受信すると、当該システム接続情報に基づいて、システムS1への所定の参加処理(図2[7A])を行う。ノードNnは、コンテンツ所在問合せ(検索)メッセージを生成する。コンテンツ所在問合せ(検索)メッセージは、特定ユーザー向けコンテンツのコンテンツID「aaaa」を含む。特定ユーザー向けコンテンツのコンテンツID「aaaa」は、HTML文書のパラメータCに記述されたIDである。ノードNnは、コンテンツ所在問合せ(検索)メッセージをルートノードへ送信する。ルートノードは、取得したインデックス情報に基づいて、コンテンツ保持ノードにアクセスする。ユーザノードは、特定ユーザー向けのコンテンツのレプリカを取得し(図2[8A])、再生する(図2[9])。
一方、ノードNnが、システムS2へ接続するためのシステム接続情報を受信した場合には、ノードNnは、システム接続情報に基づいて、システムS2への所定の参加処理(図2[7B])を行う。ノードNnは、コンテンツ所在問合せ(検索)メッセージを生成する。コンテンツ所在問合せ(検索)メッセージは、一般ユーザー向けコンテンツのコンテンツID「bbbb」を含む。一般ユーザー向けコンテンツのコンテンツID「bbbb」は、HTML文書のパラメータCに記述されたIDである。ノードNnは、コンテンツ所在問合せ(検索)メッセージをルートノードへ送信する。ルートノードは、取得したインデックス情報に基づいて、コンテンツ保持ノードにアクセスする。ユーザノードは、特定ユーザー向けのコンテンツのレプリカを取得し(図2[8B])、再生する(図2[9])。
図3(B)は、取得されたコンテンツのレプリカが再生される再生画面の一例である。
特定ユーザーであれば、システムS1から、図3(A)で指定したコンテンツ「ジョーの明日 第一話」の全編コンテンツのレプリカが取得される。そして、図3(B)の再生画面にて再生処理が行なわれる。特定ユーザーは、システムS1への認証が行なわれていたユーザーである。一般ユーザーであれば、システムS2から、図3(A)で指定したコンテンツ「ジョーの明日 第一話」のダイジェスト版コンテンツのレプリカが取得される。そして、図3(B)の再生画面にて再生処理が行なわれる。一般ユーザーは、システムS1への認証が行なわれていない(未認証の)ユーザーである。
ノードNnの表示画面上では、図3(A)にてコンテンツ「ジョーの明日 第一話」が指定される。その後、ユーザーが入力部等を操作することなく、図3(B)の再生画面が表示される。する。ノードNnがシステムS1に参加した場合、全編コンテンツが自動的に再生される。また、システムS2に参加した場合、ダイジェスト版コンテンツが、自動的に再生される。
なお、ノードNnが、参加するシステムSを決定する際(図2[4])、自己のRAM等にシステムS1への参加が可能である旨の情報が含まれるセッション情報が記憶されていない場合がある。この場合、HTML文書のパラメータAに記述されたURLに基づいてWebサーバWSへ、ユーザー情報を送信して(図2[4#1])、セッション情報の送信を要求するよう構成してもよい。
WebサーバWSは、ノードNnから受信したユーザー情報を、データベースサーバDSに送信する。データベースサーバDSは、送信されたユーザー情報が認証済みの(データベースサーバDSに登録されている)ユーザー情報であるか否かを確認する(図2[4#2])。認証済みである場合にだけ、システムS1への参加が可能である旨の情報が含まれるセッション情報をWebサーバWSは生成する。WebサーバWSは、生成されたセッション情報をノードNnへ送信する(図2[4#3])。ノードNnは、上述のセッション情報を受信し、受信したセッション情報をRAM等に記憶する(図2[4#4])。図5は、この場合のノードNnの表示画面の遷移の様子を示す。
図5(A)は、ノードNnの表示画面を示す。ユーザーが表示画面の中のコンテンツ「ジョーの明日 第一話」を指定したとき(図5(A))に、自己のRAM等にシステムS1へのセッション情報が記憶されているかが判定される。システムS1へのセッション情報は、システムS1への参加が可能である旨の情報である。システムS1へのセッション情報が記憶されていない場合、図5(B)に示す表示画面が表示され、ユーザーに対してユーザー情報(ユーザーIDと登録パスワード)の入力が促される。そして、ユーザーがキーボード等の入力部を操作して、ユーザー情報の入力が行なわれる。入力されたユーザー情報がWebサーバWSへ送信され、WebサーバWSにて、当該ユーザーが認証済みであるか否かの登録確認が行なわれる。認証済みであればWebサーバWSからセッション情報が送信され、ノードNnは、受信したセッション情報をRAM等に記憶することとなる。一方、認証済みでなければ、WebサーバWSからセッション情報は送信されない。その後、ノードNnは、WebサーバWSとの間で図2[5]〜[9]の処理を行なう。そして、ノードNnは、自動的に図5(C)の再生画面を表示する。その後、全編コンテンツ又はダイジェスト版コンテンツが再生され始める。
このように、HTML文書に、第1システム情報と第2システム情報とが記述されることで、これを受信したノードNnが、自己のRAM等(又はWebサーバWS)から取得したシステムS1への参加が可能であるか否かを示すセッション情報に基づいて、ノードNn自身が、システムS1への参加が可能であるか否かを判定する。
そして、参加可能であれば、WebサーバWSから、システムS1へのシステム接続情報を取得して、システムS1に参加し特定ユーザー向けのコンテンツのレプリカを取得し、参加不可能であれば、システムS2へのシステム接続情報を取得して、システムS2に参加し一般ユーザー向けのコンテンツのレプリカを取得するよう構成した。
これにより、ノードNnは、視聴を所望するコンテンツを指定して、WebサーバWSから1つのHTML文書を受信し参照するだけで、ユーザー自身が何らの操作もすることなく、ユーザーが認証済みであるか否かを判定する。
そして、認証済みであれば、指定コンテンツの特定ユーザー向けのコンテンツのレプリカを自動的に取得して再生し、ユーザーが未認証であれば、指定コンテンツの一般ユーザー向けのコンテンツのレプリカを自動的に取得して再生することができる。
2.各装置の構成及び機能
<2−1.ノードNnの構成及び機能>
次に、図6を参照して、ノードNnの構成及び機能について説明する。
図6は、ノードNnの概要構成例を示すブロック図である。
各ノードNnは、制御部11と、記憶部12と、バッファメモリ13と、デコーダ部14と、映像処理部15と、表示部16と、音声処理部17と、スピーカ18と、通信部20と、入力部21とから構成される。制御部11、記憶部12、バッファメモリ13、デコーダ部14、通信部20、及び入力部21はバス22を介して相互に接続されている。制御部11は、演算機能を有するCPU,作業用RAM,各種データおよびプログラムを記憶するROM等から構成される。制御部11は、本実施形態のコンピュータとして機能する。記憶部12は、各種データ及び各種プログラム等を記憶保存(格納)するためを記憶するハードディスク等から構成される。例えば、記憶部12はコンテンツのレプリカを記憶する。また、システムS1又はS2に参加後は、記憶部12はインデックスキャッシュ、DHT等を記憶する。バッファメモリ13は、受信されたコンテンツのレプリカ等を一時蓄積する。デコーダ部14は、エンコードされたビデオデータ(映像情報)およびオーディオデータ(音声情報)等をデコード(データ伸張や復号化等)する。コンテンツが映像や音声を含む場合に、デコーダ部14は、コンテンツのレプリカに含まれるエンコードされたビデオデータおよびオーディオデータ等をデコードする。映像処理部15は、デコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する。表示部16は、映像処理部15から出力されたビデオ信号に基づき映像表示するCRT,液晶ディスプレイ等である。音声処理部17は、上記デコードされたオーディオデータをアナログオーディオ信号にD(Digital)/A(Analog)変換した後これをアンプにより増幅して出力する。スピーカ18は、音声処理部17から出力されたオーディオ信号を音波として出力する通信部20は、ネットワーク8を通じて他のノードNn等間の情報の通信制御を行なう。入力部21は、ユーザーからの指示を受け付け、指示に応じた指示信号を制御部11へ通信する。入力部21は、例えば、キーボード、マウス、或いは、操作パネル等である。
なお、ノードNnとしては、パーソナルコンピュータ、STB(Set Top Box)、通信カラオケ装置、或いは、TV受信機等が適用可能である。
制御部11のRAMは、記憶手段として機能する。制御部11のRAMは、WebサーバWSから受信したセッション情報を記憶する。
記憶部12には、当該ノードNn自身のアドレス情報(IPアドレス及びポート番号等)が記憶されている。また、ノードNnが、システムS1又はS2に参加した後は、記憶部12にはノードIDも記憶される。
また、システムS1又はS2へ参加後は、記憶部12にはコンタクトノードから受信したインデックスキャッシュ、DHT等が記憶される。記憶部12は、保存コンテンツ管理テーブルを記憶する。保存コンテンツ管理テーブルは、記憶部12に保存(記録)しているコンテンツのレプリカに関する情報(タイトル、コンテンツID等)を登録するための情報である。また記憶部12は、インデックス情報をインデックスキャッシュとして記憶する。インデックス情報は、自ノードNnが所在を管理するコンテンツの保持ノードであるノードNnのノード情報と当該コンテンツのコンテンツIDの組が含まれる情報である。
このような構成において、制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、全体を統括制御する。ノードNnがシステムS1又はS2へ参加して、プログラムが実行されることで、上述したユーザノード、中継ノード、ルートノード、コンテンツ保持ノードの少なくとも何れか一つのノードとしての処理を行なうようになっている。
また、制御部11は、本発明のノード処理プログラムを実行することにより、本発明におけるページデータ受信手段、参加可否情報取得手段、参加可否判定手段、第1接続情報取得手段、第2接続情報取得手段、データファイル取得手段、記憶制御手段、記憶判定手段等として機能する。なお、上記ノード処理プログラムは、例えば、ネットワーク8上の所定のサーバからダウンロードされるようにしてもよいし、例えば、CD−ROM等の記録媒体に記録されて当該記録媒体のドライブを介して読み込まれるようにしても良い。
<2−2.WebサーバWSの構成及び機能>
続いて、WebサーバWSの概略構成について図7を用いて説明する。なお、図7は実施形態に係るWebサーバWSの概要構成例を示すブロック図である。
図7に示すように、WebサーバWSは、制御部301と、記憶部302と、通信部303と、入力部304とから構成される。制御部301、記憶部302、通信部303及び入力部304は、バス305を介して相互にデータの授受が可能に接続されている。制御部301は、演算機能を有するCPU、作業用RAM(Random Access Memory)、各種データ及びプログラムを記録するROM(Read Only Memory)等から構成される。記憶部302は、システムS1及びS2に分散保存されたコンテンツのコンテンツID及びその他の必要なプログラム等を記録保存(格納)するためのHD等から構成される。通信部303は、ネットワーク8を通じて各ノードNn等、他の装置との間の情報の通信制御を行なう。入力部304は、WebサーバWSを操作する操作者からの指示を受け付け、指示に応じた指示信号を制御部301に出力する。入力部304は、例えば、キーボード、マウス或いは、操作パネル等である。
そして、制御部301におけるCPUが記憶部302等に記録されたプログラムを読み出して実行することにより、全体動作を統括制御する。
記憶部302には、コンテンツ名と、特定ユーザー向けのコンテンツIDと、一般ユーザー向けのコンテンツIDと、が対応付けられて記憶されている。
表1は、記憶部302に対応付けて記憶されたコンテンツ名と特定ユーザー向けコンテンツのコンテンツIDと一般ユーザー向けコンテンツのコンテンツIDの一例である。
制御部301は、ノードNnから指定コンテンツ情報を受信すると、記憶部302を参照する。制御部301は、指定コンテンツ情報に含まれるコンテンツ名に対応付けられた特定ユーザー向けコンテンツのコンテンツIDと、一般ユーザー向けコンテンツのコンテンツIDとを抽出する。制御部301は、これら各コンテンツIDをパラメータCに記述したHTML文書を作成し、ノードNnに送信する。なお、HTML文書のパラメータA及びパラメータBの記述内容は図4の説明にて詳述したので、ここでの説明は省略する。
また、制御部301は、ノードNnからユーザー情報を受信すると、受信したユーザー情報を、データベースサーバDSに送信する。データベースサーバDSは、認証済みの(データベースサーバDSに登録されている)ユーザー情報であるか否かを確認する。そして、データベースサーバDSが認証済みと判定した場合、制御部301は、ユーザーに一意のセッション情報を生成する。制御部301は、生成されたセッション情報をノードNnに送信すると共に、データベースサーバDSにも当該セッション情報を送信する。データベースサーバWSは、WebサーバWSから受信したセッション情報とユーザー情報とを対応付けて登録する。
表2は、データベースサーバDSに設けられた記憶部(図示せず)に登録(記憶)されたユーザー情報とセッション情報の一例である。
3.各装置の処理
ノードNn及びWebサーバWSにおける処理を、図を参照して、詳しく説明する。
<3−1.ノードNnの処理>
図8は、ノードNnにおける制御部11の処理を示すフローチャートである。WebサーバWSから受信したHTML文書を、ノードNnにインストールされたWebブラウザにて閲覧したとき、図8のフローチャート処理が開始される。以降の処理は、制御部11により処理される。
先ず、制御部11は、WebブラウザによってWeb埋め込みプレイヤーを起動する(ステップS10)。
次に、制御部11は、RAMからセッション情報を取得する(ステップS11)。このとき、制御部11は、セッション情報を取得できたか否かを判定(ステップS12)する。セッション情報を取得できれば(ステップS12:Yes)、制御部11は、WebサーバWSに第1システム情報「P2P-NW-1」と、ステップS11にて取得したセッション情報とを送信(ステップS13)する。受信したHTML文書のパラメータAには、WebサーバWSのURLが記述される。第1システム情報「P2P-NW-1」は、HTML文書のパラメータBの第一項目目に記述される。制御部11は、システムS1へ接続するためのシステム接続情報をWebサーバWSへ要求する。
続いて、WebサーバWSから、システムS1のシステム接続情報を受信したか否かを判定(ステップS14)する。システムS1のシステム接続情報を受信した場合(ステップS14:Yes)には、受信したシステム接続情報に基づいて、所定の参加処理を行なう(ステップS15)。参加処理は、システムS1へ参加し、システムS1に参加している他のノードNn(例えばコンタクトノード)から、カタログ情報(第1カタログ情報の一例)やルーティングテーブルなど必要な情報を取得する処理である。取得されたカタログ情報やルーティングテーブルは、記憶部12に保存される。
ステップS15にて取得されるカタログ情報には、システムS1から取得可能な特定ユーザー向けコンテンツの属性情報が記載されている。この属性情報は、例えば、コンテンツID、コンテンツの公開期間、コンテンツ名、ジャンル、アーティスト名、出演者、監督名である。コンテンツの公開期間は、コンテンツの公開期限、公開開始時期等である。コンテンツが映画の場合、コンテンツ名は映画タイトルである。コンテンツが楽曲の場合、コンテンツ名は楽曲タイトルである。コンテンツが放送番組の場合、コンテンツ名は番組タイトルである。コンテンツが映画の場合、ジャンルは、アクション、ホラー、コメディ、ラブストーリー等である。コンテンツが音楽の場合、ジャンルは、ロック、ジャズ、ポップス、クラシック等である。コンテンツが放送番組の場合、ジャンルは、ドラマ、スポーツ、ニュース、映画、音楽、アニメ、バラエティ等である。コンテンツが音楽の場合の歌手、アーティスト名は、アーティストのグループ等である。コンテンツが映画や放送番組の場合、出演者は番組のキャスト等である。
ノードNnがシステムS1へ参加後にシステムS1のカタログ情報を取得するよう構成したので、特定ユーザー向けコンテンツの属性情報の秘匿性(セキュリティ性)を保つことができる。
そして、制御部11は、コンテンツ「aaaa」を保持するコンテンツ保持ノードから、当該コンテンツ「aaaa」のレプリカを取得する(ステップS16)。コンテンツ「aaaa」のコンテンツID「aaaa」は、HTML文書のパラメータCの第一項目目に記述される。コンテンツID「aaaa」に基づいて、システムS1に参加しているノードNnのうち、コンテンツ保持ノードから、レプリカを取得する。
一方、ステップS12の判定において、セッション情報を取得できなければ(ステップS12:No)、制御部11は、受信したHTML文書のパラメータAに記述されたURLに基づいて、WebサーバWSに、ユーザー情報を送信する(ステップS17)。
そして、制御部11は、WebサーバWSから、セッション情報を受信したか否かを判定(ステップS18)する。セッション情報を受信した場合(ステップS18:Yes)には、制御部11は、受信したセッション情報をRAMに記憶して、ステップS11に移行する。
他方、ステップS18の処理においてセッション情報を受信していない場合(ステップS18:No)、制御部11は、WebサーバWSに、パラメータBの第二項目目に記述された第2システム情報「P2P-NW-2」を送信(ステップS19)する。第2システム情報「P2P-NW-2」を送信することで、制御部11はシステムS2へ接続するためのシステム接続情報を要求する。尚、第2システム情報「P2P-NW-2」は、受信したHTML文書のパラメータAに記述されたURLである。ステップS19の処理は、例えば、ステップS18で制御部11がWebサーバWSから認証エラーを受信した場合に実行される。或いは、ステップS14の処理においてWebサーバWSからシステムS1のシステム接続情報を受信していない場合(ステップS14:No)つまり、WebサーバWSから接続情報取得エラーを受信した場合にステップS19は実行される。
続いて、WebサーバWSから、システムS2のシステム接続情報を受信し(ステップS20)、受信したシステム接続情報に基づいて、所定の参加処理を行なう(ステップS21)。ステップS21では、システムS2に参加している他のノードNn(例えばコンタクトノード)から、カタログ情報(第2カタログ情報の一例)やルーティングテーブルなど必要な情報が取得される。取得された必要な情報が記憶部12に保存される。ここで取得されるカタログ情報には、システムS2から取得可能な一般ユーザー向けコンテンツの属性情報が記載されている。
そして、制御部11は、コンテンツID「bbbb」に基づいて、コンテンツ保持ノードから、当該コンテンツ「bbbb」のレプリカを取得する(ステップS22)。コンテンツID「bbbb」は、HTML文書のパラメータCの第二項目目に記述される。コンテンツ保持ノードは、システムS2に参加しているノードNnのうち、当該コンテンツ「bbbb」を保持するノードである。
次いで、制御部11は、ステップS16又はステップS22にて取得したコンテンツのレプリカを再生する(ステップS23)。なお、制御部11が、ステップS15にて取得したカタログ情報を参照して、コンテンツ「aaaa」の公開期限を確認しても良い。尚、公開期限が既に過ぎている場合には、制御部11は、「公開期限が過ぎているため利用できません」等の情報を表示部16に表示して再生しなくてもよい。コンテンツ「bbbb」に対しても、ステップS21にて取得したカタログ情報に基づいて同様の処理が実行される。
そして、制御部11は、入力部21を介してユーザーによりコンテンツの変更が指示されたか否かを判定(ステップS24)する。コンテンツの変更が指示された場合には(ステップS24:Yes)、ステップS11に移行して、制御部11は新たに変更後のコンテンツのレプリカを取得する。
ここで、ステップS24におけるコンテンツの変更について説明する。図4で説明したHTML文書には、特定ユーザー向けコンテンツのコンテンツID「aaaa」と、一般ユーザー向けコンテンツのコンテンツID「bbbb」としか記述されていない。例えば、複数のコンテンツを予め関連付けておき、ユーザーが指定したコンテンツに関連付けられたコンテンツの特定ユーザー向けコンテンツのコンテンツIDと一般ユーザー向けコンテンツのコンテンツIDとを、HTML文書の付加データとしてHTML文書と共にWebサーバWSからノードNnに送信するよう構成しても良い。これにより、ステップS24にてコンテンツの変更が指示された場合には、ノードNnの制御部11が、当該付加データに基づくjavascript等によるスクリプト処理により、HTML文書を動的に書換え、新たなHTML文書を作成する。具体的には、パラメータCの第一項目目に、新たに所望されたコンテンツの特定ユーザー向けコンテンツのコンテンツIDが記述される。パラメータCの第二項目目に一般ユーザー向けコンテンツのコンテンツIDに記述される。パラメータCの第一項目目と第2項目目とに、上述したIDが記載されたHTML文書が作成されることとなる。そして、ステップS11に移行して、新たに所望されたコンテンツIDに対してコンテンツレプリカの取得処理が実行される。
一方、ステップS25においてコンテンツの変更が指示されていない場合には(ステップS25:No)、制御部11は、Webブラウザの終了が指示されたか否かを判定(ステップS25)する。Webブラウザの終了が指示されていない場合には、ステップS23に移行する。Webブラウザの終了が指示されるまで、取得したレプリカの再生が続けられる。Webブラウザの終了が指示されたときに(ステップS24:Yes)、制御部11は、プレイヤーを終了(ステップS26)して処理を終了する。なお、Webブラウザの終了指示は、ユーザーによる入力部の操作によって指示されたり、或いは、予期しないノードNnのシステムエラー等により指示される。
<3−2.WebサーバWSの処理>
図9及び図10は、WebサーバWSにおける制御部301の処理を示すフローチャートである。図9は、ノードNnからユーザー情報を受信したときに実行開始する処理である。図10は、ノードNnから第1システム情報又は第2システム情報を受信したときに実行開始する処理である。
初めに、図9のフローチャートについて説明する。
制御部301は、受信したユーザー情報をデータベースサーバDSに送信して、認証済みの(データベースサーバDSに登録されている)ユーザー情報であるか否かを確認する(ステップS30)。具体的には、制御部301は、ユーザー情報をデータベースサーバDSに送信する。データベースサーバDSが登録済みのユーザー情報か否かを判定し(表2参照)、データベースサーバDSは判定結果をWebサーバWSに返信する。
そして、登録済みのユーザーでなければ(ステップS30:No)、制御部301は、ノードNnに認証エラーを送信して(ステップS31)処理を終了する。
一方、登録済みのユーザーであれば(ステップS30:Yes)、制御部301は、当該ユーザーに一意のセッション情報を生成する(ステップS32)。制御部301は、生成されたセッション情報をデータベースサーバDSに送信する。制御部301は、セッション情報をユーザー情報と対応付けて記憶するように、データベースサーバDSへ要求する(ステップS33)。このとき、データベースサーバDSに既にセッション情報が登録されている場合には、データベースサーバDSは、新たに生成したセッション情報に更新する。そして、制御部301は、ノードNnにセッション情報を送信して(ステップS34)処理を終了する。
次に、図10のフローチャートについて説明する。
先ず、制御部301は、受信したシステム情報が、第1システム情報であるか否かを判定する(ステップS40)。判定の結果、第1システム情報で無い場合には(ステップS40:No)、受信したシステム情報は、第2システム情報である。そのため、制御部301は、システムS2のシステム接続情報をノードNnに送信して(ステップS41)処理を終了する。
一方、受信したシステム情報が、第1システム情報である場合(ステップS40:Yes)には、制御部301はノードNnからセッション情報を受信する(ステップS42)。制御部301は、受信したセッション情報が、登録されているか否か、つまり当該ユーザーが認証済みであるか否かを確認する(ステップS43)。具体的には、制御部301はセッション情報をデータベースサーバDSに送信する。データベースサーバDSが、登録されているセッション情報であるか否かを判定する(表2参照)。データベースサーバDSは、判定結果をWebサーバWSに返信する。
そして、登録されているセッション情報でなければ、認証済みでないと判定し(ステップS43:No)、制御部301は、ノードNnに接続情報取得エラーを送信し(ステップS44)処理を終了する。
一方、登録されているセッション情報であれば、認証済みであると判定し(ステップS43:Yes)、制御部301は、システムS1のシステム接続情報をノードNnに送信して(ステップS45)処理を終了する。
上述した実施形態では、WebサーバWSが、ノードNnから第1システム情報を受信する。WebサーバWSが、システムS1へのシステム接続情報を要求された場合には、WebサーバWSはノードNnから受信したセッション情報に基づいて認証済みのユーザーであるか否かを再確認する。これにより、より厳密にシステムS1への参加認証判定を行なうよう構成されている。
以上説明したように、本実施形態によれば、ノードNnは、視聴を所望するコンテンツを指定して、WebサーバWSから1つのHTML文書を受信し参照するだけで、ユーザー自身が何らの操作もすることなく、ノードNnが、ユーザーが認証済みであるか否かを判定する。
そして、認証済みであれば、指定コンテンツの特定ユーザー向けのコンテンツのレプリカを自動的に取得して再生し、ユーザーが未認証であれば、指定コンテンツの一般ユーザー向けのコンテンツのレプリカを自動的に取得して再生することができる。
なお、上述した処理において、ノードNnは、ステップS11で取得したセッション情報を、ステップS13にて第1システム情報と共にWebサーバWSに送信している。WebサーバWSが第1システム情報を受信したときに、ノードNnに対してセッション情報の送信要求を行ない、ノードNnが当該送信要求に応えてステップS11で取得したセッション情報をWebサーバWSに送信するよう構成してもよい。
また、上述した実施形態では、WebサーバWSにおけるステップS30及びステップS43の認証判定処理において、先ず、WebサーバWSは、ユーザー情報又はセッション情報をデータベースサーバDSに送信している。そして、データベースサーバDSが、認証済みか否かの判定を行ない、その結果をWebサーバWSに返信している。
しかしこれに限定されず、WebサーバWSをデータベースサーバDSとして用いてもよい。この場合、例えば、表2に示したデータベースサーバDSの登録内容を、WebサーバWSの記憶部302に記憶し、ステップS30及びステップS43の認証判定処理において、WebサーバWSが記憶部302を参照して、認証済みか否かを判定するよう構成するよう構成すればよい。
さらに、上述した実施形態では、システム接続情報を取得するためのサーバ装置としてWebサーバWSを用いたが、WebサーバWS以外の図示しない他のサーバ装置を用いてもよい。システムS1へ接続するためのシステム接続情報を取得するためのサーバ装置と、システムS2へ接続するためのシステム接続情報を取得するためのサーバ装置とをそれぞれ設けてもよい。そして、各サーバ装置をそれぞれ設けた場合には、HTML文書のパラメータAの第一項目目にはシステムS1へ接続するためのシステム接続情報を取得するためのサーバ装置のURLを記述し、第二項目目にはシステムS2へ接続するためのシステム接続情報を取得するためのサーバ装置のURLを記述すればよい。
なお、上記実施形態におけるコンテンツ分散保存システムSは、DHTを利用したアルゴリズムによって形成されることを前提として説明したが、本発明はこれに限定されるものではない。