以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
また、以下では、携帯電話100を「通信端末」の代表例として説明を行なう。ただし、通信端末は、パーソナルコンピュータや、カーナビゲーション装置(Satellite navigation system)や、PND(Personal Navigation Device)や、PDA(Personal Data Assistance)などのような、他の情報通信機器であってもよい。
<ネットワークシステム1の全体構成>
まず、ネットワークシステム1の全体構成について説明する。図1は、本実施の形態に係るネットワークシステム1の全体構成を示す概略図である。図1を参照して、ネットワークシステム1は、携帯電話100A,100B,100Cと、マッチングサーバ400と、インターネット(第1のネットワーク)500と、キャリア網(第2のネットワーク)700とを含む。また、本実施の形態に係るネットワークシステム1は、車両250に搭載されるカーナビゲーション装置200と、パーソナルコンピュータ(PC;Personal Computer)300とを含む。
なお、説明の容易化のために、以下では、本実施の形態に係るネットワークシステム1が、第1の携帯電話100Aと、第2の携帯電話100Bと、第3の携帯電話100Cとを含む場合について説明する。また、携帯電話100A,100B,100Cの各々に共通の構成や機能を説明する際には、それらを「携帯電話100」とも総称する。そして、携帯電話100A,100B,100C、カーナビゲーション装置200、パーソナルコンピュータ300の各々に共通の構成や機能を説明する際には、それらを「通信端末」とも総称する。
携帯電話100は、キャリア網700に接続可能に構成されている。カーナビゲーション装置200は、インターネット500に接続可能に構成されている。パーソナルコンピュータ300は、LAN(Local Area Network)350やWAN(Wide Area Network)を介してインターネット500に接続可能に構成されている。マッチングサーバ400は、インターネット500に接続可能に構成されている。
より詳細には、第1の携帯電話100Aと、第2の携帯電話100Bと、第3の携帯電話100Cとは、キャリア網を介して、互いに音声通話が可能である。第1の携帯電話100Aと、第2の携帯電話100Bと、第3の携帯電話100Cと、カーナビゲーション装置200と、パーソナルコンピュータ300とは、キャリア網700やインターネット500を介して、互いに音声通話が可能である。
より詳細には、携帯電話100とカーナビゲーション装置200とパーソナルコンピュータ300には、自端末を特定するための電話番号が割り当てられる。すなわち、携帯電話100とカーナビゲーション装置200とパーソナルコンピュータ300は、内部の記録媒体に他の通信端末の電話番号を記憶することができ、当該電話番号に基づいてキャリア網700やインターネット500などを介して当該他の通信端末と音声通話を行なうことができる。
また、第1の携帯電話100Aと、第2の携帯電話100Bと、第3の携帯電話100Cと、カーナビゲーション装置200と、パーソナルコンピュータ300とは、キャリア網700やインターネット500を介して、互いにデータの送受信が可能である。
より詳細には、携帯電話100とカーナビゲーション装置200とパーソナルコンピュータ300には、自端末を特定するための識別情報(たとえば、電話番号やメールアドレスやIP(Internet Protocol)アドレスなど)が割り当てられる。すなわち、携帯電話100とカーナビゲーション装置200とパーソナルコンピュータ300とは、内部の記録媒体に他の通信端末の識別情報を記憶することができ、当該識別情報に基づいてキャリア網700やインターネット500などを介して当該他の通信端末とデータ送受信を行なうことができる。
なお、携帯電話100とカーナビゲーション装置200とパーソナルコンピュータ300とは、インターネット500にアクセスする際に一時的に割り当てられるIPアドレスを利用して他の通信端末とデータ送受信を行ってもよい。本実施の形態に係る通信端末は、インターネット500にアクセスした際に、マッチングサーバ400あるいは他の図示しないサーバ装置などによってIPアドレスが割り当てられるものとする。IPアドレスの割り当て処理の詳細は公知であるので、ここでは説明を繰り返さない。
また、本実施の形態に係る携帯電話100、カーナビゲーション装置200、パーソナルコンピュータ300は、自身に割り当てられたIPアドレスを利用することにより、直接的に相互にネットワークを介してデータ送受信を行なうことが可能である。すなわち、本実施の形態に係るネットワークシステム1に含まれる携帯電話100、カーナビゲーション装置200、パーソナルコンピュータ300は、いわゆるP2P(Pear to Pear)型のネットワークを構成することが可能である。
<ネットワークシステム1の動作概要>
次に、本実施の形態に係るネットワークシステム1の動作概要について説明する。図2は、ネットワークシステム1における動作概要を示すシーケンス図である。図3は、ネットワークシステム1におけるデータの流れを示すイメージ図である。
図2および図3を参照して、本実施の形態に係る通信端末は、ユーザからの音声通話を開始するための命令(第1の命令)に応じて、音声通話を開始する。たとえば、通信端末は、メモリに格納されている相手の電話番号に基づいて、音声通話を開始する。通信端末は、その後、音声通話中に、P2P通信を開始するための命令を受け付けて、音声通話中の相手とのP2P通信を開始する。
なお、P2P型のデータ送受信を行なうためには、互いのIPアドレスを交換(取得)する必要がある。本実施の形態においては、通信端末のそれぞれは、マッチングサーバ400を介して互いのIPアドレスを取得した後に、当該IPアドレスに基づいてP2P型のデータ送受信を行なう。
より詳細には、本実施の形態においては、P2P通信の開始の際に、通信端末のそれぞれが、マッチングサーバ400に生成されたチャットルーム(以下、単にルームともいう。)を介して、IPアドレスやメッセージや添付ファイルを送受信する場合について説明する。特に、以下では、第1の携帯電話100Aが新たなチャットルームを生成するとともに、第1の携帯電話100Aと音声通話中の第2の携帯電話100Bが当該チャットルームに入室する場合について説明する。
図2および図3を参照して、まず、第1の携帯電話100A(図2において端末A)が、ユーザから音声通話相手の選択を受け付ける。第1の携帯電話100Aは、選択された第2の携帯電話100Bに発呼(電話発信)する(ステップS002)。第2の携帯電話100Bは、第1の携帯電話100Aからの発呼に応じて、スピーカから着信音を出力する。第2の携帯電話100Bは、ユーザ操作に応じて、発呼に応答(電話応答)する(ステップS004)。
第1の携帯電話100Aと第2の携帯電話100Bとは、音声通話の制御を行なう(ステップS006)。これによって、第1の携帯電話100Aのユーザと第2の携帯電話100Bのユーザは、音声通話を楽しむことができる。
ここで、音声通話中の通信端末の表示画面(タッチパネル104)について説明する。図4は、音声通話中のタッチパネル104を示すイメージ図である。
図4(a)に示すように、本実施の形態においては、音声通話が始まると、第1の携帯電話100Aが、そのタッチパネル104に手描きボタン104A(P2P通信開始ボタン、あるいはチャット通信開始ボタン)を表示する(ステップS008)。手描きボタン104Aは、音声通話中に、音声通話と並行して当該音声通話の相手とのP2P通信を開始するためのソフトウェアボタンである。ユーザが手描きボタン104Aにタッチすると(ステップS012)、第1の携帯電話100Aは、P2P通信を開始する。
ただし、第1の携帯電話100Aは、音声通話中に、ハードウェアボタン(図6におけるボタン110)のいずれかに、手描きボタンの役割を負わせてもよい(ステップS008)。当該ボタンには、音声通話中以外には、他の機能が割り当てられていてもよい。すなわち、ユーザが、当該ハードウェアボタンを押下すると(ステップS012)、第1の携帯電話100Aは、P2P通信の接続処理を開始する。
同様に、図4(b)に示すように、本実施の形態においては、音声通話中に、第2の携帯電話100Bが、そのタッチパネル104に手描きボタン104A(P2P通信開始ボタン、あるいはチャット通信開始ボタン)を表示する(ステップS010)。手描きボタン104Aは、音声通話中に、音声通話と並行して当該音声通話の相手とのP2P通信を開始するためのソフトウェアボタンである。すなわち、ユーザが手描きボタン104Aにタッチすると(ステップS020)、第2の携帯電話100Bは、P2P通信を開始する。
ただし、第2の携帯電話100Bも、音声通話中に、ハードウェアボタンのいずれかに、手描きボタンの役割を負わせてもよい(ステップS010)。当該ボタンには、音声通話中以外には、他の機能が割り当てられていてもよい。すなわち、ユーザが、当該ハードウェアボタンを押下すると(ステップS020)、第2の携帯電話100Bは、P2P通信の接続処理を開始する。
以上のように、第1の携帯電話100Aは、手描きボタン104Aが押下されると(ステップS012)、P2P通信用のアプリケーションを起動する。
具体的には、図4(c)に示すように、第1の携帯電話100Aは、タッチパネル104に、P2P通信用のウィンドウを表示する。第1の携帯電話100Aは、第1の携帯電話100Aと第2の携帯電話100Bの電話番号などからルーム名を生成する。第1の携帯電話100Aは、当該ルーム名に基づいて、マッチングサーバ400にルームABが存在するか否かを確認する(ステップS014)。
マッチングサーバ400にルームABが未だ存在していない場合、第1の携帯電話100Aは、マッチングサーバ400に新たなルームを生成(開設)するための生成要求を送信する(ステップS016)。より詳細には、第1の携帯電話100Aは、ルーム名を含む生成要求をマッチングサーバ400に送信する。マッチングサーバ400は、当該ルーム名を含む生成要求を受け付けて、当該ルーム名に対応するルームを開設する(ステップS018)。
より詳細には、第1の携帯電話100Aは、ルームを開設する際に、マッチングサーバ400から自身のIPアドレスを取得してもよいし、インターネット500に接続した際などに、予め他のサーバなどからIPアドレスを取得していてもよい。マッチングサーバ400は、ルームを生成する際に、ルーム名と第1の携帯電話100Aの識別情報(IPアドレスなど)を対応付けて記憶する。
第2の携帯電話100Bのユーザは、たとえば音声通話によって、第1の携帯電話100Aのユーザから手描きボタン104Aを押下するように要請される。第2の携帯電話100Bは、そのユーザによって手描きボタン104Aが押下されると(ステップS020)、P2P通信用のアプリケーションを起動する。
具体的には、図4(c)に示すように、第2の携帯電話100Bも、タッチパネル104に、P2P通信用のウィンドウを表示する。第2の携帯電話100Bは、第1の携帯電話100Aの電話番号と自身の携帯電話100Bの電話番号とに基づいて、所定のルールに基づいてルーム名を生成する。
このように、本実施の形態に係るネットワークシステム1においては、第1の携帯電話100Aと第2の携帯電話100Bとが、共に同じ情報に基づいてルーム名を生成するものである。すなわち、ネットワークシステム1は、第1および第2の携帯電話が生成したルーム名が同じになるように構成されている。ただし、ネットワークシステム1は、第1および第2の携帯電話が同じルーム名を生成できるように構成されていればよく、第1および第2の携帯電話の電話番号に基づいてルーム名を生成する構成に限定されるものではない。
第2の携帯電話100Bは、ルーム名を生成すると、マッチングサーバ400に当該ルーム名に対応するルームが存在するか否かを問い合わせる(ステップS022)。マッチングサーバ400に当該ルーム名に対応するルームABが既に存在している場合、第2の携帯電話100BはルームABへの入室要求(参加要求)をマッチングサーバ400に行なう(ステップS024)。マッチングサーバ400は、入室要求を受け付けて、第2の携帯電話100Bの識別情報をルームABのルーム名に対応付けて登録する(ステップS026)。
より詳細には、第2の携帯電話100Bは、ルームに入室する際に、マッチングサーバ400から自身のIPアドレスを取得してもよいし、インターネット500に接続した際などに、予め他のサーバなどからIPアドレスを取得していてもよい。マッチングサーバ400は、第2の携帯電話100Bがルームに入室する際に、ルーム名と第2の携帯電話100Bの識別情報(IPアドレスなど)を対応付けて格納する。
そして、マッチングサーバ400はマッチング処理が成功した旨を第1の携帯電話100Aおよび第2の携帯電話100Bに通知する(ステップS028)。すなわち、マッチングサーバ400は、第1の携帯電話100Aと第2の携帯電話100Bとに、互いの識別情報を送信する。
第1の携帯電話100Aと第2の携帯電話100Bとは、相手の識別情報に基づいて、互いを認証する(ステップS030)。認証が完了すると、第1の携帯電話100Aと第2の携帯電話100Bとは、図4(d)および図4(e)に示すように、P2P通信(手描きチャット通信)を開始する(ステップS032)。
本実施の形態においては、第1の携帯電話100Aと第2の携帯電話100Bとは、手描きボタン104Aが押下された場合に、ハンズフリーモード、あるいはスピーカフォンモードに移行する。より詳細には、第1の携帯電話100Aと、第2の携帯電話100Bとは、手描きボタン104Aが押下されると、スピーカの音量(出力の増幅率)を上げたり、マイクの感度(入力の増幅率)を上げたりする。すなわち、第1の携帯電話100Aと第2の携帯電話100Bとは、ユーザが手描きチャットを行いながら、すなわちユーザがスタイラスペン120を用いてタッチパネル104に手描き入力を行いながら、スピーカからの音声を聞き取ったり、マイクに音声を入力したりできるモードへと移行する。
第1の携帯電話100Aが、ユーザからP2P通信を終了するための命令を受け付けると、P2P通信を終了するためのメッセージを第2の携帯電話100Bに送信する(ステップS038)。たとえば、ユーザがP2P終了ボタン104Cにタッチすると、第1の携帯電話100Aは、ハンズフリーモードを解除して、上記メッセージを第2の携帯電話100Bに送信する。
第2の携帯電話100Bが、当該メッセージに返答し、ハンズフリーモードを解除する(ステップS040)。これによって、第1の携帯電話100Aと第2の携帯電話100BとはP2P通信を終了する。すなわち、第1の携帯電話100Aと第2の携帯電話100Bとは、音声通話のみを継続する。
第1の携帯電話100Aが、ユーザから音声通話を終了するための命令を受け付けると、第2の携帯電話100Bに電話の切断を要求する(ステップS042)。第2の携帯電話100Bが当該要求に応答する(ステップS044)。ただし、第1の携帯電話100Aおよび第2の携帯電話100Bは、P2P通信中に音声通話を終了するための命令を受け付けた場合、P2P通信を続行しながら、音声通話のみを終了しても良い。
本実施の形態に係るネットワークシステム1の構成および効果についてまとめると以下のようになる。
音声通話とデータ通信を行なうためには、各々の通信端末が、相手の通信端末に関する音声通話のための識別情報(電話番号など)とデータ通信のための識別情報(IPアドレスなど)とを取得する必要がある。本実施の形態に係るネットワークシステム1においては、音声通話中の複数の通信端末の各々が、音声通話にデータ通信を受け付けるための命令を受け付けられる。そのため、通信端末の各々は、音声通話の相手をデータ通信の相手として特定することができる。そして、通信端末の各々は、音声通話の相手に関する音声通話のための識別情報に基づいて、マッチングサーバ400を利用して、当該音声通話の相手に関するデータ通信のための識別情報を取得する。その結果、通信端末のそれぞれのユーザは、手描きボタン104Aを押下するだけで、音声通話をしながら手描きデータ通信を行なうことができる。
以下、このような機能を実現するための構成について詳述する。
<携帯電話100のハードウェア構成>
本実施の形態に係る通信端末の一例である携帯電話100のハードウェア構成について説明する。図5は、本施の形態に係る携帯電話100の外観を示すイメージ図である。図6は、本施の形態に係る携帯電話100のハードウェア構成を示すブロック図である。
図5および図6を参照して、本実施の形態に係る携帯電話100は、インターネット500を介して他の通信端末との間でデータ通信を行なうためのデータ通信デバイス101と、電話回線(キャリア網700など)を介して他の通信端末と音声通話を行なうための音声通話デバイス102と、プログラムや各種データベースを記憶するメモリ103と、CPU(Central Processing Unit)106と、ディスプレイ107と、外部音声が入力されるマイク108と、音声を出力するスピーカ109と、各種情報の入力を受け付けるボタン110と、外部からの通信データや通話信号を受信した旨の音声を出力する第1の通知部111と、外部からの通信データや通話信号を受信した旨を表示する第2の通知部112とを含む。
なお、データ通信デバイス101と音声通話デバイス102とは、たとえばアンテナや信号処理回路などから構成されるものであって、両者は同じデバイスによって実現されてもよい。たとえば、パーソナルコンピュータ300が、1つの通信インターフェイスを利用して、IP電話を行いながら、手描きチャット通信を行ってもよい。
本実施の形態に係る携帯電話100は、ディスプレイ107の上側(表側)にペンタブレット119が敷設されている。これによって、ユーザはスタイラスペン120などを用いることによって、ペンタブレット119を介して、図形情報などをCPU106に手描き入力することができる。ディスプレイ107は、CPU106が出力したデータに基づいて、画像やテキストを表示する。すなわち、本実施の形態においては、ディスプレイ107とペンタブレット119とが、タッチパネル104を構成する。
ボタン110は、キー入力操作などによってユーザから情報を受け付けるためのハードウェアボタンである。たとえば、ボタン110は、通話を受け付けたり、通話を発したりするためのTELボタン110Aと、P2P通信を受け付けたり、P2P通信を発したりするためのP2Pボタン110Bと、アドレス帳データを呼び出すアドレス帳ボタン110Dと、各種の処理を終了させるための終了ボタン110Eとを含む。すなわち、ボタン110は、音声通話デバイス102を介してP2P参加要請メールを受信したときに、ユーザから、チャットルームへ入室する命令や、メールの内容を表示させる命令などを選択可能に受け付ける。
第1の通知部111は、スピーカ109などを介して着信音を出力する。あるいは、第1の通知部111は、バイブレーション機能を有する。第1の通知部111は、着呼した際や、P2P参加要請メールを受信した際に、音声を出力したり、携帯電話100を振動させたりする。
第2の通知部112は、着信したときに点滅するTEL用LED(Light Emitting Diode)112Aと、P2P通信を受信したときに点滅するP2P用LED112Bとを含む。
CPU106は、携帯電話100の各部を制御する。たとえば、ボタン110を介してユーザから各種の命令を受け付けて、データ通信デバイス101や音声通話デバイス102やネットワークを介して外部の通信端末とデータの送受信を行なう。後述するように、CPU106は、外部からダウンロードした、あるいは予めメモリ103に格納されたプログラムに基づいて、図12から図16に示されるステップを実行する。
データ通信デバイス101は、CPU106からの通信データを図示しないアンテナを介して発信する。データ通信デバイス101は、アンテナを介して受信した通信データをCPU106に入力する。
音声通話デバイス102は、CPU106からの音声信号を図示しないアンテナを介して発信する。音声通話デバイス102は、アンテナを介して受信した音声信号をCPU106に入力する。
メモリ103は、作業用メモリとして機能するRAM(Random Access Memory)や、制御プログラムや、画像データなどを記憶するフラッシュメモリ(Flash Memory)などによって実現される。メモリ103は、各種のワークメモリ103Aを有する。メモリ103のワークメモリ103Aは、発信者の電話番号を格納するRCVTELNO領域、選択されたアドレスのメモリNoを格納するSEL領域、生成されたルーム名を格納するROOMNAME領域などを含む。
図7(A)は、メモリ103が記憶するアドレス帳データ103Bを示すイメージ図である。図7(B)は、メモリ103が記憶する自端末データ103Cを示すイメージ図である。図7(C)は、メモリ103が記憶する通信相手のIPアドレスデータ103Dと自端末のIPアドレスデータ103Eとを示すイメージ図である。
図7(A)を参照して、アドレス帳データ(AdrDB[])103Bは、宛先(他の通信端末)毎にメモリNoを対応付けている。そして、アドレス帳データ103Bは、宛先毎に、名前、電話番号、メールアドレス、ニックネームなどを互いに対応付けて格納する。
図7(B)を参照して、メモリ103は、自端末データ(MyAdr)103Cとして、自端末のユーザの名前、自端末の電話番号、自端末のメールアドレス、ニックネームなどを格納する。
図7(C)を参照して、メモリ103は、通信相手のIPアドレスデータ(HIS_IPADR)103Dと、自端末のIPアドレスデータ(MY_IPADR)103Eとを格納する。
<マッチングサーバ400のハードウェア構成>
次に、本実施の形態に係るマッチングサーバ400のハードウェア構成について説明する。図8は、本実施の形態に係るマッチングサーバ400のハードウェア構成を示すブロック図である。図8を参照して、本実施の形態に係るマッチングサーバ400は、相互に内部バス408で接続されたCPU405と、メモリ406と、固定ディスク407と、通信デバイス409とを含む。
メモリ406は、各種の情報を記憶するものであって、たとえば、CPU405でのプログラムの実行に必要なデータを一時的に記憶する。固定ディスク407は、CPU105が実行するプログラムやデータベースを記憶する。CPU405は、マッチングサーバ400の各要素を制御するものであって、各種の演算を実施する装置である。
通信デバイス409は、CPU405が出力したデータを電気信号へと変換して外部へ送信し、外部から受信した電気信号をデータに変換してCPU405に入力する。具体的には、通信デバイス409は、CPU405からのデータを、インターネット500やキャリア網700などを介して携帯電話100やカーナビゲーション装置200やパーソナルコンピュータ300に送信する。そして、通信デバイス409は、インターネット500やキャリア網700を介して、携帯電話100やカーナビゲーション装置200やパーソナルコンピュータ300から受信したデータを、CPU405に入力する。
ここで、メモリ406あるいは固定ディスク407に記憶されるデータについて説明する。図9(A)は、マッチングサーバ400のメモリ406あるいは固定ディスク407に記憶されるルーム管理テーブル406Aのデータ構造を示す第1のイメージ図であって、図9(B)は、マッチングサーバ400のメモリ406あるいは固定ディスク407に記憶されるルーム管理テーブル406Aのデータ構造を示す第2のイメージ図である。
図9(A)および図9(B)を参照して、ルーム管理テーブル406Aは、ルーム毎に、ルーム名と当該ルームに入室中の通信端末の識別情報とを対応付けて格納する。たとえば、ある時点においては、図9(A)を参照して、マッチングサーバ400にルーム名ABを有するチャットルーム、ルーム名CDを有するチャットルーム、ルーム名EFを有するチャットルーム、ルーム名GHを有するチャットルームが生成されている。
本実施の形態においては、ルーム名ABは、通信端末Aが通信端末Aの電話番号と通信端末Bの電話番号とに基づいて決定する。ルーム名CDは、通信端末Cが通信端末Cの電話番号と通信端末Dの電話番号とに基づいて決定する。ルーム名EFは、通信端末Eが、通信端末Eの電話番号と通信端末Fの電話番号とに基づいて決定する。ルーム名GHは、通信端末Gが通信端末Gの電話番号と通信端末Hの電話番号とに基づいて決定する。
そして、ルーム名ABを有するチャットルームには通信端末Aが入室しているため、ルーム管理テーブル406Aは、通信端末AのIPアドレスをルーム名ABに対応付けて格納する。ルーム名CDを有するチャットルームには通信端末Cが入室しているため、ルーム管理テーブル406Aは、通信端末CのIPアドレスをルーム名CDに対応付けて格納する。ルーム名EFを有するチャットルームには通信端末Eが入室しているため、ルーム管理テーブル406Aは、通信端末EのIPアドレスをルーム名EFに対応付けて格納する。ルーム名GHを有するチャットルームには通信端末Gが入室しているため、ルーム管理テーブル406Aは、通信端末GのIPアドレスをルーム名GHに対応付けて格納する。
図9(B)を参照して、ルーム名ABを有するチャットルームに新たに通信端末Bが入室すると、ルーム管理テーブル406Aはルーム名ABに対応付けて、通信端末BのIPアドレスを格納する。
たとえば、マッチングサーバ400においては、第1の携帯電話100Aが新たなチャットルームの生成を要求してきた際(図2におけるステップS016)に、生成要求からルーム名を取得して、ルーム管理テーブル406Aに当該ルーム名と第1の携帯電話100AのIPアドレスとを対応付けて格納する。その後、第2の携帯電話100Bがマッチングサーバ400にチャットルームへの入室を要求してきた際(図2におけるステップS024)に、CPU405が、ルーム管理テーブル406Aに当該ルーム名と第2の携帯電話100BのIPアドレスとを対応付けて格納する。
そして、当該ルームに関する所定の条件が満たされると、CPU405は、ルーム管理テーブル406Aから当該ルーム名に対応する第1の携帯電話100AのIPアドレスや第2の携帯電話100BのIPアドレスを読み出す。CPU405は、第1の携帯電話100AのIPアドレスを第2の各通信端末に送信し、第2の携帯電話100BのIPアドレスを第1の携帯電話100Aに送信する。
なお、所定の条件とは、たとえばルーム名に対応付けられたIPアドレスの個数が予め設定された個数に達することや、あるいはルームが生成されてから予め設定された時間が経過することなどが該当する。
<ネットワークシステム1の機能構成>
図10は、本実施の形態に係るネットワークシステム1の機能構成を示すブロック図である。図10を参照して、本実施の形態に係るネットワークシステム1は、第1の携帯電話100Aと、第2の携帯電話100Bと、マッチングサーバ400と、インターネット500と、キャリア網700とを含む。
第1の携帯電話100Aは、第1の通信部101-1と、第1の生成部1061-1と、第1の通信制御部1062-1と、第1のメモリ103-1と、第1の入力部110-1とを含む。第2の携帯電話100Bは、第2の通信部101-2と、第2の生成部1061-2と、第2の通信制御部1062-2と、第2のメモリ103-2と、第2の入力部110-2とを含む。マッチングサーバ400は、通信デバイス409と、ルーム生成部4051と、ルーム入室部4052と、ルーム削除部4053と、メモリ406とを含む。
(マッチングサーバ400の機能)
まず、マッチングサーバ400が有する機能について説明する。前述したように、メモリ406は、ルーム管理テーブル406Aを記憶する。
通信デバイス409は、インターネット500やキャリア網700を介して、第1の携帯電話100Aや第2の携帯電話100Bとデータの送受信を行なう。たとえば、通信デバイス409は、第1の携帯電話100Aや第2の携帯電話100Bなどから、新たなルームを生成するための生成要求や、ルームを削除するための削除要求や、ルームの存否を問い合わせるための検索要求や、ルームへ入室するための入室要求などを受信する。
図11は、マッチングサーバ400と第1の携帯電話100Aおよび第2の携帯電話100Bとの間で送受信されるメッセージ(コマンド)の一例を示すイメージ図である。図11を参照して、生成要求は、ルームの生成を要求するためのメッセージであって、コマンド名は「RM_CREATE」である。第1の携帯電話100Aあるいは第2の携帯電話100Bは、生成要求として、第1の携帯電話100Aあるいは第2の携帯電話100BのIPアドレスと生成するルームのルーム名とを送信する。マッチングサーバ400は、生成要求を受け付けて、後述するようにルーム名に対応する新たなルームを生成する。マッチングサーバ400は、第1の携帯電話100Aあるいは第2の携帯電話100Bにルームの生成に成功したか否かを示すメッセージを返信する。
検索要求は、ルームの検索を要求するためのメッセージであって、コマンド名は「RM_SEARCH」である。第1の携帯電話100Aあるいは第2の携帯電話100Aは、検索要求として、第1の携帯電話100Aあるいは第2の携帯電話100BのIPアドレスと検索するルーム名とを送信する。マッチングサーバ400は、検索要求を受け付けて、後述するようにルーム管理テーブル406Aにルーム名が記憶されているか否かを判断する。マッチングサーバ400は、第1の携帯電話100Aあるいは第2の携帯電話100Bに、ルーム名を有するルームが存在するか否かを示すメッセージを返信する。
削除要求は、ルームの削除を要求するためのメッセージであって、コマンド名は「RM_DELETE」である。第1の携帯電話100Aあるいは第2の携帯電話100Bは、削除要求として、第1の携帯電話100Aあるいは第2の携帯電話100BのIPアドレスと削除するルームのルーム名とを送信する。マッチングサーバ400は、削除要求を受け付けて、ルーム管理テーブル406Aからルーム名に対応するルームを削除する。マッチングサーバ400は、第1の携帯電話100Aあるいは第2の携帯電話100Bに、ルームの削除に成功したか否かを示すメッセージを返信する。
入室要求は、ルームに入室するためのメッセージであって、コマンド名は「RM_ENTRY」である。第1の携帯電話100Aあるいは第2の携帯電話100Bは、入室要求として、第1の携帯電話100Aあるいは第2の携帯電話100BのIPアドレスと入室するルーム名とを送信する。マッチングサーバ400は、入室要求を受け付けて、第1の携帯電話100Aあるいは第2の携帯電話100BのIPアドレスをルーム名に対応付けてルーム管理テーブル406Aに格納する。マッチングサーバ400は、第1の携帯電話100Aあるいは第2の携帯電話100Bに、ルームへの入室に成功したか否かを示すメッセージを返信する。
図10に戻って、ルーム生成部4051とルーム入室部4052とルーム削除部4053とは、マッチングサーバ400のCPU405がメモリ406や固定ディスク407などに記憶されるプログラムを実行して図8に示される各ハードウェアを制御することによって実現される。たとえば、CPU405が有する各機能は、CPU405が、固定ディスク407に記憶されたプログラムを一旦メモリ406へと読み出して、メモリ406からそのプログラムを読み出しながら順次実行することによって実現される。
ルーム生成部4051は、たとえば、第1の携帯電話100Aから通信デバイス409を介して生成要求を受け付ける。ルーム生成部4051は、生成要求に応じて、当該生成要求に含まれるルーム名を有する新たなルームを生成する。すなわち、ルーム生成部4051は、当該ルーム名と第1の携帯電話100AのIPアドレスとを対応付けて、ルーム管理テーブル406Aに格納する。ルーム生成部4051は、通信デバイス409を介して、判断結果を第1の携帯電話100Aに送信する。
ルーム入室部4052は、たとえば、第2の携帯電話100Bから通信デバイス409を介して、ルーム名を有するチャットルームの存否の問い合わせを受け付ける。ルーム入室部4052は、当該ルーム名がルーム管理テーブル406Aに格納されているか否かを判断する。ルーム入室部4052は、通信デバイス409を介して、判断結果を第2の携帯電話100Bに送信する。
また、ルーム入室部4052は、たとえば、第2の携帯電話100Bから通信デバイス409を介して、チャットルームへの入室要求を受け付ける。ルーム入室部4052は、入室要求に応じて、入室要求に含まれるルーム名に対応付けて第2の携帯電話100BのIPアドレスをルーム管理テーブル406Aに格納する。ルーム入室部4052は、当該ルームに関する所定の条件が満たされると、当該ルームに入室している各通信端末に、当該ルームに入室している他の通信端末のIPアドレスを送信する。
なお、所定の条件とは、たとえばルーム名に対応付けられたIPアドレスの個数が予め設定された個数に達することや、あるいはルームが生成されてから予め設定された時間が経過することなどが該当する。
ルーム削除部4053は、たとえば、第1の携帯電話100Aから通信デバイス409を介して、ルーム名を有するチャットルームの削除要求を受け付ける。ルーム削除部4053は、削除要求に応じて、ルーム管理テーブル406Aの当該ルーム名に関するデータを削除する、あるいはルーム管理テーブル406Aの当該ルーム名に対応する削除フラグなどをONする。ルーム削除部4053は、通信デバイス409を介して、判断結果を第1の携帯電話100Aに送信する。
(第1の携帯電話100Aの機能)
次に、第1の携帯電話100Aが有する機能について説明する。第1の通信部101-1は、第1の携帯電話100Aのデータ通信デバイス101あるいは音声通話デバイス102によって実現される。第1のメモリ103-1は、第1の携帯電話100Aのメモリ103によって実現される。第1の入力部110-1は、第1の携帯電話100Aのタッチパネル104やボタン110によって実現される。第1の生成部1061-1および第1の通信制御部1062-1は、第1の携帯電話100AのCPU106がメモリ103に記憶されるプログラムを実行して図6に示される各ハードウェアを制御することによって実現される。
第1のメモリ103-1は、第1の携帯電話100Aを特定するための第1の識別情報(電話番号やメールアドレスやIPアドレスなど)と第2の携帯電話100Bを特定するための第2の識別情報(電話番号やメールアドレスやIPアドレスなど)とを格納する。より詳細には、第1のメモリ103-1は、アドレス帳データ103B、自端末データ103C、通信相手のIPアドレスデータ103D、自端末のIPアドレスデータ103Eなどを記憶する。
第1の生成部1061-1は、音声通話中に、第1の入力部110-1を介して、ユーザからP2P通信を開始するための開始命令を受け付ける。より詳細には、ユーザは、音声通話の相手とのP2P通信を開始するための命令を入力する。第1の生成部1061-1は、開始命令に応じて、自身の電話番号と音声通話中の通信相手(第2の携帯電話100B)の電話番号とに基づいて、新たなルーム名を生成する。
第1の通信制御部1062-1は、第1の通信部101-1を介して、マッチングサーバ400に、ルーム名に対応するチャットルームが存在するか否かを問い合わせる。
ルーム名に対応するチャットルームが存在する場合、第1の通信制御部1062-1は、第1の通信部101-1を介してマッチングサーバ400に入室要求を送信する。これによって、第1の通信制御部1062-1は、マッチングサーバ400から相手の通信端末のIPアドレスを取得することができ、第1の通信部101-1を介してP2P通信を行なうことが可能になる。
ルーム名に対応するチャットルームが存在しない場合、第1の通信制御部1062-1は、第1の通信部101-1を用いて、当該ルーム名とともに、新たなチャットルームを生成する生成要求をマッチングサーバ400へ送信する。その後、相手の通信端末がチャットルームに入室すると、第1の通信制御部1062-1は、マッチングサーバ400から相手の通信端末のIPアドレスを取得することができ、第1の通信部101-1を介して相手の通信端末とP2P通信を行なうことが可能になる。
(第2の携帯電話100Bの機能)
次に、第2の携帯電話100Bが有する機能について説明する。第2の通信部101-2は、第2の携帯電話100Bのデータ通信デバイス101あるいは音声通話デバイス102によって実現される。第2のメモリ103-2は、第2の携帯電話100Bのメモリ103によって実現される。第2の入力部110-2は、第2の携帯電話100Bのタッチパネル104やボタン110によって実現される。第2の生成部1061-2および第2の通信制御部1062-2は、第2の携帯電話100BのCPU106がメモリ103に記憶されるプログラムを実行して図5に示される各ハードウェアを制御することによって実現される。
第2のメモリ103-2は、第2の携帯電話100Bを特定するための第2の識別情報(電話番号やメールアドレスやIPアドレスなど)と第1の携帯電話100Aを特定するための第1の識別情報(電話番号やメールアドレスやIPアドレスなど)とを格納する。より詳細には、第2のメモリ103-2は、アドレス帳データ103B、自端末データ103C、通信相手のIPアドレスデータ103D、自端末のIPアドレスデータ103Eなどを記憶する。
第2の生成部1061-2は、音声通話中に、第2の入力部110-2を介して、ユーザからP2P通信を開始するための開始命令を受け付ける。より詳細には、ユーザは、音声通話の相手とのP2P通信を開始するための命令を入力する。第2の生成部1061-2は、開始命令に応じて、自身の電話番号と音声通話中の通信相手(第1の携帯電話100A)の電話番号とに基づいて、新たなルーム名を生成する。
第2の通信制御部1062-2は、第2の通信部101-2を介して、マッチングサーバ400に、ルーム名に対応するチャットルームが存在するか否かを問い合わせる。
ルーム名に対応するチャットルームが存在する場合、第2の通信制御部1062-2は、第2の通信部101-2を介してマッチングサーバ400に入室要求を送信する。これによって、第2の通信制御部1062-2は、マッチングサーバ400から相手の通信端末のIPアドレスを取得することができ、第2の通信部101-2を介してP2P通信を行なうことが可能になる。
ルーム名に対応するチャットルームが存在しない場合、第2の通信制御部1062-2は、第2の通信部101-2を用いて、当該ルーム名とともに、新たなチャットルームを生成する生成要求をマッチングサーバ400へ送信する。その後、相手の通信端末がチャットルームに入室すると、第2の通信制御部1062-2は、マッチングサーバ400から相手の通信端末のIPアドレスを取得することができ、第2の通信部101-2を介して相手の通信端末とP2P通信を行なうことが可能になる。
(ルーム名の生成)
ここで、第1の生成部1061-1、第2の生成部1061-2によるルーム名の生成方法について説明する。
たとえば、第1の生成部1061-1は、第1の携帯電話100Aの第1の電話番号と、第2の携帯電話100Bの第2の電話番号とを単純に並べたルーム名を生成する。電話番号は、各端末に固有のデータであるため、第1の電話番号と第2の電話番号とを並べたルーム名は、各グループに固有のデータであって、他のグループのルーム名と重複することがない。ルームの存在の有無を確認する際には(図2におけるステップS022)、電話番号の前後を入れ替えたルーム名に関しても、ルームの存在の有無を確認することが好ましい。
あるいは、第1の生成部1061-1は、第1の携帯電話100Aの電話番号に対応する他の識別情報(メールアドレスやニックネームなど)と、第2の携帯電話100Bの他の識別情報とを、アルファベット順に並べたルーム名を生成してもよい。
また、第1の生成部1061-1は、ハッシュ関数などを用いて第1の電話番号と第2の電話番号とを暗号化した上で、それらを並べてルーム名を生成してもよい。本実施の形態に係るネットワークシステム1においては、元のデータを復元する必要がないため、暗号化の方法は、元のデータがより復元し難いことが好ましい。たとえば、不可逆な関数を用いて、電話番号を暗号化することが好ましい。
本実施の形態に係るネットワークシステム1においては、第2の生成部1061-2が、第1の生成部1061-1と同様の方法でルーム名を生成する。このため、招待される第2の携帯電話100Bが自身でルーム名を生成することができる。すなわち、P2P通信を開始する前に、第1の携帯電話100Aのユーザがルーム名を第2の携帯電話100Bのユーザに通知する必要がなくなる。
より詳細には、第1の携帯電話100Aおよび第2の携帯電話100Bのユーザは、P2P通信相手を選択するための命令を入力する必要がない。また、ユーザは、ルーム名を考えたり、ルーム名を入力したりする必要もない。すなわち、第1の携帯電話100Aと第2の携帯電話100BのユーザがP2P通信を開始するまでに行なう手間が大幅に削減される。
このように、本実施の形態に係るネットワークシステム1においては、各通信端末にて他のチャットルームのルーム名と重複しないルーム名を生成するため、各通信端末のユーザが他のチャットルームのルーム名と重複しないルーム名を考える必要がない。また、本実施の形態に係るネットワークシステム1は、チャットルームのルーム名をユーザが入力する手間も省くことができる。
<携帯電話100における通信処理>
次に、本実施の形態に係る携帯電話100における通信処理について説明する。図12は、本実施の形態に係る携帯電話100における通信処理の処理手順を示すフローチャートである。
図12を参照して、まず、CPU106は、ディスプレイ107に待ち受け画面を表示させる(ステップS102)。CPU106は、アドレス帳ボタン110D(あるいはタッチパネル104上に表示されるアドレス帳のためのソフトウェアボタン)が操作されたか否かを判断する(ステップS104)。アドレス帳ボタン110Dが操作された場合(ステップS104にてYESである場合)、CPU106は、発呼処理(ステップS200)を実行する。なお、発呼処理(ステップS200)については後述する。
アドレス帳ボタン110Dが操作されない場合(ステップS104にてNOである場合)、CPU106は、電話の呼び出し(着呼)があるか否かを判断する(ステップS106)。電話の呼び出しがあった場合(ステップS106にてYESである場合)、CPU106は、着呼処理(ステップS500)を実行する。着呼処理(ステップS500)については後述する。電話の呼び出しがない場合(ステップS106にてNOである場合)、CPU106はステップS104からの処理を繰り返す。
<携帯電話100における発呼処理>
次に、本実施の形態に係る携帯電話100における発呼処理について説明する。図13は、本実施の形態に係る携帯電話100における発呼処理の処理手順を示すフローチャートである。
図13を参照して、CPU106は、アドレス帳ボタン110Dが操作された場合(ステップS104にてYESである場合)、アドレス帳データ103Bに基づいて、ディスプレイ107にアドレス帳を一覧表示させる(ステップS202)。ユーザは、ボタン110を押下することによって(あるいはタッチパネル104上に表示される相手端末のレコードの1つにタッチすることによって)、TEL通話における相手の通信端末を選択する(ステップS204)。すなわち、CPU106は、ボタン110あるいはタッチパネル104を介して通信端末の選択命令を受け付ける。
CPU106は、相手の通信端末が選択された状態において、TELボタン110A(あるいはタッチパネル104上に表示される音声通話を開始するためのソフトウェアボタン)が操作されたか否かを判断する(ステップS206)。TELボタン110Aが操作された場合(ステップS206にてYESである場合)、CPU106は、TEL発呼処理(ステップS300)を実行する。なお、TEL発呼処理(300)については後述する。
TELボタン110Aが操作されない場合(ステップS206にてNOである場合)、CPU106は、終了ボタン110E(あるいはタッチパネル104上に表示される音声通話を中止するためのソフトウェアボタン)が操作されたか否かを判断する(ステップS208)。終了ボタン110Eが操作された場合(ステップS208にてYESである場合)、CPU106は、発呼処理を終了して、ステップS102からの処理を繰り返す。終了ボタンが操作されない場合(ステップS208にてNOである場合)、CPU106は、ステップS206からの処理を繰り返す。
<携帯電話100におけるTEL発呼処理>
次に、本実施の形態に係る携帯電話100におけるTEL発呼処理について説明する。図14は、本実施の形態に係る携帯電話100におけるTEL発呼処理の処理手順を示すフローチャートである。
図14を参照して、CPU106は、TELボタン110Aが操作された場合(ステップS206にてYESである場合)、音声通話デバイス102を用いて、選択された通信端末の電話番号(メモリ103のSELに格納されているメモリNoに対応する電話番号)に発呼する(ステップS302)。すなわち、CPU106は、データ通信デバイス101あるいは音声通話デバイス102を介して、アドレス帳から選択された相手通信端末に電話をかける。
CPU106は、TELボタン110A(あるいはタッチパネル104上に表示される音声通話を終了するためのソフトウェアボタン)が操作されたか否かを判断する(ステップS304)。TELボタンが操作をされた場合(ステップS304にてYESである場合)、CPU106は、TELの発呼を中断したうえで(ステップS306)、ステップS102からの処理を繰り返す。
TELボタンが操作をされない場合(ステップS304にてNOである場合)、CPU106は、相手通信端末の応答を待ち受ける(ステップS308)。相手通信端末の応答が無い場合(ステップS308にてNOである場合)、CPU106は、ステップS304からの処理を繰り返す。
相手通信端末の応答が有った場合(ステップS308にてYESである場合)、CPU106は、通話制御を行なう(ステップS310)。これ以降、ステップS316まで、図4(a)に示すように、CPU106は、タッチパネル104に、手描きチャット通信(本実施の形態においては、P2P通信である。)を開始するための命令を受け付けるための手描きボタン104Aを表示させる。あるいは、CPU106は、いずれかのハードウェアボタン110を手描きボタン104Aとして利用する。
本実施の形態においては、図4(a)に示すように、CPU106は、通話制御中に、タッチパネル104に、通話制御を終了するためのTEL終了ボタン104Bも表示させる。
CPU106は、手描きボタン104Aが押下されると(ステップS312においてYESである場合)、P2P開始処理(ステップS400)を実行する。なお、P2P開始処理(S400)については後述する。
CPU106は、手描きボタン104Aが押下されない場合(ステップS312においてNOである場合)、タッチパネル104上のTEL終了ボタン104Bが押下されたか否か、あるいは、外部からTEL終了信号を受信したか否かを判断する(ステップS314)。
CPU106は、TEL終了ボタン104Bが押下されない場合、かつ、TEL終了信号を受信しない場合(ステップS314においてNOである場合)、ステップS310からの処理を繰り返す。
CPU106は、TEL終了ボタン104Bが押下された場合、あるいは、TEL終了信号を受信した場合(ステップS314においてYESである場合)、TEL通話を切断する(ステップS316)。CPU106は、ステップS102からの処理を繰り返す。
<携帯電話100におけるP2P通信処理>
次に、本実施の形態に係る携帯電話100におけるP2P通信処理について説明する。図15は、本実施の形態に係る携帯電話100におけるP2P通信処理の処理手順を示すフローチャートである。
図15を参照して、P2Pボタン110Cが操作された場合(ステップS312においてYESである場合、あるいはステップS520においてYESである場合)、CPU106は、スピーカ109からの音声出力を増大させて、マイク108の感度を増大させる(ステップS402)。すなわち、CPU106は、通信端末を「ハンズフリーモード」あるいは「スピーカフォンモード」に移行させる。
CPU106は、所定のルールに基づいて、相手の通信端末の電話番号(RCVTELNOの値)と自端末の電話番号(MyAdr.TELNoの値)とからチャットルーム名を生成する(ステップS404)。たとえば、CPU106は、RMNMにHASH関数の戻り値、HASH(RCVTELNO,MyAdr.TELNo)を代入する。
CPU106は、データ通信デバイス101を介して、インターネット500に接続する(ステップS406)。このとき、携帯電話100には、IPアドレスが割り当てられる。
CPU106は、データ通信デバイス101を介して、マッチングサーバ400に、RMNMに格納されているチャットルーム名を有するチャットルームが存在するか否かを問い合わせる(ステップS408)。
未だ、マッチングサーバ400に、RMNMに格納されているチャットルーム名を有するチャットルームが存在しない場合(ステップS408にてNOである場合)、CPU106は、データ通信デバイス101を介して、マッチングサーバ400にRMNMのチャットルーム名を有するチャットルームを生成するための生成要求を送信する(ステップS410)。
CPU106は、ボタン110を介して、ユーザによってP2Pボタンが操作されたか否かを判断する(ステップS412)。すなわち、CPU106は、ユーザからP2P通信を中断するための命令を受け付けたか否かを判断する。ユーザによってP2Pボタンが操作された場合(ステップS412にてYESである場合)、CPU106は、データ通信デバイス101を介して、マッチングサーバ400にRMNMのチャットルーム名を有するチャットルームを削除するための削除要求を送信して(ステップS414)、ステップS102からの処理を繰り返す。
ユーザによってP2Pボタンが操作されない場合(ステップS412にてNOである場合)、CPU106は、生成したチャットルームに相手通信端末が入室したか否かを判断する(ステップS416)。CPU106は、生成したチャットルームに相手通信端末が入室しない場合(ステップS416にてNOである場合)、CPU106は、ステップS412からの処理を繰り返す。
生成したチャットルームに相手通信端末が入室した場合(ステップS416にてYESである場合)、CPU106は、受信した相手通信端末のIPアドレスをHIS_IPADRに記憶する(ステップS418)。CPU106は、データ通信デバイス101を介してマッチングサーバ400にRMNMのチャットルーム名を有するチャットルームを削除するための削除要求を送信し(ステップS420)、図4(d)に示すように、P2Pデータ通信の制御を開始する(ステップS422)。
一方、既に、マッチングサーバ400に、RMNMに格納されているチャットルーム名を有するチャットルームが存在する場合(ステップS408にてYESである場合)、CPU106は、データ通信デバイス101を介してマッチングサーバ400のチャットルームへ入室する(ステップS432)。すなわち、CPU106は、データ通信デバイス101を介してマッチングサーバ400に入室要求を送信する。
CPU106は、データ通信デバイス101を介して、マッチングサーバ400からP2P通信のための相手のIPアドレスを取得する(ステップS434)。CPU106は、相手のIPアドレスをHIS_IPADRに記憶して、図4(d)に示すように、P2P通信の制御を開始する(ステップS422)。
CPU106は、ボタン110あるいはチャット終了ボタン104Cを介して、ユーザによってP2P終了ボタン104C(図4を参照。)が操作されたか否か、あるいはP2P通信における相手通信端末から通信終了通知を受信したか否かを判断する(ステップS424)。すなわち、CPU106はユーザからP2P通信を中断するための命令を受け付けたか否かを判断する。P2Pボタンが操作されない場合(ステップS424にてNOである場合)、CPU106はステップS422からの処理を繰り返す。
P2Pボタンが操作された場合(ステップS424にてYESである場合)、CPU106はインターネット500への接続を切断する(ステップS426)。CPU106は、「ハンズフリーモード」あるいは「スピーカフォンモード」を解除する(ステップS428)。CPU106は、ステップS310からの処理を繰り返す。
<携帯電話100における着呼処理>
次に、本実施の形態に係る携帯電話100における着呼処理について説明する。図16は、本実施の形態に係る携帯電話100における着呼処理の処理手順を示すフローチャートである。
図16を参照して、電話の呼び出しがあった場合(ステップS106にてYESである場合)、CPU106は、発信者の電話番号が通知されているか否かを判断する(ステップS502)。発信者の電話番号が通知されていない場合(ステップS502にてNOである場合)、CPU106は、ステップS506からの処理を実行する。
一方、発信者の電話番号が通知されている場合(ステップS502にてYESである場合)、CPU106は発信者の電話番号をRCVTELNOに記憶する(ステップS504)。CPU106は、第1の通知部111を稼動する、すなわち、スピーカ109などを介して着信音を出力したり、あるいは、バイブレーション機能により携帯電話100を振動させたりする(ステップS506)。CPU106は、第2の通知部112を稼動する、すなわち、TEL用LED112Aを点滅させる(ステップS508)。
CPU106は、着呼が終了したか否かを判断する(ステップS510)。CPU106は、着呼が終了した場合(ステップS510にてYESである場合)、第1の通知部111を停止する、すなわち、スピーカ109などを介する着信音の出力を停止したり、あるいは、バイブレーション機能による携帯電話100の振動を停止させたりする(ステップS512)。CPU106は、第2の通知部112を稼動して、すなわち、TEL用LED112Aを点灯させて(ステップS514)、メモリ103に通信相手端末の発信者番号や着信時間を着信履歴として登録し、ステップS102からの処理を繰り返す。
CPU106は、着呼が終了しなかった場合(ステップS510にてNOである場合)、TELボタン110Aが操作されたか否かを判断する(ステップS516)。CPU106は、TELボタン110Aが操作されなかった場合(ステップS516にてNOである場合)、ステップS510からの処理を繰り返す。
CPU106は、TELボタン110Aが操作された場合(ステップS516にてYESである場合)、通話制御を行なう(ステップS518)。これ以降、ステップS522まで、図4(a)に示すように、CPU106は、タッチパネル104に、手描きチャット通信(本実施の形態においては、P2P通信である。)を開始するための命令を受け付けるための手描きボタン104Aを表示させる。あるいは、CPU106は、いずれかのハードウェアボタン110を手描きボタン104Aとして使用する。
本実施の形態においては、図4(a)に示すように、CPU106は、通話制御中に、タッチパネル104に、通話制御を終了するためのTEL終了ボタン104Bも表示させる。
CPU106は、手描きボタン104Aが押下されると(ステップS520においてYESである場合)、前述したP2P開始処理(ステップS400)を実行する。
CPU106は、手描きボタン104Aが押下されない場合(ステップS520においてNOである場合)、タッチパネル104上のTEL終了ボタン104Bが押下されたか否か、あるいは、外部からTEL終了信号を受信したか否かを判断する(ステップS522)。
CPU106は、TEL終了ボタン104Bが押下されない場合、かつ、TEL終了信号を受信しない場合(ステップS522においてNOである場合)、ステップS518からの処理を繰り返す。
CPU106は、TEL終了ボタン104Bが押下された場合、あるいは、TEL終了信号を受信した場合(ステップS522においてYESである場合)、TEL通話を切断する(ステップS524)。CPU106は、ステップS102からの処理を繰り返す。
<マッチングサーバ400における応答処理>
次に、本実施の形態に係るマッチングサーバ400における応答処理について説明する。図17は、本実施の形態に係るマッチングサーバ400における応答処理の処理手順を示すフローチャートである。
図17を参照して、マッチングサーバ400のCPU405は、通信デバイス409を介して、第1の携帯電話100Aからメッセージを待ち受ける(ステップS902)。CPU405は、第1の携帯電話100Aからメッセージを受け付けると(ステップS902にてYESである場合)、メッセージがチャットルームを生成するための生成要求であるか否かを判断する(ステップS904)。
メッセージがチャットルームを生成するための生成要求である場合(ステップS904にてYESである場合)、CPU406は生成要求に含まれるルーム名がルーム管理テーブル406Aに存在するか否かを判断する(ステップS906)。ルーム名がルーム管理テーブル406Aに存在する場合(ステップS906にてYESである場合)、CPU406はルームの生成に失敗した旨を通知して(ステップS932)、ステップS902からの処理を繰り返す。
ルーム名がルーム管理テーブル406Aに存在しない場合(ステップS906にてNOである場合)、CPU406はルーム名のルームを生成する(ステップS908)。すなわち、CPU406は、ルーム管理テーブル406Aにルーム名と生成要求に含まれる呼び出し側のIPアドレスとを対応付けて記憶する。CPU406は、呼び出し側のIPアドレスにルームの生成が成功した旨を通知して(ステップS910)、ステップS902からの処理を繰り返す。
メッセージがチャットルームを生成するための生成要求でない場合(ステップS904にてNOである場合)、CPU406はメッセージがルーム名を検索するための検索要求であるか否かを判断する(ステップS912)。
メッセージがチャットルームを検索するための検索要求である場合(ステップS912にてYESである場合)、検索要求に含まれるルーム名がルーム管理テーブル406Aに存在するか否かを判断する(ステップS914)。ルーム名がルーム管理テーブル406Aに存在する場合(ステップS914にてYESである場合)、CPU406は要求元のIPアドレスにルームが見つかった旨を通知して(ステップS910)、ステップS902からの処理を繰り返す。
ルーム名がルーム管理テーブル406Aに存在しない場合(ステップS914にてNOである場合)、CPU406は要求元のIPアドレスにルーム名が見つからない旨を通知して(ステップS932)、ステップS902からの処理を繰り返す。
メッセージがチャットルームを検索するための検索要求でない場合(ステップS912にてNOである場合)、CPU406はメッセージがチャットルームを削除するための削除要求であるか否かを判断する(ステップS916)。
メッセージがチャットルームを削除するための削除要求である場合(ステップS916にてYESである場合)、CPU406は、要求元のIPアドレスが削除要求に含まれるルーム名に対応付けられてルーム管理テーブル406Aに格納されているか否かを判断する(ステップS918)。すなわち、CPU406は、要求元の通信端末が、チャットルームに既に入室している通信端末であるか否かを判断する。
要求元のIPアドレスが削除要求に含まれるルーム名に対応付けられてルーム管理テーブル406Aに格納されている場合(ステップS918にてYESである場合)、CPU406はルーム名のチャットルームを削除する(ステップS920)。CPU406は、要求元のIPアドレスにチャットルームの削除が成功した旨を通知して(ステップS910)、ステップS902からの処理を繰り返す。
要求元のIPアドレスが削除要求に含まれるルーム名に対応付けられてルーム管理テーブル406Aに格納されていない場合(ステップS918にてNOである場合)、CPU406は要求元のIPアドレスにチャットルームの削除が失敗した旨を通知して(ステップS932)、ステップS902からの処理を繰り返す。
メッセージがチャットルームを削除するための削除要求でない場合(ステップS916にてNOである場合)、CPU406はメッセージがチャットルームに入室するための入室要求であるか否かを判断する(ステップS922)。
メッセージがチャットルームに入室するための入室要求である場合(ステップS922にてYESである場合)、CPU406は、入室要求に含まれるルーム名がルーム管理テーブル406Aに格納されているか否かを判断する(ステップS924)。入室要求に含まれるルーム名がルーム管理テーブル406Aに格納されている場合(ステップS924にてYESである場合)、CPU406はルーム名に対応付けて要求元のIPアドレスをルーム管理テーブル406Aに登録する(ステップS926)。
CPU406は、通信デバイス409を介して、ルーム名に対応付けられてルーム管理テーブル406Aに既に登録されているIPアドレスに、要求元のIPアドレスを送信する(ステップS928)。CPU406は、通信デバイス409を介して、要求元のIPアドレスに、ルーム名に対応付けられてルーム管理テーブル406Aに既に登録されているIPアドレスを送信する(ステップS930)。そして、CPU406は、ステップS902からの処理を繰り返す。
一方、メッセージがチャットルームに入室するための入室要求でない場合(ステップS922にてNOである場合)、および入室要求に含まれるルーム名がルーム管理テーブル406Aに格納されていない場合(ステップS924にてNOである場合)、CPU406は要求元のIPアドレスにエラーメッセージを送信して(ステップS932)、ステップS902からの処理を繰り返す。
<本実施の形態に係るネットワークシステム1のその他の適用例>
本発明は、システム或いは装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。そして、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の効果を享受することが可能となる。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ、不揮発性のメモリカード(ICメモリカード)、ROM(マスクROM、フラッシュEEPROMなど)などを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。