図1は、本発明を適用したリアルタイムチャットシステム(システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない)の一実施の形態の構成例を示している。
このリアルタイムチャットシステムは、いわゆるテキストチャットを行うためのチャットクライアントとチャットサーバをベースに構成されており、リアルタイムでチャットを行うことができる他、各チャットクライアントに対して、そのチャットクライアント宛のメッセージが送信されてくる旨が報知されたり、さらには、チャットクライアントが、チャットサーバにログインする前に行われた他のユーザによるチャットの内容が、そのチャットクライアントがログインしてきたときに送信されるようになっている。
即ち、図1の実施の形態においては、3台のパーソナルコンピュータ(以下、適宜、パソコンという)1−1乃至1−3、1台のロケーションサーバ3、並びに2台のチャットサーバ4−1および4−2が、例えば、インターネット等のネットワーク2を介して相互に接続されている。
パソコン1−1乃至1−3(パソコン1−1乃至1−3を区別する必要がない場合は、以下、適宜、パソコン1と記述する)は、後述するようなチャットクライアントプログラムを実行することにより、チャットクライアントとして機能し、後述するようなチャットクライアント処理等を行うようになっている。
ロケーションサーバ3は、パソコン1(チャットクライアント)に対して、チャットサーバ4−1や4−2(チャットサーバ4−1および4−2を区別する必要がない場合は、以下、適宜、チャットサーバ4と記述する)のロケーション(ドメイン名等)を教えたり、さらには、パソコン1がネットワーク2に接続しているかどうかの管理等を行うようになっている。即ち、ロケーションサーバ3は、後述するようなクライアントステータス管理プログラムや、クライアントステータス報知プログラムを行うことで、同じく後述するようなクライアントステータス管理処理や、クライアントステータス報知処理等を行うようになっている。
チャットサーバ4は、後述するチャットサーバプログラムを実行することで、チャットサーバとして機能し、これにより、チャットクライアントどうしがチャットを行うためのチャット環境を、複数のチャットクライアントに提供するようになっている(従って、チャットサーバ4は、マルチユーザサーバである)。
以上のように構成されるリアルタイムチャットシステムにおいては、パソコン1−1乃至1−3それぞれの間で、次のようにしてチャット(メッセージのやりとり)が行われる。
即ち、例えば、いま、パソコン1−1において、ネットワーク2への接続が行われ、チャットクライアントプログラムが実行されると、ロケーションサーバ3に対して、チャットサーバ4のロケーションが要求される。ロケーションサーバ3は、ネットワーク2上にあるチャットサーバ4や、図示せぬその他のチャットサーバのロケーションが登録されたロケーションDB(database)を有しており、そのロケーションDBを参照することで、所定のチャットサーバのロケーションとしての、例えばIP(Internet Protocol)アドレス、その他のチャットサーバにアクセスするための情報を、パソコン1−1に送信する。
パソコン1−1は、ロケーションサーバ3からのロケーションを受信し、そのロケーションによって表されるチャットサーバ(例えば、チャットサーバ4−1や4−2など)にログインし、これにより、チャットが可能な状態となる。
一方、例えば、パソコン1−2や1−3において、ネットワーク2への接続が行われ、チャットクライアントプログラムが実行されると、上述した場合と同様にして、チャットが可能な状態となる。
以上のようにして、パソコン1−1乃至1−3のすべてが、チャットサーバ4にログインすると、それらの間では、チャットサーバ4を介して、テキストデータをやりとりすることによるチャットを行うことができる。即ち、例えば、パソコン1−1において、テキストデータが入力されると、そのテキストデータは、ネットワーク2を介して、チャットサーバ4に送信される。チャットサーバ4は、パソコン1−1からのテキストデータを、パソコン1−2や1−3に送信し、パソコン1−2や1−3では、そのテキストデータが受信されて表示される。パソコン1−2や1−3が送信したテキストデータも、同様に、チャットサーバ4を介して、他のパソコン(チャットクライアント)に送信される。
以上のようにして、パソコン1−1乃至1−3それぞれの間では、チャットサーバ4を介して、チャットが行われる。
なお、チャットサーバ4は、チャットクライアントとしてのパソコン1から送信されてきたテキストデータを記憶するログDBを有しており、このログDBに記憶されたテキストデータ(チャットの内容)は、後述するように、必要に応じて、他のチャットクライアントに送信されるようになっている。
次に、図2は、図1のパソコン1のハードウェア構成例を示している。
通信I/F(Interface)21は、例えば、モデムや、ターミナルアダプタ、ネットワークカード等でなり、ネットワーク2を介しての通信制御を行うようになされている。CPU(Central Processing Unit)22は、HD(Hard Disk)24に記憶されているOS(Operating System)のプログラムを実行し、そのOSの制御の下、同じくHD24に記憶されているチャットクライアントプログラム等のアプリケーションプログラムを実行することで、パソコン1をチャットクライアントとして機能させるためのチャットクライアント処理等を行うようになっている。メモリ23は、例えば、ROM(Read Only Memory)やRAM(Random Access Memory)等で構成され、CPU22が実行するプログラムや、その必要なデータを記憶するようになっている。
HD24は、上述したように、OSのプログラムや、チャットクライアントプログラム等のアプリケーションプログラム等を記憶している。さらに、HD24は、CPU22の動作上必要なデータを記憶するようにもなっている。
入力部25は、例えば、キーボードやマウス等で構成され、必要なコマンドやデータを入力するときに操作される。出力部26は、例えば、ディスプレイ等で構成され、CPU22の制御の下、所定の情報を表示するようになっている。
以上のように構成されるパソコン1では、CPU22において、HD24に記憶されたOSのプログラムが、メモリ23に展開されて実行される。さらに、CPU22において、OSのプログラムの制御の下、HD24に記憶されたチャットクライアントプログラム等のアプリケーションプログラムが実行されることで、チャットクライアント処理等が行われる。
次に、図3は、図1のロケーションサーバ3のハードウェア構成例を示している。
図3に示すように、ロケーションサーバ3は、パソコン1を構成する通信I/F21乃至出力部26とそれぞれ同様の通信I/F31乃至出力部36から構成されている。但し、HD34には、クライアントステータス管理プログラムや、クライアントステータス報知プログラム等の、ロケーションサーバ3がクライアントステータス管理処理や、クライアントステータス報知処理を行うためのアプリケーションプログラムが記憶されている。さらに、HD34には、図1で説明したロケーションDBも記憶されている。また、HD34には、後述するような管理情報やクライアントのステータス等も記憶されるようになっている。なお、メモリ33やHD34は、パソコン1を構成するメモリ23やHD24よりも、大容量で高速のものが使用されている。
以上のように構成されるロケーションサーバ3では、CPU32において、HD34に記憶されたアプリケーションプログラムが実行されることで、クライアントステータス管理処理や、クライアントステータス報知処理が行われる。
次に、図4は、図1のチャットサーバ4のハードウェア構成例を示している。
チャットサーバ4は、ロケーションサーバ3を構成する通信I/F31乃至出力部36とそれぞれ同様の通信I/F41乃至出力部46から構成されている。但し、HD44には、クライアントサーバプログラム等の、チャットサーバ4が、チャットサーバとして機能するためのアプリケーションプログラムが記憶されている。さらに、HD44には、図1に示したログDBも記憶されるようになっている。なお、このログDBには、後述するチャットログが記憶される。
以上のように構成されるチャットサーバ3では、CPU42において、HD44に記憶されたアプリケーションプログラムが実行されることで、クライアントサーバ処理が行われる。
次に、図5のフローチャートを参照して、図2のパソコン1においてチャットクライアントプログラムが実行されることにより行われるチャットクライアント処理について説明する。なお、図1においては図示を省略してあるが、パソコン1は、必要に応じて、プロバイダを介して、ネットワーク2に接続される。
パソコン1がネットワーク2に接続され、パソコン1のユーザが、チャットクライアントプログラムを実行するように操作を行うと、パソコン1のCPU22では、チャットクライアントプログラムが実行されることにより、次のようなチャットクライアント処理が行われる。
即ち、チャットクライアント処理では、まず最初に、ステップS1において、ネットワーク2を介して、ロケーションサーバ3にアクセスがなされ、ログインが要求される。
この場合、ロケーションサーバ3では、後述するように、ログインを要求してきたパソコン1が、既に登録されているものかどうかを検索し、その検索結果としての既登録/未登録通知を送信してくるので、パソコン1では、ステップS2において、その既登録/未登録通知が受信される。
ここで、ロケーションサーバ3は、パソコン1等のクライアントが、ネットワーク2に接続しているかどうかというクライアントのステータス(状態)の管理を行うようになっている。このステータスの管理は、例えば、ロケーションサーバ3に対して、その管理のための情報(以下、適宜、管理情報という)を登録したクライアントのみを対象に行われるようになされており、既登録/未登録通知は、そのような登録が行われているかどうかを表す。
パソコン1において、既登録/未登録通知が受信されると、ステップS3に進み、その既登録/未登録通知を参照することにより、パソコン1の管理情報が、ロケーションサーバ3に、既に登録されているかどうかが判定される。ステップS3において、パソコン1の管理情報が登録されていないと判定された場合、ステップS4に進み、その登録を行うための登録画面が受信されて表示される。
即ち、ロケーションサーバ3では、パソコン1の管理情報が登録されていない場合、その旨を表す既登録/未登録通知が送信される他、管理情報を入力するための登録画面も送信される。ステップS4では、その登録画面が受信されて表示される。
パソコン1のユーザは、登録画面に対して、例えば、電子メールアドレスや、ニックネーム、IPアドレス、IDおよびパスワード等のロケーションサーバ3がパソコン1(のユーザ)を識別するための識別情報その他を、入力部25を操作することで入力する。そして、パソコン1のユーザが、情報の送信を要求する操作を行うと、パソコン1では、ステップS5において、登録画面に入力された情報が、管理情報として送信され、ステップS6に進む。なお、ロケーションサーバ3では、後述するように、この管理情報が受信されて登録される。
ここで、以上のようにして管理情報が登録されたクライアント(ここでは、パソコン1)においては、例えば、その管理情報のうちの識別情報が記憶され、次に、ロケーションサーバ3にアクセスが行われる際に、記憶されている識別情報が、ロケーションサーバ3に送信されるようになっており、ロケーションサーバ3では、この識別情報によって、アクセスしてきたクライアントを認識するようになっている。
一方、ステップS3において、パソコン1の管理情報が、ロケーションサーバ3に、既に登録されていると判定された場合、ステップS4およびS5をスキップして、ステップS6に進み、メッセージのやりとりを行うのにログインすべきチャットサーバのロケーションが、ロケーションサーバ3に対して要求される。
この場合、ロケーションサーバ3は、ログインすべきチャットサーバのロケーションを、パソコン1に送信してくるので、パソコン1では、ステップS7において、そのロケーションが受信され、さらに、そのロケーションで表されるチャットサーバ(ここでは、チャットサーバ4とする)へのログインが行われる。
そして、ステップS8に進み、ログインしたチャットサーバ4から、チャットログが送信されてきたかどうかが判定される。即ち、チャットサーバ4は、後述するように、チャットクライアントがログイン(接続)してきた場合、そのチャットクライアント宛のメッセージとしてのチャットログを記憶しているときには、そのチャットログを、そのログインしてきたチャットクライアントに送信するようになっており、ステップS8では、このようにしてチャットログが送信されてきたか否かが判定される。ステップS8において、チャットログが送信されてきたと判定された場合、ステップS9に進み、パソコン1では、そのチャットログが受信されて表示され、ステップS10に進む。
ここで、従来のチャットシステムでは、あるチャットクライアントが、チャットサーバに、新たにログインしてきた場合には、そのチャットクライアントは、それまでにやりとりされたメッセージ(チャットの内容)を知ることはできない。これに対して、本実施の形態では、チャットサーバ4が、受信したメッセージをチャットログとして記憶しておき、新たなチャットクライアントがログインしてきた場合に、その新たなチャットクライアントに対して、必要に応じて、チャットログが送信されるので、新たなチャットクライアントは、ログインする前にチャットサーバ4で受信されたメッセージを知ることができる。
なお、チャットクライアント処理が開始されると、パソコン1では、出力部26において、例えば、図6に示すようなチャットウインドウ51が表示されるようになっており、このチャットウインドウ51は、宛先入力エリア52、チャット文字/ログ表示エリア53、およびチャット文字/メッセージ入力エリア54から構成されている。そして、宛先入力エリア52には、入力部25の操作に対応して、チャット文字/メッセージ入力エリア54に入力されたメッセージ(またはチャット文字)としてのテキストデータを送信する相手の宛先が入力されるようになっている。また、チャット文字/ログ表示エリア53には、チャットサーバ4から送信されてくるメッセージやチャットログ、チャット文字/メッセージ入力エリア54に入力されたメッセージが表示されるようになっている。さらに、チャット文字/メッセージ入力エリア54には、入力部25の操作に対応して、他のチャットクライアントに送信するメッセージが入力されるようになっている。従って、ステップS9では、チャットサーバ4から送信されてきたメッセージ(チャットログ)は、チャットウインドウ51のチャット文字/ログ表示エリア53に表示される。
図5に戻り、ステップS8において、チャットサーバ4からチャットログが送信されてきていないと判定された場合、即ち、チャットサーバ4において、パソコン1のユーザ宛のメッセージが記憶されていない場合、ステップS9をスキップして、ステップS10に進む。ステップS10では、チャットウインドウ51(図6)の宛先入力エリア52に、チャット文字/メッセージ入力エリア54に入力された(入力される)メッセージを送信する相手の宛先(例えば、上述したような識別情報)が入力されたか否かが判定される。
ステップS10において、宛先が入力されたと判定された場合、即ち、ユーザが入力部25を操作することにより、宛先入力エリア52に宛先が入力され、さらに、入力部25が有する図示せぬ確定キー(リターンキー)が操作された場合、ステップS11に進み、その宛先が、チャットサーバ4に送信され、ステップS12に進む。以上のように、パソコン1では、チャット文字/ログ表示エリア53に入力されるメッセージを送信する相手の宛先が、宛先入力エリア52に入力された場合、その入力された宛先が、チャットサーバ4に送信される。
一方、ステップS10において、宛先が入力されていないと判定された場合、ステップS11をスキップして、ステップS12に進み、チャット文字/メッセージ入力エリア54に、メッセージが入力されたか否かが判定される。ステップS12において、チャット文字/メッセージ入力エリア54に、メッセージが入力されたと判定された場合、即ち、ユーザが入力部25を操作することにより、チャット文字/メッセージ入力エリア54に、メッセージが入力され、さらに、入力部25が有する確定キーが操作された場合、ステップS13に進み、そのメッセージに対して、宛先入力エリア52に入力されている宛先、現在の日時および時刻を表すタイムスタンプ、並びにそのメッセージの差出人としてのパソコン1のユーザのニックネーム等が付加され、チャットサーバ4に送信されて、ステップS14に進む。
なお、宛先入力エリア52に宛先が入力されていない場合には、例えば、宛先の入力を要求するメッセージが表示され、ユーザによって、宛先の入力があった後に、上述したようにしてメッセージが送信される。
また、ステップS12において、チャット文字/メッセージ入力エリア54に、メッセージが入力されていないと判定された場合、ステップS13をスキップして、ステップS14に進み、チャットサーバ4からメッセージが送信されてきたか否かが判定される。ステップS14において、チャットサーバ4からメッセージが送信されてきたと判定された場合、ステップS15に進み、そのメッセージが受信され、チャット文字/ログ表示エリア53に表示されて、ステップS16に進む。
一方、ステップS14において、チャットサーバ4からメッセージが送信されてきていないと判定された場合、ステップS15をスキップして、ステップS16に進み、チャットサーバ4から送信予告通知が送信されてきたか否かが判定される。
ここで、上述したように、パソコン1等のチャットクライアントでは、宛先入力エリア52に、メッセージを送信しようとしている相手の宛先が入力されると、その宛先が、チャットサーバ4に送信される。チャットサーバ4は、後述するように、チャットクライアントから宛先を受信すると、その宛先に対応するチャットクライアントがネットワーク2に接続しているかどうか、即ち、そのチャットクライアントのステータスを認識し、接続している場合には、そのチャットクライアントに対して、他のチャットクライアントがメッセージを送信しようとしている旨の送信予告通知が送信するようになっており、ステップS16では、そのようにしてチャットサーバ4から送信されてくる送信予告通知が送信されてきたか否かが判定される。
ステップS16において、チャットサーバ4から送信予告通知が送信されてきたと判定された場合、ステップS17に進み、その送信予告通知が受信されて表示され、ステップS18に進む。
従って、例えば、パソコン1−1のユーザが、ネットワーク2に接続して、パソコン1−2のユーザにメッセージを送信し、その後、そのメッセージに対する返事を催促するメッセージを送信しようとしている場合において、パソコン1−2のユーザが、パソコン1−1のユーザ宛に、返信のメッセージを送信しようとして、宛先入力エリア52に、パソコン1−1のユーザを宛先として入力すると、パソコン1−1には、チャットサーバ4から送信予告通知が送信される。その結果、パソコン1−1のユーザは、パソコン1−2のユーザが返信のメッセージを送信しようとしていることを認識することができ、返事を催促するメッセージを、行き違いで送信してしまうようなことを防止することができる。その結果、ユーザに煩わしさを感じさせたり、メッセージが無駄になったりすること等を防止し、これにより、ユーザどうしで、スムーズなコミュニケーションを図ることが可能となる。
一方、ステップS16において、チャットサーバ4から送信予告通知が送信されてきていないと判定された場合、ステップS17をスキップして、ステップS18に進み、入力部25が、ネットワーク2との接続を切断するように操作されたか否かが判定される。ステップS18において、入力部25が、ネットワーク2との接続を切断するように操作されていないと判定された場合、ステップS10に戻り、以下、同様の処理が繰り返される。
また、ステップS18において、入力部25が、ネットワーク2との接続を切断するように操作されたと判定された場合、その切断のための処理が行われ、チャットクライアント処理を終了する。
次に、図7のフローチャートを参照して、図3のロケーションサーバ3においてクライアントステータス管理プログラムが実行されることにより行われるクライアントステータス管理処理について説明する。
パソコン1等のクライアントが、ネットワーク2に接続され、上述したようにして、ロケーションサーバ3に対してアクセスしてくると、ロケーションサーバ3では、クライアントステータス管理プログラムが実行され、そのクライアントに対して、次のようなクライアントステータス管理処理が行われる。
即ち、ステップS21において、パソコン1との接続が確立され、ステップS22に進み、管理情報が検索される。そして、ステップS23において、その検索結果に基づいて、既登録/未登録通知が作成され、パソコン1に送信される。
即ち、上述したように、パソコン1においては、ロケーションサーバ3に対するアクセス時に、その識別情報も送信されるようになっており、ステップS22では、その識別情報を有する管理情報が検索される。そして、ステップS23において、パソコン1からの識別情報を有する管理情報が存在する場合には、パソコン1が登録されている旨の既登録/未登録通知が送信され、パソコン1からの識別情報を有する管理情報が存在しない場合(例えば、過去に管理情報を登録したことがあるが、ユーザの要求により削除してしまった場合)には、パソコン1が登録されていない旨の既登録/未登録通知が送信される。なお、パソコン1が、過去に、一度も管理情報を登録したことがない場合には、パソコン1からは、識別情報は送信されてこないため、この場合には、ステップS23において、パソコン1が登録されていない旨の既登録/未登録通知が送信される。
ステップS23において、既登録/未登録通知が送信された後は、ステップS24に進み、その既登録/未登録通知に基づいて、パソコン1が登録済みのもの(パソコン1の管理情報が登録されている)かどうかが判定される。ステップS24において、パソコン1が登録済みのものであると判定された場合、ステップS25およびS26をスキップして、ステップS27に進む。
また、ステップS24において、パソコン1が登録済みのものでないと判定された場合、ステップS25に進み、ロケーションサーバ3では、上述したように、登録画面が、パソコン1に送信され、ステップS26に進む。この場合、パソコン1では、上述したように、登録画面が受信され、管理情報が入力された後に、その管理情報が、ロケーションサーバ3に送信されてくるので、ロケーションサーバ3では、ステップS26において、その管理情報が受信されて登録される。
そして、ステップS27に進み、クライアントとしてのパソコン1のステータスが、ネットワーク2に接続していることを表す「ログイン中」にされる。即ち、ロケーションサーバ3は、クライアントの管理情報と、そのクライアントのステータスとを対応付けて管理(HD34に記憶)しており、ステップS27では、パソコン1の管理情報と対応付けられているステータスが、ネットワーク2に接続していないことを表す「ログオフ中」から、「ログイン中」に書き換えられ、ステップS28に進む。
ステップS28では、パソコン1から、上述したようにして、チャットサーバ4のロケーションの要求があったか否かが判定され、あったと判定された場合、ステップS29に進み、例えば、チャットサーバ4のロケーションが、パソコン1に送信され、ステップS30に進む。また、ステップS28において、ロケーションの要求がなかったと判定された場合、ステップS29をスキップして、ステップS30に進み、パソコン1において、入力部25が、ネットワーク2との接続を切断するように操作されたか否かが判定される。ステップS30において、入力部25が、接続を切断するように操作されていないと判定された場合、ステップS28に戻り、以下、同様の処理を繰り返す。
また、ステップS30において、入力部25が、接続を切断するように操作されたと判定された場合、ステップS31に進み、パソコン1の管理情報と対応付けられているステータスが、「ログイン中」から「ログオフ中」に書き換えられ、クライアントステータス管理処理を終了する。
次に、図8のフローチャートを参照して、図3のロケーションサーバ3においてクライアントステータス報知プログラムが実行されることにより行われるクライアントステータス報知処理について説明する。
ロケーションサーバ3では、例えば、ネットワーク2上のパソコン1やチャットサーバ4等から、所定の要求があると、クライアントステータス報知プログラムが実行され、次のようなクライアントステータス管理報知が行われる。
即ち、ステップS41では、要求が、所定のクライアントのステータスを問い合わせる問い合わせ要求であるか否かが判定される。ステップS41において、要求が問い合わせ要求でないと判定された場合、ステップS42およびS43をスキップして、クライアントステータス報知処理を終了する。
また、ステップS41において、要求が、所定のクライアントのステータスを問い合わせる問い合わせ要求であると判定された場合、ステップS42に進み、問い合わせのあったクライアントのステータスが検索される。即ち、ロケーションサーバ3は、問い合わせのあったクライアントの管理情報を検索し、その管理情報に対応付けられているステータスを検出する。そして、ステップS43に進み、そのステータスが、問い合わせ要求のあったパソコン1やチャットサーバ4等に送信され、クライアントステータス報知処理を終了する。
なお、以上のようなロケーションサーバ3が行う処理は、例えば、前述したようなICQ等の仕組みを利用して行うことが可能である。
次に、図9のフローチャートを参照して、図4のチャットサーバ4においてチャットサーバプログラムが実行されることにより行われるチャットサーバ処理について説明する。
パソコン1等のチャットクライアントが、ネットワーク2に接続され、上述したようにして、チャットサーバ4に対してアクセスしてくると、チャットサーバ4では、チャットサーバプログラムが実行され、そのチャットクライアントに対して、次のようなチャットサーバ処理が行われる。
即ち、チャットサーバ4では、チャットクライアントとしての、例えばパソコン1がアクセスしてくると、ステップS51において、パソコン1との接続が確立され、ステップS52に進む。ステップS52では、パソコン1のユーザ宛のチャットログが記憶されているかどうかが判定される。
即ち、チャットサーバ4では、チャットクライアントからメッセージが送信されてくると、後述するステップS59において、そのメッセージを、チャットログに記憶するようになっている。さらに、チャットクライアントからのメッセージには、上述したように、タイムスタンプ、メッセージの宛先、そのメッセージの差出人が付加されており(以下、適宜、これらの情報を、付加情報という)、メッセージは、それらの付加情報とともに、チャットログに記憶されるようになっている。ステップS52では、メッセージの宛先が、パソコン1のユーザになっているメッセージおよび付加情報の集合としてのチャットログが記憶されているかどうかが判定される。
ステップS52において、メッセージの宛先が、パソコン1のユーザになっているチャットログが記憶されていると判定された場合、ステップS53に進み、そのチャットログが、パソコン1に送信される。これにより、パソコン1では、上述したように、チャットサーバ4からのチャットログが受信されて表示される。
一方、ステップS52において、メッセージの宛先が、パソコン1のユーザになっているチャットログが記憶されていないと判定された場合、ステップS53をスキップして、ステップS54に進み、パソコン1において、上述したように、宛先入力エリア52(図6)に宛先が入力され、その宛先が送信されてきたか否かが判定される。ステップS54において、パソコン1から宛先が送信されてきていないと判定された場合、ステップS55乃至S57をスキップして、ステップS58に進む。
また、ステップS54において、パソコン1から宛先が送信されてきたと判定された場合、ステップS55に進み、その宛先が受信される。さらに、ステップS55では、その宛先に対応するクライアントのステータスを問い合わせる問い合わせ要求が、ロケーションサーバ3に送信される。この場合、ロケーションサーバ3においては、上述したように、クライアントステータス報知処理(図8)が行われることにより、問い合わせのあったクライアントのステータスが検索されて送信(返信)されてくるので、チャットサーバ4では、そのステータスが受信され、ステップS56に進み、パソコン1から送信されてきた宛先に対応するクライアントのステータスが「ログイン中」であるかどうかが判定される。
ステップS56において、パソコン1から送信されてきた宛先に対応するクライアントのステータスが「ログイン中」でないと判定された場合、即ち、そのクライアントがネットワーク2に接続していない場合、ステップS57をスキップして、ステップS58に進む。また、ステップS56において、パソコン1から送信されてきた宛先に対応するクライアントのステータスが「ログイン中」であると判定された場合、即ち、パソコン1から送信されてきた宛先に対応するクライアントがネットワーク2に接続している場合、ステップS57に進み、その宛先に対応するクライアントに対して、送信予告通知が送信され、ステップS58に進む。この場合、上述したように、そのクライアントにおいては、送信予告通知が受信されて表示され、これにより、パソコン1のユーザがメッセージを送信しようとしていることを認識することができる。
ステップS58では、パソコン1からメッセージが送信されてきたか否かが判定され、送信されてきていないと判定された場合、ステップS59乃至S62をスキップして、ステップS63に進む。また、ステップS58において、パソコン1からメッセージが送信されてきたと判定された場合、ステップS59に進み、そのメッセージと、それとともに送信されてくる付加情報とが受信され、チャットログとして、HD44に記憶される。なお、この記憶されたメッセージおよび付加情報は、例えば、記憶してから所定の時間が経過した場合や、差出人から削除の指令があった場合等に削除されるようになっている。
そして、ステップS60に進み、パソコン1からのメッセージに付加されている付加情報の中の宛先に対応するクライアントのステータスを問い合わせる問い合わせ要求が、ロケーションサーバ3に送信される。この場合、ロケーションサーバ3においては、上述したように、問い合わせのあったクライアントのステータスが検索されて送信されてくるので、チャットサーバ4では、そのステータスが受信され、ステップS61に進み、パソコン1からのメッセージに付加されている宛先に対応するクライアントのステータスが「ログイン中」であるかどうかが判定される。ステップS61において、パソコン1から送信されてきたメッセージに付加されている宛先に対応するクライアントのステータスが「ログイン中」でないと判定された場合、ステップS62をスキップして、ステップS63に進む。
また、ステップS61において、パソコン1から送信されてきたメッセージに付加されている宛先に対応するクライアントのステータスが「ログイン中」であると判定された場合、即ち、そのメッセージの宛先であるクライアントがネットワーク2に接続している場合、ステップS62に進み、その宛先に対応するクライアントに対して、パソコン1から送信されてきたメッセージが送信され、ステップS63に進む。
従って、チャットサーバ4では、ネットワーク2に接続しているパソコン1から、あるクライアント宛のメッセージが送信されてきた場合に、そのクライアントもネットワーク2に接続していれば、そのクライアントに対して、パソコン1からメッセージが送信される。即ち、この場合、そのクライアントと、パソコン1と間では、チャットサーバ4を介してリアルタイムチャットを行うことができる。
ステップS63では、パソコン1において、入力部25が、ネットワーク2との接続を切断するように操作されたか否かが判定される。ステップS63において、入力部25が、ネットワーク2との接続を切断するように操作されていないと判定された場合、ステップS54に戻り、以下、同様の処理が繰り返される。
また、ステップS64において、パソコン1の入力部25が、ネットワーク2との接続を切断するように操作されたと判定された場合、即ち、例えば、ネットワーク2との接続を切断する要求が、パソコン1から送信されてきた場合、チャットサーバ4は、パソコン1との接続を切断し、チャットサーバ処理を終了する。
なお、上述の場合には、チャットサーバ4において、クライアントのステータスを、ロケーションサーバ3に問い合わせるようにしたが、クライアントのステータスは、その変化があった場合に、ロケーションサーバ3からチャットサーバ4に送信するようにしても良い。
次に、パソコン1、ロケーションサーバ3、およびチャットサーバ4において上述したような処理が行われることで、ユーザどうしは、図10乃至図12に示すように、スムーズなコミュニケーションを図ることができる。
ここで、図10乃至図12は、パソコン1の出力部26における表示画面を示している。また、図10および図11は、パソコン1においてオープンされたチャットウインドウ51を示しているが、ここでは、パソコン1−1と1−2を対象とし、図10または図11は、パソコン1−1または1−2における表示画面をそれぞれ示している。なお、図10または図11において、パソコン1−1または1−2におけるチャットウインドウ51、そのチャットウインドウ51を構成する宛先入力エリア52、チャット文字/ログ表示エリア53、チャット文字/メッセージ入力エリア54の符号は、各符号に−1または−2を付してそれぞれ示してある。
例えば、いま、パソコン1−1または1−2のユーザ宛のメッセージを送る場合に、その宛先が、userAまたはuserBで、それぞれ表されるものとし、パソコン1−1のユーザuserAが、ネットワーク2に接続して、チャットクライアントプログラムを起動したとする。この場合、図10に示すように、チャットウインドウ51−1がオープンされる。
そして、パソコン1−1のユーザuserAが、パソコン1−2のユーザuserB宛にメッセージを送る場合、図10に示すように、チャットウインドウ51−1の宛先入力エリア52−1に、宛先「userB」を入力する。この宛先「userB」は、上述したように、チャットサーバ4に送信される。いま、パソコン1−2がネットワーク2に接続されていないとすると、チャットサーバ4では、宛先「userB」を受信しても、パソコン1−2に対して、送信予告通知は送信されない。
その後、パソコン1−1のユーザuserAが、パソコン1−2のユーザuserB宛に送るメッセージを、チャット文字/メッセージ入力エリア54−1に入力すると、そのメッセージは、宛先入力エリア52−1に入力された宛先「userB」、さらにはタイムスタンプおよび差出人を表す「userA」が付加されてチャットサーバ4に送信されるとともに、そのメッセージと、差出人「userA」およびタイムスタンプが、差出人、タイムスタンプ、メッセージの順で配置されて、チャット文字/ログ表示エリア53−1に表示される。
図10の実施の形態においては、パソコン1−1のユーザuserAが、パソコン1−2のユーザuserB宛に、メッセージ「風邪の具合はどうですか?」と、「元気であれば、返事をください」を入力して送信しており、チャット文字/ログ表示エリア53−1では、これらのメッセージが、差出人「userA」およびタイムスタンプとともに表示されている。
以上のようにして、チャットサーバ4に送信されたユーザuserAを差出人とする、ユーザuserB宛のメッセージは、チャットサーバ4において、チャットログとして記憶される。そして、いま、パソコン1−2がネットワーク2に接続していないとすると、ユーザuserAによるユーザuserB宛のメッセージは、チャットサーバ4に記憶されるだけで、パソコン1−2には送信されない。
その後、パソコン1−2のユーザuserBが、ネットワーク2に接続して、チャットクライアントプログラムを起動したとする。この場合も、パソコン1−2では、パソコン1−1における場合と同様に、図11に示すようなチャットウインドウ51−2が表示される。
さらに、この場合、チャットサーバ4では、上述したように、パソコン1−2がネットワーク2に接続されたことが認識され、そのユーザuserB宛のメッセージとしてのチャットログが、パソコン1−2に送信される。これにより、パソコン1−2では、図11に示すように、パソコン1−2がネットワーク2に接続されるまでに、パソコン1−1のユーザuserAが入力したメッセージ「風邪の具合はどうですか?」と、「元気であれば、返事をください」が、その差出人「userA」およびタイムスタンプとともに、チャット文字/ログ表示エリア52−2に表示される。その結果、パソコン1−2のユーザuserBは、ネットワーク2に接続するまでに入力されたユーザuserAからのメッセージを見ることができる。
その後、ユーザuserAからのメッセージを見たパソコン1−2のユーザuserBが、パソコン1−1のユーザuserA宛に返信メッセージを送ろうとして、図11に示すように、チャットウインドウ51−2の宛先入力エリア52−2に、宛先「userA」を入力すると、この宛先「userA」は、上述したように、チャットサーバ4に送信される。
いまの場合、宛先「userA」に対応するパソコン1−1はネットワーク2に接続しているから、チャットサーバ4では、上述したように、パソコン1−1に対して、送信予告通知が送信される。パソコン1−1では、この送信予告通知が受信されて表示される。即ち、パソコン1−1では、例えば、図12に示すように、メッセージが送信されてくる旨を報知するための予告ウインドウ61がオープンされ、そこに、ユーザuserBが、メッセージを送信しようとしている旨のメッセージ「userBさんがメッセージを送ろうとしています。」が表示される。これにより、ユーザuserAは、ユーザuserBから返事が送られてくることを認識することができる。
そして、パソコン1−2のユーザuserBが、パソコン1−1のユーザuserA宛に送る返信メッセージを、チャット文字/メッセージ入力エリア54−2に入力すると、そのメッセージは、宛先入力エリア52−2に入力された宛先「userA」、さらにはタイムスタンプおよび差出人を表す「userB」が付加されてチャットサーバ4に送信されるとともに、そのメッセージと、差出人「userB」およびタイムスタンプが、差出人、タイムスタンプ、メッセージの順で配置されて、チャット文字/ログ表示エリア53−2に表示される。
図11の実施の形態においては、パソコン1−2のユーザuserBが、パソコン1−1のユーザuserAからのメッセージを見て、返信メッセージ「元気、元気、すっかりよくなったよ。」を入力して送信しており、チャット文字/ログ表示エリア53−2では、このメッセージが、差出人「userB」およびタイムスタンプとともに表示されている。
以上のようにして、チャットサーバ4に送信されたユーザuserBを差出人とする、ユーザuserA宛の返信メッセージは、チャットサーバ4において、チャットログとして記憶される。さらに、いま、パソコン1−1がネットワーク2に接続されているので、このメッセージは、差出人「userB」やタイムスタンプ等とともに、パソコン1−1に送信される。
パソコン1−1では、チャットサーバ4から送信されてくる、ユーザuserBによる、ユーザuserA宛の返信メッセージと、差出人「userB」およびタイムスタンプが受信され、図10に示すように、チャット文字/ログ表示エリア53−1に表示される。
そして、その後は、ユーザuserAとuserBとの間で、従来と同様にして、リアルタイムでのメッセージのやりとりであるチャットを行うことができる。
従って、ユーザuserAは、メッセージを入力しているときに、ユーザuserBが返信メッセージを送信しようとしていることを認識することができるので、ユーザuserAが、返事を催促するメッセージを、行き違いで送信してしまうようなことを防止することができる。
さらに、ユーザuserBは、ネットワーク2に接続するまでにユーザuserAが送信したユーザuserB宛のメッセージを見ることができるが、このことは、ユーザuserAからすれば、ユーザuserBがネットワーク2に接続するまでは、電子メールで、ユーザuserBに、メッセージを送信したのと等価であり、従って、ユーザuserAは、いわば電子メールの機能と、チャットの機能とを、特に意識することなく利用することができる。即ち、本発明によれば、ユーザに対して、電子メール等のメッセンジャの機能と、リアルタイムチャットの機能とを、同一のユーザインタフェースで提供することができる。
次に、図13を参照して、上述した一連の処理を実行するプログラムをコンピュータにインストールして実行可能な状態とするために用いられる媒体について説明する。
プログラムは、例えば、図13(A)に示すように、コンピュータ101に内蔵されている記録媒体としてのハードディスク102(図2乃至図4それぞれに示したHD24,34,44に対応する)に、あらかじめインストールした状態で提供することができる。
また、プログラムは、例えば、図13(B)に示すように、フロッピー(登録商標)ディスク111、CD−ROM(Compact Disc Read Only Memory)112,MO(Magneto optical)ディスク113,DVD(Digital Versatile Disc)114、磁気ディスク115、半導体メモリ116(図2乃至図4それぞれに示したメモリ23,33,43に対応する)などの記録媒体に、一時的あるいは永続的に格納し、パッケージソフトウェアとして提供することができる。
さらに、プログラムは、例えば、図13(C)に示すように、ダウンロードサイト121から、無線で衛星122を介して、コンピュータ123に転送したり、LAN(Local Area Network)やインターネットといったネットワーク131(図1のネットワーク2に対応する)を介して、有線または無線でコンピュータ123に転送し、そのコンピュータ123において、内蔵するハードディスク等にダウンロードさせるようにすることができる。
本明細書における媒体とは、これらのすべてを含む広義の概念を意味するものである。さらに、本明細書において、媒体により提供されるプログラムを記述するステップは、経時的な要素を含む処理だけでなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
以上、本発明をチャットシステムに適用した場合について説明したが、本発明は、チャットシステムの他、メーラやメッセンジャその他のデータをやりとりするアプリケーションに適用することも可能である。
なお、本実施の形態では、送信予告通知があった場合に、メッセージが送信されてくる旨のメッセージを表示するようにしたが、メッセージが送信されてくる旨は、例えば、アイコン等を表示することにより、ユーザに報知するようにしても良い(OSが、Windows(登録商標)95や98の場合は、そのタスクバーのタスクトレイの中に、アイコンを表示するようにすること等が可能である)。さらに、メッセージが送信されてくる旨は、その他、例えば、音声等で、ユーザに報知することも可能である。
ここで、前述のYahoo!ページャ等によれば、あるユーザがインターネットに接続したことが報知されるのに対して、本発明においては、あるユーザがネットワーク2に接続し、かつメッセージを送信しようとしていることが報知されるが、本発明においても、ユーザがネットワーク2に接続したことを、メッセージを送信しようとしていることとは別に報知するようにすることが可能である。これは、例えば、ロケーションサーバ3において、クライアントがネットワーク2に接続したときに、その旨を、他のクライアントに送信することで実現可能である。
また、本実施の形態では、ロケーションサーバ3とチャットサーバ4とを別に設けるようにしたが、ロケーションサーバ3とチャットサーバ4とは、同一サーバとすることが可能である。
さらに、図10乃至図12の実施の形態では、パソコン1−1のユーザと、パソコン1−2のユーザとの二人のユーザの間で、メッセージのやりとりをする場合について説明したが、3人以上のユーザの間で、メッセージのやりとりをすることも可能である。この場合、あるユーザが、メッセージを送信する相手が二人以上になることがあるが、その場合には、チャットウインドウ51(図6)の宛先入力エリア52に、その二人以上のユーザの宛先を、コンマ等で区切って入力するようにすれば良い。また、二人以上のユーザをグループ化して、グループ名を定義し、そのグループ名を、宛先入力エリア52に入力するようにしても良い。
なお、本発明においては、メッセージを入力している最中であっても、相手からのメッセージを見ることができるので、円滑に、メッセージのやりとりを行うことができる。さらに、音声による会話ではなく、文字による会話が可能であるため、クライアントとして、携帯可能な、例えば、携帯電話機を用いた場合に、電車等の公共の場であっても、周囲に迷惑をかけることなく、コミュニケーションを図ることができる。
1−1乃至1−3 パソコン, 2 ネットワーク, 3 ロケーションサーバ, 4−1,4−2 チャットサーバ, 21 通信I/F, 22 CPU, 23 メモリ, 24 HD, 25 入力部, 26 出力部, 31 通信I/F, 32 CPU, 33 メモリ, 34 HD, 35 入力部, 36 出力部, 41 通信I/F, 42 CPU, 43 メモリ, 44 HD, 45 入力部, 46 出力部, 51 チャットウインドウ, 52 宛先入力エリア, 53 チャット文字/ログ表示エリア, 54 チャット文字/メッセージ入力エリア, 61 予告ウインドウ