以下、本発明の実施形態について図面を参照しながら説明する。図1はクライアント・サーバ型接続とピアツーピア接続を共有するコミュニケーションシステム1の概略図である。図1に示すように、グローバルIPアドレスを有するサーバ2がインターネット(The Internet)などの情報通信網上に置かれており、このサーバ2は後述するようなコミュニケーションアプリケーションを処理することができ、インターネットを介してアクセス可能で且つ情報発信が可能なWWWサーバを構成している。
このサーバ2に対して接続可能な情報処理装置として複数のクライアント、図1では3つのパーソナルコンピュータ3、4、5が存在する。これらパーソナルコンピュータ3、4、5は、サーバ2に対する接続機能を有し、所謂TCP/IP(Transmission Control Protocol / Internet Protocol)プロトコル群を利用して情報処理装置間での情報(データ)の送受信が可能である。本実施形態においては、市販のパーソナルコンピュータがクライアント型情報処理装置として使用されるが、クライアント型情報処理装置としては各種PDA(Personal Digital Assistants)機器やウェブブラウザとしても機能するような携帯電話機などの各種の電子デバイスを含めることが可能であり、更には家庭電化製品などの機器も含まれる。
(1)システムの構成
これらパーソナルコンピュータ3、4、5には、後述するようなコミュニケーションアプリケーションがインストールされており、パーソナルコンピュータ3、4、5はサーバ2に対してクライアント・サーバ型接続を行った場合及び同じコミュニケーションアプリケーションを開いている他のパーソナルコンピュータとの間でピアツーピア型接続を行った場合には、該コミュニケーションアプリケーションが作動して複数のユーザ間で意思や感情の交換も可能となる。ここでクライアント・サーバ型接続は、情報を提供する側と受ける側に分けられる形式の接続の一例であり、情報を提供する側がサーバであり、情報を受ける側がクライアントとされる。サーバ自体は専用装置でも良く或いは複数台の情報処理装置に亘って構成されるものでも良い。また、ピアツーピア型接続は、対等な関係での接続の一例であり、ピアツーピア型接続では両方の情報処理装置がそれぞれ情報を提供する側として機能し得ると共に情報を受ける側としても機能し得る。なお、以下の説明において、情報を提供する側と受ける側に分けられる形式の接続としてクライアント・サーバ型接続を用い、対等な関係での接続としてピアツーピア型接続を用いるが、本発明の情報処理装置、情報処理システムなどはこれらに限定されず、同等若しくは類するような各種の接続形態を含むものである。
これらパーソナルコンピュータ3、4、5の中、パーソナルコンピュータ3、4は直接インターネットに接続できるようにグローバルIPアドレスが付与されている。また、パーソナルコンピュータ5は、サーバ2に対して交信できるが、グローバルIPアドレスは付与されておらず、プライベートIPアドレスが付与された情報処理装置である。
図1は共有接続が行われた状態を示しており、サーバ2は通信路6a、6b、6cを介してそれぞれパーソナルコンピュータ3、4、5に接続されている。通信路6a、6b、6cは、インターネットを含む様な通信網の一部であり、部分的に電話回線、ケーブルテレビ回線などであっても良い。また、通信路6a、6b、6cは有線、無線を問わない。通信路6a、6b、6cはサーバ2とそれぞれパーソナルコンピュータ3、4、5の間でクライアント・サーバ型接続をするためのルートとなる。パーソナルコンピュータ3とパーソナルコンピュータ4の間には、ピアツーピア型接続をするための通信路7が形成される。通信路7もインターネットを含む様な通信網の一部であり、部分的に電話回線、ケーブルテレビ回線などであっても良い。また、通信路7は有線、無線を問わない。パーソナルコンピュータ3とパーソナルコンピュータ4にはそれぞれグローバルIPアドレスが付与されており、各グローバルIPアドレスを利用してパーソナルコンピュータ3とパーソナルコンピュータ4がサーバを介さずにピアツーピア型に接続される。
図1の接続状態では、パーソナルコンピュータ3とパーソナルコンピュータ4の間がピアツーピア型接続となり、他の接続はクライアント・サーバ型接続となる。すなわち、クライアント間であるパーソナルコンピュータ3とパーソナルコンピュータ5の間の接続は、サーバ2を介したクライアント・サーバ型接続となる。パーソナルコンピュータ3とパーソナルコンピュータ4の間のピアツーピア型接続は、パーソナルコンピュータ3、パーソナルコンピュータ4はそれぞれ単独では互いのグローバルIPアドレスを知りえないため、サーバ2から取得した互いのグローバルIPアドレスに基づいて接続される。例えばパーソナルコンピュータ3が有するパーソナルコンピュータ4のグローバルIPアドレスは、サーバ2との接続の後にサーバ2の内部のデータから取得したものであり、そのデータを利用してパーソナルコンピュータ3は接続形態をパーソナルコンピュータ4に対してはピアツーピア型接続に遷移させる。このようなクライアント・サーバ型接続からピアツーピア型接続への遷移によって、トラフィックのサーバ2に対する一局集中を避け、システム全体としてのトラフィックの最適化を図ることができる。
図2は図1のより具体的な構成を示す図である。インターネットを含む通信網9に接続するサーバ2及びパーソナルコンピュータ3、4は、それぞれグローバルIPアドレスが付与された装置である。パーソナルコンピュータ3、4は、例えば固定のグローバルIPアドレスを以ってインターネットに接続する装置であったり、或いは、IPS(Internet Service Provider)などから接続の度にグローバルIPアドレスが付与される装置とすることも可能である。クライアントとして機能するパーソナルコンピュータ5は、企業内LANなどに配置される装置であり、ルータ8を介して外部通信網9に接続される。
このようにパーソナルコンピュータ5がルータ8を介して外部に接続する場合には、パーソナルコンピュータ5のプライベートIPアドレスは当該ルータ8でグローバルIPアドレスに変換され、そのルータ8のグローバルIPアドレスがサーバ2に保持される。従って、サーバ2においては、接続先のパーソナルコンピュータのグローバルIPアドレスとしてルータやNATのグローバルIPアドレスも混在することになるが、サーバ2のテーブルに対する付加情報として、例えばコミュニケーションアプリケーションで取り込む情報として予めグローバル/プライベートの区別をするための情報を取り込んで処理する方法や、IPマスカレードなどを採用する場合のポート番号をグローバル/プライベートで異なるようにする方法なども可能である。
(2)データテーブルの例
図3はサーバに格納されるデータテーブルの一例を示しており、当該サーバに対してクライアント・サーバ型接続するクライアント型装置のIPアドレスが例示されている。このデータテーブルはサーバに格納されるアドレスの管理手段である。ルート番号1の装置には、IPアドレス「a.a.a.a」が付与されており、ルート番号2の装置には、IPアドレス「b.b.b.b」が付与されており、ルート番号3の装置には、IPアドレス「d.d.d.d」が付与されている。これら3つのアドレスの中、ルート番号3の装置はルータなどのIPアドレスを格納しているに過ぎず、このためプライベートIPアドレスか否かの部分(Private?)が「YES」となっている。
サーバがこのようなデータを格納するための手段としては、先ずクライアント側においてコミュニケーションアプリケーションが自動的に当該パーソナルコンピュータのネットワークアダプターカードに割り当てられているIPアドレスを読み取り、それがRFC1597で予約されたアドレス、即ち「10.0.0.0」〜「10.255.255.255」、「172.16.0.0」〜「172.31.255.255」、或いは「192.168.0.0」〜「192.168.255.255」の範囲である場合には、そのパーソナルコンピュータがプライベートIPアドレスを有し且つグローバルIPアドレスを有しないものと判断して、サーバ2に対してプライベートである旨の信号を送る。サーバ側では特定の装置からプライベートである旨の信号を受け取った場合には、図3のデータテーブルのプライベートか否かの部分を「YES」に設定する。このようなコミュニケーションアプリケーションによる自動読み取りの他に、ユーザーが自分でプライベートIPアドレスか否かをサーバに対して手動で送信するようにコミュニケーションアプリケーションを構成することも可能であり、また電子メール内に存在するアドレス情報などを利用することも可能である。また、後述するような図11のユーザリストを利用することも可能である。
ルータ8が拡張されたNAT機能いわゆるNATP(Network Address Translation Protocol)やIPマスカレード機能を有している場合には、ルータ8に接続されるポート番号がTCPヘッダやUDPヘッダに書き込まれてWebサーバに送信される。この変換情報はルータ8に保存されるが、変換された後のポート番号もWebサーバに送信されることから、その変換の状態からプライベートIPアドレスか否かを判断するような手段を用いても良い。
クライアント・サーバ型接続を行っていたクライアント型情報処理装置であるパーソナルコンピュータ3は、サーバ2との接続から当該サーバに格納されているデータテーブルの情報を取得し、そのデータテーブルのデータからグローバルIPアドレスであるものを選択する。この時グローバルIPアドレスはプライベートIPアドレスでないものを選択すれば良い。この選択したグローバルIPアドレス(例えば図3における「d.d.d.d」を利用し、サーバを介して接続する関係の他のクライアントであるクライアント型情報処理装置であるパーソナルコンピュータ4に対してピアツーピア型接続を行う。このようなピアツーピア型接続を行うことで、ピアツーピア型の接続にかかるパーソナルコンピュータ同士は直接データ送信を行うことが可能となり、サーバ2へのトラフィックの集中を避けることができ、送信負荷を低減することが可能とされる。
次に、本実施形態のシステムで共通に使用されるコミュニケーションアプリケーションについて説明する。
(3)コミュニケーションプログラムの概略
以下では、後述するコンピュータ装置(図12参照)により実行されるコミュニケーションプログラムについて説明する。コンピュータ装置で実行されるコミュニケーションプログラムは、他のコンピュータ装置で実行されるコミュニケーションプログラムとの間で、いわゆるサーバ・クライアント方式により通信を行う。すなわち、相互接続状態が確立された複数のコミュニケーションプログラムにおいては、所定のコミュニケーションプログラムによりサーバとしての機能が実現され、他のコミュニケーションプログラムがクライアントとして動作する。ただし、コミュニケーションプログラムは、コンピュータ装置において実行処理が開始され、他のコミュニケーションプログラムとの間で相互接続状態が確立されていない時点、すなわち初期起動状態において、いわば仮想セッションモードでの動作となり、サーバ又はクライアントの区別なく、自分自身でセッションの確立を行うことができる。
ここで、複数のコンピュータ装置で実行される各々のコミュニケーションプログラム間でセッションの確立を行う場合には、これらコミュニケーションプログラム間で接続設定情報の授受が行われる。この接続設定情報は、例えば、コミュニケーションプログラムの起動時にコンピュータ装置によって生成されるものであり、この接続設定情報の送出元となるコンピュータ装置に設定されたIPアドレス、及び当該コミュニケーションプログラムで利用されるポート番号などが記述されたファイルにより構成されている。なお、接続設定情報についての詳細は後述する。
そして、コミュニケーションプログラムから、他のコミュニケーションプログラムに対して接続設定情報が送出されると、この接続設定情報を取得したコミュニケーションプログラムは、接続設定情報に記述されたIPアドレスやポート番号などに基づいて、送出元であるコンピュータ装置(ひいては、このコンピュータ装置で実行されるコミュニケーションプログラム)に対して、接続処理を行い、セッションが確立される。
このとき、接続設定情報を含むファイルは、例えば拡張子によってコミュニケーションプログラムとの関連付けがなされており、いわゆるダブルクリック操作を行うことなどによってコンピュータ装置上でこのファイルが選択されると、自動的にコミュニケーションプログラムが起動するよう構成されている。
コミュニケーションシステムにおいては、起動時に接続設定情報を生成し、この接続設定情報を他のコミュニケーションプログラムに対して送出した側のコミュニケーションプログラムがサーバとしての機能を果たし、取得した接続設定情報に基づいて起動された側のコミュニケーションプログラムがクライアントとして動作するものとする。
ここで、上述のようにしてコンピュータ装置間で接続設定情報を授受するに際しては、例えば、サーバとなるコンピュータ装置からクライアントとなるコンピュータ装置に対して、接続開始を促すメッセージが記載された電子メールに接続設定情報を含むファイルを添付して送信することにより実現されている。
なお、本例で説明するコミュニケーションシステムにおいては、電子メールを利用して接続設定情報を送出するものとするが、例えば、いわゆるFTPソフトウェアなどのような、インターネットに接続されたコンピュータ装置の間で各種のファイル交換を実現するアプリケーションプログラムを用いることによって、接続設定情報をデータ・ファイル或いはアプリケーション・プログラムの形で送出するとしてもよい。また、例えば、コンピュータ装置の利用者(ユーザ)に対して接続開始を通知することなく、接続設定情報を直接コンピュータ装置間で授受することによって、ユーザに接続の開始(セッションの確立)を意識させることなく自動的にクライアント側のコンピュータ装置上でコミュニケーションプログラムが起動するように構成してもよい。
(4)コミュニケーションプログラムのモジュール構造
ここで、コミュニケーションプログラムにおけるモジュール構造の一例について、図4を参照しながら説明する。コミュニケーションプログラムは、例えば図4の(A)に示すように、コンピュータ装置におけるネットワークインターフェースの動作を制御するインターフェースモジュール50と、他のコンピュータ装置で実行されるコミュニケーションプログラム間でのセッションの確立などを提供するコアモジュール51と、コミュニケーションプログラムにおける基本的な機能を提供する基本モジュール52と、各々個別の機能を提供する複数のアプリケーションモジュール53と、グラフィカル・ユーザ・インターフェース(以下、GUI:Graphical User Interfaceと称する。)を管理するGUIモジュール54とにより構成されている。
インターフェースモジュール50は、いわばAPI(Application Program Interface)として構成されており、インターネット等のコンピュータネットワークを介して他のコンピュータ装置で実行されるプログラムとの間で画像データ、音声データ、或いは文字データ等の各種情報の伝送路を確立し、ネットワーク通信の詳細を簡便な命令体系によって容易に処理可能とするモジュールである。このインターフェースモジュール50としては、例えば、マイクロソフト株式会社の「Direct Play」などを用いることができる。
コアモジュール51は、他のコミュニケーションプログラムとの間でセッションの確立を行うとともに、確立されたセッションの管理を行うセッション管理機能を有している。具体的には例えば、接続設定情報を作成する接続設定情報作成機能、セッションを確立するセッション確立機能、コミュニケーションプログラム間でデータの送受信を行うデータ送受信機能、確立されたセッション内のプレーヤーを管理するセッション内プレーヤー管理機能などが、セッション管理機能としてコアモジュール51により提供される。
ここで、コミュニケーションシステム1においては、サーバとなるコミュニケーションプログラムと、クライアントとなるコミュニケーションプログラムとが存在している。サーバ側のコミュニケーションプログラムは、クライアント側のコミュニケーションプログラムから送出されたデータを、このデータの宛先を参照して、宛先として指定された他のクライアント側のコミュニケーションプログラムに転送するなどの処理が行われる。このため、コミュニケーションシステム1においては、画像データ、音声データ、或いは文字データなどの各種情報を授受するに際して、セッションを確立しておくことが必要となる。そこで、コミュニケーションプログラムにおいては、このようなセッションの確立や管理を行うためのインターフェースとしてセッション管理機能がコアモジュール51により提供されている。
コアモジュール51は、IPアドレス及びポート番号などを取得して接続設定情報が記述されたファイルを生成する。また、このファイルに対して暗号化や復号化などを行う。また、コアモジュール51は、クライアントとして動作する場合に、取得した接続設定情報に記述されたIPアドレス及びポート番号などに基づいて、サーバ側となるコンピュータ装置に対する接続を行う。これにより、セッションが確立される。
また、コアモジュール51は、セッション内に存在するコミュニケーションプログラム(プレイヤー)の管理を行う。具体的には例えば、プレイヤーのリストを生成或いは取得したり、プレイヤー毎に割り当てられた固有の識別情報(プレイヤーID)の取得或いは管理を行う。また、コアモジュール51は、新規なプレイヤーとの接続が確立されたり、所定のプレイヤーとの接続が切断されたり、プレイヤー毎の接続状態や接続名などの情報を含むプレイヤー情報が変更されるなどして、イベントが生じた場合に、このイベントを基本モジュール52及び各アプリケーションモジュール53に対して通知する。
また、コアモジュール51は、複数のアプリケーションモジュール53の各々に対する制御を行うアプリケーションモジュール管理機能を有している。具体的には例えば、各アプリケーションモジュール53の起動管理や、各アプリケーションモジュール53との間でデータの送受信などを行う。
コアモジュール51は、具体的には例えば、コミュニケーションプログラムに実装されているアプリケーションモジュール53に関するモジュール情報を、コンピュータ装置の所定の記憶領域から取得して、実装済みのアプリケーションモジュール53をリスト化する。このモジュール情報は、例えば、アプリケーションモジュール毎に固有のモジュール識別情報、GUIに関する情報であるGUI情報、或いは、コミュニケーションプログラムの起動と同時に動作を開始するか否かを示すフラグ情報などにより構成されている。そして、コアモジュール51は、このモジュール情報に基づいて、各アプリケーションモジュール53の起動状態を管理する。
また、コアモジュール51は、起動されていないアプリケーションモジュール53を起動したり、コンピュータ装置の表示部24に対する表示/非表示の切り替え制御などを行う。
ここで、コアモジュール51の動作の一例として、クライアント側である一方のコミュニケーションプログラムから他方のコミュニケーションプログラムに対して、サーバ側のコミュニケーションプログラムを介してデータを送信する場合について、図5を参照しながら説明する。
この場合において、データ送信側で動作するコアモジュール51aは、基本モジュール52やアプリケーションモジュール53から送信されたデータを受信し、このデータに対して送信ヘッダーを付与して、サーバ側のコミュニケーションプログラムに対して送信する。このようにサーバ側に送信するに際しては、受信したデータの内容については関与しない。
一方、サーバ側で動作するコアモジュール51bは、データ送信側から取得したデータに含まれる送信ヘッダーを参照して、この送信ヘッダーに宛先として記述されたデータ受信側のコミュニケーションプログラムに対して、データ送信側から取得したデータを送信する。
また、データ受信側で動作するコアモジュール51cは、取得したデータに含まれる送信ヘッダーを参照して、このデータを所定のアプリケーションモジュール53に対して受け渡す。このとき、コアモジュール51cは、データ受信側におけるコミュニケーションプログラムでデータの受け渡し先として該当するアプリケーションモジュール53が起動していない場合に、このアプリケーションモジュール53を起動処理する。
また、コアモジュール51cは、データ受信側のコミュニケーションプログラムに該当するアプリケーションモジュール53が存在しない場合に、この旨を示すメッセージをデータ送信側のコミュニケーションプログラムに対して送信する。このとき、コアモジュール51cは、取得したデータを受け渡す対象となるアプリケーションモジュール53として、全てのアプリケーションモジュール53が指定されている場合には、起動中であるアプリケーションモジュールにのみ、このデータを受け渡す。
コアモジュール51は、上述のように動作することによって、クライアントとして動作するコミュニケーションプログラム間でデータの受け渡しを行う。
一方、基本モジュール52は、コミュニケーションプログラムで用いる各種ウィンドウを用意する機能を有するモジュールである。また、基本モジュール52は、コミュニケーションプログラムの実行処理に必要となる各種の情報を設定する設定機能、及び、セッションを確立する際に接続設定情報を電子メールに添付してクライアント側に送信する電子メール送信機能などを有する。
また、アプリケーションモジュール53は、コミュニケーションプログラムに必要に応じて複数実装され、それぞれ独自の機能を提供する機能を有している。本例におけるコミュニケーションプログラムにおいては、アプリケーションモジュール53として、個人情報管理モジュール53a、画像送信モジュール53b、音声データ送受信モジュール53c、Web機能モジュール53d、チャット内容転送モジュール53e、チャットログモジュール53f、感情表現モジュール53g、アクションモジュール53h、及びライブ出演モジュール53iなどが実装されているものとする。
個人情報管理モジュール53aは、セッション内に存在する各コミュニケーションプログラム、すなわち各ユーザ(プレイヤー)に対応した画像データや名前情報などの個人情報を管理するモジュールである。
このコミュニケーションプログラムにおいては、最初に起動された状態で、ユーザに対応した画像や名前などの入力及び設定をユーザに要求して取得する。このとき、コアモジュール51を介して個人情報管理モジュール53aに対して、表示要求が送信される。このようにして他のモジュールからの表示要求を受信すると、個人情報管理モジュール53aは、GUIモジュール54に対して所定の取得要求を送信して、該当する個人情報を取得し、コンピュータ装置に表示されたウィンドウ内の所定の領域に所定の個人情報を表示する。
また、個人情報管理モジュール53aは、他のモジュールからのプレイヤー情報更新要求を受信した場合に、ネットワークを介して接続が確立された他のコミュニケーションプログラムにおける個人情報管理モジュール53aに対して、個人情報取得要求を送信する。このとき、個人情報取得要求を取得した側の個人情報管理モジュール53aは、自分自身の個人情報を取得して表示通知として返信する。
このようなプレイヤー情報更新要求は、例えば、コミュニケーションシステム1に対して新たにユーザが参入した場合に、コアモジュール51によって個人情報管理モジュール53aに対して送信される。
画像送信モジュール53bは、画像データの追加処理、削除処理、或いは選択時の処理などを提供するモジュールである。また、画像送信モジュール53bは、コンピュータ装置に搭載又は接続されたデジタルビデオカメラ29に対して、撮影状態のオン・オフの切り替え制御などの各種制御を行う。デジタルビデオカメラ29の撮影状態がオンである場合には、インターネットに対する通信状態の負荷を監視しながら、画像データの送信処理を行う。なお、画像送信モジュール53bにおいては、ユーザによる設定に応じて、他のコミュニケーションプログラムに対する送信を非保証通信で行うこともできる。この場合には、送信した画像データが伝送路の途中で失われた場合であっても再送信を行わない。
音声送受信モジュール53cは、画像送信モジュール53bに相当するものであり、音声データの追加処理、削除処理、或いは選択時の処理などを提供するモジュールである。また、音声送受信モジュール53cは、インターフェースモジュール50に実装された音声機能を利用して、コミュニケーションプログラム間で音声データの送受信を実現する機能を有している。なお、コミュニケーションシステム1においては、サーバ側のコミュニケーションプログラムにおいて音声出力をオンにしている場合のみ、クライアント側のコミュニケーションプログラムにおいても音声出力をオンとすることが可能とされている。また、クライアント側のコミュニケーションプログラムから送出された音声データは、サーバ側のコミュニケーションプログラムに実装された音声送受信モジュール53cによってミキシングされ、再度各クライアント側のコミュニケーションプログラムに対して送信される。
Web機能モジュール53dは、コミュニケーションプログラムが実行されるコンピュータ装置、或いはインターネットに接続された他のコンピュータ装置に保持されたハイパーテキストや画像データなどの各種情報を取得して、コミュニケーションプログラムのウィンドウ内における所定の表示領域に、取得した各種情報を表示するWeb情報表示機能を提供するモジュールである。また、Web機能モジュール53dは、他のコミュニケーションプログラムとの間で、インターネット上に存在する各種情報(リソース)の所在地及び取得方法を示すURL(Uniform Resource Locator)を共有するURL共有機能を有する。このURL共有機能についての詳細は後述する。
チャット内容転送モジュール53eは、文字データがGUIモジュール54に対して入力されたことを示すイベントが、このGUIモジュール54から通知された際に、このイベントに基づいて入力された文字データを取得し、取得した文字データを含むチャットメッセージ通知を、セッションが確立された他のコミュニケーションプログラムの全てに対して送信するモジュールである。また、チャット内容転送モジュール53eは、チャットメッセージ通知を受信すると、このチャットメッセージ通知に含まれる文字データを表示する要求をGUIモジュール54に対して行う。これにより、コミュニケーションプログラムのウィンドウ内の所定の位置に、いわゆる「吹き出し」状の文字表示領域が確保され、この領域内に文字データが表示される。
チャットログモジュール53fは、チャット内容転送モジュール53eから送信されたチャットメッセージ通知などに基づいて、入力又は受信した文字データを記録してチャットログファイルを生成する。チャットログモジュール53fは、所定の記憶容量分の文字データを、コンピュータ装置のRAM内に記憶するとともに、必要に応じて、RAM内に記憶された文字データをHDDなどに待避させてチャットログファイルを生成する。また、チャットログモジュール53fは、チャットログを表示する要求がなされた場合に、チャットログファイル内に記憶された文字データを取得して、コミュニケーションプログラムのウィンドウ内の所定の領域に表示する機能を有している。
感情表現モジュール53gは、詳細を後述する感情表現に関するアニメーション効果の読み込みや表示などを行うモジュールである。また、感情表現モジュール53gは、感情を表現する際に選択されるボタンの表示などをGUIモジュール54に要求する。
また、感情表現モジュール53gは、GUIモジュール54により所定のボタンが選択された通知を受信すると、このボタンに対応した感情表現データ(アニメーションデータ)を、セッションが確立されている全てのコミュニケーションプログラムに対して送信する。一方、感情表現データを受信した際には、この感情表現データを表示する要求をGUIモジュール54に対して行う。なお、感情表現についての詳細は後述する。
アクションモジュール53hは、詳細を後述するアクションデータの読み込みや表示などを行うモジュールである。また、アクションモジュール53hは、アクションを表示する際に選択されるボタンの表示などをGUIモジュール54に要求する。
また、アクションモジュール53hは、アクションを表示する際に選択されるボタンがユーザによって選択されると、選択されたボタンに対応したアクションデータ(アニメーションデータ)を、セッションが確立されている全てのコミュニケーションプログラムに対して送信する。一方、アクションデータを受信した際には、このアクションデータを表示する要求をGUIモジュール54に対して行う。なお、アクション表示についての詳細は後述する。
ライブ出演モジュール53iは、インターネットを介して画像データや音声データのライブ配信を行うライブ配信プログラムと連携して動作するモジュールである。コミュニケーションプログラムは、ライブ出演モジュール53iが実装されていることにより、外部のライブ配信プログラムとの間で画像データや音声データ等の授受を行うことが可能とされている。
アプリケーションモジュール53は、上述したような各種のモジュールにより構成されている。なお、コミュニケーションプログラムにおいては、実装されるアプリケーションモジュール53の数や機能に限定されるものではなく、上述した各種のモジュールの他にも、それぞれ独自の機能を提供するモジュールがアプリケーションモジュール53のひとつとして実装されていてもよい。また、コミュニケーションプログラムにおいては、必要に応じてアプリケーションモジュール53の追加又は削除を行うことが可能とされている。
GUIモジュール54は、コミュニケーションプログラムで発生するウィンドウ表示等の画面表示を提供するモジュールである。ただし、ダイアロブボックスなどの各種ウィンドウの基本的な描画については、基本モジュール52により提供される。GUIモジュール54は、他のモジュールからなされた画面表示要求に応じて、ウィンドウ内の描画を行い、機能選択ボタンや画像データなどの表示を行う。
このGUIモジュール54は、機能選択ボタンの位置や並べ方、或いは画像データの表示位置や、ウィンドウ内における全体的な配列・構成に関する情報は有しているが、機能選択ボタンの数や内容に関しては、コアモジュール51或いは各アプリケーションモジュール53による要求に含まれるデータを参照することにより表示する。
なお、コミュニケーションプログラムに実装されるアプリケーションモジュール53は、GUIモジュール54に依らずに、独自に描画処理することが可能なアプリケーション表示領域を利用することが可能とされている。このようなアプリケーション表示領域を利用して画面表示を行う場合には、アプリケーションモジュール53からの要求に応じてGUIモジュールがアプリケーション表示領域を確保し、確保されたアプリケーション表示領域内に対する描画処理は、アプリケーションモジュール53側で行うことができる。
また、GUIモジュール54は、ウィンドウ内に表示された機能選択ボタン等がユーザによって選択された場合に、この機能選択ボタンが選択されたことを示すイベントを、基本モジュール52やアプリケーションモジュール53に対して通知する機能を有している。
コミュニケーションプログラムは、上述したように、複数のモジュールによって構成されてなり、各モジュールが必要に応じて適宜連携して動作するように構成されている。
(5)接続設定情報
次に、コミュニケーションシステム1において、コンピュータ装置間でセッションを確立する際に用いられる接続設定情報について説明する。接続設定情報は、サーバとなるコミュニケーションプログラムが実行されるコンピュータ装置において生成される情報である。
接続設定情報は、例えば図4の(B)に示すように、クライアントとなるコミュニケーションプログラムがサーバとなるコミュニケーションプログラムに対してセッションを確立する際に認証などを行うためのアクセスキー、コミュニケーションプログラムが利用するコンピュータ装置のネットワークインターフェースのポート番号、サーバとなるコミュニケーションプログラムが実行されるコンピュータ装置に設定されたIPアドレスの数、及びサーバとなるコミュニケーションプログラムが実行されるコンピュータ装置に設定された一連のIPアドレスなどによって構成される。
(6)コミュニケーションプログラムによる基本処理
以下では、上述したコミュニケーションプログラムがコンピュータ装置において実行される場合における基本的な一連の処理について、図6及び図7に示すフローチャートを参照しながら順を追って説明する。
コミュニケーションプログラムは、実行処理が開始(起動)されると、図6に示すステップS10において、機能モジュールリストを参照することにより、起動フラグが立っているモジュールを起動する。機能モジュールリストは、例えば図8に示すようなデータ構造とされており、コミュニケーションプログラムを構成するモジュール毎に、モジュールに固有の識別情報(ID)と、モジュールに固有のモジュール名と、モジュールの実行形態や利用条件などを示すタイプと、起動時の条件に応じて起動されるか否かを示す起動フラグとにより構成されている。起動フラグについての詳細は後述するが、コミュニケーションプログラムは、機能モジュールリストを参照することによって、起動時の条件に応じて起動するモジュールを選択して起動することが可能とされている。
次に、コミュニケーションプログラムは、ステップS11において、他のコンピュータ装置により実行されるコミュニケーションプログラムから接続設定情報を受信しているか否かを判定する。この判定の結果、受信している場合にはステップS12に処理を進め、受信していない場合にはステップS13に処理を進める。
ここで、コミュニケーションプログラムは、接続設定情報を受信している場合に、当該コミュニケーションプログラムがクライアントとして動作して、接続設定情報の送信元であるサーバ側のコミュニケーションプログラムとの間で各種情報の送受信を行うこととなる。一方、接続設定情報を受信していない場合には、当該コミュニケーションプログラムがサーバとして動作する。
ステップS12において、コミュニケーションプログラムは、受信した接続設定情報に基づいて、この接続設定情報の送信元であるサーバ側のコミュニケーションプログラムとの間でセッションを確立する処理を行う。
ステップS13において、コミュニケーションプログラムは、サーバとして動作することを要求され、サーバ機能を提供するサーバモジュールを起動するか否かを判定する。この判定は、ステップS11における判定に対応しており、接続設定情報を他のコンピュータ装置で実行されるコミュニケーションプログラムから受信したか否かを判定することによって行われる。そして、この判定の結果、サーバモジュールを起動する場合にはステップS14に処理を進め、サーバモジュールを起動せずにクライアントとして動作する場合にはステップS17に処理を進める。
ステップS14において、コミュニケーションプログラムは、自身が起動したサーバモジュールに対してセッションが確立されて接続済みであるか否かを判定する。この判定の結果、未だ接続が行われていない場合にはステップS15に処理を進め、接続済みである場合にはステップS17に処理を進める。
ステップS15において、コミュニケーションプログラムは、サーバ機能を提供するサーバモジュールを起動する。次に、ステップS16において、コミュニケーションプログラムは、自身起動したサーバモジュールに対してセッションを確立して接続を行う。これにより、当該コミュニケーションプログラムにおいては、自身が起動したサーバモジュールによりサーバとしての機能が実現されるとともに、サーバモジュール以外の他のモジュールは、当該サーバモジュールに対して、いわばクライアントとして接続動作することが可能となる。
コミュニケーションプログラムにおいては、このようにサーバ機能がモジュールとして実現されていることから、サーバとして動作する場合であっても、クライアントとして動作する場合と同様な手続きにより、サーバモジュール以外の他のモジュールが、サーバに対してアクセスすることが可能となる。このため、これら他のモジュールにおける処理手続きを簡略化することができる。なお、ステップS16において、サーバモジュールに対するセッションが確立された後に、コミュニケーションプログラムは、ステップS17に処理を進める。
ステップS17において、コミュニケーションプログラムは、コンピュータ装置の画面上にウィンドウを表示し、このウィンドウ内に表示された入力領域や各種の機能選択ボタン等によって、ユーザによる各種指示操作が入力可能な状態となる。そして、ステップS17において、コミュニケーションプログラムは、上述した機能選択ボタンがユーザによって選択され、この機能選択ボタンに対応した機能モジュールを起動するか否かを判定する。この判定の結果、機能モジュールを起動する場合にはステップS18に処理を進め、起動しない場合にはステップS19に処理を進める。
ステップS18において、コミュニケーションプログラムは、ステップS17において選択された機能選択ボタンに対応した機能モジュールを起動する。そして、機能モジュールを起動した後に、コミュニケーションプログラムは、ステップS19に処理を進める。
ステップS19において、コミュニケーションプログラムは、メッセージ送信キューに送信すべきメッセージが存在するか否かを判定する。そして、メッセージ送信キューにメッセージが存在する場合にはステップS20に処理を進め、メッセージが存在しない場合には図7に示すステップS21に処理を進める。
ここで、コミュニケーションプログラムは、他のコミュニケーションプログラムとの間で画像データ、音声データ、或いは文字データなどの各種情報を授受するに際して、これら情報がメッセージと称される情報単位に分割される。そして、相手のコミュニケーションプログラムに対して送信すべきメッセージがメッセージ送信キューに、相手のコミュニケーションプログラムから受信したメッセージがメッセージ受信キューに、それぞれ一時的に蓄積される。なお、メッセージ送信キュー及びメッセージ受信キューは、例えば、コンピュータ装置のRAMにおける記憶領域内に、予め所定の容量だけ確保されている。
ステップS20において、コミュニケーションプログラムは、メッセージ送信キューに存在するメッセージをセッションが確立されているサーバに対して送信する。このステップS20における処理の後に、コミュニケーションプログラムは、処理を図7に示すステップS21に進める。
ステップS21において、コミュニケーションプログラムは、メッセージ受信キューにサーバから受信したメッセージが存在するか否かを判定する。そして、メッセージ受信キューにメッセージが存在する場合には処理をステップS22に進め、メッセージが存在しない場合には処理をステップS25に進める。
ステップS22において、コミュニケーションプログラムは、メッセージの送信先となる機能モジュール、すなわち、このメッセージを利用する機能モジュールが起動済みであるか否かを判定する。この判定の結果、送信先として該当する機能モジュールが未だ起動されていない場合にはステップS23に処理を進め、起動済みである場合にはステップS24に処理を進める。
ステップS23において、コミュニケーションプログラムは、メッセージの送信先となる起動モジュールを起動する。そして、送信先として該当する機能モジュールを起動した後に、コミュニケーションプログラムは、処理をステップS24に進める。
ステップS24において、コミュニケーションプログラムは、メッセージ送信キューに存在するメッセージの送信先として該当する機能モジュールに対して、当該メッセージを送信する。このステップS24における処理の後に、コミュニケーションプログラムは、処理をステップS25に進める。
ステップS25において、コミュニケーションプログラムは、ユーザから所定の指示操作が行われることにより、実行動作を終了することを要求されているか否かを判定する。この判定の結果、終了することを要求されている場合には、処理をステップS26に進め、終了することを要求されていない場合には、処理を図6に示すステップS13に進めて、上述したステップS13以降の一連の処理を繰り返し行う。
ステップS26において、コミュニケーションプログラムは、サーバ機能を実現するサーバモジュールを自身で起動したか否かを判定する。すなわち、当該コミュニケーションプログラムがサーバとして動作しているか否かを判定する。この判定の結果、自身でサーバモジュールを起動した場合には処理をステップS27に進め、自身でサーバモジュールを起動しておらず、クライアントとして動作している場合には、各種の終了処理を行って、一連の処理動作を停止する。
ステップS27において、コミュニケーションプログラムは、ステップS15において自身で起動したサーバモジュールに対して終了処理を行い、このサーバモジュールの動作を停止する。この後に、コミュニケーションプログラムは、各種の終了処理を行って、一連の処理動作を停止する。
つぎに、上述したステップS15において起動されるサーバモジュールにおける一連の処理について、図9及び図10に示すフローチャートを参照しながら順を追って説明する。
サーバモジュールは、実行処理が開始されると、図9に示すステップS50において、クライアントからの接続要求(セッション確立要求)を受信したか否かを判定する。このとき、クライアントとしては、当該サーバモジュールを起動したコミュニケーションプログラムを構成する他の機能モジュールであってもよいし、他のコンピュータ装置で実行されるコミュニケーションプログラムを構成する機能モジュールであってもよい。そして、この判定の結果、接続要求を受信している場合にはステップS51に処理を進め、受信していない場合にはステップS55に処理を進める。
ステップS51において、サーバモジュールは、現在接続しているユーザの数が、予め設定された最大人数に達しているか否かを判定する。この判定の結果、最大人数に達していない場合にはステップS52に処理を進め、最大人数に達している場合にはステップS55に処理を進める。
ステップS52において、サーバモジュールは、新たに接続要求を行ったユーザに対して、ユーザ毎に固有の情報であるユーザIDを生成するとともに、このユーザ側で動作するコミュニケーションプログラムとの間でセッションを確立して接続を行う。これにより、接続要求を行ったユーザ側で動作するコミュニケーションプログラムがクライアントとして、当該サーバモジュールとの間で通信状態が確立され、画像データ、音声データ、或いは文字データなどの各種情報を授受を行うことが可能となる。
次に、ステップS53において、サーバモジュールは、新たに接続要求を行ったユーザ側でコミュニケーションプログラムを実行するコンピュータ装置のIPアドレスと、このユーザのユーザ名とを取得するとともに、これらIPアドレス及びユーザ名と、ステップS52において生成したユーザIDとをユーザリストに追加する。
ここで、ユーザリストは、例えば図11に示すようなデータ構造とされており、サーバモジュールに対してセッションの確立が行われたユーザのユーザIDと、このユーザのユーザ名と、このユーザ側でコミュニケーションプログラムを実行するコンピュータ装置のIPアドレスとにより構成されている。
次に、ステップS54において、サーバモジュールは、セッションが確立されている全てのクライアントに対して、ステップS53において追加したユーザのユーザIDなどを通知する。これにより、サーバモジュールに接続された全てのクライアントは、新たなユーザが接続されたことを知ることができる。このステップS54における処理の後に、サーバモジュールは、ステップS55に処理を進める。
ステップS55において、サーバモジュールは、セッションが確立されているクライアントとの間で接続状態が切断されたか否かを判定する。この判定の結果、接続状態が切断されている場合にはステップS56に処理を進め、接続状態が切断されていない場合には図10に示すステップS58に処理を進める。このとき、接続状態が切断される要因としては、例えば、サーバモジュールとクライアントとの間の伝送路において生じた不具合、ユーザによるコミュニケーションモジュールの終了処理などを挙げることができる。
ステップS56において、サーバモジュールは、ステップS55において接続状態が切断されたと判定されたユーザに関する情報を、ユーザリストから削除する。次に、ステップS57において、サーバモジュールは、ステップS56でユーザリストから削除したユーザに関するユーザIDなどの情報を、セッションが確立されている全てのクライアントに対して通知する。これにより、サーバモジュールに接続された全てのクライアントは、当該ユーザの接続が切断されたことを知ることができる。このステップS57における処理の後に、サーバモジュールは、図10に示すステップS58に処理を進める。
ステップS58において、サーバモジュールは、接続されたクライアントからメッセージが送信されたか否かを判定する。この判定の結果、送信されている場合にはステップS59に処理を進め、送信されていない場合にはステップS61に処理を進める。
ステップS59において、サーバモジュールは、メッセージの宛先として指定されたユーザIDを参照し、ユーザリストに基づいて当該ユーザIDに対応したIPアドレスを取得する。次に、ステップS60において、サーバモジュールは、ステップS59において取得したIPアドレスが設定されたコンピュータ装置に対して、インターネット等のコンピュータネットワークを介してメッセージを送信する。これにより、メッセージが送信先のコミュニケーションプログラムに届けられる。このステップS60における処理の後に、サーバモジュールはステップS61に処理を進める。
ステップS61において、サーバモジュールは、コミュニケーションプログラムにからの終了要求を受信したか否かを判定する。そして、この判定の結果、終了要求を受信した場合には、各種の終了処理を行って、一連の処理動作を停止する。また、終了要求を受信していない場合には、処理を図9に示すステップS50に進めて、上述したステップS50以降の一連の処理を繰り返す。このサーバモジュールに対する終了要求は、図7に示したコミュニケーションプログラムの一連の処理におけるステップS27が処理された場合に相当するものである。
コミュニケーションプログラムは、以上で説明したようにして一連の処理を行うアプリケーション・プログラムである。上述した一連の処理の説明から明らかであるように、コミュニケーションプログラムは、必要に応じてサーバ或いはクライアントとして動作することが可能とされている。
(7)コンピュータ装置の構成
次に以下では、図12を参照しながら、上述したコミュニケーションシステムを構成するパーソナルコンピュータであるコンピュータ装置10の構成について説明する。
コンピュータ装置10は、図12に示すように、各種演算処理を実行するとともに各部を統括して制御するCPU(Central Processing Unit)20と、このCPU20のワークエリアとして機能するRAM(Random Access Memory)21と、CPU20によって実行される各種プログラムを含む情報を格納する読み取り専用のROM(Read Only Memory)22と、CPU20によって実行されるオペレーティング・システム(Operating System)やアプリケーション・プログラム等の各種プログラムが記録され、各種データ等の記録再生が行われるHDD(Hard Disk Drive)23と、各種情報を表示する表示部24と、この表示部24とCPU20との間でのデータの授受を行うための表示用インターフェース25と、ユーザによって各種情報や指示操作を入力するための操作部26と、この操作部26とCPU20との間でのデータの授受を行うための操作用インターフェース27と、上述した公衆回線網15を介してインターネットに接続された外部装置との間でデータの授受を行うためのネットワークインターフェース28と、被写体を撮影して映像データや音声データを得るデジタルビデオカメラ29と、いわゆるMPEG2(Moving Picture Experts Group phase 2)方式に基づく圧縮符号化及び復号を行うMPEG2コーデック30とを備える。
コンピュータ装置10は、これらの各部のうち、CPU20、RAM21、ROM22、HDD23、表示用インターフェース25、操作用インターフェース27、ネットワークインターフェース28、デジタルビデオカメラ29、及びMPEG2コーデック30がバス31を介して接続されて構成される。
なお、コンピュータ装置10におけるデジタルビデオカメラ29は、コンピュータ装置10に搭載されずに、例えば外部機器接続用の所定のインターフェースや、ネットワークインターフェース28などを介してバス31に接続されてもよい。また、コンピュータ装置10は、必要に応じて、例えば着脱自在とされる記録媒体に対する記録再生を行うリムーバブル型の記録再生装置などがHDD23の他に搭載又は接続され、この記録再生装置に対する各種データの記録再生が可能とされていてもよい。
CPU20は、バス31を介して、RAM21、ROM22、HDD23、表示用インターフェース25、操作用インターフェース27、ネットワークインターフェース28、デジタルビデオカメラ29、及びMPEG2コーデック30と接続されている。CPU20は、各部を統括的に制御するとともに、例えばHDD23等に記録されているオペレーティング・システムや各種アプリケーション・プログラムを実行処理する。特に、CPU20は、アプリケーション・プログラムのひとつとして構成されたコミュニケーションプログラムの実行を処理する。なお、このコミュニケーションプログラムについての詳細は後述する。
RAM21は、CPU20が各種プログラムを実行する際のワークエリアとして機能し、CPU20の制御のもとに、各種データを一時記憶する。
ROM22は、コンピュータ装置10の起動に必要となる各種プログラムや設定情報などを格納している。このROM22に格納されている各種プログラムや設定情報は、コンピュータ装置10の起動時に読み出され、CPU20によって利用される。
HDD23は、オペレーティング・システムやアプリケーション・プログラム等が記録されているとともに、CPU20の制御のもとに各種プログラムやデータ等の記録再生を行う。
表示部24は、例えばLCD(Liquid Crystal Display)からなり、CPU20の制御のもとに、HDD23に記録されているデータ等の各種情報を表示画面に表示する。特に、表示部24は、CPU20の制御のもとに、後述するコミュニケーションプログラムを実行処理した結果を表示したり、このコミュニケーションプログラムに対して各種の指示操作を行うボタンを表示するためのウィンドウといった、所定のグラフィカル・ユーザ・インターフェースを表示画面に表示する。
表示用インターフェース25は、CPU20と表示部24との間でのデータの授受を行う。すなわち、表示用インターフェース25は、CPU20からバス31を介して供給された各種情報を表示部24に供給する。
操作部26は、例えば、キーボード、マウス等のポインティングデバイス、或いはいわゆるジョグダイヤル等回転操作式スイッチなどによるユーザ・インターフェースを用いたユーザによる操作を受け付け、操作内容を示す制御信号を操作用インターフェース27を介してCPU20に供給する。
操作用インターフェース27は、CPU20と操作部26との間でのデータの授受を行う。すなわち、操作用インターフェース27は、操作部26から供給された制御信号をバス31を介してCPU20に供給する。
ネットワークインターフェース28は、CPU20の制御のもとに、外部との通信を行うインターフェースとして機能する。すなわち、ネットワークインターフェース28は、インターネットに接続された他のコンピュータ装置10との間で各種情報の授受を行うために設けられるものである。
デジタルビデオカメラ29は、被写体を撮影するための所定の光学系や、CCD(Charge Coupled Devices)等の光電変換用のデバイス等からなる。デジタルビデオカメラ29により得られた映像データや音声データは、CPU20の制御のもとに、バス31を介してMPEG2コーデック30に供給される。
MPEG2コーデック30は、バス31を介してデジタルビデオカメラ29から供給された映像データや音声データを、CPU20の制御のもとに、MPEG2方式に基づく圧縮符号化を行う。このとき、MPEG2コーデック30は、CPU20の制御のもとに、映像データや音声データをリアルタイムに圧縮符号化する。また、MPEG2コーデック30は、MPEG2方式に基づいて圧縮符号化されたデータを復号することもできる。
前述のコミュニケーションプログラムは、それぞれ個別の機能を実現する複数のモジュールを組み合わせ自在とされた一連のプログラム群によって構成されており、例えばコンピュータ装置10のHDD23に記録されている。コンピュータ装置10は、このコミュニケーションプログラムをCPU20によって実行することにより、他のコンピュータ装置との間で、画像データ、音声データ、或いは文字データ等の各種情報を授受することによって、各コンピュータ装置のユーザ間での意志や感情の相互伝達(コミュニケーション)を可能とする。なお、コミュニケーションプログラムは、例えばいわゆるコンパクトディスク(Compact Disc)等の所定の記録媒体やインターネット等の伝送媒体によっても提供され得るものである。
(8)情報処理システムの各手順
次に、本実施形態のクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの各手順(ステップ)をフローチャートを参照しながら説明する。図13のフローチャートはクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの接続時のステップを説明するための図であり、図14のフローチャートはクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの通信時のステップを説明するための図であり、図15のフローチャートはクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの接続時の更に具体的なステップを説明するための図であり、図16のフローチャートはクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの通信時の更に具体的なステップを説明するための図である。
図13のフローチャートでは、先ずステップS500で図1のサーバ2に対してパーソナルコンピュータ3がセッションを確立する。この時のサーバ2のパーソナルコンピュータ3に対する接続はクライアント・サーバ型接続となる。
次にステップS501でパーソナルコンピュータ3にグローバルIPアドレスが割り当てられているか否かが判断される。これはパーソナルコンピュータ3にグローバルIPアドレスが割り当てられていない場合は、ピアツーピア型接続が不能であり、他のクライアント型情報処理装置の情報取得が不要であることから、判断の結果、答えが「No」である場合には処理を終了する。
ステップS501でパーソナルコンピュータ3にグローバルIPアドレスが割り当てられていると判断される場合(答えが「YES」)、続いてパーソナルコンピュータ3はステップS502でサーバ2から接続中のPC情報を取得する。この時サーバ2から受信するPC情報としては、前述のデータテーブル(図3参照)のクライアントのパーソナルコンピュータのIPアドレスとプライベートIPアドレスか否かを記録した部分であり、プライベートIPアドレスを有しない即ちグローバルIPアドレスを有するクライアントのパーソナルコンピュータが選択される。
次に、選択されたクライアントのパーソナルコンピュータ即ちグローバルIPアドレスを有するパーソナルコンピュータに対してピアツーピア型接続を行う。複数のクライアントのパーソナルコンピュータに対してそれぞれピアツーピア型接続を行うようにしても良く、また、全てのクライアントのパーソナルコンピュータがグローバルIPアドレスを有している場合には、それらのパーソナルコンピュータの全部に対してピアツーピア型接続するようにしても良い。
このようなピアツーピア型接続を行うことで、当該ピアツーピア型の接続にかかるパーソナルコンピュータ同士は直接データ送信を行うことが可能となり、サーバ2へのトラフィックの集中を避けることができ、送信負荷を低減することが可能とされる。
図14はクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの通信時の流れ図である。先ず、パーソナルコンピュータの1つがクライアント・サーバ型接続及びピアツーピア型接続を行なっている場合(ステップS504)に、そのパーソナルコンピュータが接続対象としている他のクライアント型パーソナルコンピュータのそれぞれについてピアツーピア型接続されているか否かの確認が行われ(ステップS505)、もしピアツーピア型接続がなされていない場合(答えが「NO」)には、ステップS507でサーバにデータが送信されてクライアント・サーバ型接続が行われ、逆にピアツーピア型接続がなされている場合(答えが「YES」)には、ステップS506でピアツーピア型接続即ちコンピュータ(相手先)に直接データを送信する。
次に図15、図16を参照して、更に具体的なステップをクライアント側とサーバ側に分けて説明する。図15はクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの接続時のフローチャートである。先ず、ステップS510でクライアント側のパーソナルコンピュータから、サーバに対して接続を要求する。この接続要求を受けてサーバ側では接続中のクライアントのPC情報として当該クライアント側のパーソナルコンピュータのIPアドレスを取得する(ステップS511)。このIPアドレスはパーソナルコンピュータのピアツーピア型接続用のデータテーブルに記載される。この時、同時にプライベートIPアドレスかグローバルIPアドレスかのいずれかの情報も該データテーブルに記載するようにしても良い。
このクライアント側のパーソナルコンピュータのIPアドレスの取得後、ステップS512で該パーソナルコンピュータの接続要求に応答する。このサーバからの応答によってセッションが確立される(ステップS512)。セッションの確立後、図13の場合と同様に、ステップS513で当該クライアント側のパーソナルコンピュータにグローバルIPアドレスが割り当てられているか否かが判断される。これはパーソナルコンピュータにグローバルIPアドレスが割り当てられていない場合は、ピアツーピア型接続が不能であり、他のクライアント型情報処理装置の情報取得が不要であることから、判断の結果、答えが「No」である場合には処理を終了する。
ステップS513でパーソナルコンピュータにグローバルIPアドレスが割り当てられていると判断される場合(答えが「YES」)、続いてパーソナルコンピュータはステップS514でサーバから現在接続中のパーソナルコンピュータの情報を取得する。この取得手順としてはクライアント側からPC情報の要求(Request)を出し、この要求に応じてPC情報を送信する(ステップS515)。この時サーバから受信するPC情報としては、前述のデータテーブルのクライアントのパーソナルコンピュータのIPアドレスとプライベートIPアドレスか否かを記録した部分である。
次に、S515では取得したグローバルIPアドレスを利用し、そのグローバルIPアドレスを有するパーソナルコンピュータと当該パーソナルコンピュータがピアツーピア接続する。このようなピアツーピア型接続を行うことで、当該ピアツーピア型の接続にかかるパーソナルコンピュータ同士は直接データ送信を行うことが可能となり、サーバへのトラフィックの集中を避けることができ、システムにおける送信負荷を低減できる。
図16はクライアント・サーバ型接続とピアツーピア型接続とを共有とする情報処理システムの通信時のフローチャートである。図15のセッションによって、ステップS520ではクライアント側のパーソナルコンピュータが前述に共有モデルで接続済みとなり、送信すべきデータに応じてデータのあて先が複数指定されているか否かが判断される(ステップS521)。
データの送信先が複数である場合には、ステップS525に進み、あて先でピアツーピア接続されているものと、されてないものに選別する。続いて、先に取得したグローバルIPアドレスを用いピアツーピア接続されているパーソナルコンピュータに対してステップS526で直接データを送信する。次に、ステップS527であて先からピアツーピア接続されていない残りのパーソナルコンピュータに対してサーバ経由でデータを送る。これらのステップS526とS527でピアツーピア接続されているパーソナルコンピュータとクライアント・サーバ接続されているパーソナルコンピュータの全てにデータが送信されることになる。
ステップS521で複数のデータのあて先が指定されていない場合すなわちステップS521でデータのあて先は単数の場合、そのあて先がピアツーピア接続されているか否かがステップS522で判断され、否定(「NO」)の場合、クライアント・サーバ接続が必要となり、ステップS523であて先を指定してサーバに送信し、処理を終了する。
ステップS522であて先とピアツーピア接続されていると判断される場合には、ステップS524に進み、あて先に直接データ送信がなされ、処理を終了する。
ステップS523及びステップS527でサーバとの接続が必要となるが、その場合にサーバ側では指定されたアドレス(プライベートIPアドレス)にデータを転送することになる(ステップS528)。
なお、上述においては、本発明の実施の形態として、コミュニケーションシステム1を構成する各情報処理装置上で実行処理されるコミュニケーションプログラムに注目して説明したが、本発明は、このようなコミュニケーションプログラムが実行処理されることにより実現されるコミュニケーションシステム、上述したコミュニケーションプログラムにより実行される処理に相当する手続きが行われることにより実現されるコミュニケーション方法、或いは、上述したコミュニケーションプログラムにより実行される処理に相当する手続きが他のソフトウェア又はハードウェア的手法により実現される情報処理装置に対して、広く適用することができることは述べるまでもない。
1 コミュニケーションシステム、2 サーバ、3〜5 パーソナルコンピュータ、6,7 通信路、8 ルータ、10 コンピュータ装置、20 CPU、21 RAM、50 インターフェースモジュール、51 コアモジュール、52 基本モジュール、53 アプリケーションモジュール、54 GUIモジュール