(57)【特許請求の範囲】
【請求項１】
第１のコンピュータと第２のコンピュータとの間の会話を実現する会話管理システムにおいて、
前記第１のコンピュータ、又は前記第２のコンピュータ、又は該第１のコンピュータ及び該第２のコンピュータに接続する第３のコンピュータは、前記第１のコンピュータで動作するアプリから会話の開始要求を受けると、該会話に係る通信プロセスと通信資源の生成を前記第１のコンピュータで動作する第１の管理サブプロセス及び前記第２のコンピュータで動作する第２の管理サブプロセスに指示する処理を、前記会話を管理する管理メインプロセス上で実行し、
前記第１のコンピュータは、第１の通信プロセスを生成し、前記会話のための通信資源を生成する処理を、前記第１の管理サブプロセス上で実行し、
前記第２のコンピュータは、第２の通信プロセスを生成し、前記通信資源を生成する処理を、前記第２の管理サブプロセス上で実行し、
前記第１のコンピュータは、前記第１のコンピュータ及び前記第２のコンピュータからアクセスできる記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第２の通信プロセスへ送信する処理を、前記第１の通信プロセス上で実行し、
前記第２のコンピュータは、前記記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第１の通信プロセスから受信する処理を、前記第２の通信プロセス上で実行する
ことを特徴とする会話管理システム。
【請求項２】
前記記憶部は、前記第１の通信プロセスを識別する第１の識別子、前記第２の通信プロセスを識別する第２の識別子、前記第１の通信プロセスが前記通信資源を識別する第３の識別子及び前記第２の通信プロセスが前記通信資源を識別する第４の識別子を、会話を識別する会話識別子に対応付けて会話毎に記憶し、
前記第１のコンピュータは、生成した前記第１の通信プロセスの識別子及び生成した前記通信資源の識別子を前記記憶部に前記第１の識別子及び前記第３の識別子として格納する処理を、前記第１の管理サブプロセス上で実行し、
前記第２のコンピュータは、生成した前記第２の通信プロセスの識別子及び生成した前記通信資源の識別子を前記記憶部に前記第２の識別子及び前記第４の識別子として格納する処理を、前記第２の管理サブプロセス上で実行する、
ことを特徴とする請求項１に記載の会話管理システム。
【請求項３】
前記第１のコンピュータ、又は前記第２のコンピュータ、又は前記第３のコンピュータは、前記第１のコンピュータで動作するアプリから会話の終了通知を受けると、前記第１の通信プロセス及び前記通信資源の削除を前記第１の管理サブプロセスに指示し、前記第２の通信プロセス及び前記通信資源の削除を前記第２の管理サブプロセスに指示する処理を前記管理メインプロセス上で実行し、
前記第１のコンピュータは、前記第１の通信プロセスを削除して前記第１の識別子をクリアし、前記通信資源を削除して前記第３の識別子をクリアする処理を前記第１の管理サブプロセス上で実行し、
前記第２のコンピュータは、前記第２の通信プロセスを削除して前記第２の識別子をクリアし、前記通信資源を削除して前記第４の識別子をクリアする処理を前記第２の管理サブプロセス上で実行する
ことを特徴とする請求項２に記載の会話管理システム。
【請求項４】
第１のコンピュータと第２のコンピュータとの間の会話を実現する会話管理システムの会話管理方法において、
前記第１のコンピュータ、又は前記第２のコンピュータ、又は該第１のコンピュータ及び該第２のコンピュータに接続する第３のコンピュータが、
前記第１のコンピュータで動作するアプリから会話の開始要求を受けると、該会話に係る通信プロセスと通信資源の生成を前記第１のコンピュータで動作する第１の管理サブプロセス及び前記第２のコンピュータで動作する第２の管理サブプロセスに指示する処理を前記会話を管理する管理メインプロセス上で実行し、
前記第１のコンピュータが、第１の通信プロセスを生成し、前記会話のための通信資源を生成する処理を前記第１の管理サブプロセス上で実行し、
前記第２のコンピュータが、第２の通信プロセスを生成し、前記通信資源を生成する処理を前記第２の管理サブプロセス上で実行し、
前記第１のコンピュータが、前記第１のコンピュータ及び前記第２のコンピュータからアクセスできる記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第２の通信プロセスへ送信する処理を前記第１の通信プロセス上で実行し、
前記第２のコンピュータが、前記記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第１の通信プロセスから受信する処理を前記第２の通信プロセス上で実行する
ことを特徴とする会話管理方法。
【請求項５】
第１のコンピュータと第２のコンピュータとの間の会話を実現する会話管理プログラムにおいて、
前記会話管理プログラムに含まれ、前記会話を管理する管理メインプログラムは、
前記第１のコンピュータで動作するアプリから会話の開始要求を受けると、該会話に係る通信プロセスと通信資源の生成を、前記会話管理プログラムに含まれ、前記第１のコンピュータで動作する第１の管理サブプログラム、及び、前記会話管理プログラムに含まれ、前記第２のコンピュータで動作する第２の管理サブプログラムに指示する処理を前記第１のコンピュータ、又は前記第２のコンピュータ、又は該第１のコンピュータ及び該第２のコンピュータに接続する第３のコンピュータで実行させ、
前記第１の管理サブプログラムは、第１の通信プロセスを生成し、前記会話のための通信資源を生成する処理を前記第１のコンピュータで実行し、
前記第２の管理サブプログラムは、第２の通信プロセスを生成し、前記通信資源を生成する処理を前記第２のコンピュータで実行し、
前記第１の通信プロセスは、前記第１のコンピュータ及び前記第２のコンピュータからアクセスできる記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第２の通信プロセスへ送信する処理を前記第１のコンピュータで実行し、
前記第２の通信プロセスは、前記記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第１の通信プロセスから受信する処理を前記第２のコンピュータで実行する
ことを特徴とする会話管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、会話管理システム、会話管理方法及び会話管理プログラムに関する。
【背景技術】
【０００２】
従来、共有メモリを用いた同期型アプリ間通信では、アプリが会話ＩＤ単位に送信プロセスと受信プロセスを事前に生成し、共有メモリにデータを書き込み後に送信プロセスが受信プロセスにデータの書き込みを通知することによりアプリ間通信が実現されていた。ここで、アプリとはコンピュータで実行されるアプリケーションであり、同期型とは送信側と受信側で同期をとることである。また、会話ＩＤとは、会話を識別する識別子である。
【０００３】
図１６は、共有メモリを用いた同期型アプリ間通信を説明するための図である。図１６に示すように、共有メモリ２を用いたアプリ間通信を行う場合、まず、データを送信する送信アプリが送信プロセス８を生成し、データを受信する受信アプリが受信プロセス９を生成する（１）。図１６では、アプリＡ及びアプリＢがデータを送信するアプリであり、アプリＣ及びアプリＤがデータを受信するアプリである。
【０００４】
アプリＡはシステムＡで実行され、アプリＢはシステムＢで実行され、アプリＣ及びアプリＤはシステムＣで実行される。ここで、システムＡ、システムＢ及びシステムＣは、ＣＰＵ（Central  Processing  Unit）及びメモリを有するコンピュータシステムである。図１６では、会話ＩＤ＃１及び会話ＩＤ＃２それぞれに対して送信プロセス８と受信プロセス９が生成される。
【０００５】
そして、受信プロセス９は、会話データの通知をタイムリーに受けるために、ＷＡＩＴにより事象待ちを行う（２）。図１６では、アプリＣ及びアプリＤの受信プロセス９がＷＡＩＴにより事象待ちを行う。そして、送信プロセス８は、共有メモリ２に会話データ２ｄを書き込んだ（ＷＲＩＴＥ）後、受信プロセス９にＰＯＳＴにより会話データ２ｄの送信を通知する（３）。図１６では、アプリＡ及びアプリＢの送信プロセス８がそれぞれ共有メモリ２に会話データ２ｄを書き込んだ後アプリＣ及びアプリＤの受信プロセス９にＰＯＳＴにより会話データ２ｄの送信を通知する。
【０００６】
そして、送信プロセス８のＰＯＳＴによりＷＡＩＴ解除された受信プロセス９は、共有メモリ２より会話データ２ｄを読み込む（ＲＥＡＤ）（４）。図１６では、アプリＣ及びアプリＤの受信プロセス９が、それぞれＷＡＩＴを解除され会話データ２ｄを共有メモリ２から読み込む。
【０００７】
なお、送信側プロセスの転送手段がデータを共有メモリ上の受け渡し手段に渡し、転送通知手段が送信キューに転送通知をキューインし、受信側プロセスの転送通知受理手段にキューインしたことを通知することでプロセス間通信を実現する技術がある。
【０００８】
また、ＣＰＵ間通信において、通信用メモリに空き領域がなく、受信側ＣＰＵの状態がデータ読み出し処理の実行状態でない場合、送信側ＣＰＵがデータ読み出し処理の実行を開始させるための要求を受信側ＣＰＵに送信することで、遅延時間を短縮する技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−２４９４５号公報
【特許文献２】特開２０１２−３６７３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、図１６に示した従来技術には、通信多重度の数だけ受信プロセスを事前に生成する必要があり、通信多重度が変化する場合には、常に最大個数の受信プロセスが生成されるため、システム資源が有効に活用されないという問題がある。
【００１１】
本発明は、１つの側面では、通信多重度に応じた受信プロセスを生成することでシステム資源を有効活用することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する会話管理システムは、１つの態様において、第１のコンピュータと第２のコンピュータとの間の会話を実現する。前記第１のコンピュータ、前記第２のコンピュータ又は第３のコンピュータは該第１のコンピュータで動作するアプリから会話の開始要求を受けると該会話に係る通信プロセスと通信資源の生成を該第１のコンピュータで動作する第１の管理サブプロセスに指示する。前記第３のコンピュータは、前記第１のコンピュータ及び前記第２のコンピュータに接続する。また、前記第１のコンピュータ、又は前記第２のコンピュータ、又は前記第３のコンピュータは、前記第２のコンピュータで動作する第２の管理サブプロセスに同様の指示を行う。前記第１のコンピュータ、又は前記第２のコンピュータ、又は前記第３のコンピュータは、処理を前記会話を管理する管理メインプロセス上で実行する。前記第１のコンピュータは、第１の通信プロセスを生成し、前記会話のための通信資源を生成する処理を前記第１の管理サブプロセス上で実行する。前記第２のコンピュータは、第２の通信プロセスを生成し、前記通信資源を生成する処理を前記第２の管理サブプロセス上で実行する。前記第１のコンピュータは、前記第１のコンピュータ及び前記第２のコンピュータからアクセスできる記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第２の通信プロセスへ送信する処理を前記第１の通信プロセス上で実行する。前記第２のコンピュータは、前記記憶部へのデータの書き込みの通知を前記通信資源を用いて前記第１の通信プロセスから受信する処理を前記第２の通信プロセス上で実行する。
【発明の効果】
【００１３】
１実施態様によれば、システム資源を有効活用することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係る会話管理システムを説明するための図である。
【図２】図２は、実施例に係る会話管理システムの構成を示す図である。
【図３】図３は、アプリ管理テーブルの一例を示す図である。
【図４】図４は、第１ＩＤ管理テーブルの一例を示す図である。
【図５】図５は、第２ＩＤ管理テーブルの一例を示す図である。
【図６】図６は、会話管理システムの処理のフローを示す図である。
【図７】図７は、管理用メインプロセスによる登録処理のフローを示すフローチャートである。
【図８】図８は、管理用メインプロセスによる抹消処理のフローを示すフローチャートである。
【図９】図９は、管理用メインプロセスによる会話開始処理のフローを示すフローチャートである。
【図１０】図１０は、管理用メインプロセスによる会話終了処理のフローを示すフローチャートである。
【図１１】図１１は、管理用サブプロセスによる生成処理のフローを示すフローチャートである。
【図１２】図１２は、管理用サブプロセスによる削除処理のフローを示すフローチャートである。
【図１３】図１３は、送信アプリによる送信処理のフローを示すフローチャートである。
【図１４】図１４は、受信アプリによる受信処理のフローを示すフローチャートである。
【図１５】図１５は、システムのハードウェア構成例を示す図である。
【図１６】図１６は、共有メモリを用いた同期型アプリ間通信を説明するための図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する会話管理システム、会話管理方法及び会話管理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１６】
まず、実施例に係る会話管理システムについて説明する。図１は、実施例に係る会話管理システムを説明するための図である。図１に示すように、実施例に係る会話管理システムでは、共有メモリ２を用いて通信を行う各アプリ３０がシステム１間でユニークにアプリを識別するアプリＩＤを登録するように管理用メインプロセス１０に依頼する（１）。
【００１７】
管理用メインプロセス１０は、会話を管理するプロセスであり、会話毎に会話ＩＤを管理する。図１では、会話データ２ｄを送信するアプリＡ及びアプリＢと、会話データ２ｄを受信するアプリＣがアプリＩＤの登録を管理用メインプロセス１０に依頼する。なお、アプリＡはシステムＡで実行され、アプリＢはシステムＢで実行され、アプリＣ及びアプリＤはシステムＣで実行される。システムＡ、システムＢ及びシステムＣで表されるシステム１は、ＣＰＵ及びメモリを有するコンピュータシステムである。
【００１８】
そして、会話データ２ｄを送信するアプリ３０が会話開始を管理用メインプロセス１０に要求する。図１では、アプリＡ及びアプリＢがアプリＣに対する会話開始を管理メインプロセス１０に要求する（２）。そして、管理用メインプロセス１０が会話ＩＤを採番して、会話ＩＤが採番された送信アプリ３０及び受信アプリ３０に対する通信プロセス３１を動的に生成し、同時に通信資源を開設する（３）。ここで、通信資源は、具体的にはソケットである。
【００１９】
図１では、アプリＡとアプリＣの会話について会話ＩＤ＃１が採番され、アプリＢとアプリＣの会話について会話ＩＤ＃２が採番される。また、アプリＡに送信用の通信プロセスＡが生成され、アプリＢに送信用の通信プロセスＢが生成され、アプリＣに受信用の通信プロセスＣ及び通信プロセスＤが生成される。
【００２０】
そして、送信側の通信プロセス３１が、共有メモリ２上に会話データ２ｄを書き込んだ後、通信資源を利用して受信側の通信プロセス３１に会話データ２ｄの書き込みを通知する（４）。図１では、送信側の通信プロセスＡ及び通信プロセスＢがそれぞれ共有メモリ２上に会話データ２ｄを書き込んだ後、通信資源を利用して受信側の通信プロセスＣ及び通信プロセスＤに通知する。
【００２１】
そして、受信側の通信プロセス３１が、通信資源により送信側の通信プロセス３１からの通知を受けて共有メモリ２から会話データ２ｄを読み込む（５）。図１では、通信プロセスＣ及び通信プロセスＤがそれぞれ通信プロセスＡ及び通信プロセスＢから通知を受けて共有メモリ２から会話データ２ｄを読み込む。
【００２２】
そして、送信側の通信プロセス３１から会話終了通知により会話ＩＤが返却されると、管理用メインプロセス１０は、該当の通信プロセス３１を削除して通信資源を閉塞する（６）。図１では、通信プロセスＡ、通信プロセスＢ、通信プロセスＣ及び通信プロセスＤが削除され、会話ＩＤ＃１用の通信資源及び会話ＩＤ＃２用の通信資源が閉塞される。
【００２３】
このように、管理用メインプロセス１０は、通信開始時に送信側アプリ３０及び受信側アプリ３０に通信プロセス３１を生成し、通信終了時に通信プロセス３１を削除する。また、管理用メインプロセス１０は、会話毎に通信開始時に通信資源を開設し、通信終了時に通信資源を閉塞する。
【００２４】
したがって、実施例に係る会話管理システムは、予め固定数の受信プロセスを生成する必要がなく、システム資源を有効に利用することができる。また、アプリ３０は、通信プロセス３１の生成及び削除、通信資源の開設及び閉塞を行う必要がなく、簡単に共有メモリ２を用いたプロセス間通信を実行することができる。
【００２５】
次に、実施例に係る会話管理システムの構成について説明する。図２は、実施例に係る会話管理システムの構成を示す図である。図２に示すように、会話管理システムは、共有メモリ２と、２つのアプリ３０と、管理用メインプロセス１０と、２つの管理用サブプロセス２０とを有する。
【００２６】
共有メモリ２は、異なるＣＰＵで動作するアプリ３０間で送受信される会話データ２ｄを記憶する記憶装置である。２つのアプリ３０は、共有メモリ２を用いて通信を行う送信側と受信側のアプリケーションである。図１では、２つのアプリ３０は、送信側がアプリａで表され、受信側がアプリｂで表される。アプリａはシステムａで実行され、アプリｂはシステムｂで実行される。システムａ及びシステムｂは、ＣＰＵ及びメモリを有するコンピュータシステムである。
【００２７】
管理用メインプロセス１０は、共有メモリ２を用いたアプリ３０間の会話を管理するプロセスである。管理用メインプロセス１０は、システムａで動作してもよく、システムｂで動作してもよい。あるいは、管理用メインプロセス１０は、システムａ及びシステムｂを含む情報処理システムの他のシステム１で動作してもよい。
【００２８】
管理用メインプロセス１０は、登録処理１１、会話開始処理１２、会話終了処理１３及び抹消処理１４を行う。また、共有メモリ２は、アプリ管理テーブル２ａ、第１ＩＤ管理テーブル２ｂ及び第２ＩＤ管理テーブル２ｃを記憶する。
【００２９】
登録処理１１は、アプリ３０からの依頼によりアプリ３０をアプリ管理テーブル２ａに登録する。アプリ管理テーブル２ａは、アプリ３０が登録されるテーブルである。図３は、アプリ管理テーブル２ａの一例を示す図である。図３に示すように、アプリ管理テーブル２ａには、アプリ名と所在システム名がアプリ毎に登録される。アプリ名は、アプリ３０を識別する名前である。所在システム名は、アプリ３０が実行されるシステム１を識別する名前である。例えば、アプリａは、システムａで実行される。
【００３０】
会話開始処理１２は、送信アプリ３０から会話開始依頼を受けると、第１ＩＤ管理テーブル２ｂを用いて会話ＩＤを貸し出すと同時に、通信プロセス３１の生成及びソケット４０の開設を送信側及び受信側の管理用サブプロセス２０に指示する。第１ＩＤ管理テーブル２ｂは、会話ＩＤの管理に用いられるテーブルである。
【００３１】
図４は、第１ＩＤ管理テーブル２ｂの一例を示す図である。図４に示すように、第１ＩＤ管理テーブル２ｂには、会話ＩＤと、送信アプリ名と、受信アプリ名とが会話毎に登録される。会話ＩＤは、会話を識別する識別子である。送信アプリ名は、送信アプリ３０を識別する名前である。受信アプリ名は、受信アプリ３０を識別する名前である。例えば、会話ＩＤ＃１で識別される会話は、アプリａからアプリｂへ会話データ２ｄが送られる。
【００３２】
会話終了処理１３は、送信アプリ３０から会話終了依頼を受けると、第１ＩＤ管理テーブル２ｂから該当するエントリを削除すると同時に、通信プロセス３１の削除及びソケット４０の閉塞を送信側及び受信側の管理用サブプロセス２０に指示する。
【００３３】
抹消処理１４は、アプリ３０からの依頼によりアプリ３０をアプリ管理テーブル２ａから抹消する。
【００３４】
２つの管理用サブプロセス２０は、管理用メインプロセス１０の指示に基づいてそれぞれ送信側及び受信側で会話に必要な処理を行うプロセスである。管理用サブプロセス２０は、会話を行う２つのアプリ３０と同じシステム１で動作する。図２では、システムａで送信側の管理用サブプロセス２０が動作し、システムｂで受信側の管理用サブプロセス２０が動作する。
【００３５】
管理用サブプロセス２０は、生成処理２１及び削除処理２２を行う。生成処理２１は、管理用メインプロセス１０の指示に基づいて、アプリ３０内に通信プロセス３１を生成し、アプリ３０が使用するソケット４０を開設する。また、登録処理２１は、生成した通信プロセス３１及び開設したソケット４０に関する情報を第２ＩＤ管理テーブル２ｃに登録する。
【００３６】
第２ＩＤ管理テーブル２ｃは、管理用サブプロセス２０が会話の管理に用いるテーブルである。図５は、第２ＩＤ管理テーブル２ｃの一例を示す図である。図５に示すように、第２ＩＤ管理テーブル２ｃには、会話ＩＤと、送信側のプロセスＩＤと、受信側のプロセスＩＤと、送信側のソケットＩＤと、受信側のソケットＩＤとが登録される。
【００３７】
会話ＩＤは、会話を識別する識別子である。送信側のプロセスＩＤは、送信アプリ３０内に生成された通信プロセス３１を識別する識別子である。受信側のプロセスＩＤは、受信アプリ３０内に生成された通信プロセス３１を識別する識別子である。送信側のソケットＩＤは、送信側に開設されたソケット４０を識別する識別子である。受信側のソケットＩＤは、受信側に開設されたソケット４０を識別する識別子である。
【００３８】
削除処理２２は、管理用メインプロセス１０の指示に基づいて、第２ＩＤ管理テーブル２ｃから該当するエントリを削除すると同時に、通信プロセス３１の削除及びソケット４０の閉塞を行う。
【００３９】
次に、会話管理システムの処理のフローについて説明する。図６は、会話管理システムの処理のフローを示す図である。図６に示すように、送信側のアプリａ及び受信側のアプリｂは、アプリ名とシステム名を指定して登録依頼を管理用メインプロセス１０に行う（ステップＳ１）。すると、管理用メインプロセス１０は、アプリ名とシステム名をアプリ管理テーブル２ａに登録する（ステップＳ２）。
【００４０】
その後、送信側のアプリａが送信アプリ名と受信アプリ名とを指定して会話開始依頼を管理用メインプロセス１０に行う（ステップＳ３）。すると、管理用メインプロセス１０は、第１ＩＤ管理テーブル２ｂを用いて会話ＩＤを貸し出すと同時に、通信プロセス３１の生成及びソケット４０の開設を送信側及び受信側の管理用サブプロセス２０に指示する（ステップＳ４）。
【００４１】
すると、送信側及び受信側の管理用サブプロセス２０は、それぞれ通信プロセス３１を生成し、ソケット４０を開設する（ステップＳ５）。そして、送信側の通信プロセス３１が、会話データ２ｄを共有メモリ２に書き込み、ソケット４０を利用して会話データ２ｄの送信を受信側の通信プロセス３１に通知する（ステップＳ６）。
【００４２】
すると、受信側の通信プロセス３１が、ソケット４０を利用して通知を受信し、会話データ２ｄを共有メモリ２から読み込む（ステップＳ７）。そして、送信側の通信プロセス３１が会話終了依頼を管理用メインプロセス１０に行う（ステップＳ８）。
【００４３】
すると、管理用メインプロセス１０は、終了する会話に対応するエントリを第１ＩＤ管理テーブル２ｂから削除し、通信プロセス３１の削除とソケット４０の閉塞を送信側と受信側の管理用サブプロセス２０に指示する（ステップＳ９）。すると、送信側と受信側の管理用サブプロセス２０が通信プロセス３１の削除とソケット４０の閉塞を行う（ステップＳ１０）。
【００４４】
このように、管理用メインプロセス１０が通信プロセス３１の生成及び削除とソケット４０の開設及び閉塞を行うことによって、会話管理システムは、システム１の資源を有効に利用することができる。
【００４５】
次に、管理用メインプロセス１０による処理のフローを図７〜図１０を用いて説明する。まず、管理用メインプロセス１０による登録処理１１のフローについて説明する。図７は、管理用メインプロセス１０による登録処理１１のフローを示すフローチャートである。なお、登録処理１１では、管理用メインプロセス１０は、アプリ名と所在システム名を受け取って処理を行う。
【００４６】
図７に示すように、管理用メインプロセス１０は、アプリ名と所在システム名からアプリ管理テーブル２ａを検索する（ステップＳ１１）。そして、管理用メインプロセス１０は、アプリ管理テーブル２ａにアプリ名と所在システム名の登録があるか否かを判定し（ステップＳ１２）、登録がある場合には、処理を終了する。一方、登録がない場合には、管理用メインプロセス１０は、アプリ管理テーブル２ａにアプリ名と所在システム名を登録する（ステップＳ１３）。
【００４７】
このように、管理用メインプロセス１０は、アプリ名と所在システム名をアプリ管理テーブル２ａに登録することによって、会話を行うアプリ３０を管理することができる。
【００４８】
次に、管理用メインプロセス１０による抹消処理１４のフローについて説明する。図８は、管理用メインプロセス１０による抹消処理１４のフローを示すフローチャートである。なお、抹消処理１４では、管理用メインプロセス１０は、アプリ名と所在システム名を受け取って処理を行う。
【００４９】
図８に示すように、管理用メインプロセス１０は、アプリ名と所在システム名からアプリ管理テーブル２ａを検索する（ステップＳ２１）。そして、管理用メインプロセス１０は、アプリ管理テーブル２ａにアプリ名と所在システム名の登録があるか否かを判定し（ステップＳ２２）、登録がない場合には、処理を終了する。一方、登録がある場合には、管理用メインプロセス１０は、アプリ管理テーブル２ａからアプリ名と所在システム名を抹消する（ステップＳ２３）。
【００５０】
このように、管理用メインプロセス１０は、アプリ名と所在システム名をアプリ管理テーブル２ａから抹消することによって、管理が不要になったアプリ３０に関する情報をアプリ管理テーブル２ａから削除することができる。
【００５１】
次に、管理用メインプロセス１０による会話開始処理１２のフローについて説明する。図９は、管理用メインプロセス１０による会話開始処理１２のフローを示すフローチャートである。なお、会話開始処理１２では、管理用メインプロセス１０は、送信アプリ名及び受信アプリ名を受け取って処理を行う。
【００５２】
図９に示すように、管理用メインプロセス１０は、送信アプリ３０及び受信アプリ３０はアプリ管理テーブル２ａに登録済かをチェックする（ステップＳ３１）。そして、管理用メインプロセス１０は、登録済か否かを判定し（ステップＳ３２）、登録済でない場合には、管理用メインプロセス１０は、処理を終了する。
【００５３】
一方、登録済の場合には、管理用メインプロセス１０は、第１ＩＤ管理テーブル２ｂから空き会話ＩＤを取得し（ステップＳ３３）、取得した会話ＩＤに対応付けて第１ＩＤ管理テーブル２ｂに送信アプリ名及び受信アプリ名を設定する（ステップＳ３４）。
【００５４】
そして、管理用メインプロセス１０は、送信側及び受信側の管理用サブプロセス２０に会話ＩＤを通知した上で、通信プロセス３１の生成及びソケット４０の開設を要求する（ステップＳ３５）。
【００５５】
このように、管理用メインプロセス１０は、会話開始時に管理用サブプロセス２０に通信プロセス３１の生成及びソケット４０の開設を要求することで、会話で必要になった時にシステム資源を確保することができる。
【００５６】
次に、管理用メインプロセス１０による会話終了処理１３のフローについて説明する。図１０は、管理用メインプロセス１０による会話終了処理１３のフローを示すフローチャートである。なお、会話終了処理１３では、管理用メインプロセス１０は、会話ＩＤを受け取って処理を行う。
【００５７】
図１０に示すように、管理用メインプロセス１０は、第１ＩＤ管理テーブル２ｂを参照して会話中の会話ＩＤかをチェックする（ステップＳ４１）。そして、管理用メインプロセス１０は、会話中か否かを判定し（ステップＳ４２）、会話中でない場合には、処理を終了する。
【００５８】
一方、会話中である場合には、管理用メインプロセス１０は、第１ＩＤ管理テーブル２ｂの該当会話ＩＤを空き状態に設定する（ステップＳ４３）。すなわち、管理用メインプロセス１０は、第１ＩＤ管理テーブル２ｂで該当会話ＩＤに対応付けられた送信アプリ名及び受信アプリ名を「空き」に設定する。
【００５９】
そして、管理用メインプロセス１０は、送信アプリ３０及び受信アプリ３０内の通信プロセス３１の削除及びソケット４０の閉塞を送信側及び受信側の管理用サブプロセス２０に要求する（ステップＳ４４）。
【００６０】
このように、会話が終了すると、管理用メインプロセス１０は、管理用サブプロセス２０に通信プロセス３１の削除及びソケット４０の閉塞を要求することで、不必要になったシステム資源を解放することができる。
【００６１】
次に、管理用サブプロセス２０による処理のフローを図１１及び図１２を用いて説明する。まず、管理用サブプロセス２０による生成処理２１のフローについて説明する。図１１は、管理用サブプロセス２０による生成処理２１のフローを示すフローチャートである。なお、生成処理２１では、管理用サブプロセス２０は、自アプリ名、相手アプリ名及び会話ＩＤを受け取って処理を行う。
【００６２】
図１１に示すように、管理用サブプロセス２０は、自アプリ３０内に通信プロセス３１を生成する（ステップＳ５１）。そして、管理用サブプロセス２０は、通信プロセス３１の生成はＯＫか否かを判定し（ステップＳ５２）、ＯＫでない場合には、処理を終了し、通信プロセス３１の生成の失敗を管理用メインプロセス１０に通知する。
【００６３】
一方、通信プロセス３１の生成がＯＫである場合には、管理用サブプロセス２０は、通信プロセス３１の生成で取得したプロセスＩＤを第２ＩＤ管理テーブル２ｃに格納する（ステップＳ５３）。そして、管理用サブプロセス２０は、相手アプリ３０に対するソケット４０の開設を通信プロセス３１に指示する（ステップＳ５４）。
【００６４】
そして、管理用サブプロセス２０は、ソケットＩＤを第２ＩＤ管理テーブル２ｃに設定する（ステップＳ５５）。ここで、ソケットＩＤは、通信プロセス３１からの復帰値である。
【００６５】
このように、管理用サブプロセス２０が、管理用メインプロセス１０の指示に基づいて通信プロセス３１の生成とソケット４０の開設を行うことで、会話管理システムは、システム資源を必要なときにだけ取得することができる。
【００６６】
次に、管理用サブプロセス２０による削除処理２２のフローについて説明する。図１２は、管理用サブプロセス２０による削除処理２２のフローを示すフローチャートである。なお、削除処理２２では、管理用サブプロセス２０は、自アプリ名及び会話ＩＤを受け取って処理を行う。
【００６７】
図１２に示すように、管理用サブプロセス２０は、会話ＩＤから特定した通信プロセス３１に対してソケット４０の閉塞を指示する（ステップＳ６１）。そして、管理用サブプロセス２０は、第２ＩＤ管理テーブル２ｃ内のソケットＩＤをクリアする（ステップＳ６２）。
【００６８】
そして、管理用サブプロセス２０は、通信プロセス３１を削除し（ステップＳ６３）、第２ＩＤ管理テーブル２ｃ内のプロセスＩＤをクリアする（ステップＳ６４）。
【００６９】
このように、管理用サブプロセス２０が、管理用メインプロセス１０の指示に基づいて通信プロセス３１の削除とソケット４０の閉塞を行うことで、会話管理システムは、不要になったシステム資源を解放することができる。
【００７０】
次に、アプリ３０による処理のフローを図１３及び図１４を用いて説明する。まず、送信アプリ３０による送信処理のフローについて説明する。図１３は、送信アプリ３０による送信処理のフローを示すフローチャートである。なお、送信処理では、送信アプリ３０は、管理用サブプロセス２０から会話ＩＤ及びソケットＩＤを受け取って処理を行う。
【００７１】
図１３に示すように、送信アプリ３０は、共有メモリ２上の領域を獲得する（ステップＳ７１）。このとき、送信アプリ３０は、獲得した領域を識別するセグメントＩＤを取得する。そして、送信アプリ３０は、共有メモリ２上に獲得した領域に会話データ２ｄを格納する（ステップＳ７２）。
【００７２】
そして、送信アプリ３０は、管理用サブプロセス２０からＩＤを通知されたソケット４０を利用して受信アプリ３０に共有メモリ２上のセグメントＩＤと会話データ２ｄのサイズを通知する（ステップＳ７３）。
【００７３】
このように、送信アプリ３０がソケット４０を利用して受信アプリ３０に共有メモリ２上のセグメントＩＤと会話データ２ｄのサイズを通知することで、受信アプリ３０は共有メモリ２から会話データ２ｄを読み出すことができる。
【００７４】
次に、受信アプリ３０による受信処理のフローについて説明する。図１４は、受信アプリ３０による受信処理のフローを示すフローチャートである。なお、受信処理では、受信アプリ３０は、管理用サブプロセス２０から会話ＩＤ及びソケットＩＤを受け取り、送信アプリ３０からセグメントＩＤ及び会話データ２ｄのサイズを受け取って処理を行う。
【００７５】
図１４に示すように、受信アプリ３０は、共有メモリ２上の領域を、通知されたセグメントＩＤによりアタッチする（ステップＳ８１）。そして、受信アプリ３０は、共有メモリ２上の領域から、通知されたデータサイズ分のデータを取り出す（ステップＳ８２）。
【００７６】
このように、受信アプリ３０は、セグメントＩＤ及び会話データ２ｄのサイズを送信アプリ３０から受け取ることで、共有メモリ２から会話データ２ｄを読み出すことができる。
【００７７】
次に、システム１のハードウェア構成について説明する。図１５は、システム１のハードウェア構成例を示す図である。図１５に示すように、システム１は、ＲＡＭ５１と、ＣＰＵ５２と、ＨＤＤ５３と、ＬＡＮインタフェース５４と、入出力インタフェース５５と、ＤＶＤドライブ５６とを有する。
【００７８】
ＲＡＭ５１は、プログラムやプログラムの実行途中結果などを記憶するメモリであり、ＣＰＵ５２は、ＲＡＭ５１からプログラムを読み出して実行する中央処理装置である。ＨＤＤ５３は、プログラムやデータを格納するディスク装置であり、ＬＡＮインタフェース５４は、システム１をＬＡＮ経由で他のシステム１に接続するためのインタフェースである。入出力インタフェース５５は、マウスやキーボードなどの入力装置及び表示装置を接続するためのインタフェースであり、ＤＶＤドライブ５６は、ＤＶＤの読み書きを行う装置である。
【００７９】
そして、システム１において実行される会話管理プログラムは、ＤＶＤに記憶され、ＤＶＤドライブ５６によってＤＶＤから読み出されてシステム１にインストールされる。ここで、会話管理プログラムとは、図２に示した管理用メインプロセス１０及び管理用サブプロセス２０として実行されるプログラムである。
【００８０】
あるいは、会話管理プログラムは、ＬＡＮインタフェース５４を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてシステム１にインストールされる。そして、インストールされた会話管理プログラムは、ＨＤＤ５３に記憶され、ＲＡＭ５１に読み出されてＣＰＵ５２によって実行される。
【００８１】
上述してきたように、実施例では、管理用メインプロセス１０が送信側及び受信側の管理用サブプロセス２０に対して通信プロセス３１の生成及びソケット４０の開設を指示し、管理用サブプロセス２０が通信プロセス３１の生成及びソケット４０の開設を行う。そして、送信側の通信プロセス３１がソケット４０を用いて共有メモリ２への会話データ２ｄの書き込みを通知し、受信側の通信プロセス３１がソケット４０を用いて通知を受信する。したがって、会話管理システムは、システム資源を必要なときに獲得するので、システム資源を有効に活用することができる。
【００８２】
また、実施例では、送信側及び受信側の管理用サブプロセス２０は、生成した通信プロセス３１のＩＤ及び開設されたソケット４０のＩＤを会話ＩＤに対応付けて共有メモリ２に書き込む。したがって、送信側及び受信側のプロセスは、通信プロセス３１のＩＤ及びソケット４０のＩＤを共有することができる。
【００８３】
また、実施例では、会話が終了すると、管理用メインプロセス１０が送信側及び受信側の管理用サブプロセス２０に対して通信プロセス３１の削除及びソケット４０の閉塞を指示し、管理用サブプロセス２０が通信プロセス３１の削除及びソケット４０の閉塞を行う。したがって、会話管理システムは、不要になったシステム資源を解放するので、システム資源を有効に活用することができる。
【００８４】
また、実施例では、アプリ３０は、通信プロセス３１の生成及び削除、ソケットの開設及び閉塞を行う必要がなく、簡単に共有メモリ２を用いたプロセス間通信を実行することができる。
【００８５】
なお、実施例では、管理用サブプロセス２０が通信プロセス３１を生成する場合について説明したが、本発明はこれに限定されるものではなく、通信プロセス３１の代わりに例えば通信スレッドを生成する場合にも同様に適用することができる。
【符号の説明】
【００８６】
１    システム
２    共有メモリ
２ａ    アプリ管理テーブル
２ｂ    第１ＩＤ管理テーブル
２ｃ    第２ＩＤ管理テーブル
２ｄ    会話データ
８    送信プロセス
９    受信プロセス
１０    管理用メインプロセス
１１    登録処理
１２    会話開始処理
１３    会話終了処理
１４    抹消処理
２０    管理用サブプロセス
２１    生成処理
２２    削除処理
３０    アプリ
３１    通信プロセス
４０    ソケット
５１    ＲＡＭ
５２    ＣＰＵ
５３    ＨＤＤ
５４    ＬＡＮインタフェース
５５    入出力インタフェース
５６    ＤＶＤドライブ
【図１】
0006413817.tif 000002
【図２】
0006413817.tif 000003
【図３】
0006413817.tif 000004
【図４】
0006413817.tif 000005
【図５】
0006413817.tif 000006
【図６】
0006413817.tif 000007
【図７】
0006413817.tif 000008
【図８】
0006413817.tif 000009
【図９】
0006413817.tif 000010
【図１０】
0006413817.tif 000011
【図１１】
0006413817.tif 000012
【図１２】
0006413817.tif 000013
【図１３】
0006413817.tif 000014
【図１４】
0006413817.tif 000015
【図１５】
0006413817.tif 000016
【図１６】
0006413817.tif 000017