(57)【特許請求の範囲】
【請求項１】
Ｐ２Ｐネットワークにより、上流の端末装置から映像ストリームのデータを受信しバッファメモリに蓄積して再生し、前記バッファメモリから映像ストリームのデータを読み出して下流の端末装置へ送信する端末装置において、
前記上流の端末装置のバッファメモリに蓄積されている映像ストリームのデータのうち、前記上流の端末装置における再生前の映像ストリームのデータ及び再生後の所定時間前までの映像ストリームのデータを識別するバッファマップを取得するためのバッファマップ要求を前記上流の端末装置へ送信し、前記上流の端末装置から前記バッファマップを取得するバッファマップ取得手段と、
前記バッファマップ取得手段により取得されたバッファマップにより識別される映像ストリームのデータを取得するためのデータ要求を、前記上流の端末装置へ送信し、前記上流の端末装置からデータ要求に対応するデータを受信し、前記バッファメモリに蓄積するデータ取得手段と、
を備えたことを特徴とする端末装置。
【請求項２】
請求項１に記載の端末装置において、
さらに、再生位置を示す視聴ポイントの映像ストリームのデータが前記バッファメモリから順次読み出されて再生されるときの当該端末装置の視聴ポイントと、前記上流の端末装置の視聴ポイントとに基づいて、当該端末装置の視聴ポイントが前記上流の端末装置の視聴ポイントよりも所定時間遅れている場合、前記映像ストリームのデータを蓄積しているサーバへデータ要求を送信し、前記サーバからデータ要求に対応するデータを受信して前記バッファメモリに蓄積する遅延処理手段、を備えたことを特徴とする端末装置。
【請求項３】
請求項２に記載の端末装置において、
前記上流の端末装置から取得するバッファマップには、前記上流の端末装置の視聴ポイントの情報が含まれており、
前記バッファマップ取得手段は、複数の前記上流の端末装置から前記バッファマップをそれぞれ取得し、
前記遅延処理手段は、前記バッファマップに含まれる視聴ポイントの情報に基づいて、複数の前記上流の端末装置の視聴ポイントのうち最も新しい視聴ポイントを特定し、当該端末装置の視聴ポイントが、前記特定した最も新しい視聴ポイントよりも所定時間遅れている場合、前記サーバへデータ要求を送信し、前記サーバからデータ要求に対応するデータを受信して前記バッファメモリに蓄積する、ことを特徴とする端末装置。
【請求項４】
請求項１から３までのいずれか一項に記載の端末装置において、
前記バッファマップ取得手段が、所定の時間間隔にて、前記バッファマップ要求を送信し、前記バッファマップを取得する場合に、
前記所定時間を、前記所定の時間間隔以上の時間とする、ことを特徴とする端末装置。
【請求項５】
請求項２または３に記載の端末装置とサーバとを含む通信システムであって、
前記サーバは、
前記映像ストリームのデータを蓄積する記憶装置と、
前記端末装置からデータ要求を受信し、前記記憶装置からデータ要求に対応する映像ストリームのデータを読み出し、前記読み出した映像ストリームのデータを前記端末装置へ送信する送受信手段と、
を備えたことを特徴とする通信システム。
【請求項６】
コンピュータを、請求項１から４までのいずれか一項に記載の端末装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライブ映像配信ネットワーク、アプリケーションレイヤマルチキャスト技術等におけるＰ２Ｐネットワークサービスに関し、特に、多数の利用者に安定したサービスを提供するＰ２Ｐネットワークサービスに用いる端末装置、通信システム及びプログラムに関するものである。
【背景技術】
【０００２】
従来、ライブ映像等を配信するＰ２Ｐネットワークサービスが知られている。Ｐ２Ｐネットワークサービスは、ネットワーク上で対等な関係にある端末装置間を相互に接続することにより、ライブ映像等のデータを送受信する通信サービスをいう。Ｐ２Ｐネットワークサービスを実現するための端末装置間の接続構造の例として、メッシュ型、ツリー型があり、端末装置間でデータを中継する手法の例として、プル型、プッシュ型がある。以下に説明するＰ２Ｐネットワークは、接続構造がメッシュ型であり、データ中継手法がプル型であるものとして説明する。
【０００３】
図１７（１）は、Ｐ２Ｐネットワークにおけるメッシュ型接続構造を説明する図であり、図１７（２）は、Ｐ２Ｐネットワークにおけるプル型中継手法を説明する図である。図１７（１）を参照して、メッシュ型接続構造は、上流の端末装置と下流の端末装置との間の接続数の関係が、ｍ：ｎ（ｍ，ｎは正の整数）となる構造をいう。このようなメッシュ型接続構造のＰ２Ｐネットワークにおいて、例えば、波長分割多重伝送を行うことで、安定した通信及びスケーラビリティを実現する手法が提案されている（例えば、特許文献１を参照）。
【０００４】
図１７（２）を参照して、プル型中継手法は、下流の端末装置からの要求に従って上流の端末装置がデータを送信する手法である。具体的には、端末装置１００Ａ，１００Ｂ，１００Ｃを含むＰ２Ｐネットワークの通信システムにおいて、以下のステップＳ１〜ステップＳ３の処理を行うことにより、上流の端末装置１００Ａ，１００Ｂが保持しているデータが下流の端末装置１００Ｃへ送信される。まず、上流の端末装置１００Ａは、保持しているデータのシーケンス番号（データチャンク（ＤＣ）番号）をバッファマップとして下流の端末装置１００Ｃへ通知する（ステップＳ１）。ＤＣについては後述する。端末装置１００Ｃは、端末装置１００Ａからバッファマップを受信し、バッファマップが示すシーケンス番号に基づいて、保持していないデータを取得するための要求を端末装置１００Ａへ通知する（ステップＳ２）。そして、端末装置１００Ａは、端末装置１００Ｃからの要求に従って、要求されたデータを端末装置１００Ｃへ送信する（ステップＳ３）。例えば、端末装置１００Ｃは、端末装置１００Ａ，１００Ｂから取得したバッファマップが示すシーケンス番号に基づいて、データ「１」「３」を取得するための要求を端末装置１００Ａへ送信することでデータ「１」「３」を受信し、データ「２」「４」を取得するための要求を端末装置１００Ｂへ送信することでデータ「２」「４」を受信する。これにより、端末装置１００Ｃは、上流の端末装置１００Ａ，１００Ｂからデータ「１」「２」「３」「４」を取得することができる。
【０００５】
また、端末装置１００Ｃは、自らが保持しているデータのシーケンス番号をバッファマップとして、図示しない下流の端末装置へ通知する。そして、端末装置１００Ｃは、下流の端末装置から要求に従って、要求されたデータを下流の端末装置へ送信する。これにより、端末装置１００Ｃは、下流の端末装置へデータを送信することができる。
【０００６】
このように、Ｐ２Ｐネットワークは、ライブ映像等の配信サービスを受ける複数の端末装置により構成されるＰ２Ｐグループを形成し、１台の端末装置に対し、上流側に複数の端末装置を接続し、下流側に複数の端末装置を接続する。１台の端末装置は、複数の上流の端末装置からデータを取得し、取得したデータを中継することで複数の下流の端末装置へデータを提供する。このようなＰ２Ｐネットワークの通信システムによれば、端末装置は、ライブ映像等を配信する配信サーバから直接的にデータを受信することなく、上流の端末装置からデータを受信するから、効率的な配信サービスを実現することができる。
【０００７】
図１８は、従来のＰ２Ｐネットワークにおける処理の概要を説明する図である。このＰ２Ｐネットワークを含む通信システムは、ライブ映像等のデータを配信する図示しない配信サーバ、配信サーバからのデータを中継する複数の端末装置、及び、Ｐ２Ｐネットワークに参加している端末装置のアドレスの情報等を管理する図示しないディレクトリサーバを備えて構成される。このようなＰ２Ｐネットワークに新たに端末装置１００Ｃが参加した場合、端末装置１００Ｃは、ディレクトリサーバから、上流の端末装置１００Ａ，１００Ｂに関するアドレスの情報等を取得する。そして、端末装置１００Ｃは、上流の端末装置１００Ａ，１００Ｂのバッファメモリに蓄積されている視聴ポイント以降（再生前）のライブ映像等のデータに関する情報が示されたバッファマップＡ，Ｂを取得する。視聴ポイントは、映像データが再生される現在の位置であって、配信サービスを受ける利用者が視聴する現時点の映像データの位置を示している。ここで、端末装置１００Ｃは、先に、端末装置１００ＢからバッファマップＢを取得し（ステップＳ１８０１）、その後に、端末装置１００ＡからバッファマップＡを取得するものとする（ステップＳ１８０２）。
【０００８】
バッファマップは、バッファメモリに蓄積されている映像データの状態（データチャンクの蓄積状態）を示す保管情報であり、データチャンク番号を識別可能な情報からなる。データチャンク（ＤＣ）とは、映像データを所定のサイズで分割したときのデータをいい、例えば１秒間の映像データをいう。データチャンク番号（ＤＣ番号）とは、映像データを所定のサイズ毎のＤＣに時間軸上で順番に分割したときのＤＣの番号をいい、映像データのＤＣを識別するためのシーケンシャルな番号をいう。
【０００９】
いま、端末装置１００Ａのバッファメモリには、ＤＣ１０〜ＤＣ２１が蓄積されており、端末装置１００Ａは再生中であって、その視聴ポイントがＤＣ１６であるとする。また、端末装置１００Ｂのバッファメモリには、ＤＣ１１〜ＤＣ１４が蓄積されており、端末装置１００Ｂは再生中でなく（非再生中であって）、その視聴ポイントがＤＣ１１であるとする。端末装置Ｂが非再生中であるのは、再生スレッショルドを満たすデータがバッファメモリに蓄積されていないからである。再生スレッショルドは、非再生中のときに再生を開始するために必要なデータ量の位置を示している。つまり、端末装置１００Ｂは、非再生中のときに再生を開始するために、ＤＣが再生スレッショルドの位置まで蓄積されるのを待って、視聴ポイントの位置のＤＣを読み出して再生を行う。図１８に示すように、バッファマップＡは、ＤＣ１６〜ＤＣ２１が蓄積されていることを示しており、バッファマップＢは、ＤＣ１１〜ＤＣ１４が蓄積されていることを示している。
【００１０】
端末装置１００Ｃは、取得したバッファマップＡ，Ｂのうちの先に取得したバッファマップＢを特定し、特定したバッファマップＢが示す最も古い（過去の）データを特定し、そのデータの位置を視聴ポイントに設定する。図１８では、バッファマップＢが示す最も古いデータはＤＣ１１であるから、端末装置１００Ｃは、ＤＣ１１の位置を視聴ポイントに設定する。そして、端末装置１００Ｃは、バッファマップＡ，Ｂに基づいて、データの取得先である端末装置１００Ａまたは端末装置１００Ｂを決定し、上流の端末装置１００Ａ，１００Ｂへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】国際公開第２００６／０４６５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
図１８に示した従来のＰ２Ｐネットワークにおける処理において、端末装置１００Ｃは、端末装置１００ＢからＤＣ１１〜ＤＣ１４を取得し（ステップＳ１８０３）、端末装置１００ＡからＤＣ１６〜ＤＣ２１を取得する（ステップＳ１８０４）。これにより、端末装置１００Ｃのバッファメモリには、ＤＣ１１〜ＤＣ１４，ＤＣ１６〜ＤＣ２１が蓄積されることになるが、ＤＣ１５が蓄積されない。このため、端末装置１００Ｃは、再生スレッショルドを満たすＤＣがバッファメモリに蓄積されないから、再生を開始することができない。
【００１３】
このように、端末装置１００Ａは再生中であり、端末装置１００Ｂは非再生中である。このため、端末装置１００Ｂは、再生を開始していない等が原因で、そのバッファメモリには過去のデータが蓄積されており、新たにＰ２Ｐネットワークに参加した端末装置１００Ｃが、先に端末装置１００ＢからバッファマップＢを取得した場合には、端末装置１００Ｃの視聴ポイントは過去のデータの位置になってしまう。結果として、図１８に示したように、端末装置１００ＡのバッファメモリにＤＣ１５が蓄積されているにも関わらず、バッファマップＡはＤＣ１５が蓄積されていることを示していないから、端末装置１００Ｃは、端末装置１００ＡからＤＣ１５を取得することができない。
【００１４】
そして、端末装置１００Ｃは、所定の時間間隔にて、上流の端末装置１００Ａ，１００ＢからバッファマップＡ，Ｂを取得し、バッファマップＡ，Ｂを更新する。端末装置１００Ｂまたは他の上流の端末装置がＤＣ１５を蓄積し、端末装置１００Ｃが更新したバッファマップＢまたは他の上流の端末装置から取得したバッファマップがＤＣ１５を蓄積していることを示している場合には、端末装置１００Ｃは、端末装置１００Ｂまたは他の上流の端末装置からＤＣ１５を取得してバッファメモリに蓄積し、再生を開始することができる。
【００１５】
しかしながら、端末装置１００Ｃは、ＤＣ１５を取得して再生を開始するために、端末装置１００Ｂまたは他の上流の端末装置にＤＣ１５が蓄積されるのを待つ必要があり、端末装置１００Ｃの視聴ポイントが、端末装置１００Ａの視聴ポイント及び当該Ｐ２Ｐネットワークにおける通常の視聴ポイントに比べて大きく遅延するという問題があった。
【００１６】
また、視聴ポイントが大きく遅延することに伴って、端末装置１００Ｃの所望するＤＣ１５が上流の端末装置のバッファメモリから廃棄されることがあり、端末装置１００Ｃは、結果として所望のＤＣ１５を取得することができなくなるという問題もあった。これでは、配信サービスを受ける端末装置１００Ｃの利用者は、映像の再生が開始するまで時間がかかったり、再生することができなかったりして、安定したサービスを受けることができない。
【００１７】
そこで、本発明は前記課題を解決するためになされたものであり、その目的は、Ｐ２Ｐネットワークを含む通信システムにおいて、所望のデータを効率良く取得することができ、安定した配信サービスを提供可能な端末装置、通信システム及びプログラムを提供することにある。
【課題を解決するための手段】
【００１８】
前記課題を解決するため、本発明による請求項１の端末装置は、Ｐ２Ｐネットワークにより、上流の端末装置から映像ストリームのデータを受信しバッファメモリに蓄積して再生し、前記バッファメモリから映像ストリームのデータを読み出して下流の端末装置へ送信する端末装置において、前記上流の端末装置のバッファメモリに蓄積されている映像ストリームのデータのうち、前記上流の端末装置における再生前の映像ストリームのデータ及び再生後の所定時間前までの映像ストリームのデータを識別するバッファマップを取得するためのバッファマップ要求を前記上流の端末装置へ送信し、前記上流の端末装置から前記バッファマップを取得するバッファマップ取得手段と、前記バッファマップ取得手段により取得されたバッファマップにより識別される映像ストリームのデータを取得するためのデータ要求を、前記上流の端末装置へ送信し、前記上流の端末装置からデータ要求に対応するデータを受信し、前記バッファメモリに蓄積するデータ取得手段と、を備えたことを特徴とする。
【００１９】
また、本発明による請求項２の端末装置は、請求項１に記載の端末装置において、さらに、再生位置を示す視聴ポイントの映像ストリームのデータが前記バッファメモリから順次読み出されて再生されるときの当該端末装置の視聴ポイントと、前記上流の端末装置の視聴ポイントとに基づいて、当該端末装置の視聴ポイントが前記上流の端末装置の視聴ポイントよりも所定時間遅れている場合、前記映像ストリームのデータを蓄積しているサーバへデータ要求を送信し、前記サーバからデータ要求に対応するデータを受信して前記バッファメモリに蓄積する遅延処理手段、を備えたことを特徴とする。
【００２０】
また、本発明による請求項３の端末装置は、請求項２に記載の端末装置において、前記上流の端末装置から取得するバッファマップには、前記上流の端末装置の視聴ポイントの情報が含まれており、前記バッファマップ取得手段が、複数の前記上流の端末装置から前記バッファマップをそれぞれ取得し、前記遅延処理手段が、前記バッファマップに含まれる視聴ポイントの情報に基づいて、複数の前記上流の端末装置の視聴ポイントのうち最も新しい視聴ポイントを特定し、当該端末装置の視聴ポイントが、前記特定した最も新しい視聴ポイントよりも所定時間遅れている場合、前記サーバへデータ要求を送信し、前記サーバからデータ要求に対応するデータを受信して前記バッファメモリに蓄積する、ことを特徴とする。
【００２１】
また、本発明による請求項４の端末装置は、請求項１から３までのいずれか一項に記載の端末装置において、前記バッファマップ取得手段が、所定の時間間隔にて、前記バッファマップ要求を送信し、前記バッファマップを取得する場合に、前記所定時間を、前記所定の時間間隔以上の時間とする、ことを特徴とする。
【００２２】
また、本発明による請求項５の通信システムは、請求項２または３に記載の端末装置とサーバとを含む通信システムであって、前記サーバが、前記映像ストリームのデータを蓄積する記憶装置と、前記端末装置からデータ要求を受信し、前記記憶装置からデータ要求に対応する映像ストリームのデータを読み出し、前記読み出した映像ストリームのデータを前記端末装置へ送信する送受信手段と、を備えたことを特徴とする。
【００２３】
また、本発明による請求項６のプログラムは、コンピュータを、請求項１から４までのいずれか一項に記載の端末装置として機能させることを特徴とする。
【発明の効果】
【００２４】
以上のように、本発明によれば、端末装置は、所望のデータを効率良く取得することができ、安定した配信サービスを提供することが可能となる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態によるＰ２Ｐネットワークを含む通信システムの全体構成を示す概略図である。
【図２】本発明の第１の実施形態（実施例１）におけるＰ２Ｐネットワークの処理の概要を説明する図である。
【図３】実施例１による端末装置の構成を示すブロック図である。
【図４】実施例１における送受信手段の構成を示すブロック図である。
【図５】バッファメモリに蓄積されるデータの量と、視聴ポイント、パッチングスレッショルド及び再生スレッショルドとの関係を説明する図である。
【図６】視聴ポイント及び再生スレッショルドを基準位置としたデータ再生処理を示すフローチャートである。
【図７】パッチングスレッショルドを基準位置としたパッチング処理を示すフローチャートである。
【図８】バッファマップを説明する図である。
【図９】実施例１による端末装置の処理を示すフローチャートである。
【図１０】図９に示す映像データ取得処理（ステップＳ９０４）の詳細を示すフローチャートである。
【図１１】図９に示す映像データ送信処理（ステップＳ９０５）の詳細を示すフローチャートである。
【図１２】ネットワーク参加処理を説明する図である。
【図１３】本発明の第２の実施形態（実施例２）におけるＰ２Ｐネットワークの処理（１）の概要を説明する図である。
【図１４】本発明の第２の実施形態（実施例２）におけるＰ２Ｐネットワークの処理（２）の概要を説明する図である。
【図１５】実施例２における送受信手段の構成を示すブロック図である。
【図１６】実施例２における映像データ取得処理（ステップＳ９０４）の詳細を示すフローチャートである。
【図１７】（１）は、Ｐ２Ｐネットワークにおけるメッシュ型接続構造を説明する図である。（２）は、Ｐ２Ｐネットワークにおけるプル型中継手法を説明する図である。
【図１８】従来のＰ２Ｐネットワークにおける処理の概要を説明する図である。
【発明を実施するための形態】
【００２６】
以下、本発明を実施するための形態について図面を用いて詳細に説明する。以下に説明する実施例１，２は、Ｐ２Ｐネットワークを構成する複数の端末装置、ライブ映像等の映像ストリームを配信する配信サーバ、及び、端末装置からの要求に従って映像データを送信するパッチングサーバを含む通信システムを対象とする。
【００２７】
実施例１の端末装置は、上流の端末装置のバッファメモリに蓄積されている視聴ポイント以降のデータ（再生前のデータ）に加え、視聴ポイント以前のデータ（再生後のデータ）に関する情報が示されたバッファマップを取得し、取得したバッファマップに基づいて、上流の端末装置からデータを取得することを特徴とする。これにより、例えば、一部の上流の端末装置が非再生中であり、他の上流の端末装置が再生中の場合、端末装置が、非再生中の上流の端末装置から取得したバッファマップが示す最も古いデータの位置を視聴ポイントに設定したときであっても、再生中の上流の端末装置から取得したバッファマップに基づいて、再生中の上流の端末装置から、非再生中の上流の端末装置が蓄積していないデータであって再生中の上流の端末装置が蓄積しているデータ（再生後のデータ）を取得することができる。したがって、端末装置は、上流の端末装置に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを効率良く取得することができる。また、視聴ポイントは大きく遅延することがないから、安定した配信サービスを実現することができる。
【００２８】
実施例２の端末装置は、実施例１に加えさらに、上流の端末装置からデータを取得できないため、視聴ポイントが上流の端末装置よりも所定時間遅れている場合、パッチングサーバからデータを取得することを特徴とする。これにより、端末装置が、再生中の上流の端末装置からデータを取得する直前に、その上流の端末装置がＰ２Ｐネットワークから離脱したり、そのデータが上流の端末装置に蓄積されていなかったりした場合であっても、端末装置は、そのデータを確実に取得することができる。したがって、端末装置は、上流の端末装置に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを効率良く、かつ確実に取得することができる。また、視聴ポイントは大きく遅延することがないから、一層安定した配信サービスを実現することができる。
【００２９】
〔Ｐ２Ｐネットワークの通信システム〕
図１は、本発明の実施形態によるＰ２Ｐネットワークを含む通信システムの全体構成を示す概略図である。この通信システム５は、図１７（１）（２）に示したメッシュ型接続構造及びプル型中継手法のＰ２Ｐネットワークを構成し、複数の端末装置（以下、「ノード」という。）１Ａ，１Ｂ，１Ｃ，・・・（総称して「ノード１」という。）、配信サーバ２、パッチングサーバ３及びディレクトリサーバ４を備えている。これらの装置は、インターネット等の通信回線を介して接続される。
【００３０】
ノード１は、Ｐ２Ｐネットワークにより、配信サーバ２から配信された映像ストリームのデータを、上流側に接続されたノード１（以下、「上流ノード１」という。）から受信して蓄積し、下流側に接続されたノード１（以下、「下流ノード１」という。）へ送信すると共に、蓄積したデータをデコードして再生する。また、ノード１は、蓄積している映像ストリームのデータが所定量以下になったときに行うパッチング処理、及び、上流ノード１からデータを取得できないため、視聴ポイントが上流ノード１よりも所定時間遅れているときに行う遅延処理により、パッチングサーバ３から映像ストリームのデータを受信する。パッチング処理及び遅延処理については後述する。
【００３１】
配信サーバ２は、映像ストリームをエンコードし、エンコードした映像ストリームのデータをＤＣ毎に、Ｐ２Ｐネットワークによりそれぞれのノード１へ配信すると共に、パッチングサーバ３へ送信する。
【００３２】
パッチングサーバ３は、配信サーバ２から映像ストリームのデータを連続的に受信して記憶装置に蓄積し、受信したデータに基づいて、現在の視聴ポイントを設定する。そして、パッチングサーバ３は、ノード１から視聴ポイント要求を受信し、設定した現在の視聴ポイントを、視聴ポイント要求を送信してきたノード１へ送信する。また、パッチングサーバ３は、ノード１からデータ要求を受信し、データ要求に対応した映像ストリームのデータを、データ要求を送信してきたノード１へ送信する。
【００３３】
ディレクトリサーバ４は、Ｐ２Ｐネットワークに参加しているノード１、配信サーバ２及びパッチングサーバ３のアドレス等の情報を管理すると共に、ノード１における視聴ポイント及び視聴ポイントの遅延時間を管理する。ディレクトリサーバ４は、Ｐ２Ｐネットワークに新たに参加したノード１から当該ノード１に関する情報を受信し、通信システム５を構成する配信サーバ２及びパッチングサーバ３に関する情報、Ｐ２Ｐネットワークに参加している全てまたは一部のノード１に関する情報、並びに、上流ノード１に関する情報及び下流ノード１に関する情報を、新たに参加したノード１へ送信する。これにより、新たに参加したノード１は、配信サーバ２、パッチングサーバ３、上流ノード１及び下流ノード１との間で通信を行うことができる。また、ディレクトリサーバ４は、ノード１から視聴ポイント及び視聴ポイントの遅延時間を受信し、全てのノード１の視聴ポイント及び遅延時間を管理する。
【００３４】
〔実施例１〕
まず、実施例１について説明する。実施例１のノード１は、上流ノード１のバッファメモリに蓄積されている視聴ポイント以降のデータ（再生前のデータ）に加え、視聴ポイント以前のデータ（再生後のデータ）に関する情報が示されたバッファマップを取得し、取得したバッファマップに基づいて、上流ノード１からデータを取得する例である。図２は、実施例１におけるＰ２Ｐネットワークの処理の概要を説明する図である。図２に示すように、ノード１Ｃの上流ノードがノード１Ａ，１Ｂであり、ノード１Ａのバッファメモリには、再生後のＤＣ１０〜ＤＣ１５及び再生前のＤＣ１６〜ＤＣ２１が蓄積され、視聴ポイントがＤＣ１６の位置に設定され、ノード１Ａは再生中であるものとする。また、ノード１Ｂのバッファメモリには、再生前のＤＣ１１〜ＤＣ１４が蓄積され、視聴ポイントがＤＣ１１に設定され、ノード１Ｂは非再生中であるものとする。
【００３５】
ノード１Ｃは、Ｐ２Ｐネットワークへ参加すると、図示しないディレクトリサーバ４から上流ノード１Ａ，１Ｂに関するアドレスの情報等を受信し、上流ノード１Ａ，１Ｂからバッファマップを取得する。ここで、ノード１Ｃは、先に、上流ノード１ＢからバッファマップＢを取得し（ステップＳ２０１）、その後に、上流ノード１ＡからバッファマップＡを取得するものとする（ステップＳ２０２）。
【００３６】
ノード１Ｃが上流ノード１Ａ，１Ｂから取得するバッファマップには、上流ノード１Ａ，１Ｂのバッファメモリに蓄積されている視聴ポイント以降のデータ（再生前のデータ）に加え、視聴ポイントよりも所定時間前のデータ（再生後の所定時間前までのデータ）に関する情報が示されている。図２では、上流ノード１Ａから取得するバッファマップＡには、ＤＣ１３〜ＤＣ２１に関する情報が示されており、ＤＣ１３〜ＤＣ１５は再生後のデータであり、ＤＣ１６〜ＤＣ２１は再生前のデータである。また、上流ノード１Ｂから取得するバッファマップＢには、ＤＣ１１〜ＤＣ１４に関する情報が示されており、ＤＣ１１〜ＤＣ１４は再生前のデータである。上流ノード１Ｂのバッファメモリには再生後のデータが蓄積されていないから、バッファマップＢには、再生後のデータに関する情報が示されていない。
【００３７】
ノード１Ｃは、取得したバッファマップＡ，Ｂのうちの先に取得したバッファマップＢを特定し、特定したバッファマップＢが示す最も古いＤＣ１１を特定し、そのＤＣ１１の位置を視聴ポイントに設定する。そして、ノード１Ｃは、バッファマップＡ，Ｂに基づいて、データの取得先である上流ノード１Ａまたは上流ノード１Ｂを決定し、上流ノード１Ａ，１Ｂへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【００３８】
図２に示した例では、ノード１Ｃは、バッファマップＢに基づいて、上流ノード１ＢからＤＣ１１〜ＤＣ１４を取得し（ステップＳ２０３）、バッファメモリに蓄積する（ステップＳ２０４）。そして、ノード１Ｃは、バッファマップＡに基づいて、上流ノード１ＡからＤＣ１５〜ＤＣ２１を取得し（ステップＳ２０５）、バッファメモリに蓄積する（ステップＳ２０６）。これにより、バッファメモリに蓄積されたデータは、再生スレッショルドに到達する。そして、ノード１Ｃは、バッファメモリから視聴ポイントのＤＣ１１を読み出し、再生を開始する（ステップＳ２０７）。
【００３９】
このように、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード１Ｃは、図１８に示した従来技術では取得できなかった所望のデータであるＤＣ１５を、上流ノード１Ａから取得することができる。したがって、ノード１Ｃは、非再生中の上流ノード１Ｂに所望のデータであるＤＣ１５が蓄積されるのを待つ必要がなく、再生中の上流ノード１Ａから効率良く取得することができ、低遅延にて再生を開始することができる。
【００４０】
（実施例１によるノードの構成）
実施例１によるノード１の構成について説明する。図３は、実施例１によるノード１の構成を示すブロック図である。このノード１は、送受信手段１０、バッファメモリ１１、再生手段１２、バッファマップ保存手段１３及びバッファマップ作成手段１４を備えている。図３に示す構成は、図１に示した通信システム５に含まれるノード１Ａ，１Ｂ，１Ｃ，・・・に共通である。送受信手段１０は、配信サーバ２、パッチングサーバ３、ディレクトリサーバ４、上流ノード１及び下流ノード１との間で通信を行う。
【００４１】
図４は、図３に示した送受信手段１０の構成を示すブロック図である。送受信手段１０は、ネットワーク参加処理手段５１、バッファマップ取得手段５２、視聴ポイント設定手段５３、データ取得手段５４、パッチング手段５５、バッファマップ送信手段５６及びデータ送信手段５７等を備えている。
【００４２】
送受信手段１０のネットワーク参加処理手段５１は、当該ノード１がＰ２Ｐネットワークに新たに参加するときに、当該ノード１のアドレス等の情報を含む参加要求をディレクトリサーバ４へ送信する。これにより、ディレクトリサーバ４は、当該ノード１に関する情報を管理する。また、ネットワーク参加処理手段５１は、ディレクトリサーバ４から、Ｐ２Ｐネットワークに参加しているノード１に関する情報、配信サーバ２及びパッチングサーバ３に関する情報、並びに、上流ノード１に関する情報及び下流ノード１に関する情報を受信する。これにより、当該ノード１は、上流ノード１及び下流ノード１、配信サーバ２及びパッチングサーバ３との間で通信を行うことができる。
【００４３】
バッファマップ取得手段５２は、バッファマップ保存手段１３からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード１へ送信し、バッファマップを上流ノード１から受信してバッファマップ保存手段１３に出力する。上流ノード１から受信したバッファマップは、バッファマップ保存手段１３によりバッファメモリ１１に保存され、所定の時間間隔にて更新される。
【００４４】
視聴ポイント設定手段５３は、当該ノード１がＰ２Ｐネットワークに参加して上流ノード１からバッファマップを取得した後、取得したバッファマップのうちの先に取得したバッファマップを特定し、特定したバッファマップが示す最も古いデータを特定し、そのデータの位置を視聴ポイントに設定する。
【００４５】
データ取得手段５４は、視聴ポイント以降（再生前）の未取得の映像データを取得するために、上流ノード１から取得したバッファマップをバッファメモリ１１から読み出し、バッファマップに基づいて、取得したいデータが蓄積されている上流ノード１（データの取得先）を特定し、データ要求を取得先の上流ノード１へ送信する。そして、データ取得手段５４は、取得先の上流ノード１からデータ要求に対応するデータを受信し、バッファメモリ１１に蓄積する。
【００４６】
パッチング手段５５は、パッチング処理の際に、データを取得するためのデータ要求をパッチングサーバ３へ送信し、パッチングサーバ３からデータ要求に対応するデータを受信し、バッファメモリ１１に蓄積する。
【００４７】
バッファマップ送信手段５６は、下流ノード１からバッファマップ要求を受信し、バッファマップ作成手段１４により作成された当該ノード１のバッファマップを、バッファマップ要求を送信してきた下流ノード１へ送信する。
【００４８】
データ送信手段５７は、下流ノード１からデータ要求を受信し、データ要求に応じたデータをバッファメモリ１１から読み出し、読み出したデータを、データ要求を送信してきた下流ノード１へ送信する。
【００４９】
図３に戻って、バッファメモリ１１には、映像データを所定のサイズに分割したＤＣがそのＤＣ番号と共に、時間軸上のシーケンシャル番号順に蓄積されている。また、バッファメモリ１１には、上流ノード１のバッファマップが保存されている。バッファメモリ１１の詳細については後述する。
【００５０】
再生手段１２は、バッファメモリ１１から視聴ポイントのデータを読み出して再生を行う。再生手段１２によるデータ再生処理の詳細については後述する。バッファマップ保存手段１３は、所定の時間間隔にて、上流ノード１のバッファマップを取得するための取得要求を送受信手段１０に出力し、送受信手段１０から上流ノード１のバッファマップを入力し、バッファメモリ１１に保存する。
【００５１】
バッファマップ作成手段１４は、所定の時間間隔にて、バッファメモリ１１に蓄積されたデータに基づいて、当該ノード１のバッファマップを作成する。そして、バッファマップ作成手段１４は、作成したバッファマップを送受信手段１０に出力する。バッファマップ作成手段１４により作成されたバッファマップは、下流ノード１からのバッファマップ要求に従って送信される。
【００５２】
具体的には、バッファマップ作成手段１４は、前述のとおり、バッファメモリ１１に蓄積されている視聴ポイント以降のデータ（再生前のデータ）に加え、視聴ポイントから所定時間前までのデータ（再生後の所定時間前までのデータ）に関する情報を示すバッファマップを作成する。
【００５３】
ここで、所定時間前までのデータにおける所定時間とは、バッファマップ保存手段１３及びバッファマップ取得手段５２によりバッファマップが更新される所定の時間間隔（更新時間）以上の時間であることが望ましい。例えば、バッファマップの更新時間が３秒であり、１秒毎のデータがＤＣとしてバッファメモリ１１に蓄積されている場合、所定時間は３秒以上となる。
【００５４】
図８は、バッファマップを説明する図である。このバッファマップは、再生後のデータであるＤＣ１２〜ＤＣ１４（３）及び再生前のデータであるＤＣ１５〜ＤＣ２２（４）に関する情報を示すものである。ＤＣを１秒間の映像データとし、バッファマップの更新時間を３秒とした場合、例えば、バッファマップ作成手段１４は、図８に示すように、再生前のデータＤＣ１５〜ＤＣ２２に加え、再生後の３秒前までのＤＣ１２〜ＤＣ１４に関する情報を示すバッファマップを作成する。
【００５５】
このように、再生前のＤＣに加え、再生後の所定時間前までのＤＣに関する情報を示すバッファマップが作成される。したがって、このバッファマップに基づいてデータを取得するノード１は、再生後の所定時間前までのＤＣに含まれる、従来技術では取得できなかった所望のデータを取得することができ、視聴ポイントの遅延を適度に抑制することができる。
【００５６】
この場合、所定時間を、バッファマップの更新時間である３秒としたとき、バッファメモリ１１には、所定時間である３秒前を超える時間のＤＣ（例えば６秒前までのＤＣ）が蓄積されるようにしてもよい。これにより、所望のデータを取得するためのデータ要求が多少遅れて送信されてきた場合であっても、バッファメモリ１１から所望のデータが廃棄される前に、当該所望データを確実に送信することができる。
【００５７】
尚、バッファマップ作成手段１４は、再生前のＤＣに加え、バッファメモリ１１に蓄積されている再生後の全てのＤＣに関する情報を示すバッファマップを作成するようにしてもよい。
【００５８】
（バッファメモリ）
図５は、バッファメモリ１１に蓄積されるデータの量と、視聴ポイント、パッチングスレッショルド及び再生スレッショルドとの関係を説明する図である。図５に示すように、バッファメモリ１１には、例えば、１４個のＤＣを蓄積する領域が確保されており、時間軸上に番号が若い順にＤＣが蓄積される。バッファメモリ１１は、新たなＤＣが蓄積されるときに、最も古いＤＣが廃棄される。図５の例は、バッファメモリ１１にＤＣ９〜ＤＣ２２が蓄積されており、新たなＤＣ２２が蓄積されたことにより、最も古いＤＣ８が廃棄されたことを示している。
【００５９】
また、バッファメモリ１１には、視聴ポイントを基準位置にして、これよりも番号が大きい方の所定位置にパッチングスレッショルド及び再生スレッショルドが予め設定されている。視聴ポイントは、前述のとおり、再生手段１２により映像データが再生される現在の位置であって、当該ノード１を用いて配信サービスを受ける利用者が視聴する現時点の映像データの位置を示している。視聴ポイントよりも古いデータが再生後のＤＣ（１）であり、視聴ポイント以降のデータが再生前のＤＣ（２）である。
【００６０】
パッチングスレッショルドは、パッチング処理において、上流ノード１の代わりにパッチングサーバ３からＤＣが取得される位置を示している。バッファメモリ１１に蓄積されたＤＣの位置がパッチングスレッショルド以下になると、パッチング処理が行われる。送受信手段１０のパッチング手段５５は、バッファメモリ１１を検索することにより、再生に伴ってＤＣが減少し、バッファメモリ１１の先頭から隙間なく蓄積された末尾のＤＣの位置を示すポインタがパッチングスレッショルド以下になった場合に（または、視聴ポイントからパッチングスレッショルドまでの間に存在しないＤＣがある場合に（ＤＣは存在するが、連番のＤＣが抜けている場合に、））、パッチングサーバ３からＤＣを取得する。再生スレッショルドは、前述のとおり、非再生中のときに再生を開始するために必要なデータ量の位置を示しており、再生手段１２が再生を最初に開始するために必要なデータ量の位置、または再生を再開するために必要なデータ量の位置を示している。再生手段１２は、バッファメモリ１１からＤＣを読み出して再生を開始または再開する際に、ＤＣが再生スレッショルドの位置まで蓄積されるのを待って、視聴ポイントの位置のＤＣを読み出して再生を行う。
【００６１】
（データ再生処理）
図６は、視聴ポイント及び再生スレッショルドを基準位置としたデータ再生処理を示すフローチャートである。このデータ再生処理は、再生手段１２により行われる。再生手段１２は、再生中であるか否かを判定し（ステップＳ６０１）、再生中であると判定した場合（ステップＳ６０１：Ｙ）、ステップＳ６０２へ移行し、再生中でない（非再生中である、再生が停止中である）と判定した場合（ステップＳ６０１：Ｎ）、ステップＳ６０５へ移行する。
【００６２】
再生手段１２は、再生中の場合、ステップＳ６０１から移行してバッファメモリ１１を検索し、バッファメモリ１１の先頭から隙間なく蓄積された末尾のＤＣの位置を示すポインタが視聴ポイント以下であるか否かを判定する（ステップＳ６０２）。再生手段１２は、ステップＳ６０２において、ＤＣのポインタが視聴ポイント以下でないと判定した場合（ステップＳ６０２：Ｎ）、再生を継続する（ステップＳ６０３）。つまり、再生手段１２は、バッファメモリ１１から視聴ポイントのＤＣを読み出し、ＤＣにより映像データを再生する。一方、再生手段１２は、ステップＳ６０２において、ＤＣのポインタが視聴ポイント以下であると判定した場合（ステップＳ６０２：Ｙ）、再生を停止する（ステップＳ６０４）。
【００６３】
再生手段１２は、再生中でない（非再生中である、再生が停止中である）場合、ステップＳ６０１から移行してバッファメモリ１１を検索し、ＤＣのポインタが再生スレッショルド以下であるか否かを判定する（ステップＳ６０５）。再生手段１２は、ステップＳ６０５において、ＤＣのポインタが再生スレッショルド以下でないと判定した場合（ステップＳ６０５：Ｎ）、再生を開始する（ステップＳ６０６）。つまり、再生手段１２は、バッファメモリ１１から視聴ポイントのＤＣを読み出し、ＤＣにより映像データを再生する。一方、再生手段１２は、ステップＳ６０５において、ＤＣのポインタが再生スレッショルド以下であると判定した場合（ステップＳ６０５：Ｙ）、再生停止を継続する。
【００６４】
このように、データ再生処理を行う再生手段１２は、バッファメモリ１１から視聴ポイントのＤＣを読み出し、ＤＣにより映像データを再生し、ＤＣが視聴ポイント以下になった場合に再生を停止し、ＤＣが再生スレッショルドの位置まで蓄積されるのを待って、再生を開始する。
【００６５】
（パッチング処理）
図７は、パッチングスレッショルドを基準位置としたパッチング処理を示すフローチャートである。このパッチング（手当て）処理は、送受信手段１０のパッチング手段５５により行われ、バッファメモリ１１に蓄積されたＤＣのポインタがパッチングスレッショルド以下になった場合に、上流ノード１からＤＣを取得する代わりに、緊急にパッチングサーバ３からＤＣを取得するものである。
【００６６】
送受信手段１０のパッチング手段５５は、バッファメモリ１１を検索し、ＤＣのポインタがパッチングスレッショルド以下であるか否かを判定し（ステップＳ７０１）、ＤＣのポインタがパッチングスレッショルド以下であると判定した場合（ステップＳ７０１：Ｙ）、パッチング処理を行う。すなわち、パッチング手段５５は、データ要求を上流ノード１へ送信する代わりに、パッチングサーバ３へ送信し（ステップＳ７０２）、パッチングサーバ３からデータ（ＤＣ）を受信し、ＤＣをバッファメモリ１１に蓄積する（ステップＳ７０３）。一方、パッチング手段５５は、ステップＳ７０１において、ＤＣのポインタがパッチングスレッショルド以下でないと判定した場合（ステップＳ７０１：Ｎ）、パッチング処理を行わない。
【００６７】
このように、パッチング処理を行うパッチング手段５５は、バッファメモリ１１に蓄積されたＤＣのポインタがパッチングスレッショルド以下になった場合に、上流ノード１からＤＣを取得する代わりに、緊急にパッチングサーバ３からＤＣを取得する。
【００６８】
（実施例１によるノードの処理）
次に、実施例１によるノード１の処理について説明する。図９は、実施例１によるノード１の処理を示すフローチャートである。
【００６９】
ノード１が、配信サービスを行うＰ２Ｐネットワークに新たに参加すると、ノード１は、ネットワーク参加処理を行う（ステップＳ９０１）。図１２は、ネットワーク参加処理を説明する図であり、ノード１ＣがＰ２Ｐネットワークに新たに参加した場合を示している。ノード１ＣがＰ２Ｐネットワークに新たに参加すると、ノード１Ｃにおける送受信手段１０のネットワーク参加処理手段５１は、ディレクトリサーバ４へアクセスし、当該ノード１Ｃに関する情報（ＵＲＬ、ＩＰアドレス等）をディレクトリサーバ４へ送信する（ステップＳ１２０１）。ディレクトリサーバ４は、ノード１Ｃからノード１Ｃに関する情報を受信すると、当該情報を記憶装置に登録して管理する。そして、ディレクトリサーバ４は、通信システム５を構成する配信サーバ２、パッチングサーバ３及びＰ２Ｐネットワークに参加している全てまたは一部のノード１に関する情報、並びに上流ノード１に関する情報及び下流ノード１に関する情報（ＵＲＬ、ＩＰアドレス等）を、ノード１Ｃへ送信する（ステップＳ１２０２）。これにより、ノード１Ｃは、配信サーバ２、パッチングサーバ３、上流ノード１及び下流ノード１へアクセスすることができ、通信を行うことができる。すなわち、図１２に示すように、ノード１Ｃは、上流ノード１Ａ，１Ｂへアクセスしてバッファマップ及び映像ストリームのデータを取得することができ、パッチングサーバ３へアクセスして視聴ポイント及び映像ストリームのデータを取得することができる。
【００７０】
図９に戻って、ノード１は、上流ノード１からバッファマップを取得する（ステップＳ９０２）。具体的には、ノード１における送受信手段１０のバッファマップ取得手段５２は、ディレクトリサーバ４から受信した上流ノード１に関する情報に基づいて、バッファマップ要求を上流ノード１へ送信し、上流ノード１からバッファマップを受信し、バッファマップ保存手段１３に出力する。バッファマップ保存手段１３は、バッファマップをバッファメモリ１１に保存する。通常、複数台の上流ノード１が存在する。
【００７１】
ノード１は、ステップＳ９０２にて取得したバッファマップのうち先に取得したバッファマップを特定し、そのバッファマップの最も古いデータの位置を視聴ポイントに設定する（ステップＳ９０３）。
【００７２】
ノード１は、上流ノード１から映像ストリームのデータを取得し、パッチング処理時及び遅延処理時に、パッチングサーバ３から映像ストリームのデータを取得し、バッファメモリ１１に蓄積する（ステップＳ９０４）。この映像データ取得処理の詳細については後述する。また、ノード１は、バッファメモリ１１から映像ストリームのデータを読み出し、下流ノード１へ送信する（ステップＳ９０５）。この映像データ送信処理の詳細については後述する。
【００７３】
ノード１は、Ｐ２Ｐネットワークから離脱したか否かを判定し（ステップＳ９０６）、Ｐ２Ｐネットワークから離脱していない場合（ステップＳ９０６：Ｎ）、映像データ取得処理（ステップＳ９０４）及び映像データ送信処理（ステップＳ９０５）を行い、Ｐ２Ｐネットワークから離脱した場合（ステップＳ９０６：Ｙ）、所定のネットワーク離脱処理を行う（ステップＳ９０７）。ノード１は、Ｐ２Ｐネットワークに参加している間、前述の映像データ取得処理（ステップＳ９０４）及び映像データ送信処理（ステップＳ９０５）を繰り返す。
【００７４】
（映像データ取得処理）
次に、図９に示した映像データ取得処理（ステップＳ９０４）について詳細に説明する。図１０は、その詳細な処理を示すフローチャートである。ノード１における送受信手段１０のデータ取得手段５４は、図９に示したステップＳ９０２または後述するステップＳ１００３にて取得した複数のバッファマップ（上流ノード１のバッファマップ）に基づいて、上流ノード１からデータを取得し、バッファメモリ１１に蓄積する（ステップＳ１００１）。具体的には、データ取得手段５４は、バッファマップに基づいて、データを取得するためのデータ要求を上流ノード１へ送信し、データ要求を送信した上流ノード１から、データ要求に対応するデータを受信し、バッファメモリ１１に蓄積する。
【００７５】
送受信手段１０の再生手段１２は、図６に示したデータ再生処理を行う（ステップＳ１００２）。すなわち、再生手段１２は、バッファメモリ１１から視聴ポイントのデータを読み出して映像データを再生し、バッファメモリ１１に蓄積されたデータが視聴ポイント以下になった場合に再生を停止し、データが再生スレッショルドの位置にまで蓄積されるのを待って、再生を開始する。
【００７６】
送受信手段１０のバッファマップ取得手段５２は、バッファマップ保存手段１３からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード１へ送信し、バッファマップを上流ノード１から受信してバッファマップ保存手段１３に出力する（ステップＳ１００３）。バッファマップ保存手段１３は、バッファマップをバッファメモリ１１に保存する。これにより、上流ノード１のバッファマップは、所定時間間隔で更新される。
【００７７】
送受信手段１０のパッチング手段５５は、図７に示したパッチング処理を行う（ステップＳ１００４）。すなわち、パッチング手段５５は、バッファメモリ１１に蓄積されたデータのポインタがパッチングスレッショルド以下になった場合に、上流ノード１からデータを取得する代わりに、緊急にパッチングサーバ３からデータを取得する。
【００７８】
（映像データ送信処理）
次に、図９に示した映像データ送信処理（ステップＳ９０５）について詳細に説明する。図１１は、その詳細な処理を示すフローチャートである。ノード１のバッファマップ作成手段１４は、所定の時間間隔にて、バッファメモリ１１に蓄積されたデータに基づいて、視聴ポイント以降のデータ（再生前のデータ）に加え、視聴ポイントよりも所定時間前のデータ（再生後の所定時間前までのデータ）に関する情報を示すバッファマップを作成する（ステップＳ１１０１）。
【００７９】
送受信手段１０のバッファマップ送信手段５６は、下流ノード１からバッファマップ要求を受信したか否かを判定し（ステップＳ１１０２）、バッファマップ要求を受信したと判定した場合（ステップＳ１１０２：Ｙ）、バッファマップ作成手段１４により作成されたバッファマップを、バッファマップ要求を送信してきた下流ノード１へ送信し（ステップＳ１１０３）、ステップＳ１１０４へ移行する。一方、バッファマップ送信手段５６は、ステップＳ１１０２において、バッファマップ要求を受信していないと判定した場合（ステップＳ１１０２：Ｎ）、ステップＳ１１０４へ移行する。
【００８０】
送受信手段１０のデータ送信手段５７は、ステップＳ１１０２またはステップＳ１１０３から移行して、下流ノード１からデータ要求を受信したか否かを判定し（ステップＳ１１０４）、データ要求を受信したと判定した場合（ステップＳ１１０４：Ｙ）、バッファメモリ１１からデータ要求に対応するデータを読み出し、読み出したデータを、データ要求を送信してきた下流ノード１へ送信し（ステップＳ１１０５）、処理を終了する。一方、データ送信手段５７は、ステップＳ１１０４において、データ要求を受信していないと判定した場合（ステップＳ１１０４：Ｎ）、処理を終了する。
【００８１】
以上のように、実施例１によれば、ノード１における送受信手段１０のバッファマップ取得手段５２は、上流ノード１からバッファメモリ１１に蓄積されている視聴ポイント以降のデータ（再生前のデータ）に加え、視聴ポイントよりも所定時間前のデータ（再生後の所定時間前までのデータ）に関する情報を示すバッファマップを取得し、データ取得手段５４は、取得したバッファマップに基づいて、上流ノード１からデータを取得するようにした。これにより、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード１は、上流ノード１から所望のデータを取得できる確率を高めることができ、従来技術では取得できなかったデータを取得することができる。例えば、一部の上流ノード１が非再生中であり、他の上流ノード１が再生中の状態の場合、ノード１が、非再生中の上流ノード１から取得したバッファマップが示す最も古いデータの位置を視聴ポイントに設定したときであっても、再生中の上流ノード１から取得したバッファマップに基づいて、再生中の上流ノード１から、非再生中の上流ノード１に蓄積されていないデータであって再生中の上流ノード１に蓄積されているデータ（再生後のデータ）を取得することができる。したがって、ノード１は、上流ノード１に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを従来技術より効率良く取得することができる。また、視聴ポイントは大きく遅延することがないから、安定した配信サービスを実現することができる。
【００８２】
また、実施例１では、バッファマップ取得手段５２が再生前のデータ及び再生後の所定時間前までのデータに関する情報を示すバッファマップを取得する場合において、その所定時間を、バッファマップが更新される所定の時間間隔（更新時間）以上の時間とした。これにより、バッファマップが更新され更新後のバッファマップに基づいて所望のデータを取得するまで待つことなく、ノード１は、再生後の所定時間前までのデータに関する情報を示すバッファマップに基づいて、迅速に所望のデータを取得することができる。したがって、所望のデータを効率良く取得することができ、視聴ポイントは大きく遅延することがない。
【００８３】
また、実施例１によれば、ノード１がＰ２Ｐネットワークに参加またはＰ２Ｐネットワークから離脱した場合であっても、全てのノード１は前述の処理を行うから、低遅延で安定した配信サービスを実現することができる。
【００８４】
〔実施例２〕
次に、実施例２について説明する。実施例２のノード１は、実施例１に加えさらに、上流ノード１からデータを取得できないため、視聴ポイントが上流ノード１よりも所定時間遅れている場合、パッチングサーバ３からデータを取得する例である。図１３は、実施例２におけるＰ２Ｐネットワークの処理（１）の概要を説明する図である。図１３に示す処理（１）は、ノード１が上流ノード１からバッファマップを取得した後、当該上流ノード１からデータを取得する前に、当該上流ノード１がＰ２Ｐネットワークから離脱する場合を示している。
【００８５】
図１３に示すように、ノード１Ｃの上流ノードがノード１Ａ，１Ｂであり、ノード１Ａのバッファメモリには、再生後のＤＣ１０〜ＤＣ１５及び再生前のＤＣ１６〜ＤＣ２１が蓄積され、視聴ポイントがＤＣ１６に設定され、ノード１Ａは再生中であるものとする。また、ノード１Ｂのバッファメモリには、再生前のＤＣ１１〜ＤＣ１４が蓄積され、視聴ポイントがＤＣ１１に設定され、ノード１Ｂは非再生中であるものとする。
【００８６】
ノード１Ｃは、Ｐ２Ｐネットワークへ参加すると、図示しないディレクトリサーバ４から上流ノード１Ａ，１Ｂに関するアドレスの情報等を受信し、上流ノード１Ａ，１Ｂからバッファマップを取得する。ここで、ノード１Ｃは、先に、上流ノード１ＢからバッファマップＢを取得し（ステップＳ１３０１）、その後に、上流ノード１ＡからバッファマップＡを取得するものとする（ステップＳ１３０２）。
【００８７】
上流ノード１Ａから取得するバッファマップＡには、実施例１と同様に、ＤＣ１３〜ＤＣ２１に関する情報が示されており、ＤＣ１３〜ＤＣ１５は再生後のデータであり、ＤＣ１６〜ＤＣ２１は再生前のデータである。また、上流ノード１Ｂから取得するバッファマップＢには、実施例１と同様に、ＤＣ１１〜ＤＣ１４に関する情報が示されており、ＤＣ１１〜ＤＣ１４は再生前のデータである。
【００８８】
ノード１Ｃは、取得したバッファマップＡ，Ｂのうちの先に取得したバッファマップＢを特定し、特定したバッファマップＢが示す最も古いＤＣ１１を特定し、そのＤＣ１１の位置を視聴ポイントに設定する。そして、ノード１Ｃは、バッファマップＡ，Ｂに基づいて、データの取得先である上流ノード１Ａまたは上流ノード１Ｂを決定し、上流ノード１Ａ，１Ｂへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【００８９】
図１３に示した例では、ノード１Ｃは、バッファマップＢに基づいて、上流ノード１ＢからＤＣ１１〜ＤＣ１４を取得し（ステップＳ１３０３）、バッファメモリに蓄積する（ステップＳ１３０４）。そして、上流ノード１ＡがＰ２Ｐネットワークから離脱した場合（ステップＳ１３０５）、ノード１Ｃは、バッファマップＡに基づいて、上流ノード１ＡからＤＣ１５〜ＤＣ２１を取得することができない。このため、ノード１Ｃのバッファメモリに蓄積されたＤＣが再生スレッショルドに到達できず、ノード１Ｃは非再生中の状態を継続し、その視聴ポイントはＤＣ１１の位置を維持する。結果として、ノード１Ｃの視聴ポイントは、上流ノード１Ａよりも大きく遅れることになる。
【００９０】
そこで、ノード１Ｃは、上流ノード１Ａの代わりに、パッチングサーバ３からＤＣ１５〜ＤＣ２１を取得する。具体的には、ノード１Ｃは、パッチングサーバ３から視聴ポイントを取得し（ステップＳ１３０６）、取得した視聴ポイントと、ノード１Ｃにおける視聴ポイント（ＤＣ１１）との間の差に基づいて、ノード１Ｃにおける視聴ポイントの遅延時間を算出する。パッチングサーバ３から取得した視聴ポイントは、Ｐ２Ｐネットワーク全体としての基準となる視聴ポイントを示している。ノード１Ｃは、算出した遅延時間を画面表示してノード１Ｃの利用者へ提示したり、遅延情報として保存したりすると共に、ノード１Ｃにおける視聴ポイント及び遅延時間をディレクトリサーバ４へ送信する（ステップＳ１３０７）。利用者は、画面表示された遅延時間によって、自らの視聴する映像が他の利用者の視聴する映像に比べて遅延していることを認識することができ、時刻等の動画内の情報がリアルタイム情報ではないことを認識することができる。また、ソーシャルネットワーク等のアプリケーションは、保存された遅延情報を利用し、提示を遅延させる等することにより、動画との同期をとることもできる。ディレクトリサーバ４は、ノード１Ｃからその視聴ポイント及び遅延時間を受信し、これらを管理する。
【００９１】
そして、ノード１Ｃは、パッチングサーバ３からＤＣ１５〜ＤＣ２１を取得し（ステップＳ１３０８）、バッファメモリに蓄積する（ステップＳ１３０９）。これにより、バッファメモリに蓄積されたデータは、再生スレッショルドに到達する。そして、ノード１Ｃは、バッファメモリから視聴ポイントのＤＣ１１を読み出し、再生を開始する（ステップＳ１３１０）。
【００９２】
このように、実施例１と同様に、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード１Ｃは、図１８に示した従来技術では取得できなかった所望のデータであるＤＣ１５を、上流ノード１Ａから取得することができる。しかし、図１３に示したように、ノード１Ｃは、上流ノード１ＡからバッファマップＡを取得した後、データを取得する前に、上流ノード１ＡがＰ２Ｐネットワークから離脱した場合、上流ノード１Ａからデータを取得することができず、視聴ポイントは上流ノード１Ａよりも大きく遅れてしまう。そこで、ノード１Ｃは、パッチングサーバ３からデータ等を取得するようにした。これにより、ノード１Ｃは、非再生中の上流ノード１Ｂに所望のデータが蓄積されるのを待つ必要がなく、パッチングサーバ３から効率良く取得することができ、低遅延にて再生を開始することができる。
【００９３】
図１４は、実施例２におけるＰ２Ｐネットワークの処理（２）の概要を説明する図である。図１４に示す処理（２）は、上流ノード１のバッファメモリ１１に、取得したいデータが蓄積されていない場合を示している。
【００９４】
図１４に示すように、ノード１Ｃの上流ノードがノード１Ａ，１Ｂであり、ノード１Ａのバッファメモリには、再生後のＤＣ１３〜ＤＣ１８及び再生前のＤＣ１９〜ＤＣ２４が蓄積され、視聴ポイントがＤＣ１９の位置に設定され、ノード１Ａは再生中であるものとする。また、ノード１Ｂのバッファメモリには、再生前のＤＣ１１〜ＤＣ１４が蓄積され、視聴ポイントがＤＣ１１の位置に設定され、ノード１Ｂは非再生中であるものとする。
【００９５】
ノード１Ｃは、Ｐ２Ｐネットワークへ参加すると、図１３と同様に、先に、上流ノード１ＢからバッファマップＢを取得し（ステップＳ１４０１）、その後に、上流ノード１ＡからバッファマップＡを取得するものとする（ステップＳ１４０２）。
【００９６】
上流ノード１Ａから取得するバッファマップＡには、ＤＣ１６〜ＤＣ２４に関する情報が示されており、ＤＣ１６〜ＤＣ１８は再生後のデータであり、ＤＣ１９〜ＤＣ２４は再生前のデータである。また、上流ノード１Ｂから取得するバッファマップＢには、図１３と同様に、ＤＣ１１〜ＤＣ１４に関する情報が示されており、ＤＣ１１〜ＤＣ１４は再生前のデータである。
【００９７】
ノード１Ｃは、取得したバッファマップＡ，Ｂのうちの先に取得したバッファマップＢが示す最も古いＤＣ１１を特定し、そのＤＣ１１の位置を視聴ポイントに設定する。そして、ノード１Ｃは、バッファマップＢに基づいて、上流ノード１ＢからＤＣ１１〜ＤＣ１４を取得し（ステップＳ１４０３）、バッファメモリに蓄積する（ステップＳ１４０４）。そして、ノード１Ｃは、次のＤＣ１５を取得する際に、バッファマップＡ，ＢにＤＣ１５に関する情報が示されていないことを判断する。ノード１Ｃは、ＤＣ１５が上流ノード１Ａ，１Ｂに蓄積されていないから、上流ノード１Ａ，１ＢからＤＣ１５を取得することができない。このため、ノード１Ｃのバッファメモリに蓄積されたＤＣが再生スレッショルドに到達できず、ノード１Ｃは非再生中の状態を継続し、その視聴ポイントはＤＣ１１の位置を維持する。結果として、ノード１Ｃの視聴ポイントは、上流ノード１Ａよりも大きく遅れることになる。
【００９８】
そこで、ノード１Ｃは、図１３と同様に、パッチングサーバ３からＤＣ１５を取得する。具体的には、ノード１Ｃは、パッチングサーバ３から視聴ポイントを取得し（ステップＳ１４０５）、取得した視聴ポイントと、ノード１Ｃにおける視聴ポイント（ＤＣ１１）との間の差に基づいて、ノード１Ｃにおける視聴ポイントの遅延時間を算出する。ノード１Ｃは、算出した遅延時間を画面表示してノード１Ｃの利用者へ提示すると共に、ノード１Ｃにおける視聴ポイント及び遅延時間をディレクトリサーバ４へ送信する（ステップＳ１４０６）。利用者は、画面表示された遅延時間によって、自らの視聴する映像が他の利用者の視聴する映像に比べて遅延していることを認識することができる。ディレクトリサーバ４は、ノード１Ｃからその視聴ポイント及び遅延時間を受信し、これらを管理する。
【００９９】
そして、ノード１Ｃは、パッチングサーバ３からＤＣ１５を取得し（ステップＳ１４０７）、バッファメモリに蓄積する（ステップＳ１４０８）。そして、ノード１Ｃは、バッファマップＡに基づいて、上流ノード１ＡからＤＣ１６以降のデータを取得し（ステップＳ１４０９）、バッファメモリに蓄積する（ステップＳ１４１０）。これにより、バッファメモリに蓄積されたデータは、再生スレッショルドに到達する。そして、ノード１Ｃは、バッファメモリから視聴ポイントのＤＣ１１を読み出し、再生を開始する（ステップＳ１４１１）。
【０１００】
このように、実施例１及び図１３に示した実施例２（１）と同様に、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード１Ｃは、図１８に示した従来技術では取得できなかった所望のデータを、上流ノード１Ａから取得することができる。しかし、図１４に示したように、再生中の上流ノード１Ａから取得したバッファマップＡに所望のデータであるＤＣ１５が示されていない場合、ノード１Ｃは上流ノード１Ａからそのデータを取得することができず、視聴ポイントは上流ノード１Ａよりも大きく遅れてしまう。そこで、ノード１Ｃは、パッチングサーバ３からそのデータ等を取得するようにした。これにより、ノード１Ｃは、非再生中の上流ノード１Ｂに所望のデータが蓄積されるのを待つ必要がなく、パッチングサーバ３から効率良く取得することができ、低遅延にて再生を開始することができる。
【０１０１】
（実施例２によるノードの構成）
実施例２によるノード１の構成について説明する。実施例２によるノード１の構成は、図３に示した実施例１と同様であるが、送受信手段１０の構成手段の一部が実施例１と異なる。図１５は、実施例２における送受信手段１０の構成を示すブロック図である。実施例２によるノード１の送受信手段１０は、図４に示した実施例１の構成に加え、遅延処理手段５８を備えている。ネットワーク参加処理手段５１〜データ送信手段５７は、実施例１と同様であるから、説明を省略する。
【０１０２】
遅延処理手段５８は、上流ノード１からデータを取得できないため、視聴ポイントが上流ノード１よりも所定時間遅れている場合、パッチングサーバ３から所望のデータを受信してバッファメモリ１１に蓄積する。また、遅延処理手段５８は、所望のデータを取得するのに先立って、パッチングサーバ３から視聴ポイントを取得して遅延時間を算出し、当該ノード１の視聴ポイント及び遅延時間をディレクトリサーバ４へ送信する。これにより、ディレクトリサーバ４は、ノード１Ｃにおける視聴ポイント及び遅延時間を管理する。ここで、所定時間とは、バッファマップ保存手段１３及びバッファマップ取得手段５２によりバッファマップが更新される所定の時間間隔（更新時間）以上の時間であることが望ましい。
【０１０３】
（実施例２によるノードの処理）
次に、実施例２によるノード１の処理について説明する。実施例２によるノード１は、図９に示した実施例１のフローチャートのうち、ステップＳ９０１〜ステップＳ９０３及びステップＳ９０５〜ステップＳ９０７と同様の処理を行い、ステップＳ９０４（映像データ取得処理）とは異なる処理を行う。ステップＳ９０１〜ステップＳ９０３及びステップＳ９０５〜ステップＳ９０７の処理については実施例１にて説明済みであるから、ここでは説明を省略する。
【０１０４】
（映像データ取得処理）
次に、実施例２における図９の映像データ取得処理（ステップＳ９０４）について詳細に説明する。図１６は、その詳細な処理を示すフローチャートである。図１６に示すフローチャートのうちステップＳ１６０１〜ステップＳ１６０４は、図１０に示した実施例１の映像データ取得処理のステップＳ１００１〜ステップＳ１００４と同様であるから、説明を省略する。
【０１０５】
ノード１における送受信手段１０の遅延処理手段５８は、ステップＳ１６０４から移行して、視聴ポイントが上流ノード１（最も新しい視聴ポイントを有する上流ノード１）よりも所定時間遅れているか否かを判定する（ステップＳ１６０５）。例えば、遅延処理手段５８は、自らの視聴ポイントと、上流ノード１の視聴ポイントのうち最も新しい視聴ポイントとを比較し、自らの視聴ポイントが前記最も新しい視聴ポイントよりも所定時間遅れているか否かを判定する。この場合、上流ノード１から取得したバッファマップには、視聴ポイントの情報も含まれているものとし、遅延処理手段５８は、上流ノード１から取得したバッファマップに含まれる視聴ポイントを上流ノード１間で比較し、最も新しい（ＤＣ番号が大きい）視聴ポイントを特定する。
【０１０６】
尚、遅延処理手段５８は、視聴ポイントが所定時間変化していないか否かを判定するようにしてもよいし、非再生中が所定時間継続しているか否かを判定するようにしてもよい。
【０１０７】
遅延処理手段５８は、ステップＳ１６０５において、視聴ポイントが上流ノード１よりも所定時間遅れていると判定した場合（ステップＳ１６０５：Ｙ）、視聴ポイント要求をパッチングサーバ３へ送信し、パッチングサーバ３から視聴ポイントを受信する（ステップＳ１６０６）。例えば、データ取得手段５４がデータ要求を上流ノード１へ送信しても、上流ノード１からデータが返信されない場合、または、所望のデータが上流ノード１に蓄積されていないことをバッファマップから判断した場合には、新たなデータがバッファメモリ１１に蓄積されず、結果として、視聴ポイントは上流ノード１よりも所定時間遅れることになる。
【０１０８】
ノード１における送受信手段１０の遅延処理手段５８は、パッチングサーバ３から受信した視聴ポイントと自らの視聴ポイントとを比較し、自らの視聴ポイントが、パッチングサーバ３から受信した視聴ポイントから遅延している時間を算出し、算出した遅延時間を画面表示して利用者へ提示すると共に、自らの視聴ポイント及び遅延時間をディレクトリサーバ４へ送信する（ステップＳ１６０７）。
【０１０９】
遅延処理手段５８は、上流ノード１から取得できないデータを特定し、特定したデータを取得するためのデータ要求をパッチングサーバ３へ送信し、データ要求に対応するデータをパッチングサーバ３から受信し、バッファメモリ１１に蓄積する（ステップＳ１６０８）。例えば、ノード１は、データ要求を上流ノード１へ送信しても、その上流ノード１からデータが返信されないため、視聴ポイントが上流ノード１よりも所定時間遅れている場合、その上流ノード１から取得したバッファマップに基づいて、その上流ノード１から取得すべきであったデータを、パッチングサーバ３から取得する。図１３の例では、遅延処理手段５８は、上流ノード１Ａから取得すべきであったＤＣ１５〜ＤＣ２１を、パッチングサーバ３から取得する。また、ノード１が、上流ノード１から取得したバッファマップに基づいて、取得したいデータが上流ノード１に存在しないと判断し、視聴ポイントが上流ノード１よりも所定時間遅れている場合、その取得したいデータをパッチングサーバ３から取得する。図１４の例では、遅延処理手段５８は、上流ノード１に存在しないＤＣ１５をパッチングサーバ３から取得する。
【０１１０】
一方、遅延処理手段５８は、ステップＳ１６０５において、視聴ポイントが上流ノード１よりも所定時間遅れていないと判定した場合（ステップＳ１６０５：Ｎ）、またはステップＳ１６０８から移行して、映像データ取得処理を終了する。
【０１１１】
ここで、パッチングサーバ３は、送受信手段、記憶装置及び視聴ポイント設定手段とを備える。パッチングサーバ３の送受信手段は、配信サーバ２から連続して映像ストリームのデータを受信し、受信した映像ストリームのデータを記憶装置に蓄積する。視聴ポイント設定手段は、送受信手段が連続して受信した映像ストリームのデータに基づいて、現在の視聴ポイントを順次設定する。例えば、視聴ポイント設定手段は、連続して受信した映像ストリームのデータのうち最新に受信したデータのＤＣ番号よりも所定数前のＤＣ番号を視聴ポイントに設定する。この視聴ポイントは、Ｐ２Ｐネットワーク全体において基準の視聴ポイントとなる。また、送受信手段は、ノード１から視聴ポイント要求を受信すると、視聴ポイント設定手段により設定された現在の視聴ポイントを、視聴ポイント要求を送信してきたノード１へ送信する。また、送受信手段は、ノード１からデータ要求を受信すると、データ要求に対応するデータを記憶装置から読み出し、読み出したデータを、データ要求を送信してきたノード１へ送信する。
【０１１２】
以上のように、実施例２によれば、実施例１と同様に、ノード１における送受信手段１０のバッファマップ取得手段５２は、上流ノード１からバッファメモリ１１に蓄積されている視聴ポイント以降のデータ（再生前のデータ）に加え、視聴ポイントよりも所定時間前のデータ（再生後の所定時間前までのデータ）に関する情報を示すバッファマップを取得し、データ取得手段５４は、取得したバッファマップに基づいて、上流ノード１からデータを取得するようにした。これにより、実施例１と同様の効果を奏する。
【０１１３】
また、実施例２によれば、ノード１における送受信手段１０の遅延処理手段５８は、視聴ポイントが上流ノード１よりも所定時間遅れている場合、パッチングサーバ３からデータを取得するようにした。これにより、ノード１が所望のデータを、再生中の上流ノード１から取得する直前に、その上流ノード１がＰ２Ｐネットワークから離脱したり、所望のデータがその上流ノード１に蓄積されていなかったりした場合であっても、ノード１は、所望のデータを確実に取得することができる。したがって、ノード１は、上流ノード１に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを従来技術より効率良く、かつ確実に取得することができる。また、視聴ポイントは大きく遅延することがないから、一層安定した配信サービスを実現することができる。
【０１１４】
以上、実施例を挙げて本発明を説明したが、本発明は前記実施例に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、実施例２において、ノード１は、図１６に示したステップＳ１６０６〜ステップＳ１６０８の遅延処理の際に、パッチングサーバ３からデータを取得するようにしたが、パッチングサーバ３の代わりに配信サーバ２から取得するようにしてもよい。これにより、Ｐ２Ｐネットワークの通信システム５にパッチングサーバ３が存在しない場合であっても、ノード１は、遅延処理を行うことができる。
【０１１５】
尚、本発明の実施例１，２によるノード１、配信サーバ２、パッチングサーバ３及びディレクトリサーバ４のハードウェア構成としては、通常のコンピュータを使用することができる。ノード１、配信サーバ２、パッチングサーバ３及びディレクトリサーバ４は、ＣＰＵ、ＲＡＭ等の揮発性の記憶媒体、ＲＯＭ等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。ノード１に備えた送受信手段１０、バッファメモリ１１、再生手段１２、バッファマップ保存手段１３及びバッファマップ作成手段１４の各機能は、これらの機能を記述したプログラムをＣＰＵに実行させることによりそれぞれ実現される。これらのプログラムは、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。
【符号の説明】
【０１１６】
１，１００  端末装置（ノード）
２  配信サーバ
３  パッチングサーバ
４  ディレクトリサーバ
５  通信システム
１０  送受信手段
１１  バッファメモリ
１２  再生手段
１３  バッファマップ保存手段
１４  バッファマップ作成手段
５１  ネットワーク参加処理手段
５２  バッファマップ取得手段
５３  視聴ポイント設定手段
５４  データ取得手段
５５  パッチング手段
５６  バッファマップ送信手段
５７  データ送信手段
５８  遅延処理手段
【図１】
0005906104.tif 000002
【図２】
0005906104.tif 000003
【図３】
0005906104.tif 000004
【図４】
0005906104.tif 000005
【図５】
0005906104.tif 000006
【図６】
0005906104.tif 000007
【図７】
0005906104.tif 000008
【図８】
0005906104.tif 000009
【図９】
0005906104.tif 000010
【図１０】
0005906104.tif 000011
【図１１】
0005906104.tif 000012
【図１２】
0005906104.tif 000013
【図１３】
0005906104.tif 000014
【図１４】
0005906104.tif 000015
【図１５】
0005906104.tif 000016
【図１６】
0005906104.tif 000017
【図１７】
0005906104.tif 000018
【図１８】
0005906104.tif 000019