(57)【要約】 【課題】木構造のノードとなって通信をする際に通信に失敗すると、木構造の再編を効率良く行う端末装置等を提供する。【解決手段】端末装置２２１は、親ノードへの要求に呼応する親ノードからの応答を受信し、子ノードからの要求に呼応して子ノードへ応答を送信し、選択部４１０は、子ノードのいずれかを代表ノードに、他の子ノードを配下ノードに選択し、通知送信部４１１は、選択された代表ノードへ、端末装置２２１の親ノードを代替ノードとすべき旨の通知を送信し、選択された配下ノードへ、選択された代表ノードを代替ノードとすべき旨の通知を送信し、通知受信部４１２は、端末装置２２１の親ノードから送信された通知を受信し、親設定部４１３は、端末装置２２１の親ノードとの通信に失敗すると、受信された通知に指定された代替ノードを、新たな親ノードに設定する。【選択図】図４
2011100384.tif 000002
【特許請求の範囲】
【請求項１】
通信装置をノードとする木構造の根ノード以外のノードとなって、親ノードから送信された提供情報を受信して、当該受信された提供情報を子ノードに送信する端末装置であって、
前記端末装置の子ノードのいずれかを代表ノードに選択し、他の子ノードを配下ノードに選択する選択部、
前記選択された代表ノードへ、前記端末装置の親ノードを代替ノードとすべき旨を指定する通知を送信し、前記選択された配下ノードへ、前記選択された代表ノードを代替ノードとすべき旨を指定する通知を送信する通知送信部、
前記端末装置の親ノードから送信された通知を受信する通知受信部、
前記端末装置の親ノードとの通信に失敗すると、前記受信された通知に指定された代替ノードを、新たな親ノードに設定する親設定部
を備えることを特徴とする端末装置。
【請求項２】
請求項１に記載の端末装置であって、
前記端末装置の親ノードへ、提供情報を求める要求を送信する要求送信部、
前記端末装置の親ノードから送信された提供情報を指定する応答を受信する応答受信部、
他の端末装置から送信された提供情報を求める要求を受信する要求受信部、
前記受信された要求の送信元の端末装置を、前記端末装置の子ノードに設定する子設定部、
前記端末装置の子ノードであって、前記受信された要求の送信元の端末装置へ、前記提供情報を指定する応答を送信する応答送信部
をさらに備え、
前記選択部は、前記端末装置の子ノードの設定が変更されると、前記選択を再度行う
ことを特徴とする端末装置。
【請求項３】
請求項２に記載の端末装置であって、
前記端末装置の子ノードとの通信に失敗すると、前記子設定部は、当該通信が失敗した子ノードの設定を解除する
ことを特徴とする端末装置。
【請求項４】
請求項２または３に記載の端末装置であって、他の端末装置との通信はコンピュータ通信網を介して行われ、
前記コンピュータ通信網との間の通信が不可能となった後に再度確立された場合、前記子設定部は、既に設定された子ノードの設定をすべて解除し、前記親設定部は、前記選択された代表ノードを新たな親ノードに設定する
ことを特徴とする端末装置。
【請求項５】
請求項２から４のいずれか１項に記載の端末装置であって、
前記要求が前記端末装置の子ノードに設定されていない端末装置から受信されると、前記端末装置に既に設定された子ノードの数もしくは前記端末装置の通信量に基づいて新たな子ノードの設定をするか否かを判定する判定部、
前記判定部により新たな子ノードの設定をしないと判定された場合、前記要求の送信元の端末装置に、前記端末装置の子ノードのいずれかを指定する紹介を送信する紹介送信部、
前記要求の送信先の端末装置から送信された紹介を受信する紹介受信部
をさらに備え、
前記判定部により新たな子ノードの設定をすると判定された場合、前記子設定部は、前記要求の送信元の端末装置を子ノードに設定し、
前記紹介受信部により紹介が受信された場合、前記親設定部は、当該紹介に指定された端末装置を親ノードに設定する
ことを特徴とする端末装置。
【請求項６】
請求項２から５のいずれか１項に記載の端末装置と、指示サーバ装置と、提供サーバ装置と、を備える通信システムであって、
前記端末装置は、代替ノードであった親ノードとの通信に失敗すると、前記指示サーバ装置に指示を求め、当該指示サーバ装置から指示された通信装置を親ノードに設定し、
前記指示サーバ装置は、端末装置から指示を求められると、前記提供サーバ装置もしくは既に指示を与えた端末装置からいずれかを選択し、当該選択された通信装置を親ノードとすべき旨の指示を当該端末装置に与え、
前記提供サーバ装置は、端末装置から提供情報を求める要求を受信すると、当該端末装置へ提供情報を指定する応答を送信する
ことを特徴とする通信システム。
【請求項７】
請求項６に記載の通信システムであって、前記指示サーバ装置は、
端末装置から指示を求められると、現在から所定期間内に指示を与えた端末装置がなければ、前記提供サーバ装置を選択し、現在から所定期間内に指示を与えた端末装置があれば、その中からランダムに選択する
ことを特徴とする通信システム。
【請求項８】
通信装置をノードとする木構造の根ノード以外のノードとなって、親ノードから送信された提供情報を受信して、当該受信された提供情報を子ノードに送信し、選択部、通知送信部、通知受信部、親設定部を備える端末装置が実行する端末方法であって、
前記選択部が、前記端末装置の子ノードからいずれかを代表ノードに選択し、他の子ノードを配下ノードに選択する選択工程、
前記通知送信部が、前記選択された代表ノードへ、前記端末装置の親ノードを代替ノードとすべき旨を指定する通知を送信し、前記選択された配下ノードへ、前記選択された代表ノードを代替ノードとすべき旨を指定する通知を送信する通知送信工程、
前記通知受信部が、前記端末装置の親ノードから送信された通知を受信する通知受信工程、
前記親設定部が、前記端末装置の親ノードとの通信に失敗すると、前記受信された通知に指定された代替ノードを、新たな親ノードに設定する親設定工程
を備えることを特徴とする端末方法。
【請求項９】
コンピュータを、通信装置をノードとする木構造の根ノード以外のノードとなって、親ノードから送信された提供情報を受信して、当該受信された提供情報を子ノードに送信する端末装置として機能させるプログラムであって、当該プログラムは、当該コンピュータを、
前記端末装置の子ノードのいずれかを代表ノードに選択し、他の子ノードを配下ノードに選択する選択部、
前記選択された代表ノードへ、前記端末装置の親ノードを代替ノードとすべき旨を指定する通知を送信し、前記選択された配下ノードへ、前記選択された代表ノードを代替ノードとすべき旨を指定する通知を送信する通知送信部、
前記端末装置の親ノードから送信された通知を受信する通知受信部、
前記端末装置の親ノードとの通信に失敗すると、前記受信された通知に指定された代替ノードを、新たな親ノードに設定する親設定部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、木構造のノードとなって通信をする際に通信に失敗すると、木構造の再編を効率良く行うのに好適な端末装置、通信システム、端末方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、ネットワーク通信機能を持ったコンピュータやゲーム装置などの端末装置を木構造のノードとして、通信ネットワークを形成し、各ノード同士の通信を効率良く行う技術が提案されている。
【０００３】
ここで、以下に掲げる特許文献１においては、木構造における親ノードとの通信ができない場合に、代替ノードとの通信を行うことにより、木構造の根ノードに向かう上り通信を可能とする技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３８４２２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、木構造を用いて音声や動画像、ゲームのデータ等のマルチメディア情報を提供する場合等には、端末装置が通信から離脱したり再度参加したりすることがしばしばあり、端末装置が利用する通信経路の品質もさまざまである。
【０００６】
したがって、根ノードから中間ノードや葉ノードへ提供情報を伝播させ、各端末装置に同じ提供情報を提供する際に、親ノードとの通信ができない場合、適切に代替ノードを選択する技術が強く求められている。
【０００７】
本発明は、上記のような課題を解決するもので、木構造のノードとなって通信をする際に通信に失敗すると、木構造の再編を効率良く行うのに好適な端末装置、通信システム、端末方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００９】
本発明の第１の観点に係る端末装置は、通信装置をノードとする木構造の根ノード以外のノードとなって、親ノードから送信された提供情報を受信して、当該受信された提供情報を子ノードに送信する。たとえば本発明の端末装置が、動画像や音声のストリーミング配信を受ける場合を考えると、木構造の根ノードは、ストリーミングサーバ装置に相当し、それ以外のノードが端末装置に相当する。各端末装置は、木構造の枝に沿って、根から葉の方向に、すなわち、親ノードから子ノードへ向かう方向に、ストリーミング情報を提供情報として伝達する。
【００１０】
そして、端末装置は、選択部、通知送信部、通知受信部、親設定部を備え、以下のように構成する。
【００１１】
ここで、選択部は、端末装置の子ノードの設定が変更されると、端末装置の子ノードからいずれかを代表ノードに選択し、他の子ノードを配下ノードに選択する。
【００１２】
端末装置の子ノードが一つもない場合は、この選択は行われない。子ノードが一つだけである場合は、当該一つの子ノードが代表ノードとなり、配下ノードはない。子ノードが複数の場合には、通信性能が最も高いもの、たとえば、当該端末装置との通信における送受が高速なものやエラー発生率が最も低いものを選択するのが典型的である。
【００１３】
さらに、通知送信部は、選択された代表ノードへ、端末装置の親ノードを代替ノードとすべき旨を指定する通知を送信し、選択された配下ノードへ、選択された代表ノードを代替ノードとすべき旨を指定する通知を送信し、通知受信部は、端末装置の親ノードから送信された通知を受信し、親設定部は、端末装置の親ノードとの通信に失敗すると、受信された通知に指定された代替ノードを、新たな親ノードに設定する。
【００１４】
ここでの通知は、一定の時間間隔で周期的に行っても良いし、子ノードの設定が変更されるごとに行っても良い。また、子ノードからの要求に対する応答とともに通知することとしても良い。
【００１５】
上記のように、代替ノードは、親ノードとの通信ができなくなった場合に、新たな親ノードとすべき端末装置である。
【００１６】
ある端末装置Ａの親ノードがＧであり、Ａの子ノードがＰ、Ｑ、Ｘであり、その中からＰが代表ノードに選択され、Ｑ、Ｘが配下ノードに選択された場合を考えると、ＡからＰには、Ｇが代替ノードとして通知される。ＡからＱ、Ｘには、Ｐが代替ノードとして通知される。
【００１７】
端末装置Ａが正常に動作している場合は、Ｇは、Ａに提供情報を配信し、Ａは、Ｐ、Ｑ、Ｘに提供情報を配信する。端末装置Ａに故障が生じる等、何らかの不具合が生じた場合には、代替ノードを親ノードとすることによって木構造が変化するので、Ｇは、Ｐに提供情報を配信し、Ｐは、Ｑ、Ｘに提供情報を配信するようになる。
【００１８】
このように、本発明によれば、親ノードとの通信が不可能となった場合に、局所的に木構造を更新するだけで、情報の提供を効率良く継続することができるようになる。
【００１９】
また、本発明の端末装置は、要求送信部、応答受信部、要求受信部、子設定部、応答送信部、をさらに備え、以下のように構成することができる。
【００２０】
ここで、要求送信部は、端末装置の親ノードへ、提供情報を求める要求を送信し、応答受信部は、端末装置の親ノードから送信された提供情報を指定する応答を受信する。
【００２１】
上記の例では、要求は、当該端末装置において親ノードとして設定された他の端末装置、もしくは、ストリーミングサーバ装置に相当し、提供情報は、ストリーミング配信される動画情報に相当する。なお、後述するように、親ノードは適宜変更されうる。
【００２２】
また、親ノードに対して送信した要求に呼応して応答が返信され、当該応答に提供情報が含まれることになる。なお、後述する「通知」が、提供情報とともに送受されるような形態を採用しても良い。
【００２３】
なお、典型的には、受信された提供情報は、ユーザに提供される。上記の例では、ストリーミング配信された動画像を画面に表示し、音声をスピーカやヘッドホンから出力して、ユーザに視聴させることとなる。
【００２４】
さらに、要求受信部は、他の端末装置から送信された提供情報を求める要求を受信し、子設定部は、受信された要求の送信元の端末装置を、端末装置の子ノードに設定し、応答送信部は、端末装置の子ノードであって、受信された要求の送信元の端末装置へ、提供情報を指定する応答を送信する。
【００２５】
前述の要求送信部および応答受信部は、端末装置が「子ノード」として機能するために動作するが、要求受信部、子設定部、応答送信部は、端末装置が「親ノード」として機能するために動作することになる。なお、設定される子ノードの数は、０個から所定の上限個までのいずれかとし、子ノードの設定は、後述するように、適宜解除されるのが典型的である。
【００２６】
そして、選択部は、端末装置の子ノードの設定が変更されると、選択を再度行う。
【００２７】
本発明によれば、他の端末装置からの要求が到着したことを契機として子ノードを設定し、代表ノードの選択を最新の状況に合わせて適切に行うことができるようになる。
【００２８】
また、本発明の端末装置において、端末装置の子ノードとの通信に失敗すると、子設定部は、当該通信が失敗した子ノードの設定を解除するように構成することができる。このほか、ある子ノードとの通信が一定時間行われなかった場合には、当該子ノードの設定を解除するのが典型的である。
【００２９】
本発明においては、提供情報の配信を求める側からの要求があって初めて、親子関係が成立するが、親ノードが子ノードに応答や通知を送信しようとして、ある程度失敗が連続した場合には、子ノードの設定を解除する。
【００３０】
子ノードの設定が解除されると、子ノードの設定が変更されることとなるから、選択部は、代表ノードおよび配下ノードの選択をやり直すことになる。これによって、現在親ノードからの通信が可能な子ノードにおいて、代替ノードが再設定されることになる。
【００３１】
本発明によれば、子ノードにおける代替ノードの設定を適切に行うことができるようになる。
【００３２】
また、本発明の端末装置において、他の端末装置との通信はコンピュータ通信網を介して行われ、コンピュータ通信網との間の通信が不可能となった後に再度確立された場合、子設定部は、既に設定された子ノードの設定をすべて解除し、親設定部は、選択された代表ノードを新たな親ノードに設定するように構成することができる。
【００３３】
ここで、コンピュータ通信網との間の通信が不可能になった場合とは、当該端末装置の電源が切られた場合、当該端末装置のネットワーク通信ケーブルが切断された場合、無線ＬＡＮ（Local Area Network）通信が輻輳や雑音などの影響で不可能となった場合、端末装置が利用するルータやファイアウォール、インターネットサービスプロバイダが動作しなくなった場合等を意味する。このような場合、当該端末装置は、親ノード、代替ノード、子ノードのいずれとも通信ができなくなる。そして、上記のような不具合が解消され、通信が再度確立されるには、ある程度の時間を要するのが一般的である。
【００３４】
そのような場合、当該端末装置を除いた新たな木構造がすでに形成されている可能性が極めて高い。そこで、コンピュータ通信網に復帰した端末装置は、かつて代表ノードに選択した端末装置を、新たな親ノードに設定する。
【００３５】
このような構成を採用することにより、木構造に安定して参加している時間が長い端末装置ほど、上流に配置されるように、自然に木構造が変化されることになる。
【００３６】
本発明によれば、電源断などによって通信ができなくなった端末装置が復帰した場合にも、効率良く提供情報を配信することができるようになる。
【００３７】
また、本発明の端末装置は、判定部、紹介送信部、紹介受信部をさらに備え、以下のように構成することができる。
【００３８】
すなわち、判定部は、要求が端末装置の子ノードに設定されていない端末装置から受信されると、端末装置に既に設定された子ノードの数もしくは端末装置の通信量に基づいて新たな子ノードの設定をするか否かを判定する。
【００３９】
すなわち、ある端末装置が子ノードにできる端末装置の数や現在の通信量に基づいて、その端末装置の通信負荷を予想し、この通信負荷に耐えられるか否かを判定するのである。
【００４０】
そして、判定部により新たな子ノードの設定をしないと判定された場合、紹介送信部は、要求の送信元の端末装置に、端末装置の子ノードのいずれかを指定する紹介を送信し、紹介受信部は、要求の送信先の端末装置から送信された紹介を受信する。
【００４１】
すなわち、提供情報を求める要求を送信してきた端末装置に対しては、提供情報を指定する応答を返信する場合と、他の端末装置を指定する紹介を送信する場合がある。
【００４２】
ここで、判定部により新たな子ノードの設定をすると判定された場合、子設定部は、要求の送信元の端末装置を子ノードに設定する。これは、当該端末装置が通信負荷に耐えうる、と判断された場合であり、当該端末装置は、上記の発明と同様に機能する。
【００４３】
一方、紹介受信部により紹介が受信された場合、親設定部は、当該紹介に指定された端末装置を親ノードに設定する。
【００４４】
これは、要求の送信先の端末装置が通信負荷に耐えられない、と判断して、応答のかわりに紹介を送信してきた場合であり、当該端末装置は、他の端末装置を親ノードに再設定して、要求を送信し直すことになる。
【００４５】
本発明によれば、木構造のノードを構成する端末装置の通信性能や通信状況に応じて、新たな端末装置を木構造内の適切な位置に配置することができるようになる。
【００４６】
本発明のその他の観点に係る通信システムは、上記の端末装置と、指示サーバ装置と、提供サーバ装置と、を備え、以下のように構成する。典型的には、提供サーバ装置は１台乃至複数台とし、これとは異なる通信機器を指示サーバ装置とする。
【００４７】
すなわち、端末装置は、代替ノードであった親ノードとの通信に失敗すると、指示サーバ装置に指示を求め、当該指示サーバ装置から指示された通信装置を親ノードに設定する。
【００４８】
すなわち、端末装置は、親ノードとの通信に失敗し、代替ノードとの通信にも失敗した場合には、指示サーバ装置にいずれの通信装置を親ノードとすべきかの指示を求めるのである。
【００４９】
一方、指示サーバ装置は、端末装置から指示を求められると、提供サーバ装置もしくは既に指示を与えた端末装置からいずれかを選択し、当該選択された通信装置を親ノードとすべき旨の指示を当該端末装置に与える。
【００５０】
指示サーバ装置は、提供情報の配信を受けるにあたって、いずれの通信装置を親ノードとすべきかの指示を与える装置である。通信装置としては、既に木構造に参加している端末装置を採用する場合もあるし、木構造の根ノードとなっている提供サーバ装置を採用する場合もある。
【００５１】
さらに、提供サーバ装置は、端末装置から提供情報を求める要求を受信すると、当該端末装置へ提供情報を指定する応答を送信する。
【００５２】
すなわち、提供サーバ装置は、木構造の根ノードとして機能し、提供情報を各端末装置に提供する。
【００５３】
本発明によれば、木構造を用いて効率良く提供情報を端末装置に伝送する通信システムを提供することができる。
【００５４】
また、本発明の通信システムにおいて、指示サーバ装置は、端末装置から指示を求められると、現在から所定期間内に指示を与えた端末装置がなければ、提供サーバ装置を選択し、現在から所定期間内に指示を与えた端末装置があれば、その中からランダムに選択するように構成することができる。
【００５５】
一般に、最近になってから新たに木構造に参加した端末装置と、以前に木構造に参加してそのまま参加し続けている端末装置と、では、現時点から考えると、前者の方が長い間木構造に参加するものと考えられる。
【００５６】
そこで、現在から所定期間内に指示を与えた端末装置を長い間木構造に参加するものと想定して、これを親ノードとして指示するのである。
【００５７】
なお、現在から所定期間内に指示を与えた端末装置がない、という状況は、通信が順調に行われ、負荷も低く輻輳も発生していない、と考えられるから、提供サーバ装置をそのまま親ノードとして指示することとしている。
【００５８】
本発明によれば、端末装置が親ノードの指示を求める状況に応じて、適切に木構造を構成することができるようになる。
【００５９】
本発明のその他の観点に係る端末方法は、当該通信装置をノードとする木構造の根ノード以外のノードとなって、親ノードから送信された提供情報を受信して、当該受信された提供情報を子ノードに送信し、選択部、通知送信部、通知受信部、親設定部を備える端末装置が実行し、当該端末方法は、選択工程、通知送信工程、通知受信工程、親設定工程を備え、以下のように構成する。
【００６０】
ここで、選択工程では、選択部が、端末装置の子ノードからいずれかを代表ノードに選択し、他の子ノードを配下ノードに選択する。
【００６１】
一方、通知送信工程では、通知送信部が、選択された代表ノードへ、端末装置の親ノードを代替ノードとすべき旨を指定する通知を送信し、選択された配下ノードへ、選択された代表ノードを代替ノードとすべき旨を指定する通知を送信する。
【００６２】
さらに、通知受信工程では、通知受信部が、端末装置の親ノードから送信された通知を受信する。
【００６３】
そして、端末装置の親ノードとの通信に失敗すると、親設定工程では、親設定部が、受信された通知に指定された代替ノードを、新たな親ノードに設定する。
【００６４】
本発明のその他の観点に係るプログラムは、コンピュータを上記の端末装置として機能させるように構成する。
【００６５】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００６６】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００６７】
本発明によれば、木構造のノードとなって通信をする際に通信に失敗すると、木構造の再編を効率良く行うのに好適な端末装置、通信システム、端末方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【００６８】
【図１】典型的な情報処理装置の概要構成を示す模式図である。
【図２】本実施形態に係る通信システムの概要構成を示す模式図である。
【図３】新たな端末装置が木構造に参加しようとする際の通信のセッション図である。
【図４】本実施形態に係る端末装置の概要構成を示す説明図である。
【図５】本実施形態に係る端末装置にて実行される端末処理の制御の流れを示すフローチャートである。
【図６】本実施形態に係る端末装置にて実行される端末処理の制御の流れを示すフローチャートである。
【図７】本実施形態に係る端末装置にて実行される端末処理の制御の流れを示すフローチャートである。
【図８】木構造の状態を示す説明図である。
【図９】木構造の状態を示す説明図である。
【図１０】指示サーバ装置の概要構成を示す説明図である。
【図１１】指示サーバ装置にて実行される指示処理の制御の流れを示すフローチャートである。
【図１２】提供サーバ装置の概要構成を示す説明図である。
【図１３】提供サーバ装置にて実行される提供処理の制御の流れを示すフローチャートである。
【発明を実施するための形態】
【００６９】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。
【００７０】
したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００７１】
図１は、プログラムを実行することにより、本実施形態の通信システムにおける端末装置、指示サーバ装置、提供サーバ装置等のサーバ装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００７２】
本図に示す情報処理装置１００は、いわゆるコンシューマゲーム機に相当するもので、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、インターフェース１０４、コントローラ１０５、外部メモリ１０６、画像処理部１０７、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８、ＮＩＣ（Network Interface Card）１０９、音声処理部１１０、マイク１１１、ハードディスク（Hard Disk；ＨＤ）１２１を有する。各種の入出力装置は、適宜省略することができる。
【００７３】
情報処理装置１００を典型的なコンシューマゲーム機として機能させる場合には、ゲーム用プログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着し、電源を投入する。すると、当該ゲームプログラムが実行され、ゲームをプレイすることができるようになる。
【００７４】
ただし、本実施形態においては、典型的には、ＤＶＤ−ＲＯＭドライブ１０８に装着されたＤＶＤ−ＲＯＭから、アプリケーションをＨＤ  １２１にインストールする。そして、当該ＨＤ  １２１に記憶されたプログラムを実行することによって、ゲームを含む各種のアプリケーションを実行することとする。
【００７５】
また、後述するように、端末装置とサーバ装置とでは、実行する情報処理の規模や種類が異なるだけで、本質的には、いずれも、本図に示す情報処理装置１００と同様の構成により、実現される。
【００７６】
なお、携帯型のゲーム装置においては、携帯可能とするために、ＤＶＤ−ＲＯＭドライブ１０８を利用するのではなく、ＲＯＭカセット用スロットにＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）カセットを装着して、ＨＤ  １２１を省略したりすることも可能である。この場合、アプリケーション用プログラムをＥＥＰＲＯＭカセットに書き込んだ上で、当該プログラムを実行することとなる。このほか、外部メモリ１０６にアプリケーション用プログラムをインストールすることも可能である。
【００７７】
さて、ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００７８】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００７９】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＨＤ  １２１やＤＶＤ−ＲＯＭ等から読み出したプログラムやデータ、その他通信対戦ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００８０】
インターフェース１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【００８１】
なお、コントローラ１０５は、必ずしも情報処理装置１００に対して外付けにされている必要はなく、一体に形成されていても良い。携帯可能な端末装置のコントローラ１０５は、各種のボタンやスイッチから構成され、これらの押圧操作を操作入力として扱う。このほか、タッチスクリーンを利用した情報処理装置１００では、ユーザがペンや指を利用してタッチスクリーンをなぞった軌跡を操作入力として扱う。
【００８２】
インターフェース１０４を介して着脱自在に接続された外部メモリ１０６には、ゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００８３】
上述の通り、アプリケーションプログラムを外部メモリ１０６にインストールして実行するような形態を採用することもできる。これは、外部メモリ１０６が大容量である場合に好適である。
【００８４】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００８５】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００８６】
携帯可能な端末装置のモニタとしては、小型の液晶ディスプレイを利用するのが典型的であり、コントローラ１０５としてタッチスクリーンを利用する場合には、当該タッチスクリーンの表示パネルがモニタとして機能する。自宅で遊ぶための端末装置やサーバ装置のモニタとしては、ＣＲＴ（Cathode Ray Tube）やプラズマディスプレイなどの表示装置を利用することも可能である。
【００８７】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００８８】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００８９】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００９０】
ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮを構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００９１】
また、ＮＩＣ  １０９経由でコンピュータ通信網から入手した情報を元に、ＨＤ  １２１等にアプリケーションプログラムをインストールすることも可能である。
【００９２】
音声処理部１１０は、ＨＤ  １２１やＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカや、ヘッドホン（図示せず）、イヤフォン（図示せず）から出力させる。
【００９３】
音声処理部１１０では、ＨＤ  １２１やＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００９４】
さらに、情報処理装置１００には、インターフェース１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。
【００９５】
本実施形態で利用する情報処理装置１００は、上述のように、ＨＤ  １２１等の大容量外部記憶装置を用いるのが典型的である。ＨＤ  １２１は、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすこともできる。
【００９６】
このほか、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置１００にかえて、汎用のパーソナルコンピュータやサーバ用コンピュータ等を利用することもできる。
【００９７】
さらに、本実施形態では、リアルタイムクロック（図示せず）もしくはＮＩＣ  １０９を介してＮＴＰ（Network Time Protocol）サーバに対して時刻を問い合わせる機能を採用して、情報処理装置１００を利用している日時の情報を利用することとしている。
【００９８】
以上で説明した情報処理装置１００は、コンシューマ向けゲーム装置に相当するものであるが、各種の入出力処理が可能な電子機器であれば、本発明の端末装置やサーバ装置を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明の端末装置やサーバ装置を実現することが可能である。
【００９９】
たとえば、ビジネス用コンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣ、ＨＤを構成要素として有するほか、情報処理装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてフレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっており、コントローラ１０５ではなく、キーボードやマウスなどを入力装置として利用するのが典型的である。
【０１００】
（通信システム）
図２は、本発明の実施形態に係る通信システムの概要構成を示す説明図である。以下、本図を参照して説明する。
【０１０１】
本実施形態の通信システム２０１は、端末装置２２１と、指示サーバ装置２４１と、提供サーバ装置２６１と、を備え、インターネット２９１内で適宜相互に通信を行う。
【０１０２】
端末装置２２１は、コンシューマ向けゲーム装置やパーソナルコンピュータなど、一般ユーザが利用するものであり、指示サーバ装置２４１は、オンラインゲームにおけるロビーサーバ、マッチングサーバに類似するサーバ用コンピュータであり、提供サーバ装置２６１は、ストリーミング配信等、各種のデータ配信を行うサーバ用コンピュータである。
【０１０３】
本実施形態では、提供サーバ装置２６１から、直接的に、あるいは、他の端末装置２２１を介して間接的に、各端末装置２２１へ動画像や音声等のストリーミング情報を提供する。端末装置２２１と提供サーバ装置２６１から構成される通信システム２０１は、いわゆる木構造をなす。木構造の根ノードが提供サーバ装置２６１に、それ以外の中間ノードおよび葉ノードが各端末装置２２１に相当し、木構造において各ノードを結ぶ枝は、ストリーミング情報を提供する際の通信経路に相当する。
【０１０４】
端末装置２２１は、自身が中間ノードであれば、親ノードからストリーミング情報を受信して、当該端末装置２２１のユーザにストリーミング情報を提示するとともに、その子ノードに対して、ストリーミング情報を送信する。
【０１０５】
また、自身が葉ノードである場合は、親ノードからストリーミング情報を受信して、当該端末装置２２１のユーザにストリーミング情報を提示する。
【０１０６】
本図においては、
（１）提供サーバ装置２６１（根ノードＲ）の子ノードに端末装置２２１（中間ノードＧ）が含まれ、
（２）端末装置２２１（中間ノードＧ）の子ノードに端末装置２２１（中間ノードＡ）が含まれ、
（３）端末装置２２１（中間ノードＡ）の子ノードに端末装置２２１（葉ノードＰ）、端末装置２２１（葉ノードＱ）、端末装置２２１（葉ノードＸ）、が含まれる、
のように階層が構築されており、根ノードＲ→中間ノードＧ→中間ノードＡ→葉ノードＰ・葉ノードＱ・葉ノードＸの順に、ストリーミング情報が中継される。
【０１０７】
なお、一般に、１つの端末装置２２１が親ノードとなった場合の子ノードの数には、当該親ノードの端末装置２２１の通信環境、通信性能によって、制限がある。そこで、本実施形態においては、新たな端末装置２２１（ノードＸ）が初めて木構造に参加しようとする場合には、以下のような手順をとることとなる。
【０１０８】
なお、端末装置２２１に配信される提供情報は、上記のようなストリーミング情報に限られず、プログラム、データ、各種のマルチメディア情報等、種々の情報の配信に、本実施形態を適用することができる。
【０１０９】
図３は、新たな端末装置が木構造に参加しようとする際の通信のセッション図である。以下、本図を参照して説明する。
【０１１０】
端末装置２２１（ノードＸ）は、親ノードとしていずれの機器を採用すべきかわからない場合に、指示サーバ装置２４１に指示を求める問合せを送信する（３０１）。したがって、一般には、指示サーバ装置２４１のホスト名もしくはＩＰアドレス（および、通信用ポートが可変な態様では、通信に利用しているポート番号）等により表現される通信識別子は固定されている。
【０１１１】
指示を求められた指示サーバ装置２４１は、提供サーバ装置２６１、もしくは、木構造の中で現在配信を受けていると予想される他の端末装置２２１の通信識別子を指定した指示を、問合せ元の端末装置２２１に送信する（３０２）。
【０１１２】
このような構成を採用するため、提供サーバ装置２６１は、１台に限られず、適宜台数を増減することができる。また、負荷が低い場合には、提供サーバ装置２６１と指示サーバ装置２４１を同じサーバ装置にて構成することも可能である。
【０１１３】
以下の説明では、中間ノードＧである端末装置２２１が、指示に指定されているものとする。
【０１１４】
指示を受けた端末装置２２１（ノードＸ）は、指示された中間ノードＧを親ノードとして木構造に参加するため、ストリーミング情報を求める要求を、中間ノードＧに送信する（３０３）。
【０１１５】
以下の説明では、中間ノードＧが、自身の子ノードの数や通信環境を考慮した結果、ノードＸを自身の子ノードとすることができない、と判断したものとする。
【０１１６】
この場合、中間ノードＧは、自身の子ノードのいずれかを指定する紹介を、ノードＸに対して送信する（３０４）。子ノードからいずれを選択するかは、たとえば、ランダムに選択したり、自身の子ノードになった順に、巡回的に選択したり、各子ノードとの通信状況を確認して、現在の通信状況が最も良好なものを選択する等、種々の態様を採用することができる。以下の説明では、紹介には、中間ノードＡが指定されているものとする。
【０１１７】
紹介を受けたノードＸは、紹介に指定された中間ノードＡに対して、ストリーミング情報を求める要求を送信する（３０５）。
【０１１８】
中間ノードＡは、自身の子ノードの数や通信環境を考慮した結果、ノードＸを自身の子ノードとすることができると判断したものとすると、中間ノードＡから、ストリーミング情報を指定する応答が、ノードＸに送信され（３０６）、これをもって、ノードＸは、中間ノードＡを親ノードとする葉ノードとなるのである。
【０１１９】
以降は、子ノードであるノードＸから親ノードであるノードＡに要求が送信され、ノードＡからノードＸに応答が送信されることを繰り返すことで、ストリーミング情報が、木構造の根ノードから葉ノードに向かって下るように、配信される。
【０１２０】
なお、本実施形態では、葉ノードが要求を受信した場合には、当該葉ノードは親ノード（すなわち、中間ノード）になり、要求の送信元が子ノードとなる。したがって、新たに木構造に参加しようとする端末装置２２１は、木構造内のどこかに必ず位置が定まることとなる。
【０１２１】
以下では、まず、本実施形態に係る端末装置２２１の詳細について説明し、ついで、指示サーバ装置２４１、提供サーバ装置２６１について説明することとする。
【０１２２】
（端末装置）
図４は、本実施形態に係る端末装置２２１の概要構成を示す説明図である。以下、本図を参照して説明する。
【０１２３】
端末装置２２１は、設定記憶部４０１、問合せ送信部４０２、指示受信部４０３、要求送信部４０４、応答受信部４０５、提供部４０６、要求受信部４０７、子設定部４０８、応答送信部４０９、選択部４１０、通知送信部４１１、通知受信部４１２、親設定部４１３、判定部４１５、紹介送信部４１６、紹介受信部４１７を備える。
【０１２４】
ここで、設定記憶部４０１には、以下の情報が、典型的には不揮発に記憶される。
（ａ）端末装置２２１の親ノードの通信識別子。
（ｂ）代替ノードの通信識別子。
（ｃ）端末装置２２１の子ノードの通信識別子。
【０１２５】
情報（ａ）（ｂ）としては、１台分の通信識別子が記憶されるか、もしくは、未設定の状態のいずれかが判別できるようにし、情報（ｃ）としては、０台以上の通信識別子が記憶されるようにするのが典型的である。
【０１２６】
これらの情報（特に、親ノードの情報（ａ）、代替ノードの情報（ｂ））は、端末装置２２１に電源を投入した際に、以前に設定された値が参照されるので、設定記憶部４０１は、外部メモリ１０６やハードディスクなどにより構成して、不揮発に情報が記憶できるようにすることが望ましい。ただし、通信状態が時々刻々と変化するような態様等では、設定記憶部４０１をＲＡＭ  １０３により構成するのであっても、十分な効果が得られる。
【０１２７】
以下、各部の機能について、各部が実行する処理の手順を参照しながら説明する。図５、図６、図７は、本実施形態に係る端末装置２２１にて実行される端末処理の制御の流れを示すフローチャートである。
【０１２８】
端末装置２２１に電源が投入されると、端末装置２２１は、設定記憶部４０１を参照して、親ノードの通信識別子が記憶されているか否かを調べる（ステップＳ５０１）。
【０１２９】
過去に木構造に参加したことがあり、設定記憶部４０１が不揮発性である場合には、前回参加した際の親ノードの通信識別子がここで得られることになる。
【０１３０】
親ノードの通信識別子が記憶されていない場合（ステップＳ５０１；Ｎｏ）、問合せ送信部４０２は、固定された通信識別子を有する指示サーバ装置２４１に対して、いずれの通信機器を親ノードとすべきかの指示を求める問合せを送信し（ステップＳ５０２）、指示受信部４０３は、問合せに呼応して指示サーバ装置２４１から送信された指示を受信する（ステップＳ５０３）。
【０１３１】
したがって、ＣＰＵ  １０１の制御の下、ＮＩＣ  １０９が、問合せ送信部４０２、指示受信部４０３として機能する。
【０１３２】
上記のように、指示サーバ装置２４１から送信された指示には、木構造に現在も参加している可能性が高い他の端末装置２２１もしくは提供サーバ装置２６１の通信識別子が指定されている。そこで、親設定部４１３は、設定記憶部４０１を更新して、親ノードの通信識別子として、指示において指定された通信識別子を記憶させ、端末装置２２１の親ノードに設定する（ステップＳ５０４）。
【０１３３】
したがって、ＣＰＵ  １０１は、外部メモリ１０６等と共働して、親設定部４１３として機能する。なお、親設定部４１３は、後述する各種の処理を実行する機能も果たす。
【０１３４】
そして、ＣＰＵ  １０１は、ＲＡＭ  １０３内に用意されたバッファをクリアし（ステップＳ５０７）、画像処理部１０７、音声処理部１１０を当該バッファに記憶されるマルチメディア情報を再生する処理を並行に開始した後（ステップＳ５０８）、ステップＳ５０９に進む。
【０１３５】
一方、親ノードの通信識別子が記憶されている場合（ステップＳ５０１；Ｙｅｓ）、ステップＳ５０９に進む。
【０１３６】
このバッファは、ストリーミング情報を一時的に記憶するもので、バッファリングを行うことにより、ユーザに提示される動画像や音声が、できるだけ途切れないようにすることができる。バッファ内にある程度の情報が蓄積されてから、動画像等の再生が開始され、その後は、バッファ内に蓄積される情報が、順次ユーザに提供されることになる。また、ストリーミング情報は、バッファ内に一定期間保持され、端末装置２２１の子ノードからの要求に応じて、適宜子ノードに再配布される。
【０１３７】
このように、ＣＰＵ  １０１、ＲＡＭ  １０３、画像処理部１０７、音声処理部１１０が共働して提供部４０６が実現され、提供部４０６は、バッファ内を監視して、ストリーミング情報をユーザに動画像や音声として提供する機能を果たす。
【０１３８】
さて、ＣＰＵ  １０１は、バッファに未だ再生されていないストリーミング情報が十分に残っているか否か、すなわち、バッファリングが十分にされているか否かを調べる（ステップＳ５０９）。バッファリングが十分である場合（ステップＳ５０９；Ｙｅｓ）、ステップＳ５１１に進む。
【０１３９】
バッファリングが十分でない場合（ステップＳ５０９；Ｎｏ）、要求送信部４０４は、現在設定されている親ノードへ、ストリーミング情報を求める要求を送信する（ステップＳ５１０）。
【０１４０】
そして、端末装置２２１は、何らかのパケットがＮＩＣ  １０９において受信されるか、何らかのエラーが発生するか、バッファリングの状態が変化するまで待機する（ステップＳ５１１）。なお、この待機の間には、適宜他の処理、たとえば、ＲＡＭ  １０３内のバッファに記憶された動画像や音声の再生に必要な情報のデコード処理や、音声処理部１１０、画像処理部１０７の制御等をコルーチン的に実行することができる。
【０１４１】
したがって、ＣＰＵ  １０１の制御の下、ＮＩＣ  １０９は、要求送信部４０４として機能する。
【０１４２】
ステップＳ５１１の待機が終了すると、ＣＰＵ  １０１はその原因を調べる（ステップＳ５１２）。原因としては、以下のようなものが考えられる。
【０１４３】
（１）端末装置２２１が親ノードへ送信した要求に呼応して、親ノードから送信された紹介が受信された場合（ステップＳ５１２；紹介）。この場合、ＮＩＣ  １０９は、紹介受信部４１７として機能したことになる。
【０１４４】
（２）端末装置２２１が送信した要求に呼応して、親ノードから送信された応答が受信された場合（ステップＳ５１２；応答）。この場合、ＮＩＣ  １０９は、応答受信部４０５として機能したことになる。
【０１４５】
（３）親ノードから送信された通知が受信された場合（ステップＳ５１２；通知）。この場合、ＮＩＣ  １０９は、通知受信部４１２として機能したことになる。
【０１４６】
（４）他の端末装置２２１から送信された要求が受信された場合（ステップＳ５１２；要求）。この場合、ＮＩＣ  １０９は、要求受信部４０７として機能したことになる。
【０１４７】
（５）エラーが生じた場合（ステップＳ５１２；エラー）。エラーが生じるのは、何らかのパケットを送信し、アクノリッジが返送されてくるのが期待されるにもかかわらず、当該送信に対するアクノリッジが受信されなかった場合や、アクノリッジを返送しないプロトコルを採用した場合であっても、相手からのパケットが長時間に渡って到達しない場合、等であり、送信先の通信機器が動作を停止している場合や、ＮＩＣ  １０９が接続されているルータ、ファイアウォールやインターネット接続プロバイダに何らかの支障が生じた場合等が考えられる。また、通信相手からエラーが通知された場合も含まれる。
【０１４８】
（６）バッファ内の情報が消費されて、その状態が変化した場合（ステップＳ５１２；バッファ）。
【０１４９】
なお、上記以外の種類のパケットが受信された場合には、適宜対応する処理が実行される（図示せず）。
【０１５０】
さて、他の端末装置２２１に対して要求を送信したにもかかわらず紹介が受信された場合（ステップＳ５１２；紹介）とは、当該他の端末装置２２１との親子関係を作ることができない場合である。このとき、紹介には、親ノードとすべき別の端末装置２２１の通信識別子が指定されている。そこで、親設定部４１３は、紹介に指定されている通信識別子を設定記憶部４０１に親ノードとして記憶させることにより、親ノードを再設定して（ステップＳ５１３）、ステップＳ５１１に戻る。
【０１５１】
一方、親ノードから応答が受信された場合（ステップＳ５１２；応答）、当該応答に指定されるストリーミング情報をバッファに追加して（ステップＳ５１４）、ステップＳ５０９に戻る。このストリーミング情報は、提供部４０６によってユーザに提供されることとなる。
【０１５２】
一方、バッファの状態が変化した場合（ステップＳ５１２；バッファ）、ステップＳ５１１に直ちに戻る。
【０１５３】
親ノードから通知が受信された場合（ステップＳ５１２；通知）は、当該通知には「将来親ノードとの通信ができなくなった場合に、新たに親ノードに設定すべき通信機器」の通信識別子が指定されている。そこで、ＣＰＵ  １０１は、通知に指定された通信識別子を、設定記憶部４０１に代替ノードとして記憶させて（ステップＳ５１５）、ステップＳ５１１に戻る。なお、通知に指定される情報を決定する手法については、後述する。
【０１５４】
このほか、エラーが生じた場合（ステップＳ５１２；エラー）、その原因が親ノードとの通信のみにあるのか、ある子ノードとの通信のみにあるのか、その他通信ができなくなった理由があるのかを調べる（ステップＳ５１６）。
【０１５５】
親ノードとの通信が原因である場合（ステップＳ５１６；親）、親設定部４１３は、設定記憶部４０１に代替ノードの情報が記憶されているか否かを調べ（ステップＳ５１７）、記憶されていれば（ステップＳ５１７；Ｙｅｓ）、設定記憶部４０１において、代替ノードの通信識別子を親ノードとして記憶させ（ステップＳ５１８）、代替ノードの情報を消去して（ステップＳ５１９）、ステップＳ５０９に戻る。
【０１５６】
上記の構成では、親ノードとの通信ができなくなった場合には、かつて親ノードに紹介された代替ノードが端末装置２２１の新たな親ノードとなり、木構造の形状が更新される。そして、新たな親ノードに対して、ストリーミング情報の要求を送信して応答を待つ処理が、繰り返されることとなる。
【０１５７】
一方、親ノードとの通信が原因で（ステップＳ５１６；親）、かつ、代替ノードの情報が記憶されていない場合（ステップＳ５１７；Ｎｏ）、ステップＳ５０２に戻る。これにより、端末装置２２１は、指示サーバ装置２４１から新たな親ノードの指示を受けることとなる。
【０１５８】
この場合にも、木構造の形状が更新されるが、後述のように、代替ノードとして紹介される他の端末装置２２１として適切なものを選ぶことによって、指示サーバ装置２４１への問合せの集中をできるだけ防止することができる点にも、本発明の特徴がある。
【０１５９】
以下では、端末装置２２１が応答、紹介、通知を送信する状況について詳細に説明する。
【０１６０】
まず、ＮＩＣ  １０９が、他の端末装置２２１からの要求を受信した場合（ステップＳ５１２；要求）、ＣＰＵ  １０１は、当該要求の送信元の端末装置２２１が、設定記憶部４０１に子ノードとして記憶されているか否かを調べる（ステップＳ５２０）。
【０１６１】
子ノードとして記憶されている場合（ステップＳ５２０；Ｙｅｓ）、応答送信部４０９が、当該要求に呼応して、必要なストリーミング情報をＲＡＭ  １０３内のバッファから取得して（ステップＳ５２１）、当該ストリーミング情報を指定する応答を、当該子ノードに送信し（ステップＳ５２２）、ステップＳ５０９に戻る。
【０１６２】
したがって、ＣＰＵ  １０１の制御の下、ＲＡＭ  １０３やＮＩＣ  １０９が共働して、応答送信部４０９として機能する。
【０１６３】
なお、リアルタイム中継等の場合には、ステップＳ５２１において、必要なストリーミング情報がバッファ内に存在しない状況は稀にしか生じないが、その他のマルチメディア情報の配信等の場合には、その端末装置２２１と子ノードの端末装置２２１との間で提供される情報の時間差が大きくなってしまった場合等には、ストリーミング情報がバッファ内に存在しないこともありうる。
【０１６４】
このような場合は、子ノードに応答を返さないこととしても良いし、子ノードに「親ノードとの通信をこれ以上続けてもストリーミング情報は得られない」旨を表すエラーを返して、親ノードの再設定を子ノードに促すこととしても良い（図示せず）。これらの場合、子ノードは、親ノードの通信が原因でエラーが生じた場合（ステップＳ５１６；親）と同様の処理を実行することとなる。
【０１６５】
受信された要求（ステップＳ５１２；要求）の送信元の端末装置２２１が設定記憶部４０１に子ノードとして記憶されていない場合（ステップＳ５２０；Ｎｏ）、判定部４１５は、当該送信元の端末装置２２１を子ノードとして追加するか否かを判定する（ステップＳ５２３）。
【０１６６】
すなわち、すでに設定記憶部４０１に記憶されている子ノードの数や、当該端末装置２２１のＮＩＣ  １０９における通信量、何らかのイベントが生じることを待機している時間と何らかの計算処理を現実に行っている時間の比などを考慮して、現在の通信負荷を推定し、この通信負荷に基づいて、判定を行う。
【０１６７】
なお、子ノードの数が０個である場合、すなわち、当該端末装置２２１が葉ノードである場合には、常に、要求の送信元の端末装置２２１を子ノードとして追加する、と判定するのが典型的である。
【０１６８】
なお、設定可能な子ノードの数に上限を設け、その上限までは子ノードとして追加する、と判定し、上限に至った後は追加しない、と判定する単純な手法を採用しても良い。
【０１６９】
したがって、ＣＰＵ  １０１がＮＩＣ  １０９や外部メモリ１０６、ＲＡＭ  １０３等の状況を参照して、判定部４１５として機能する。
【０１７０】
要求の送信元の端末装置２２１を子ノードとして追加しない、と判定された場合（ステップＳ５２３；Ｎｏ）、ＣＰＵ  １０１は、設定記憶部４０１に記憶されている子ノードからいずれかを選択する（ステップＳ５２４）。たとえば、ランダムに選択したり、自身の子ノードになった順に、巡回的に選択したり、各子ノードとの通信状況を確認して、現在の通信状況が最も良好なものを選択する等、種々の態様を採用することができる。
【０１７１】
そして、通知送信部４１１は、選択された子ノードを指定する通知を、要求の送信元の端末装置２２１に送信して（ステップＳ５２５）、ステップＳ５０９に戻る。
【０１７２】
これにより、要求の送信元の端末装置２２１は、木構造を一段下ったノードを親ノードにしようと試みることになる。
【０１７３】
一方、子ノードとして追加すると判定された場合（ステップＳ５２３；Ｙｅｓ）、子設定部４０８は、受信された要求の送信元の端末装置２２１の通信識別子を、設定記憶部４０１において子ノードとして追加する（ステップＳ５２６）。
【０１７４】
したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３や外部メモリ１０６、ＨＤ  １２１等と共働して、子設定部４０８として機能する。なお、子設定部４０８は、後述するように、通信できなくなった子ノードの通信識別子を、設定記憶部４０１から削除して、子ノードの設定を解除する機能も有する。
【０１７５】
そして、応答送信部４０９が、当該要求に呼応して、必要なストリーミング情報をＲＡＭ  １０３内のバッファから取得して（ステップＳ５２７）、当該ストリーミング情報を指定する応答を、当該追加された子ノードに送信する（ステップＳ５２８）、
【０１７６】
上記の処理によって、子ノードの設定が変更されたこととなるので、選択部４１０は、現在の子ノードから、いずれかを代表ノードに選択し、他を配下ノードに選択する（ステップＳ５２９）。
【０１７７】
代表ノードの選択には、ランダムに選択する手法、現在の通信状況が最も良好なものを選択する手法のほか、直前に代表ノードとして選択されたものをそのまま再度選択する手法などを採用することができ、ＣＰＵ  １０１が、ＲＡＭ  １０３や外部メモリ１０６等と共働して、選択部４１０として機能する。
【０１７８】
このように、要求送信部４０４および応答受信部４０５は、端末装置２２１が「子ノード」として機能するために動作するが、要求受信部４０７、子設定部４０８、応答送信部４０９は、端末装置２２１が「親ノード」として機能するために動作する。
【０１７９】
そして、通知送信部４１１は、当該端末装置２２１の親ノードを指定する通知を、代表ノードに送信し（ステップＳ５３０）、選択された代表ノードを指定する通知を、配下ノードに送信して（ステップＳ５３１）、ステップＳ５０９に戻る。
【０１８０】
なお、ＴＣＰ／ＩＰ通信など、コネクション型通信で情報のやりとりを行っている場合には、各種の情報を送信すると、当該情報が到着した旨を表すアクノリッジが返答して送信されてくる。したがって、このような返答がない場合には、子ノードとの通信が原因でエラーが生じることがある。
【０１８１】
また、ＵＤＰ通信などコネクションレス型通信で情報のやりとりを行っている場合には、アクノリッジの返答はない。
【０１８２】
そこで、問合せ、指示、要求、通知はコネクション型で、応答は、一旦はコネクション型で予告をし、その後にコネクションレス型でストリーミング情報をやりとりすることとするのが典型的である。
【０１８３】
このような通信の結果、子ノードが原因でエラーが生じた場合（ステップＳ５１６；子）、子設定部４０８は、エラーの原因となった子ノードの通信識別子を、設定記憶部４０１から削除することによって親子関係を解除して（ステップＳ５３２）、ステップＳ５０９に戻る。
【０１８４】
一方、端末装置２２１そのものがインターネット２９１から切り離されたためにエラーが発生した場合等（ステップＳ５１６；通信断）は、子設定部４０８は、子ノードの通信識別子をすべて設定記憶部４０１から削除して、全親子関係を解除する（ステップＳ５３３）。
【０１８５】
さらに、ステップＳ５３３の前に子ノードが１つ以上存在し、代表ノードが選択済みでる場合（ステップＳ５３４；Ｙｅｓ）には、代表ノードを親ノードに設定してから（ステップＳ５３５）、ステップＳ５０２に戻る。
【０１８６】
以下、たとえば図２の状況を例として考える。ノードＡに注目すると、ノードＡの子は、ノードＰ、Ｑ、Ｘであり、ノードＡの親は、ノードＧである。
【０１８７】
ここで、選択部４１０がノードＰを代表ノードに選択したとすると、ノードＰにはＧが、ノードＱ、ＸにはＰが、それぞれ代替ノードとして通知される。
【０１８８】
図８は、この状況下で、ノードＡに不具合が生じて通信ができなくなったり、ノードＡの電源が切られた後の木構造の状態を示す説明図である。
【０１８９】
本図に示すように、ノードＰ、Ｑ、Ｘは、その親であるＡとの通信が不可能となるので、代替ノードを親ノードとするように設定が更新される。
【０１９０】
したがって、ノードＡにかわって、ノードＰの親が、ノードＧとなり、ノードＰの子は、ノードＱ、Ｘとなる。
【０１９１】
図９は、この状況下で、ノードＡの不具合が解消したり、電源が再投入された後の、木構造の状態を示す説明図である。
【０１９２】
ノードＡは、通信ができなくなると、代表ノードを親ノードとして設定記憶部４０１に記憶する。したがって、ノードＡの親ノードはノードＰになる。
【０１９３】
このため、他のノードとの通信ができなくなった後に、通信が復旧すると、ノードＡは、ノードＰの子になろうとする。
【０１９４】
ノードＧの子の数を考えると、図２の状態でノードＡがいた位置に、図８、図９の状態ではノードＰが配置されることとなり、子ノードの数は増加しない。したがって、ノードＧの通信負荷は、ほぼ同じとなると期待され、通信品質が大幅に変化することを防止できるのである。
【０１９５】
また、この状況下では、ノードＡよりも通信状況が安定していると考えられるノードＰは、木構造の中で、一段根ノードに近付いたことになる。したがって、木構造に安定して参加している時間が長い端末装置２２１ほど、上流に配置されるように、自然に木構造が変化される。
【０１９６】
このように、本実施形態によれば、端末装置２２１が自律的に親ノードを決定し、通知された代替ノードに基づいて、親ノードに支障が起きた場合であっても、木構造全体に影響が及ばないように、効率良くストリーミング情報を配信することができるようになる。
【０１９７】
（指示サーバ装置）
図１０は、指示サーバ装置２４１の概要構成を示す説明図である。以下、本図を参照して説明する。
【０１９８】
指示サーバ装置２４１は、提供サーバ装置２６１と、現在木構造に参加している端末装置２２１と、を管理するサーバ装置であり、ゲームサーバにおけるロビーサーバやマッチングサーバ、アクセスの集中を防ぎ負荷分散を図るためのゲートウェイサーバのような機能を果たす。
【０１９９】
ここで、指示サーバ装置２４１は、端末記憶部９０１、サーバ記憶部９０２、問合せ受信部９０３、識別子抽出部９０５、指示送信部９０６、端末更新部９０７を備える。
【０２００】
図１１は、指示サーバ装置２４１にて実行される指示処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０２０１】
指示サーバ装置２４１において、問合せ受信部９０３は、新たに木構造に参加しようとする端末装置２２１から送信された問合せを受信する（ステップＳ９５１）。したがって、問合せ受信部９０３は、ＮＩＣ  １０９により実現される。指示サーバ装置２４１を実現する情報処理装置１００は、問合せが受信されるまで待機するが、この待機の間、情報処理装置１００が有するＣＰＵ  １０１は、適宜他の処理をコルーチン的に実行するのが一般的である。
【０２０２】
さて、問合せを受信すると、識別子抽出部９０５は、端末記憶部９０１を調べて、所定の条件に適合する通信識別子を抽出する（ステップＳ９５２）。
【０２０３】
ここで、端末記憶部９０１には、問合せを送信してきた端末装置２２１の通信識別子と、当該問合せが受信された時刻と、の対が記憶されている。したがって、端末記憶部９０１はＲＡＭ  １０３やＨＤ  １２１等によって、識別子抽出部９０５は、ＣＰＵ  １０１等によって、それぞれ実現される。
【０２０４】
そこで、識別子抽出部９０５は、現在から所定の期間内だけ過去に遡った時点から、現在までの間に、問合せを送信してきた他の端末装置２２１、すなわち、最近問合せを行った他の端末装置２２１を所定の条件に適合するものとして、その通信識別子を抽出する。
【０２０５】
抽出された通信識別子が１つである場合（ステップＳ９５３；１）、指示送信部９０６は、当該抽出された通信識別子を指定した指示を、その通信識別子の問合せの送信元に送信して（ステップＳ９５４）、ステップＳ９５９に進む。したがって、指示送信部９０６は、ＮＩＣ  １０９により実現される。
【０２０６】
一方、抽出された通信識別子が複数である場合（ステップＳ９５３；複数）、ＣＰＵ  １０１は、その中からいずれかを選択して（ステップＳ９５５）、指示送信部９０６は、選択された通信識別子を指定した指示を、その通信識別子の問合せの送信元に送信して（ステップＳ９５６）、ステップＳ９５９に進む。
【０２０７】
ステップＳ９５５における選択には、ランダムにいずれかを選ぶ手法や、古いものから順に選ぶ手法など、種々の態様を採用することができる。
【０２０８】
また、通信識別子が抽出できなかった場合（ステップＳ９５３；０）、指示送信部９０６は、提供サーバ装置２６１の通信識別子を指定した指示を、その通信識別子の問合せの送信元に送信して（ステップＳ９５７）、ステップＳ９５９に進む。
【０２０９】
上記のように、サーバ記憶部９０２には当該指示サーバ装置２４１が管理する提供サーバ装置２６１の通信識別子が記憶され、ＲＡＭ  １０３やＨＤ  １２１等によって実現される。
【０２１０】
また、サーバ記憶部９０２に複数の通信識別子が記憶される場合には、巡回的な順序もしくはランダムな順序で通信識別子を選択して、これを指示に指定するものとすれば良い。
【０２１１】
このほか、条件に合う通信識別子が抽出できなかった場合（ステップＳ９５３；０）であっても、提供サーバ装置２６１に直結している端末装置２２１の数が所定数を超えている場合等は、ランダムにいずれかの端末装置２２１の通信識別子を選択して、これを指示することとしても良い。
【０２１２】
さて、指示を送信した後は、問合せを受信した時刻と、問合せの送信元の通信識別子とを対応付けて、端末記憶部９０１に追加記憶して、これを更新し（ステップＳ９５９）、ステップＳ９５１に戻る。
【０２１３】
なお、更新の際に、端末記憶部９０１内から、古い通信識別子、典型的には、問合せを送信してから平均的な視聴時間（あるいは、その定数倍）を経過した通信識別子を消去することとしても良い。
【０２１４】
なお、指示に、複数の通信識別子を指定するような態様を採用することもできる。この場合には、通信識別子を最近のものから過去（昔）のものへ、順に所定個数抽出し、その順序をランダムにシャッフルしてから指示に指定する。
【０２１５】
指示を受信した端末装置２２１では、指示に指定された通信識別子のそれぞれについて親ノードにできるかどうかを試行し、いずれかと通信が可能であればそのまま親ノードとし、すべてに失敗した場合には、再度指示サーバ装置２４１に問合せを行うこととすれば良い。
【０２１６】
このほか、指示サーバ装置２４１の端末更新部９０７は、問合せに対してどの通信識別子を指示に指定して返送したかの情報も端末記憶部９０１に記憶することとし、識別子抽出部９０５は、一定期間内に再度問合せがあった場合には、指示済みの通信識別子と重複しないものを優先的に抽出するようにすることとしても良い。
【０２１７】
さて一般に、ストリーミング配信の場合に、同じコンテンツを同じ時期に視聴し始めたユーザは、同じ時期に視聴を完了する。
【０２１８】
したがって、同じ時期に問合せをしてきた端末装置２２１が活動する期間は、別の時期に問合せをしてきた端末装置２２１が活動する期間に比べて、重複する可能性が高い。上記の態様を採用することで、ある一定期間内に問合せをしてきた端末装置２２１は、木構造の中では比較的近くに配置される可能性が高くなる。
【０２１９】
また、抽出する際に参照する期間を平均的な利用時間とすれば、これを超過した端末装置２２１を指示する可能性が低くなるので、通信不可能な端末装置２２１を指示してしまう可能性が減少する。
【０２２０】
また、混雑している場合には、他の端末装置２２１を親ノードとすべき旨の指示がなされ、混雑していない場合には、提供サーバ装置２６１を親ノードとすべき旨の指示がなされるので、混雑の度合に応じてデータの配信ポリシーが動的に変更される。
【０２２１】
さらに、端末装置２２１が現在も動作しているか否かを指示サーバ装置２４１から問い合わせる必要がないため、ネットワーク内のトラフィックを抑えることができ、迅速な指示が可能となる。
【０２２２】
このため、木構造全体での通信効率が向上することが期待されるのである。
【０２２３】
（提供サーバ装置）
図１２は、提供サーバ装置２６１の概要構成を示す説明図である。以下、本図を参照して説明する。
【０２２４】
提供サーバ装置２６１は、要求受信部９３１、情報記憶部９３２、応答送信部９３３を備える。
【０２２５】
ここで提供サーバ装置２６１における要求受信部９３１および応答送信部９３３は、端末装置２２１における要求受信部４０７および応答送信部４０９と同様の機能を果たし、提供サーバ装置２６１における情報記憶部９３２は、端末装置２２１におけるバッファと同様の機能を果たす。
【０２２６】
図１３は、提供サーバ装置２６１にて実行される提供処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【０２２７】
提供サーバ装置２６１において、要求受信部９３１は、端末装置２２１から送信された要求を受信する（ステップＳ９７１）。したがって、要求受信部９３１は、ＮＩＣ  １０９により実現される。提供サーバ装置２６１を実現する情報処理装置１００は、要求が受信されるまで待機するが、この待機の間、情報処理装置１００が有するＣＰＵ  １０１は、適宜他の処理をコルーチン的に実行するのが一般的である。
【０２２８】
要求が受信されると、当該要求に応じて、ＣＰＵ  １０１は、情報記憶部９３２から必要なストリーミング情報を取得する（ステップＳ９７２）。端末装置２２１のバッファの場合と異なり、提供サーバ装置２６１は、提供すべきストリーミング情報を、すべて情報記憶部９３２に保持している。したがって、ストリーミング情報が取得できないことはない。典型的には、情報記憶部９３２はＨＤ  １２１等により実現される。
【０２２９】
さらに、応答送信部９３３は、取得したストリーミング情報を指定する応答を、要求の送信元の端末装置２２１に送信して（ステップＳ９７３）、ステップＳ９７１に戻る。したがって、応答送信部９３３は、ＮＩＣ  １０９により実現される。
【０２３０】
このように、提供サーバ装置２６１は、一般的なストリーミングサーバと同様の構成を採用しており、本実施形態においては、提供サーバ装置２６１からストリーミング配信がされた後の処理に工夫をこらすことで、通信効率の向上を図ることとしているのである。
【産業上の利用可能性】
【０２３１】
以上説明したように、本発明によれば、木構造のノードとなって通信をする際に通信に失敗すると、木構造の再編を効率良く行うのに好適な端末装置、通信システム、端末方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【符号の説明】
【０２３２】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェース
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
１２１  ＨＤ
２０１  通信システム
２２１  端末装置
２４１  指示サーバ装置
２６１  提供サーバ装置
２９１  インターネット
４０１  設定記憶部
４０２  問合せ送信部
４０３  指示受信部
４０４  要求送信部
４０５  応答受信部
４０６  提供部
４０７  要求受信部
４０８  子設定部
４０９  応答送信部
４１０  選択部
４１１  通知送信部
４１２  通知受信部
４１３  親設定部
４１５  判定部
４１６  紹介送信部
４１７  紹介受信部
９０１  端末記憶部
９０２  サーバ記憶部
９０３  問合せ受信部
９０５  識別子抽出部
９０６  指示送信部
９０７  端末更新部
９３１  要求受信部
９３２  情報記憶部
９３３  応答送信部
【図１】
2011100384.tif 000003
【図２】
2011100384.tif 000004
【図３】
2011100384.tif 000005
【図４】
2011100384.tif 000006
【図５】
2011100384.tif 000007
【図６】
2011100384.tif 000008
【図７】
2011100384.tif 000009
【図８】
2011100384.tif 000010
【図９】
2011100384.tif 000011
【図１０】
2011100384.tif 000012
【図１１】
2011100384.tif 000013
【図１２】
2011100384.tif 000014
【図１３】
2011100384.tif 000015