以下、本発明における情報配信システムの一実施形態について、図面を参照して説明する。本実施形態における情報配信システムは、ネットワークを介して互いに接続された複数の端末装置の参加により形成される情報配信システムであり、端末装置間でコンテンツ情報の送受信を行うものである。
[1.第1実施形態]
[1.1.情報配信システムSの構成等]
まず始めに、図1及び図2を参照して、本実施形態に係る情報配信システムSの概要について説明する。図1は、本実施形態に係る情報配信システムSにおける端末装置及びコンテンツ投入装置の接続態様の一例を示す図、図2はID空間の説明図である。
図1の下部枠101内に示すように、IX(Internet eXchange)3、ISP(Internet Service Provider)4、DSL(Digital Subscriber Line)回線事業者(の装置)5、FTTH(Fiber To The Home)回線事業者(の装置)6、及び通信回線(例えば、電話回線や光ケーブル等)7等によって、インターネット等のネットワーク(現実世界のネットワーク)8が構築されている。
情報配信システムSは、図1の上部枠100内に示すように、ネットワーク8を介して相互に接続された複数の端末装置1a,1b,1c・・・1x,1y,1z・・・を備えて構成され、P2P(ピアツーピア)方式のネットワークシステムとなっている。各端末装置1a,1b,1c・・・1x,1y,1z・・には、端末装置を示す情報としての固有の製造番号(例えば、MACアドレス)及びIP(Internet Protocol)アドレスが割り当てられている。なお、製造番号及びIPアドレスは、複数の端末装置間で重複しないものである。また、以下の説明において、端末装置1a,1b,1c・・・1x,1y,1z・・・のうちいずれかの端末装置又は全ての端末装置を示す場合には、便宜上、端末装置1という場合がある。
本実施形態の情報配信システムSにおいては、分散ハッシュテーブル(以下、「DHT」と呼ぶ。)を利用したアルゴリズムによって、図1の上部枠100内に示すような、オーバーレイネットワーク9が構築される。つまり、このオーバーレイネットワーク9は、既存のネットワーク8を用いて形成された仮想的なリンクを構成するネットワークを意味しており、オーバーレイネットワーク9上に配置された端末装置1を、情報配信システムSに参加(言い換えれば、オーバーレイネットワーク9に参加)している端末装置という。
情報配信システムSに参加している各端末装置1の識別番号である端末IDとして、それぞれの端末装置1毎にユニークな番号(固有番号)を付与する。本実施形態においては、各端末装置1のIPアドレス或いは製造番号等の端末装置1毎に固有の値を、共通のハッシュ関数(ハッシュアルゴリズム)によりハッシュ化して得たハッシュ値を各端末装置1の端末IDとする。このように共通のハッシュ関数によりハッシュ化されて求められた端末IDは、当該IPアドレス或いは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。また、以下の説明においては、IPアドレス(グローバルIPアドレス)を共通のハッシュ関数によりハッシュ化した値を端末IDとする。
また、情報配信システムSに参加している複数の端末装置1には、一の端末装置1から他の端末装置1に配信される共用情報としてのコンテンツ情報(例えば、音楽データ、映画データ、文書データ等のデータ)が分散して記憶されているが、当該コンテンツ情報にも、それぞれのコンテンツ情報毎の固有の識別番号(以下、「コンテンツID」と呼ぶ。)を付与する。そして、当該コンテンツIDは、端末IDと同様の長さ(例えば、32bit等)とし、コンテンツ情報の名称(例えば、データファイル名)などが、上記端末IDを得るときと共通のハッシュ関数によりハッシュ化され、端末装置1のIPアドレスのハッシュ値と同一のID空間に配置される。
このように、各端末装置1及び各コンテンツ情報に付与された端末ID及びコンテンツIDは、共通のハッシュ関数によって生成したため、図2に示すように、同一のリング状のID空間上にさほど偏ることなく、散らばって存在するものとして考えることができる。同図は32bitで端末ID及びコンテンツIDを付与し、図示したものである。図中丸点は端末IDを、四角形はコンテンツIDを示し、反時計回りでIDが増加するものとする。
本実施形態においては、「あるコンテンツIDを有するコンテンツ情報を管理する端末装置は、そのコンテンツIDに近い端末IDを有する端末装置である」という規則を適用しており、「近い」ことの定義は、当該コンテンツIDを超えず、コンテンツIDと端末IDとの差が一番少ないものとするが、実際には、各コンテンツ情報の管理を各端末装置1に割り振る際に、一貫していれば他の定義でもよい。図2に示す例では、この定義に基づいて、コンテンツIDaは、当該コンテンツIDaに近い端末ID(以下、「端末IDa」と呼ぶ。)を有する端末装置1に管理され、コンテンツIDbは、当該コンテンツIDbに近い端末ID(以下、「端末IDb」と呼ぶ。)を有する端末装置1に管理され、コンテンツIDcは、当該コンテンツIDcに近い端末ID(以下、「端末IDc」と呼ぶ。)を有する端末装置1に管理される。
ここで、「管理」とは、コンテンツ情報を保持していることを意味するのではなく、「コンテンツ情報がいずれの端末装置1に保持されているかを知っている」ことを意味する。すなわち、情報配信システムS内で送受信するコンテンツ情報を保持する端末装置1(以下、「コンテンツ保持端末装置」と呼ぶ。)の所在情報(ここでは、IPアドレスとする。)を保持することを意味する。例えば、図2においては、端末IDaを有する端末装置1は、コンテンツIDaを有するコンテンツ情報がいずれの端末装置1に保持されているかを知っており、端末IDbを有する端末装置1及び端末IDcを有する端末装置1も同様にそれぞれコンテンツIDbを有するコンテンツ情報及びコンテンツIDcを有するコンテンツ情報がいずれの端末装置1に保持されているかを知っている、ということになる。
このように、あるコンテンツ情報がいずれの端末装置1に保持されているかを知っている端末装置1を、そのコンテンツ情報のコンテンツルート端末装置と呼ぶ。つまり、端末IDaを有する端末装置1は、コンテンツIDaを有するコンテンツ情報のコンテンツルート端末装置であって、端末IDbを有する端末装置1は、コンテンツIDbを有するコンテンツ情報のコンテンツルート端末装置であって、端末IDcを有する端末装置1は、コンテンツIDcを有するコンテンツ情報のコンテンツルート端末装置である。
また、情報配信システムSには、図1及び図2に示すように、情報配信システムS内にコンテンツ情報を投入する機能、すなわち情報配信システムS内の端末装置1をコンテンツ保持端末装置とするためにコンテンツ情報を端末装置1へ配布(送信)する機能や、情報配信システムSにおいて端末装置1間で送受信可能なコンテンツ情報のリストである情報リスト(以下、「コンテンツカタログ」と呼ぶ。)を生成して端末装置1へ提供する機能などを有するコンテンツ投入装置10を備えている。
[1.2.ルーティングテーブル]
ここで、図3及び図4を参照して、DHTで用いるルーティングテーブルについて説明する。図3はルーティングテーブルを説明するための図であり、図4はルーティングテーブルの一例である。このルーティングテーブルは、端末装置1から他の端末装置1へアクセスするために、各端末装置1に保持されているものであり、各端末装置1が情報配信システムSに参加するとき等に形成されるものである。
このルーティングテーブルは、情報配信システムSを構成する複数の端末装置1のうち一部の端末装置1の識別情報である端末IDと、この端末IDに対応する端末装置1の所在情報とを関連付けたテーブルである。具体的には、このルーティングテーブルは、所定の規則に従い、情報配信システムSに含まれる端末装置1を複数のグループに分けて当該各グループをレベル1のグループとし、このレベル1のグループのうち自装置が属するグループをさらに複数のグループに分けて当該各グループをレベル2のグループとし、このレベル2のグループ分けと同様のグループ分けによりレベルnまでの各グループとして、各段階の各グループ(自端末装置の属するグループは除く)に属する一の端末装置1の所在情報(IPアドレス)をそれぞれ記憶するものである。なお、nは3以上の自然数であり、端末IDのID空間に応じて異なる。例えば、以下のように、ビット長8bitの4進数の場合には、n=4となる。
ここでは、端末IDをビット長8bitの4進数(「0000」〜「3333」)で表すこととした場合に、端末IDが「1133」の端末装置1nが保持するルーティングテーブルについて説明する。
図3(a)に示すように、端末IDのID空間を4分割することによって、最大桁が異なる4つのエリア「0XXX」、「1XXX」、「2XXX」、「3XXX」(Xは0から3の自然数、以下同様。)のグループに分ける。これらがレベル1のグループである。端末装置1nの端末IDは「1133」であるため、端末装置1nは、図3(a)中左下のエリア「1XXX」であるレベル1のグループに属する。従って、端末装置1nのルーティングテーブルのレベル1のテーブルには、図4に示すように、端末装置1nの存在するレベル1のグループ以外のグループ(すなわち、「0XXX」のエリア、「2XXX」のエリア、「3XXX」のエリアの各グループ)に存在する端末装置1の端末ID及びIPアドレスが記憶される。このテーブルでは、「0XXX」のエリアの端末IDとして「0100」、「2XXX」のエリアの端末IDとして「2133」、「3XXX」のエリアの端末IDとして「3213」のそれぞれの端末ID及びIPアドレスが記憶されている。
次に、図3(b)に示すように、レベル1のグループのうち端末装置1nが属するグループをさらに4分割して、エリア「10XX」、「11XX」、「12XX」、「13XX」のグループに分ける。これらがレベル2のグループである。端末装置1nは、自装置1nの端末IDが「1133」であるため、端末装置1nのルーティングテーブルのレベル2のテーブルには、図4に示すように、端末装置1nが属するレベル2のグループ(「11XX」のエリアのグループ)以外のレベル2のグループ(すなわち、「10XX」のエリア、「12XX」のエリア、「13XX」のエリアの各グループ)にそれぞれ属する端末装置1の端末ID及びIPアドレスが記憶される。このテーブルでは、「10XX」のエリアの端末IDとして「1003」、「12XX」のエリアの端末IDとして「1221」、「13XX」のエリアの端末IDとして「1313」のそれぞれの端末ID及びIPアドレスが記憶されている。
以下同様に、レベル2のグループのうち端末装置1nが属するグループをさらに4分割して、エリア「110X」、「111X」、「112X」、「113X」のグループ(レベル3のグループ)に分け、端末装置1nが属するレベル3のグループ「113X」以外のレベル3のグループ(すなわち、「110X」のエリア、「111X」のエリア、「112X」のエリアの各グループ)にそれぞれ属する端末装置1の端末ID及びIPアドレスが記憶される。また、レベル3のグループのうち端末装置1nが属するグループをさらに4分割して、「1130」、「1131」、「1132」、「1133」のグループ(レベル4のグループ)に分け、端末装置1nが属するレベル4のグループ「1133」以外のレベル4のグループ(すなわち、「1130」、「1131」、「1132」の各グループ)にそれぞれ属する端末装置1の端末ID及びIPアドレスが記憶される。なお、上記グループに端末装置1が存在しない場合には、端末ID及びIPアドレスの欄は空白となる。
このように情報配信システムSにおいては、この情報配信システムSにおける複数の端末装置1のうち一部の端末装置1の識別情報である端末ID及び所在情報であるIPアドレスを関連付けたルーティングテーブルを各端末装置1が有している。
[1.3.コンテンツ情報の公開方法]
このような構成の情報配信システムSの中で、例えば、ある端末装置1が新しいコンテンツ情報を、情報配信システムS上の他の端末装置1から検索可能となるように公開する際の手法について図面を参照して説明する。図5はコンテンツ登録メッセージがDHTルーティングにより転送される様子を示す図である。
まず、コンテンツ投入装置10は、新たなコンテンツ情報を情報配信システムSに投入(配布)しようとするとき、この新たなコンテンツ情報を投入する端末装置1を、ランダムに決定する。
コンテンツ投入装置10から投入されたコンテンツ情報を内部の記憶手段(コンテンツ情報記憶手段)に記憶してコンテンツ保持端末装置となった端末装置1は、ルーティングテーブルを参照し、記憶手段に記憶したコンテンツ情報のコンテンツIDと同じ端末IDを持つ端末装置1に向けて(この端末装置1が実在するか否かはこの時点ではわからない。)、自端末装置(コンテンツ情報を保持するコンテンツ保持端末装置として)の所在情報であるIPアドレス等の登録を要求するメッセージ(以下、「コンテンツ登録メッセージ」と呼ぶ。)を送信する。
具体的には、図5に示すように、例えば、端末装置1mがコンテンツID「3020」のコンテンツ保持端末装置となったとき、端末装置1mは、コンテンツID「3020」を宛先識別情報としたコンテンツ登録メッセージを生成し、このコンテンツ登録メッセージを自己が保持しているルーティングテーブルを参照して送信する。端末装置1mが、図4に示すルーティングテーブルのレベル1のテーブルと同様のルーティングテーブルを持っていたとすると、コンテンツID「3020」は「3XXX」のエリアであるため、当該「3XXX」のエリアに属す端末装置1のうち、IPアドレスを知っている(すなわち、自己が保持しているルーティングテーブルにIPアドレスが記憶されている)端末装置1a(端末ID「3213」)に対してコンテンツ登録メッセージを送信する。このコンテンツ登録メッセージはコンテンツ保持端末装置として保持したコンテンツ情報のコンテンツIDを含むものであり、このコンテンツIDはコンテンツ登録メッセージにおいて宛先識別情報として用いられる。この処理は、後述する制御部101が行うものである。このように、端末装置1の制御部101は、記憶手段に記憶したコンテンツ情報に割り当てられる識別情報であるコンテンツIDを宛先識別情報とし、ルーティングテーブルに基づいて、自装置の所在情報を含むコンテンツ登録メッセージを送信するコンテンツ登録メッセージ送信手段として機能する。
次に、コンテンツ登録メッセージを受信した端末装置1aは、当該コンテンツ登録メッセージに含まれる当該コンテンツID及びコンテンツ保持端末装置の端末IDやIPアドレス等(以下、これらを「コンテンツインデックス情報」と呼ぶ。)をコンテンツ所在情報記憶手段に記憶する。さらに、端末装置1aは、このコンテンツ登録メッセージが自端末装置1a宛のメッセージであるか否かを判定する。自端末装置1a宛のメッセージであるか否かは、宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、宛先識別情報が自端末装置1aの識別情報である端末IDと近いか否かが判定される。即ち、宛先識別情報に対して、端末装置1a自身が保持しているルーティングテーブル(テーブルの値は図示しない)に記憶されている端末装置1の端末IDから、一番近い端末装置1の端末IDが、自身であるか他の端末装置1であるかを判定する。
そして、自端末装置1aの端末IDよりも他の端末装置1の端末IDの方が、宛先識別情報に近いため、端末装置1aは、当該端末装置1a自身が保持しているルーティングテーブルのレベル2のテーブルを参照して、「30XX」のエリアに属す端末装置1のうち、IPアドレスを知っている端末装置1b(端末ID「3031」)に対してコンテンツ登録メッセージを転送する。
このように、コンテンツIDの桁を上から順に適合していく要領で、コンテンツ登録メッセージに含まれる情報の記憶とコンテンツ登録メッセージの転送が進み、最終的にコンテンツ登録メッセージの宛先識別情報に近い端末IDを有する端末装置1cに辿り着くと、当該端末装置1c自身がそのコンテンツ情報のコンテンツルート端末装置となるべきだと判断し、当該コンテンツ登録メッセージに含まれるコンテンツインデックス情報をコンテンツ所在情報記憶手段に記憶する。そして、後述するように、他の端末装置1からコンテンツ検索メッセージを受信すると、コンテンツ検索メッセージを送信した端末装置1へコンテンツ保持端末装置の所在情報であるIPアドレスを記憶したコンテンツインデックス情報の中から選択して通知する。なお、上述のようにルーティングテーブルを用いたメッセージの転送をDHTルーティングと呼ぶ。
ところで、コンテンツルート端末装置におけるコンテンツインデックス情報の保持は、図6に示すようなコンテンツインデックステーブルにより行われる。図6はコンテンツルート端末装置1cにおけるコンテンツインデックステーブルの例を示したものであり、自端末装置が管理対象であるコンテンツID「3020」のコンテンツ情報を保持するコンテンツ保持端末装置の端末ID、IPアドレスなどを記憶している。
[1.4.コンテンツ情報の取得方法]
次に、図7を参照して、コンテンツ情報を保持している端末装置1の検索方法の一例について説明する。図7は、DHTによりコンテンツ情報を保持している端末装置1が検索される様子の一例を示す図である。
ここでは、端末ID「1133」の端末装置1nがコンテンツリクエスト端末装置として、コンテンツID「3020」を有するコンテンツ情報を探す際の手順について説明する。
コンテンツリクエスト端末装置1nは、図7に示すように、自装置のルーティングテーブルを参照して、コンテンツID「3020」と同じエリア「3XXX」の端末IDを持つ端末装置1の端末IDを宛先とし、コンテンツID「3020」を宛先識別情報として、コンテンツ保持端末装置情報(コンテンツ保持端末装置の所在情報であるIPアドレスを含む情報)の送信要求のメッセージ(以下、「コンテンツ検索メッセージ」と呼ぶ。)を送信する(図7に示す(1)参照。)。この処理は、後述する制御部101が行うものである。このように、端末装置1の制御部101は、他の端末装置1であるコンテンツ保持端末装置が記憶するコンテンツ情報に割り当てられる識別情報を宛先識別情報として、ルーティングテーブルに基づいて、コンテンツ保持端末装置を検索するコンテンツ検索メッセージを送信するコンテンツ検索メッセージ送信手段としての機能を有する。
そして、このコンテンツ検索メッセージも、上記コンテンツ登録メッセージと同様にルーティングテーブルに従って、次々と転送されていき(図7に示す(2)参照。)、最終的に当該コンテンツID「3020」のコンテンツ情報を管理するコンテンツルート端末装置である端末装置1c(端末ID「3011」)に辿り着くと、当該コンテンツルート端末装置1cは、コンテンツ検索メッセージに含まれるコンテンツID「3020」を、自身が管理しているコンテンツインデックステーブルに記憶したコンテンツインデックス情報の中から検索し、当該コンテンツID「3020」のコンテンツ情報を所有しているコンテンツ保持端末装置(ここでは、端末装置1mとする。)のIPアドレス等をコンテンツリクエスト端末装置1nに返信する(図7に示す(3)参照。)。
コンテンツリクエスト端末装置1nは、上記コンテンツルート端末装置1cから、コンテンツID「3020」のコンテンツ情報の所在情報、即ち、コンテンツID「3020」のコンテンツ情報を保持するコンテンツ保持端末装置1mのIPアドレスを受信して知ることになり、コンテンツID「3020」のコンテンツ保持端末装置1mに、コンテンツ情報の送信要求(以下、「コンテンツ情報送信要求メッセージ」と呼ぶ。)を送信することにより(図7に示す(4)参照。)、当該コンテンツ保持端末装置1mから、そのコンテンツ情報を取得することになる(図7に示す(5)参照。)。この処理は、後述する制御部101が行うものである。このように、端末装置1の制御部101は、コンテンツ検索メッセージによって検索された端末装置1から当該コンテンツ情報を取得するコンテンツ取得手段としての機能を有する。
なお、コンテンツ登録メッセージの転送過程で、コンテンツルート端末装置以外にもコンテンツ保持端末装置の所在情報を記憶することになることから、コンテンツ検索メッセージが転送される過程で、コンテンツ検索メッセージを受信した端末装置1が、当該コンテンツ検索メッセージに示されたコンテンツIDを有するコンテンツ情報を保持する端末装置の所在情報を有しているときには、この端末装置1からコンテンツ保持端末装置の所在情報が通知される。
[1.5.動作履歴(ログ)の管理方法]
本実施形態において、各端末装置1は、自装置の動作履歴の情報を所定のタイミングで送信し、他の端末装置に管理させるようにしており、以下、その動作を図面を参照して具体的に説明する。図8は、ある端末装置の動作履歴の情報が他の端末装置に送信されるときの様子を示す図である。
各端末装置1は、自装置の動作履歴として、コンテンツ情報のダウンロード日時(取得日時)、再生日時及びアップロード日時(送信日時)などのコンテンツ情報の処理履歴のほか、他の端末装置1との通信エラー、コンテンツ情報のダウンロード処理時間やアップロード処理時間などの履歴、端末装置1内の動作エラーや負荷状態などの履歴などを自装置ログ記憶手段に記憶する。以下、このように自装置ログ記憶手段に記憶される動作履歴をログ情報と呼ぶ。
そして、各端末装置1は、自装置ログ記憶手段に記憶したログ情報を、所定のタイミングで他の端末装置へ送信するようにしている。例えば、所定期間(例えば、1日)のログ情報を所定期間(例えば、1日)毎に他の端末装置1へ送信して、所定期間毎のログ情報を他の端末装置1に管理させる。
ここで、ログ情報の送信先である他の端末装置1を、設定により、次のいずれかの方法で選択することができるように構成されている。
(1)ルーティングテーブルに所在情報が記憶された他の端末装置
(2)ランダムに決定した端末IDを有する他の端末装置
上記(1)が選択されているとき、端末装置1は、自装置のルーティングテーブルから1又は2以上の他の端末装置1を選択する。例えば、図4に示すルーティングテーブルを有している場合、端末装置1は、レベル1の端末ID「0100」,「2133」,「3213」の端末装置を、ログ情報を送信する他の端末装置1として選択する。なお、端末装置1は、選択する他の端末装置1を、所定期間毎に変更する。例えば、レベル1の端末IDの端末装置を選択した後、次に選択する他の端末装置1をレベル2の端末IDを有する端末装置1とする。
また、上述のように所定の規則(所定期間毎に変更)に従って他の端末装置1を選択するのではなく、ランダムに1又は2以上の他の端末装置1をルーティングテーブルから選択するようにすることもできる。
上記(2)が選択されているとき、端末装置1は、ルーティングテーブルを用いることなく、ランダムに1又は2以上の端末IDを決定することによって、ログ情報を送信する他の端末装置1を選択する。例えば、端末装置1は、端末ID「0231」,「2310」,「3001」の端末装置を他の端末装置1として選択する。
各端末装置1は、上述のようにログ情報を送信する他の端末装置1を選択すると、この選択した他の端末装置1に対して、自装置における所定期間のログ情報を投入(配布)する。このとき、端末装置1は、ルーティングテーブルに、選択した他の端末装置1と同一の端末IDがあるときには、ルーティングテーブルを参照して、直接選択した他の端末装置1へログ情報を投入する。一方、ルーティングテーブルに、選択した他の端末装置1と同一の端末IDがないときには、ルーティングテーブルを参照して、適切な端末装置1を選択してログ情報を送信する。このログ情報は、DHTルーティングにより転送されて、最終的には選択した他の端末装置1へ送信される。なお、選択した他の端末装置1が情報配信システムSに存在しないときには、この端末装置1の端末IDと最も近い端末装置1にログ情報が投入されることになる。
また、上述のようにランダムにログ情報を送信する他の端末装置1を選択するのではなく、ランダムにログ情報を要求させる他の端末装置1を選択するようにしてもよい。このとき、上記と同様に、端末装置1は、ルーティングテーブルを用いることなく、ランダムに1又は2以上の端末IDを決定することによって、ログ情報を送信する他の端末装置1を選択する。そして、この選択した他の端末装置1に対して、自装置における所定期間のログ情報を投入する準備があることをルーティングを参照して通知する。この通知を直接又はDHTルーティングによる転送により受信した他の端末装置1は、この通知を送信した端末装置1に対して、ログ情報の送信を要求して、当該ログ情報を取得する。
図8には、端末装置1eが自装置のログ情報を送信する他の端末装置1として端末装置1nを選択し、ログ情報を端末装置1nに送信したときの様子を示している(図8に示す(1)参照)。このとき、端末装置1eからは、ログ情報に加えて、端末装置1eの端末ID及びログ情報の日時の情報などが端末装置1nへ送信される。
端末装置1nは、端末装置1eからログ情報を受信すると、当該ログ情報に識別情報(以下、「ログID」とする。)を割り当てる。このログIDは、ログ情報毎の固有の識別情報であり、端末IDやコンテンツIDと同様の長さ(例えば、32bit等)とし、例えば、ログ情報を生成した端末装置1の端末ID(例えば、「2102」)に、ログ情報の日付(例えば、2007年6月20日のログ情報の場合には、「20070620」)を並べた情報(例えば、「210220070620」)が、上記端末IDやコンテンツIDを得るときと共通のハッシュ関数によりハッシュ化され、端末IDやコンテンツIDと同一のID空間に配置される。
このようにログIDを割り当てた後、自装置内の後述する情報記憶手段に端末装置1eのログ情報をログIDと関連づけて記憶し、ログID「3113」のログ保持端末装置となる。このようにログ保持端末装置となった端末装置1nは、コンテンツ登録メッセージの送信と同様に、ルーティングテーブルを参照し、情報記憶手段に記憶したログ情報のログID「3113」と同じ端末IDを持つ端末装置1に向けて(この端末装置1が実在するか否かはこの時点ではわからない。)、当該ログIDや自端末装置(ログ情報を保持するログ保持端末装置として)の所在情報であるIPアドレス等の登録を要求するメッセージ(以下、「ログ登録メッセージ」と呼ぶ。)を送信する(図8に示す(2)参照)。
そして、このログ登録メッセージも、上記コンテンツ登録メッセージと同様にルーティングテーブルに従って、次々と転送されていき(図8に示す(3)参照。)、その転送過程で、当該ログ登録メッセージに含まれる当該ログID及びログ保持端末装置の端末IDやIPアドレス等(以下、これらを「ログインデックス情報」と呼ぶ。)が転送過程の端末装置1に記憶される。そして、最終的にログ登録メッセージの宛先識別情報に近い端末IDを有する端末装置1dに辿り着くと、当該端末装置1d自身がそのログ情報のログルート端末装置となるべきだと判断し、当該ログ登録メッセージに含まれるログインデックス情報を記憶する。
ログルート端末装置におけるログインデックス情報の保持は、図10に示すようなログインデックステーブルにより行われる。図10はログルート端末装置1dにおけるログインデックステーブルの例を示したものであり、自端末装置が管理対象であるログID「3113」のログ情報を保持するログ保持端末装置の端末ID、IPアドレスなどを記憶している。
このように各端末装置1のログ情報は、所定期間毎に情報配信システムS内の他の端末装置1に投入されて保持されることになり、特に複数の端末装置1に同一のログ情報を分散して配置することができるので、ログ情報を生成した端末装置1やログ情報を保持することとなった端末装置が故障したときや情報配信システムから脱退したときであっても、情報配信システムS内でログ情報を管理することができる。
また、このログ情報は、情報配信システムSに参加している端末装置1から取り出すことができるように構成されている。ここでは、例えば、情報配信システムSの管理者の端末装置を端末ID「0213」の端末装置1hとし、この管理者が端末装置1e(図8参照)のログ情報を取得する動作を一例に挙げて図9を参照しながら説明する。図9はログ情報を保持している端末装置が検索される様子の一例を示す図である。
まず、端末装置1hは、端末装置1eのログ情報を保持するログ保持端末装置の所在情報を取得するためのメッセージ(以下、「ログ検索メッセージ」とする。)を生成し、送信する(図9に示す(1)参照。)。このログ検索メッセージは、検索すべきログ情報のログIDを宛先識別情報とするものであり、コンテンツ検索メッセージと同様に、DHTルーティングにより転送される。
ここで、ログ検索メッセージによって検索すべきログ情報のログIDは、例えば、検索すべきログ情報が端末装置1eの2007年6月20日のログ情報であるとき、端末装置1eの端末ID「2102」に、ログ情報の日付「20070620」を並べた情報「210220070620」を、上記端末IDやコンテンツIDを得るときと共通のハッシュ関数によりハッシュ化することによって得る。
上記コンテンツ登録メッセージと同様に、ログ検索メッセージもルーティングテーブルに従って、次々と転送されていき(図9に示す(2)参照。)、最終的に当該ログID「3113」のログ情報を管理するログ管理端末装置である端末装置1d(端末ID「3102」)に辿り着くと、当該ログルート端末装置1dは、ログ検索メッセージに含まれるログID「3113」を、自身が管理しているログインデックステーブルに記憶したログインデックス情報の中から検索し、当該ログID「3113」のログ情報を所有しているログ保持端末装置(ここでは、端末装置1nとする。)のIPアドレス等をログリクエスト端末装置1hに返信する(図9に示す(3)参照。)。
ログリクエスト端末装置1hは、上記ログルート端末装置1dから、ログID「3113」のログ情報の所在情報、即ち、ログID「3113」のログ情報を保持するログ保持端末装置1nのIPアドレスを受信して知ることになり、ログID「3113」のログ保持端末装置1nに、ログ情報の送信要求(以下、「ログ情報送信要求メッセージ」と呼ぶ。)を送信することにより(図9に示す(4)参照。)、当該ログ保持端末装置1nから、そのログ情報を取得することになる(図9に示す(5)参照。)。
なお、ログ登録メッセージの転送過程で、ログルート端末装置以外にもログ保持端末装置の所在情報を記憶することになることから、ログ検索メッセージが転送される過程で、ログ検索メッセージを受信した端末装置1が、当該ログ検索メッセージに示されたログIDを有するログ情報を保持するログ保持端末装置の所在情報を有しているときには、この端末装置1からログ保持端末装置の所在情報が通知される。
このように本実施形態における情報配信システムSでは、ルーティングテーブルを用いたDHTルーティングによって、ログ情報を生成する端末装置1とは異なる端末装置1に保持させたログ情報を容易に取り出すことができる。特に、ログ情報が所定期間毎に生成され、端末装置1に記憶されているため、必要な期間のログ情報を取得することが容易になる。また、ログ情報は期間毎に分散して複数の端末装置1に記憶されることになるため、一つの端末装置1からログ情報を取得することに比べネットワーク上のトラフィックの混雑を抑制することができる。
なお、上述においては、ログ保持端末装置(例えば、図8における端末装置1n)において、ログ情報にログIDを割り当てることとしたが、ログ情報を投入する端末装置(例えば、図8における端末装置1e)において、ログ情報にログIDを割り当てることもできる。この場合、ログ情報を投入する端末装置は、ログ情報に加えて、ログIDをログ保持端末装置へ送信する。なお、ログIDの割り当て方法は、上述と同様である。
以下、第1実施形態における情報配信システムSにおける端末装置1の構成及び動作について図面を参照して更に具体的に説明する。
[1.6.端末装置の構成及び動作の説明]
まず、図面を参照して、端末装置1の構成及び動作について説明する。
(端末装置の構成について)
まず、端末装置1の構成について説明する。図11は、本実施形態に係る情報配信システムSにおける端末装置1の概略構成を示す図である。
端末装置1は、専用のコンピュータの他、一般のパーソナルコンピュータを適用可能であり、図11に示すように、制御部101と、各種データやパラメータを記憶する書き換え可能な記憶部102と、コンテンツ情報やログ情報などの各種情報を記憶するハードディスク(HDD)103と、コンテンツ投入装置10や他の端末装置1から取得したコンテンツ情報を一時的に記憶するバッファメモリ104と、ハードディスク103やバッファメモリ104に記憶したコンテンツ情報を順次取り出してデコードするデコーダ部105と、このデコーダ部105によってデコードされたコンテンツ情報のうち映像情報を後述の表示部107で表示可能な情報に変換処理する映像処理部106と、この映像処理部106からの出力に基づいて映像を表示する液晶表示装置(LCD)などの表示部107と、デコーダ部105によってデコードされたコンテンツ情報のうち音声情報を後述のスピーカ109で音波として出力可能な情報に変換処理する音声処理部108と、この音声処理部108からの出力に基づいて音波を出力するスピーカ109と、マウス及びキーボードなどからなる入力部110と、ネットワーク8を介して、コンテンツ投入装置10や他の端末装置1と通信するための通信部113とを備えている。なお、制御部101、記憶部102、ハードディスク103、バッファメモリ104、デコーダ部105、通信部113は、システムバス120を介して相互に接続されている。
制御部101は、CPU(Central Processing Unit)、内部ROM(Read Only Memory)及び内部RAM(Random Access Memory)から構成される。この内部ROMには、情報配信システムSに参加して、コンテンツ情報やログ情報を送受信するための情報処理プログラムが格納されており、CPUは内部ROMに記憶されている情報処理プログラムを読み出して実行することによって、上述したコンテンツ登録メッセージ送信手段、コンテンツ検索メッセージ送信手段、コンテンツ取得手段等、後述する自装置情報送信手段、登録メッセージ送信手段、検索メッセージ送信手段、情報取得手段、判定手段、所在情報送信手段、識別情報生成手段、所在情報削除手段等として機能する。
なお、この情報処理プログラムは、例えば、ネットワーク8に接続されたサーバ(例えば、コンテンツ投入装置10)から、ネットワーク8及び通信部113を介して、制御部101の内部ROMにダウンロードされるようにしてもよく、又CD−ROM等の記録媒体に記録されてから図示しない記録媒体ドライブを介して、制御部101の内部ROMに読み込まれるようにしてもよい。
また、記憶部102は、ルーティングテーブルを記憶するルーティングテーブル記憶手段としての機能、コンテンツインデックステーブルを記憶するコンテンツ所在情報記憶手段としての機能、ログインデックステーブルを記憶する所在情報記憶手段としての機能などを有する。
また、ハードディスク103は、コンテンツ投入装置10や他の端末装置1から取得したコンテンツ情報を記憶するコンテンツ情報記憶手段としての機能、自装置のログ情報を記憶する自装置ログ記憶手段としての機能、他の端末装置1のログ情報を記憶する情報記憶手段としての機能などを有する。
(端末装置1の動作)
以上のように構成された端末装置1の動作を具体的に説明する。図12〜図18は端末装置1の動作内容の一例を示すフローチャートである。なお、以下の各処理は、端末装置1の制御部101が上述した各手段等として機能することによって実行されるものである。なお、ここでは、本実施形態における特徴的な部分であるログ情報の送受信の動作を主として説明しており、一部の動作内容は省略している。
図12に示すように、端末装置1においてメイン電源スイッチ(図示せず)がON状態にされたときやリセットスイッチ(図示せず)が操作されたとき、制御部101のCPUは、記憶部102のアクセス許可、内部RAMの作業領域確保等の初期設定動作を実行し、内部ROMに記憶した情報処理プログラムを読み出して、制御部101としての機能を動作状態とした後(ステップS10)、情報配信システムSへ参加してステップS11に処理を移行する。
ここで、情報配信システムSへの参加は、制御部101による処理によって次のように行われる。まず、制御部101は、自装置のIPアドレスを所定のハッシュ関数で演算することによって自端末装置の端末IDを得る。制御部101は、この端末IDを宛先識別情報とし自装置の所在情報(IPアドレスなど)を含む参加メッセージを通信部113を介して所定の端末装置1へ送信する。この参加メッセージはDHTルーティングにより転送される。そして、この参加メッセージを受信した他の端末装置1は、自装置のルーティングテーブルから参加メッセージの転送回数に応じたレベルのテーブルの情報を取り出して、参加メッセージを送信した端末装置1へその情報を送信する。制御部101は、このように参加メッセージを受信した端末装置1からルーティングテーブルの情報を通信部113を介して取得し、これらの情報に基づいてルーティングテーブルを生成し、情報配信システムSに参加する。
また、制御部101は、情報配信システムSへの参加時にコンテンツ投入装置10からコンテンツカタログを取得し、表示部107にこのコンテンツカタログの内容を表示する。これにより、端末装置1の利用者は、情報配信システムSにおいて配信可能なコンテンツ情報を把握し、所定の操作を行って所望のコンテンツ情報を取得することが可能となる。
ステップS11において、制御部101は、ログ投入契機になったか否かを判定する。制御部101は、内部のタイマ(図示せず)によって、ログ投入契機を所定期間毎(例えば、1日毎)に発生させる。また、制御部101は、ログ情報が所定量(例えば、1,000件以上のログ情報)以上になったときにもログ投入契機を発生させる。なお、この所定期間や所定量は、入力部110の入力によって設定及びその変更が可能である。
この処理において、ログ投入契機になったと判定すると(ステップS11:Yes)、制御部101は、ログ投入処理を起動する(ステップS12)。このログ投入処理は、図13におけるステップS30〜S32の処理であり、後で詳述する。
一方、ログ投入契機ではないと判定すると(ステップS11:No)、制御部101は、投入ログを受信したか否かを判定する(ステップS13)。すなわち、制御部101は、他の端末装置1から送信される当該他の端末装置1のログ情報を通信部113を介して受信したか否かを判定する。
この処理において、他の端末装置1から投入ログを受信したと判定すると(ステップS13:Yes)、制御部101は、投入ログ受信処理を起動する(ステップS14)。この投入ログ受信処理は、図14におけるステップS40〜S42の処理であり、後で詳述する。
一方、他の端末装置1から投入ログを受信していないと判定すると(ステップS13:No)、制御部101は、他の端末装置1から送信されるログ登録メッセージを通信部113を介して受信したか否かを判定する(ステップS15)。
この処理において、ログ登録メッセージを受信したと判定すると(ステップS15:Yes)、制御部101は、ログ登録メッセージ受信処理を起動する(ステップS16)。このログ登録メッセージ受信処理は、図15におけるステップS50〜S52の処理であり、後で詳述する。
一方、ログ登録メッセージを受信していないと判定すると(ステップS15:No)、制御部101は、ログ情報取得指示があるか否かを判定する(ステップS17)。例えば、制御部101は、端末装置1の利用者による入力部110への所定操作がなされたときにログ情報取得指示が行われたと判定する。
この処理において、ログ情報取得指示があると判定すると(ステップS17:Yes)、制御部101は、ログ情報取得処理を起動する(ステップS18)。このログ情報取得処理は、図16におけるステップS60〜S65の処理であり、後で詳述する。
一方、ログ情報取得指示がないと判定すると(ステップS17:No)、制御部101は、他の端末装置1から送信されるログ検索メッセージを通信部113を介して受信したか否かを判定する(ステップS19)。
この処理において、ログ検索メッセージを受信したと判定すると(ステップS19:Yes)、制御部101は、ログ検索メッセージ受信処理を起動する(ステップS20)。このログ検索メッセージ受信処理は、図17におけるステップS70〜S74の処理であり、後で詳述する。
一方、ログ検索メッセージを受信していないと判定すると(ステップS19:No)、制御部101は、他の端末装置1から送信されるログ送信要求を通信部113を介して受信したか否かを判定する(ステップS21)。
この処理において、ログ送信要求を受信したと判定すると(ステップS21:Yes)、制御部101は、ログ送信処理を起動する(ステップS22)。このログ送信処理は、図18におけるステップS80〜S82の処理であり、後で詳述する。
一方、ログ送信要求を受信していないと判定すると(ステップS21:No)、制御部101は、その他の処理を行う必要があるか否かを判定する(ステップS23)。そして、その他の処理が必要であるとき(ステップS23:Yes)、制御部101は、当該その他の処理を行う(ステップS24)。例えば、コンテンツ投入装置10から送信されるコンテンツ情報を通信部113を介して受信したとき、ルーティングテーブルに基づいて、コンテンツ登録メッセージを送信する。また、入力部110を介して利用者からのコンテンツ情報の取得操作があったとき、当該コンテンツ情報のコンテンツIDに基づいてコンテンツ検索メッセージを生成して、ルーティングテーブルに基づいて、このコンテンツ検索メッセージを通信部113を介して送信する。また、制御部101は、ハードディスク103に記憶した他の端末装置1のログ情報が記憶してから所定期間(例えば、1ヶ月)経過したか否かを判定し、所定期間経過したと判定すると、所定期間が経過したログ情報をハードディスク103から削除する。また、制御部101は、記憶部102のログインデックステーブルに記憶したログ保持端末装置の所在情報がその記憶から所定期間(例えば、1ヶ月)経過したか否かを判定し、所定期間経過したと判定すると、所定期間が経過したログ情報をハードディスク103から削除する。このように制御部101は、他の端末装置1の所在情報をログインデックステーブルに記憶した後、所定期間経過したときに、ログインデックステーブルに記憶したログ保持端末装置の所在情報を削除する所在情報削除手段として機能する。
ステップS23においてその他の処理が必要ではないと判定したとき(ステップS23:No)、又はステップS12,S14,S16,S18,S20,S22,S24の処理が終了したとき、制御部101は、終了指示を検知したか否かを判定する(ステップS25)。例えば、自端末装置の電源がOFF状態へ移行したとき、制御部101は、終了指示を検知する。
ステップS25において、終了指示を検知したと判定すると(ステップS25:Yes)、制御部101は、メイン処理を終了し、一方、終了指示を検知していないと判定すると(ステップS25:No)、制御部101は、ステップS11からの処理を繰り返す。
次に、ステップS12において起動されるログ投入処理について図13のフローチャートを参照して具体的に説明する。図13は端末装置1におけるログ投入処理のフローチャートである。
図13に示すように、ログ投入処理を開始すると、制御部101は、所定期間のログ情報をハードディスク103から取り出す(ステップS30)。例えば、ハードディスク103に2007年6月20日分〜2007年6月25日分のログ情報があり、2007年6月25日分のログ情報がまだ送信されていないときには、2007年6月25日分のログ情報を取り出す。ハードディスク103に記憶されているログ情報は、制御部101の処理によって記憶されるものであり、上述したように、コンテンツ情報の取得日時、再生日時及び送信日時などのコンテンツ情報の処理履歴のほか、他の端末装置1との通信エラーや端末装置1内の動作エラーなどの各種エラー情報、コンテンツ情報の取得処理時間や送信処理時間、端末装置1内の負荷状態などの履歴などを自装置ログ記憶手段としてのハードディスク103に記憶する。なお、エラー情報には、エラー内容とエラー日時などが含まれ、コンテンツ情報の処理履歴には、日時情報や通信先端末装置の情報などが含まれ、各々状態が発生したときにハードディスク103に記憶する。また、端末装置1内の負荷状態には、負荷率や負荷原因などが含まれ、定期的にハードディスク103に記憶されるものであるが、負荷率が所定値以上になったときにハードディスク103に記憶されるようにしてもよい。
次に、制御部101は、記憶部102に記憶したルーティングテーブルからログ情報の投入先の端末装置1(以下、「ログ投入先端末装置」とする。)を2以上決定する(ステップS31)。投入先の端末装置1の決定方法は[1.5.動作履歴(ログ)の管理方法]で説明した通りである。
このように決定したログ投入先端末装置に対して、自装置の端末ID、投入するログ情報及びこのログ情報の日時情報(例えば、2007年6月25日分のログ情報の場合には、2007年6月25日)を含むログ投入要求を通信部113を介して送信して(ステップS32)、ログ投入処理を終了する。このように制御部101は、ルーティングテーブルに所在情報が記憶された他の端末装置1をランダムに2以上選択し、当該選択した他の端末装置1へ自装置のログ情報を通信部113を介して送信する自装置情報送信手段として機能する。なお、制御部101は、ルーティングテーブルを参照せず、情報配信システムSに割り当てられる端末IDのうち2以上の端末IDをランダムに選択し、選択した端末IDを宛先識別情報とし、記憶部102のルーティングテーブルに基づいて、自装置のログ情報を送信する自装置情報送信手段として機能させるようにしてもよい。
次に、ステップS14において起動される投入ログ受信処理について図14のフローチャートを参照して具体的に説明する。図14は端末装置1における投入ログ受信処理のフローチャートである。
図14に示すように、投入ログ受信処理を開始すると、制御部101は、ステップS13において受信したと判定した他の端末装置1の端末IDとログ情報の日時情報からログIDを算出する(ステップS40)。ログIDの算出方法は[1.5.動作履歴(ログ)の管理方法]で説明した通りである。このように、制御部101は、ハードディスク103に他の端末装置1のログ情報を記憶するとき、当該他の端末装置1の識別情報である端末ID及び当該ログ情報の日付に基づいて、ハードディスク103に記憶したログ情報に識別情報であるログIDを割り当てる識別情報生成手段として機能する。
次に、制御部101は、ステップS13において受信したと判定した他の端末装置1のログ情報をステップS40で算出したログIDに関連づけて、情報記憶手段としてのハードディスク103に記憶する(ステップS41)。このように制御部101は、他の端末装置1から送信される当該他の端末装置のログ情報を記憶する情報記憶制御手段として機能する。
その後、制御部101は、ログIDに応じた宛先にログ登録メッセージを送信して(ステップS42)、投入ログ受信処理を終了する。具体的には、ステップS40で算出したログIDを宛先識別情報とし、自装置の端末ID及びIPアドレスなどを含むログ登録メッセージを通信部113を介して送信する。このとき、制御部101は、記憶部102に記憶されているルーティングテーブルを参照して、宛先識別情報に近い端末装置を、ログ登録メッセージを送信する端末装置1として決定し、当該端末装置1へログ登録メッセージを送信する。このように制御部101は、情報記憶手段としてのハードディスク103にログ情報を記憶したとき、当該ログ情報に割り当てられる識別情報であるログIDを宛先識別情報とし、記憶部102に記憶したルーティングテーブルに基づいて、自装置の所在情報であるIPアドレスを含む登録メッセージを送信する登録メッセージ送信手段として機能する。
次に、ステップS16において起動されるログ登録メッセージ受信処理について図15のフローチャートを参照して具体的に説明する。図15は端末装置1におけるログ登録メッセージ受信処理のフローチャートである。
図15に示すように、ログ登録メッセージ受信処理を開始すると、制御部101は、ログ登録メッセージに含まれる情報を記憶部102のログインデックステーブルに記憶する(ステップS50)。ここで、「ログ登録メッセージに含まれる情報」として、ログ保持端末装置の所在情報であるIPアドレスやログ保持端末装置の端末IDなどがある。このように制御部101は、通信部113を介して受信したメッセージがログ登録メッセージであるとき、当該ログ登録メッセージに含まれる他の端末装置の所在情報を所在情報記憶手段としてのログインデックステーブルに記憶する所在情報記憶制御手段として機能する。
次に、制御部101は、ログ登録メッセージが自装置宛であるか否かを判定する(ステップS51)。自装置宛のメッセージであるか否かは、ログ登録メッセージの宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、ログ登録メッセージの宛先識別情報が自装置の識別情報である端末IDと近いときに、自装置宛のメッセージであると判定される。
この処理において、ログ登録メッセージが自装置宛のメッセージではないと判定すると(ステップS51:No)、制御部101は、このログ登録メッセージを通信部113を介して他の端末装置1へ転送する(ステップS52)。すなわち、制御部101は、記憶部102に記憶したルーティングテーブルに記憶した端末IDのうち、ログ登録メッセージの宛先識別情報に近い端末IDを有する端末装置1の所在情報をルーティングテーブルから取り出して、この所在情報に対してログ登録メッセージを転送する。
ステップS52の処理が終了したとき、或いは、ログ登録メッセージが自装置宛のメッセージであると判定すると(ステップS51:Yes)、制御部101は、ログ登録メッセージ受信処理を終了する。
次に、ステップS18において起動されるログ情報取得処理について図16のフローチャートを参照して具体的に説明する。図16は端末装置1におけるログ情報取得処理のフローチャートである。
図16に示すように、ログ情報取得処理を開始すると、制御部101は、入力部110からの操作指示に応じたログ情報のログIDを判断する(ステップS60)。この入力部110からの操作指示には、端末装置1の端末IDとログ情報の日時が含まれる。すなわち、端末装置1の利用者は、取得したいログ情報の端末装置1の端末IDとログ情報の日時を入力部110から入力し、制御部101は、これらの情報に基づいてログIDを判断する。例えば、端末ID「2102」における2007年6月20日のログ情報の取得が入力部110への入力により指示された場合、これらの情報を並べた情報(例えば、「210220070620」)を所定のハッシュ関数によりハッシュ化することによって、ログIDが算出される。
次に、制御部101は、判定したログIDに基づいた宛先へログ検索メッセージを送信する(ステップS61)。具体的には、制御部101は、ステップS60で算出したログIDを宛先識別情報として、当該ログIDと自装置の所在情報であるIPアドレスとを含むログ検索メッセージを通信部113を介して送信する。このとき、制御部101は、記憶部102に記憶されているルーティングテーブルを参照して、宛先識別情報に近い端末装置を、ログ検索メッセージを送信する端末装置1として決定し、当該端末装置1へログ検索メッセージを送信する。このように制御部101は、他の端末装置1が記憶するログ情報に割り当てられる識別情報であるログIDを宛先識別情報として、記憶部102に記憶したルーティングテーブルに基づいて、ログの情報を保持する端末装置を検索する検索メッセージを送信する検索メッセージ送信手段として機能する。
このようにログ検索メッセージを送信した後、制御部101は、ログ保持端末装置の所在情報(IPアドレス)を通信部113を介して受信したか否かを判定する(ステップS62)。
この処理において、ログ保持端末装置の所在情報を受信したと判定すると(ステップS62:Yes)、制御部101は、受信した所在情報に基づいて、ログ保持端末装置に対してログ情報の送信を要求し(ステップS63)、当該ログ保持端末装置からログ情報を取得する(ステップS64)。このように制御部101は、ログ検索メッセージによって検索された端末装置1からログ情報を取得する情報取得手段として機能する。
一方、ログ保持端末装置の所在情報を受信していないと判定すると(ステップS62:No)、制御部101は、表示部107にログ情報の取得エラーの表示を行う(ステップS65)。ステップS64の処理又はステップS65の処理が終了すると、制御部101は、ログ情報取得指示処理を終了する。
次に、ステップS20において起動されるログ検索メッセージ受信処理について図17のフローチャートを参照して具体的に説明する。図17は端末装置1におけるログ検索メッセージ受信処理のフローチャートである。
図17に示すように、ログ検索メッセージ受信処理を開始すると、制御部101は、受信したログ検索メッセージの検索対象であるログ保持端末装置の所在情報を保持しているか否かを判定する(ステップS70)。すなわち、制御部101は、受信したログ検索メッセージに示されるログIDのログ情報を保持する端末装置であるログ保持端末装置の所在情報が記憶部102のログインデックステーブルに含まれているか否かを判定する。このように制御部101は、受信したメッセージがログ検索メッセージであるとき、このログ検索メッセージの検索対象である端末装置1の所在情報がログインデックステーブルに記憶されているか否かを判定する判定手段として機能する。
この処理において、ログ検索メッセージの検索対象であるログ保持端末装置の所在情報を保持していると判定すると(ステップS70:Yes)、制御部101は、ログ検索メッセージに示されるログIDのログ情報を保持するログ保持端末装置の所在情報(IPアドレス)を記憶部102に記憶したログインデックステーブルから取り出して、ログ検索メッセージの送信元端末装置へ送信する(ステップS71)。このように制御部101は、ログ検索メッセージの検索対象であるログ保持端末装置の所在情報を保持していると判定したとき、ログ検索メッセージに示されたログIDのログ情報を保持するログ保持端末装置の所在情報をログ検索メッセージの送信元の端末装置へ送信する所在情報送信手段として機能する。
一方、ログ検索メッセージの検索対象であるログ保持端末装置の所在情報を保持していないと判定すると(ステップS70:No)、制御部101は、ログ検索メッセージが自装置宛であるか否かを判定する(ステップS72)。自装置宛のメッセージであるか否かは、ログ検索メッセージの宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、ログ検索メッセージの宛先識別情報が自装置の識別情報である端末IDと近いときに、自装置宛のメッセージであると判定する。
この処理において、ログ検索メッセージが自装置宛のメッセージではないと判定すると(ステップS72:No)、制御部101は、このログ検索メッセージを通信部113を介して転送する(ステップS74)。すなわち、制御部101は、記憶部102に記憶したルーティングテーブルに記憶した端末IDのうち、ログ検索メッセージの宛先識別情報に近い端末IDを有する端末装置1の所在情報をルーティングテーブルから取り出して、この所在情報に対してログ検索メッセージを転送する。
一方、ログ検索メッセージが自装置宛のメッセージであると判定すると(ステップS72:Yes)、制御部101は、ログ検索メッセージの送信元の端末装置1に対し、通信部113を介して、ログ保持端末装置の所在情報を保持していない旨の通知を行う(ステップS73)。ステップS71,S73,S74の処理が終了すると、制御部101は、ログ検索メッセージ受信処理を終了する。
次に、ステップS22において起動されるログ送信処理について図18のフローチャートを参照して具体的に説明する。図18は端末装置1におけるログ送信処理のフローチャートである。
図18に示すように、ログ送信処理を開始すると、制御部101は、要求されたログ情報が記憶されているか否かを判定する(ステップS80)。すなわち、制御部101は、要求されたログ情報がハードディスク103に記憶されているか否かを判定する。
この処理において、要求されたログ情報が記憶されていると判定すると(ステップS80:Yes)、制御部101は、ハードディスク103から要求されたログ情報を取り出して、要求元の端末装置1へ当該ログ情報を通信部113を介して送信する(ステップS81)。一方、要求されたログ情報が記憶されていないと判定すると(ステップS80:No)、制御部101は、ログ情報の送信ができない旨の通知を行う(ステップS82)。ステップS81,S82の処理が終了すると、制御部101は、ログ送信処理を終了する。
以上のように、各端末装置1のログ情報は、所定期間毎に情報配信システムS内の他の端末装置1に投入されて保持さることになり、特に複数の端末装置1に同一のログ情報を分散して配置することができるので、ログ情報を生成した端末装置1やログ情報を保持することとなった端末装置が故障したときや情報配信システムから脱退したときであっても、情報配信システムS内でログ情報を管理することができる。しかも、ルーティングテーブルを用いたDHTルーティングによって、端末装置1に保持させたログ情報を容易に取り出すことができる。特に、ログ情報が所定期間毎に生成され、端末装置1に記憶されているため、必要な期間のログ情報を取得することが容易になる。また、ログ情報は期間毎に分散して複数の端末装置1に記憶されることになるため、一つの端末装置1からログ情報を取得することに比べネットワーク上のトラフィックの混雑を抑制することができる。
[2.第2実施形態]
次に、第2実施形態における端末装置1の動作について説明する。第1実施形態における端末装置1では、自装置のログ情報を投入するときに、1又は2以上の端末装置を選択して直接ログ情報を投入することとしたが、本第2実施形態における端末装置1'では、1つの端末装置を選択してログ情報を投入し、このようにログ情報の投入を受けた端末装置1’がログ情報を記憶し、さらにこのログ情報を他の端末装置1'へ転送するようにしている。これにより、ログ情報を投入する端末装置1の処理負荷を低減することができる。なお、その他の動作については、第1実施形態における動作と同様であるため、ここでは説明を省略する。本第2実施形態の端末装置1'は、第1実施形態における端末装置1と基本的に同一構成であり、制御部101の内部ROMに記憶した情報処理プログラムの内容が一部異なる。
まず、図19を参照して、第2実施形態の端末装置1'におけるログ情報の投入方法について説明する。
端末装置1'は、自装置のログ情報を投入(配布)する1つの端末装置1'を選択して、当該端末装置1'へログ情報を送信する。例えば、図19には、端末装置1'eが自装置のログ情報を送信する他の端末装置1として端末装置1'iを選択し、投入するログ情報のログIDを「3113」として、ログIDのログ情報を当該端末装置1'iに送信したときの様子が示されている(図19に示す(1)参照)。このとき、端末装置1'eからは、ログ情報に加えて、端末装置1eの端末ID及びログ情報の日時の情報など(以下、「投入ログ情報」とする。)が端末装置1'iへ送信される。
端末装置1'iは、投入ログ情報を端末装置1'eから受信すると、この投入ログ情報の当該ログ情報にログIDを割り当てる。さらに、端末装置1'iは、記憶部102に記憶したルーティングテーブルに基づいて、投入ログ情報を転送する。このとき、端末装置1'iの制御部101は、ルーティングテーブルに記憶したレベル2に対応する端末装置1'(例えば、図4に示すルーティングテーブルを有しているとき、制御部101は、端末ID「1003」,「1221」,「1313」を有する端末装置1')を選択して、投入ログ情報を転送する。この転送を受信した各端末装置1'は、さらにこの投入ログ情報を転送する。このとき、これらの端末装置1'の制御部101は、ルーティングテーブルに記憶したレベル3に対応する端末装置1'を選択して、投入ログ情報を転送する。このように、投入ログ情報は、転送される毎にルーティングテーブルのレベルを下げて転送する端末装置1'を選択するようにしており、これにより多数の端末装置1'に効率よく、ログ情報を記憶させることができる。なお、このように情報やメッセージを転送する方法は、本出願人が出願した特開2006−277338号公報に記載されており、ここでは更なる説明を省略する。
ここで、図20は、本第2実施形態における端末装置1'の投入ログ受信処理のフローチャートを示す。
図20に示すように、制御部101は、上述したステップS40の処理と同様に、投入ログ受信処理を開始すると、上述したステップS40の処理と同様に、ログIDを算出する(ステップS100)。その後、制御部101は、上述したステップS41の処理と同様に、受信したログ情報をログIDに関連づけて記憶する(ステップS101)。
次に、制御部101は、後述するレベル情報に基づいて転送先端末装置があるか否かを判定する(ステップS102)。転送先端末装置があるか否かは、レベル情報とルーティングテーブルのレベルとを比較して判断される。すなわち、ルーティングテーブルのレベルが4まであるときに、投入ログ情報に含まれるレベル情報が4であるときには、転送先端末装置がないと判定する。
この処理において、転送先端末装置があると判定すると(ステップS102:Yes)、制御部101は、記憶部102に記憶したルーティングテーブルに基づいて、投入ログ情報を転送する端末装置を決定し、当該端末装置へ投入ログ情報を通信部113を介して転送する(ステップS103)。例えば、受信した投入ログ情報にレベル情報が含まれていないとき、制御部101は、ルーティングテーブルのレベル2に記憶されている端末装置1に対して、投入ログ情報を送信する。また、受信した投入ログ情報に含まれるレベル情報が3であるとき、制御部101は、ルーティングテーブルのレベル3に記憶されている端末装置1'に対して、投入ログ情報を送信する。なお、このレベル情報は、投入ログ情報を転送する端末装置1'が付与又は変更するものである。例えば、投入ログ情報にレベル情報が含まれていないときには、レベル情報を3とした投入ログ情報を転送し、投入ログ情報にレベル情報が含まれているときには、そのレベル情報のレベルを1だけ下げたレベル情報に変更した投入ログ情報を転送する。
ステップS102において、転送先端末装置がないと判定したとき(ステップS102:No)、或いはステップS103の処理が終了したとき、制御部101は、上述したステップS42の処理と同様に、ログIDに応じた宛先にログ登録メッセージを送信して(ステップS104)、投入ログ受信処理を終了する。
このように、第2実施形態における端末装置1'は、投入ログ情報を転送させて、ログ情報を記憶させるものであり、多数の端末装置1'に効率よくログ保持端末装置を配置することができる。
[3.第3実施形態]
第1実施形態及び第2実施形態においては、ログ検索メッセージの送信元の端末装置(ログリクエスト端末装置)に対してログ保持端末装置の所在情報を送信し、ログリクエスト端末装置がログ保持端末装置へログ情報の送信を要求することとしたが、本第3実施形態においては、ログ検索メッセージに対して、ログ保持端末装置の所在情報を保持する端末装置がログ保持端末装置に対してログ情報の送信を依頼し、当該ログ保持端末装置がログリクエスト端末装置に対してログ情報を直接送信するものである。なお、その他の動作については、第1実施形態や第2実施形態における動作と同様であるため、ここでは説明を省略する。本第3実施形態の端末装置1”は、第1実施形態における端末装置1や第2実施形態における端末装置1'と基本的に同一構成であり、制御部101の内部ROMに記憶した情報処理プログラムの内容が一部異なる。
図21に示すように、例えば、端末装置1”hがログID「3113」を検索するログ検索メッセージを送信する(図21に示す(1)参照)と、このログ検索メッセージは、DHTルーティングにより転送され、端末装置1”dに到達する(図21に示す(2)参照)。端末装置1”dは、受信したログ検索メッセージに示されたログIDのログ保持端末装置の所在情報が記憶部102に記憶したログインデックステーブルに含まれているか否かを判定する。このように制御部101は、受信したメッセージがログ検索メッセージであるとき、ログ検索メッセージに示されたログIDのログ情報を保持する端末装置の所在情報がログインデックステーブルに記憶されているか否かを判定する判定手段として機能する。
ログ検索メッセージに示されたログIDのログ保持端末装置の所在情報が記憶部102に記憶したログインデックステーブルに含まれていると判定すると、制御部101は、記憶部102のログインデックステーブルに記憶されたログID「3113」のログ保持端末装置1”nの所在情報を取り出し、このログ保持端末装置1”nに対して、ログID「3113」のログ情報を端末装置1”hへ送信するように依頼する(図21に示す(3)参照)。このように制御部101は、ログ検索メッセージの検索対象であるログ保持端末装置の所在情報を有していると判定したとき、当該ログ保持端末装置に対し、ログ検索メッセージの送信元の端末装置1”へログ情報の送信を依頼する情報送信依頼手段として機能する。
ログ情報の送信依頼を受けたログ保持端末装置1”nは、依頼先の端末装置1”hに対して、ハードディスク103に記憶したログID「3113」のログ情報を通信部113を介して送信する(図21に示す(4)参照)。このように制御部101は、他の端末装置1”からハードディスク103に記憶したログ情報の送信依頼があったとき、依頼先の端末装置1”へログ情報の送信する情報送信手段として機能する。
[4.その他の実施形態]
上述した実施形態においては、ログ情報とコンテンツ情報とを分けて説明したが、ログ情報をコンテンツ情報の一つとして取り扱うようにすることもできる。このとき、ログID、ログインデックステーブル、ログ検索メッセージ、ログ登録メッセージなどは不要となり、コンテンツ情報と同様に処理されることになる。このようにすることで、ログ情報とコンテンツ情報の切り分けが必要なくなり、処理が簡易なものとなる。
但し、ログ情報の識別情報であるコンテンツIDが他のコンテンツ情報の識別情報であるコンテンツIDと重複しないようにする必要がある。従って、例えば、ログ情報の場合は、先頭に「1」をつけた番号をハッシュ化するようにし、ログ情報以外のコンテンツ情報は、千号に「0」をつけた番号をハッシュ化することで、識別情報の重複を回避する。
ログ情報を含むコンテンツ情報は、ハードディスク103(情報記憶手段の一例に相当)に記憶される。また、制御部101は、登録メッセージ送信手段として、ハードディスク103に記憶したログ情報を含むコンテンツ情報に割り当てられる識別情報を宛先識別情報とし、ルーティングテーブルに基づいて、自装置の所在情報を含む登録メッセージを送信する。また、制御部101は検索メッセージ送信手段として、他の端末装置が記憶するログ情報を含むコンテンツ情報に割り当てられる識別情報(コンテンツID)を宛先識別情報として、ルーティングテーブルに基づいて、ログ情報を含むコンテンツ情報を保持する端末装置を検索する検索メッセージを送信する。また、制御部101は情報取得手段として、検索メッセージによって検索された端末装置からログ情報を含むコンテンツ情報を取得する。
以上、本発明の実施の形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
例えば、上述の実施形態においては、ログリクエスト端末装置やコンテンツリクエスト端末装置が、一つのログ情報やコンテンツ情報を一つのログ保持端末装置やコンテンツ保持端末装置から取得するようにしたが、2以上のログ保持端末装置やコンテンツ保持端末装置からそれぞれログ情報やコンテンツ情報の一部を取得することで、結果的に2以上のログ保持端末装置やコンテンツ保持端末装置から一つのログ情報やコンテンツ情報を取得するようにしてもよい。
また、端末装置の所在情報としてIPアドレスを例にして説明したが、IPアドレスに加えポート番号を含めて所在情報としてもよく、ネットワーク上の位置が特定できるものであればよい。
また、各端末装置1において、同一のログ情報を定期的に他の端末装置1へ投入するようにしてもよい。この場合、各端末装置1の制御部101は、ログ保持端末装置の所在情報をログインデックステーブルに記憶した後、所定期間内にログ保持端末装置から再度の登録メッセージを受信しないとき、ログインデックステーブルに記憶したログ保持端末装置の所在情報を削除するようにしてもよい。このようにすることで、例えば、ログ保持端末装置が情報配信システムSから脱退したときなどに、このログ保持端末装置の所在情報を通知することを回避することができる。このように制御部101は、他の端末装置1の所在情報をログインデックステーブルに記憶した後、所定期間内に当該他の端末装置1から次の登録メッセージを受信しないとき、ログインデックステーブルに記憶した他の端末装置の所在情報を削除する所在情報削除手段として機能するようにしてもよい。