(57)【要約】【課題】サーバからクライアントに既に送ったコマンドを後から取り消す機能を簡単に実現する。【解決手段】サーバは、コマンドを取り消すための反コマンドを生成して実行キューに挿入し、クライアントは、実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に蓄積されたときには当該コマンドおよび当該反コマンドの双方を廃棄する。あるいは、サーバは、コマンドを取り消すための反コマンドを生成してあらかじめ実行キューに挿入しておいてもよい。【選択図】  図４
2004341921.tif 000002
【特許請求の範囲】
【請求項１】
クライアント側から送出されたイベントを受け取ったサーバは当該イベントに対応するコマンドを生成し、このコマンドはクライアントの実行キューに挿入され、このクライアントは、当該コマンドに基づき処理の制御を行う情報処理方法において、
前記サーバは、コマンドを取り消すための反コマンドを生成して前記実行キューに挿入し、
前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する
ことを特徴とする情報処理方法。
【請求項２】
前記実行キューの先頭のコマンドから順番に処理が実行され、
クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、
このコマンド列の末尾には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定したメッセージの表示処理を制御するコマンドが配置され、
前記サーバからの初期的反応の次段階に相当するコマンド列の先頭には前記メッセージの表示処理を制御するコマンドに対応する反コマンドが配置された
請求項１記載の情報処理方法。
【請求項３】
前記実行キューの先頭のコマンドから順番に処理が実行され、
クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、
このコマンド列の末尾から先頭方向には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定した複数のメッセージの表示処理を制御するコマンドが配置され、
この複数のコマンドは、末尾に近いコマンドほど遅延の程度が順次大きい場合を想定したメッセージの表示処理を行うように設定され、
前記サーバからの初期的反応の次段階に相当するコマンド列の先頭から末尾方向には前記メッセージの表示処理を制御する複数のコマンドに対応する複数の反コマンドが前記実行キューの末尾の前記メッセージの表示処理を制御するコマンドから順次先頭方向の前記メッセージの表示処理を制御するコマンドを取り消すように配置された
請求項１記載の情報処理方法。
【請求項４】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムにおいて、
前記サーバは、コマンドを取り消すための反コマンドを生成して前記実行キューに挿入する手段を備え、
前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する手段を備えた
ことを特徴とする情報処理システム。
【請求項５】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムに適用される前記サーバにおいて、
コマンドを取り消すための反コマンドを生成して前記実行キューに挿入する手段を備えた
ことを特徴とするサーバ。
【請求項６】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムに適用される前記クライアントにおいて、
前記実行キューにコマンドと前記サーバにより生成された当該コマンドを取り消すための反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する手段を備えた
ことを特徴とするクライアント。
【請求項７】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムに適用されるプログラムにおいて、
情報処理装置にインストールすることにより、その情報処理装置に、コマンドを取り消すための反コマンドを生成して前記実行キューに挿入する前記サーバとしての機能を実現させる
ことを特徴とするプログラム。
【請求項８】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムに適用されるプログラムにおいて、
情報処理装置にインストールすることにより、その情報処理装置に、前記実行キューにコマンドと前記サーバにより生成された当該コマンドを取り消すための反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する前記クライアントとしての機能を実現させる
ことを特徴とするプログラム。
【請求項９】
クライアント側から送出されたイベントを受け取ったサーバは当該イベントに対応するコマンドを生成し、このコマンドはクライアントの実行キューに挿入され、このクライアントは、当該コマンドに基づき処理の制御を行う情報処理方法において、
前記サーバは、コマンドを取り消すための反コマンドを生成して前記実行キューにあらかじめ挿入しておき、
前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する
ことを特徴とする情報処理方法。
【請求項１０】
前記実行キューの先頭のコマンドから順番に処理が実行され、
クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、
このコマンド列の末尾には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定したメッセージの表示処理を制御するコマンドに対応する反コマンドが配置され、
前記サーバからの初期的反応の次段階に相当するコマンド列の先頭には前記メッセージの表示処理を制御するコマンドが配置された
請求項９記載の情報処理方法。
【請求項１１】
前記実行キューの先頭のコマンドから順番に処理が実行され、
クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、
このコマンド列の末尾から先頭方向には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定した複数のメッセージの表示処理を制御するコマンドに対応する複数の反コマンドが配置され、
この複数の反コマンドは、末尾に近い反コマンドほど遅延の程度が順次大きい場合を想定したメッセージの表示処理を行うコマンドに対応するように配置され、
前記サーバからの初期的反応の次段階に相当するコマンド列の先頭から末尾方向には前記メッセージの表示処理を制御する複数のコマンドが先頭に近いコマンドほど遅延の程度が順次大きい場合を想定したメッセージの表示処理を行うコマンドであるように配置された
請求項９記載の情報処理方法。
【請求項１２】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムにおいて、
前記サーバは、コマンドを取り消すための反コマンドを生成してあらかじめ前記実行キューに挿入しておく手段を備え、
前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する手段を備えた
ことを特徴とする情報処理システム。
【請求項１３】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムに適用される前記サーバにおいて、
コマンドを取り消すための反コマンドを生成してあらかじめ前記実行キューに挿入しておく手段を備えた
ことを特徴とするサーバ。
【請求項１４】
処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、
クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバと
を備えた情報処理システムに適用されるプログラムにおいて、
情報処理装置にインストールすることにより、その情報処理装置に、コマンドを取り消すための反コマンドを生成してあらかじめ前記実行キューに挿入しておく前記サーバとしての機能を実現させる
ことを特徴とするプログラム。
【請求項１５】
請求項７、８、１４のいずれかに記載のプログラムが記録された前記情報処理装置読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、非同期通信によるサーバクライアント型ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）システムに利用するに適する。本発明は、当該システムにおいて処理結果の待ち合わせを少なくする技術に関する。
【０００２】
【従来の技術】
従来のサーバクライアント型ＧＵＩシステムの一例が、例えば、特許文献１に記載されている。このシステムではサーバクライアント間の同期的な通信を行って、クライアント側のＧＵＩでユーザ入力を受け取り、それを元にサーバ側の処理により次のＧＵＩを組み立てる作業を行っている。ＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）を初めとして同様に同期的な通信による方法は広く用いられている。
【０００３】
しかしながら、同期的に通信を行う方法ではネットワークやサーバ処理などの遅延の影響を直に受けるため、ＧＵＩなどのようにレスポンス時間をある程度短くする必要のあるシステムにおいては、サーバ側で時間のかかる処理を行うことができない問題点があった。
【０００４】
同期通信による動作の延長であるような動作をするミドルウェア、ライブラリ類を利用して非同期通信によるシステムを実現し、同期通信によるサーバレスポンスの待ち合わせ時間をなくす手法が、例えば、特許文献２に記載されているように知られている。また、非特許文献１のように、そのような機能を独自に持つシステムも存在する。
【０００５】
このような非同期通信によるシステムでは、クライアントはサーバに対する処理要求を出した後、処理結果を待ち合わせせずに別の処理を開始する。この方法ではサーバとクライアントにおける処理の並列度は上がるものの、処理結果待ちの間にクライアント側で時間がかかる処理が行われる場合には、むしろサーバから処理結果が反映されるまで時間を要する結果になることがある。また、処理の内容によっては、サーバから処理結果が返されたときにクライアント側ではその結果が既に不要となっていたり、逆にサーバからの結果によっては既に始めているクライアント側の処理を取りやめて元に戻す必要が生じることもある。これらの状況に対処するにはプリエンプティブなコマンドにするなど、複雑なシステム設計を行う必要性があった。
【０００６】
なお、本発明実施形態中で用いられるイベントフックという用語は、Ｊａｖａデバッガインタフェース（Ｊａｖａは登録商標）で採用されているようにサーバへのイベント送信やイベントハンドラの起動など本来のイベント処理の直前に割り込む臨時の処理を意味している。しかし、昨今は非特許文献２中に示されているように単純なイベントハンドラの処理も含めてイベントフックと呼ぶことがあり、本発明実施形態の記述においても両方の意味を念頭においた用法とする。
【０００７】
【特許文献１】
特開２００２−０４９４８４号公報
【特許文献２】
特開２０００−０５６９９７号公報
【非特許文献１】
「光時代のネット空間クルージング技術  ＩｎｆｏＬｅａｄ」、川村  亨  他３名著、ＮＴＴ  Ｒ＆Ｄ  Ｖｏｌ．４９  Ｎｏ．１０，２０００．
【非特許文献２】
Ｍｉｃｒｏｓｏｆｔ（Ｒ）ＶｉｓｕａｌＣ＋＋（Ｒ）．ＮＥＴ  Ｌａｎｇｕａｇｅ  Ｒｅｆｅｒｅｎｃｅ，Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ，ＩＳＢＮ０−７３５６−１５５３−５，Ｍｉｃｒｏｓｏｆｔ  Ｐｒｅｓｓ．，２００２．
【０００８】
【発明が解決しようとする課題】
問題点はサーバクライアントシステムの従来技術におけるサーバ処理結果のレスポンス時間を短くするシステムを実現すると設計が複雑になるということである。その理由は従来技術の項で述べたように、実行中のコマンドに途中で割り込んだり、取り消したりする仕組みの実現に複雑な設計が必要であったためである。
【０００９】
本発明は、このような背景に行われたものであって、サーバからクライアントに既に送ったコマンドを後から取り消す機能を簡単に実現することができる情報処理システムおよび情報処理方法およびプログラムおよび記録媒体を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明の第一の観点は、クライアント側から送出されたイベントを受け取ったサーバは当該イベントに対応するコマンドを生成し、このコマンドはクライアントの実行キューに挿入され、このクライアントは、当該コマンドに基づき処理の制御を行う情報処理方法である。
【００１１】
ここで、本発明の特徴とするところは、前記サーバは、コマンドを取り消すための反コマンドを生成して前記実行キューに挿入し、前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄するところにある（請求項１）。
【００１２】
本発明の情報処理方法では、例えば、前記実行キューの先頭のコマンドから順番に処理が実行されるとして、クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、このコマンド列の末尾には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定したメッセージの表示処理を制御するコマンドが配置され、前記サーバからの初期的反応の次段階に相当するコマンド列の先頭には前記メッセージの表示処理を制御するコマンドに対応する反コマンドが配置される（請求項２）。
【００１３】
これにより、例えば、初期的反応に相当するコマンドは、イベントフックから実行キューに挿入され、さらに、サーバからの初期的反応の次段階に相当するコマンドが許容される遅延時間内で実行キューに到着した場合には、前記メッセージの表示処理を制御するコマンドがサーバから到着した反コマンドによって取り消されるので、ユーザの端末にはコマンドの到着が遅延する場合を想定したメッセージが表示されることなく、処理を進行させることができる。このように、簡単な処理によって、そのときの状況に合わせて柔軟にコマンドを有効にしたり無効にしたりすることができる。
【００１４】
あるいは、前記実行キューの先頭のコマンドから順番に処理が実行され、クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、このコマンド列の末尾から先頭方向には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定した複数のメッセージの表示処理を制御するコマンドが配置され、この複数のコマンドは、末尾に近いコマンドほど遅延の程度が順次大きい場合を想定したメッセージの表示処理を行うように設定され、前記サーバからの初期的反応の次段階に相当するコマンド列の先頭から末尾方向には前記メッセージの表示処理を制御する複数のコマンドに対応する複数の反コマンドが前記実行キューの末尾の前記メッセージの表示処理を制御するコマンドから順次先頭方向の前記メッセージの表示処理を制御するコマンドを取り消すように配置されることもできる。これによれば、複数のコマンドを複数の反コマンドによって順次取り消すことができる（請求項３）。
【００１５】
本発明の第二の観点は、処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバとを備えた情報処理システムである。
【００１６】
ここで、本発明の特徴とするところは、前記サーバは、コマンドを取り消すための反コマンドを生成して前記実行キューに挿入する手段を備え、前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する手段を備えたところにある（請求項４）。
【００１７】
本発明の第三の観点は、処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバとを備えた情報処理システムに適用される前記サーバであって、本発明の特徴とするところは、コマンドを取り消すための反コマンドを生成して前記実行キューに挿入する手段を備えたところにある（請求項５）。
【００１８】
本発明の第四の観点は、処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバとを備えた情報処理システムに適用される前記クライアントであって、本発明の特徴とするところは、前記実行キューにコマンドと前記サーバにより生成された当該コマンドを取り消すための反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する手段を備えたところにある（請求項６）。
【００１９】
本発明の第五の観点は、処理の実行を制御するコマンドが挿入される実行キューを備えたクライアントと、クライアント側から送出されたイベントを受け取り当該イベントに対応するコマンドを前記実行キューに挿入するサーバとを備えた情報処理システムに適用されるプログラムである。
【００２０】
ここで、本発明の特徴とするところは、情報処理装置にインストールすることにより、その情報処理装置に、コマンドを取り消すための反コマンドを生成して前記実行キューに挿入する前記サーバとしての機能を実現させるところにある（請求項７）。あるいは、情報処理装置にインストールすることにより、その情報処理装置に、前記実行キューにコマンドと前記サーバにより生成された当該コマンドを取り消すための反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する前記クライアントとしての機能を実現させるところにある（請求項８）。
【００２１】
あるいは、本発明の第一の観点である情報処理方法において、前記サーバは、コマンドを取り消すための反コマンドを生成して前記実行キューにあらかじめ挿入しておき、前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄することもできる（請求項９）。
【００２２】
すなわち、実行キュー中に反コマンドを待ち伏せさせておき、当該反コマンドに対応するコマンドがその後、サーバから実行キューに転送されてきたときに、これを廃棄することもできる。
【００２３】
この場合には、例えば、前記実行キューの先頭のコマンドから順番に処理が実行され、クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、このコマンド列の末尾には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定したメッセージの表示処理を制御するコマンドに対応する反コマンドが配置され、前記サーバからの初期的反応の次段階に相当するコマンド列の先頭には前記メッセージの表示処理を制御するコマンドが配置される（請求項１０）。あるいは、前記実行キューの先頭のコマンドから順番に処理が実行され、クライアントのイベント送出を契機に、前記サーバの初期的反応に相当するコマンド列が前記実行キューに挿入され、このコマンド列の末尾から先頭方向には、前記サーバからの初期的反応の次段階に相当するコマンドの到着が遅延する場合を想定した複数のメッセージの表示処理を制御するコマンドに対応する複数の反コマンドが配置され、この複数の反コマンドは、末尾に近い反コマンドほど遅延の程度が順次大きい場合を想定したメッセージの表示処理を行うコマンドに対応するように配置され、前記サーバからの初期的反応の次段階に相当するコマンド列の先頭から末尾方向には前記メッセージの表示処理を制御する複数のコマンドが先頭に近いコマンドほど遅延の程度が順次大きい場合を想定したメッセージの表示処理を行うコマンドであるように配置されることができる（請求項１１）。
【００２４】
また、本発明の第二の観点である情報処理システムにおいて、前記サーバは、コマンドを取り消すための反コマンドを生成してあらかじめ前記実行キューに挿入しておく手段を備え、前記クライアントは、前記実行キューにコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する手段を備えることもできる（請求項１２）。
【００２５】
すなわち、本発明の第三の観点であるサーバにおいては、コマンドを取り消すための反コマンドを生成してあらかじめ前記実行キューに挿入しておく手段を備える（請求項１３）。
【００２６】
また、本発明の第五の観点であるプログラムにおいては、情報処理装置にインストールすることにより、その情報処理装置に、コマンドを取り消すための反コマンドを生成してあらかじめ前記実行キューに挿入しておく前記サーバとしての機能を実現させる（請求項１４）。
【００２７】
本発明の第六の観点は、本発明のプログラムが記録された前記情報処理装置読取可能な記録媒体である（請求項１５）。本発明のプログラムは本発明の記録媒体に記録されることにより、前記情報処理装置は、この記録媒体を用いて本発明のプログラムをインストールすることができる。あるいは、本発明のプログラムを保持するサーバからネットワークを介して直接前記情報処理装置に本発明のプログラムをインストールすることもできる。
【００２８】
これにより、コンピュータ装置等の情報処理装置を用いて、サーバからクライアントに既に送ったコマンドを後から取り消す機能を単純に実現することができる情報処理システムおよび情報処理方法を実現することができる。
【００２９】
【発明の実施の形態】
次に、本発明実施形態について図面を参照して詳細に説明する。図１は本実施形態の情報処理システムの構成図である。本実施形態は、図１に示すように、処理の実行を制御するコマンドが挿入される実行キュー２を備えたクライアント１と、クライアント１側から送出されたイベントを受け取り当該イベントに対応するコマンドを実行キュー２に挿入するサーバ３とを備えた情報処理システムである。
【００３０】
ここで、本実施形態の特徴とするところは、サーバ３は、コマンドを取り消すための反コマンドを生成して実行キュー２に挿入する手段を備え、クライアント１は、実行キュー２にコマンドと当該コマンドに対応する反コマンドとが同時に挿入されたときには当該コマンドおよび当該反コマンドの双方を廃棄する手段を備えたところにある（請求項４、５、６）。あるいは、サーバ３は、コマンドを取り消すための反コマンドを生成してあらかじめ実行キュー２に挿入しておく手段を備える（請求項１２、１３）。
【００３１】
本発明は、汎用の情報処理装置にインストールすることにより、上述の情報処理システムとして機能させるプログラムとして実現することができる（請求項７、８、１４）。このプログラムは、記録媒体に記録されて情報処理装置にインストールされ（請求項１５）、あるいは通信回線を介して情報処理装置にインストールされることにより当該情報処理装置をそれぞれクライアント、サーバ３として機能させ、サーバ３からクライアント１に既に送ったコマンドを後から取り消す機能を簡単に実現することができる情報処理システムとして機能させることができる。
【００３２】
以下では、本実施形態をさらに詳細に説明する。クライアント１側ユーザ端末からユーザ入力をサーバ３に送り、それに対してサーバ３からコマンド列を送りクライアント１の遠隔制御を行う図１のようなシステムにおいて、ユーザ入力の送信時間、サーバ３側でのユーザ入力の処理とコマンド列生成時間、コマンド列送信時間により生じるコマンド実行までの遅延を隠蔽する仕組みを提示している。この仕組みによって、自律的に動作するような、複雑な動作のコマンド列を予め送信する方法によらず上記を達成することができる。
【００３３】
クライアント１は通常、ユーザ入力などにより生じたイベントをサーバ３に送信し、サーバ３からの返信を待ち、サーバ３はイベントを受け取って様々な処理を行った後にコマンド列をクライアント１に送り返す。クライアント１は送られたコマンド列を実行キュー２に挿入し、実行キュー２の中のコマンドを順次取り出して実行する。
【００３４】
また、図２はコールバックルーチン４を説明するための図であるが、サーバ３に送信することなく予め登録されたコマンド列で処理可能なイベントについては、各種イベント毎にコールバックルーチン４としてコマンド列を登録することができ、サーバ３にイベントを送信することなくクライアント１側で登録されたコマンド列を実行キュー２に挿入する。
【００３５】
図３はイベントフック５を説明するための図であるが、本方式では、クライアント１に図３のようにイベントフック５と呼ぶ仕組みを設ける。これはクライアント１側のみでイベントを処理する図２のようなシステムでよく用いられているコールバックルーチン４の延長である。クライアント１で生じる各種イベント毎にイベントフック５が存在し、コールバックルーチン４と同様にコマンド列を予め登録することが可能である。本実施形態のシステムにおけるイベントフック５へのコマンド列の登録は、サーバ３がクライアント１へ送信するコマンドにより引数等として渡されるコマンド列を登録するものを前提としている。
【００３６】
なお、本実施形態はサーバ・クライアントシステムまたはＰ２Ｐ型システムのいずれでも実施可能であるが説明の明確化のためユーザ端末側をクライアント１、反対側をサーバ３と称している。
【００３７】
図３の中のクライアント１側イベントフック５では、該当するイベントが生じたときにイベントフック５中に登録されたコマンド列の実行に先立ってサーバ３に当該イベントを送信する。つまり、クライアント１で何らかのイベントが生じると、そのイベントがサーバ３に送信され、続けて当該イベントに対応するイベントフック５中に登録されているコマンド列が実行キュー２に挿入される。
【００３８】
サーバ３側では予めクライアント１のイベントフック５にコマンド列を登録する仕組みと、受信したイベントに対してコマンド列を生成しクライアント１へ送信する仕組みを設けておく。クライアント１で生じたイベントに応じて実行すべき一連のコマンドのうち、最初に実行される部分で固定的な処理（これを初期的反応という）を行う部分を予めイベントフック５に登録しておき、その他の残りの部分はサーバ３にイベントが送信されてきた時点でコマンド列を生成しクライアント１へ送信する。
【００３９】
ユーザ端末側のユーザから見ると、イベントに対する初期的反応がサーバ３からのコマンド列によらずイベントフック５より即時に実行されるため、レスポンスが良く見える。初期的反応以外の部分はサーバ３による高度な処理の結果として生成されるため、ユーザに対する早いレスポンスと高度な処理を両立することができる。しかしながら、初期的反応として固定的なコマンド列しか設定できないため、この手法を適用できる領域は非常に限られていた。
【００４０】
ここで、反コマンドを導入することにより、僅かなコマンド処理上のオーバーヘッドで適用領域を広げることができる。つまり、イベントフック５に登録されたコマンド列の動作を後でサーバ３から到着するコマンド列のタイミングと内容に応じて変容する仕組みを持たせることで、必ずしも固定的でない処理をイベントフック５に登録することが可能となり適用領域を広げることができる。
【００４１】
反コマンドは実行キュー２中で直前に並んでいるコマンドを取り消すコマンドであり、例えば、実行キュー２の最後尾コマンドに対する反コマンドを送ると、最後尾コマンドはキューから取り除かれ、キュー長さはコマンド１つ分短くなる。コマンドとそれに対応する反コマンドが出会って消滅することを以降ではランデブーと呼ぶ。送られた反コマンドと実行キュー最後尾のコマンドが対応しない場合、反コマンドはそのまま捨て去られる（請求項１）。
【００４２】
（第一実施形態）
図４は第一実施形態の実行キューの動作を示すフローチャートである。反コマンドの実現ため、従来は送られて来たコマンドを挿入するだけであった実行キュー２の最後尾に対して、図４のように、実行キュー２への挿入時にコマンド、反コマンド判定を行い消滅させる処理を加える。通常、コマンドのタイプ分けにはビットマスクによる判定を用いるため、コマンドか反コマンドの判定の手間は、実行キュー２への挿入の手間に比してはるかに小さいと考えられる。
【００４３】
すなわち、図４に示すように、実行キュー２にコマンドまたは反コマンドが到着すると、実行キュー２では、到着したコマンドがコマンドか反コマンドかを判定し（ステップ１）、コマンドの場合にはコマンドを実行キュー２に挿入する（ステップ２）。また、反コマンドの場合には、実行キュー２の最後尾のコマンドとマッチするか判定し（ステップ３）、マッチする場合には実行キュー２の最後尾のコマンドを消去し（ステップ４）、その後、反コマンドを捨てる（ステップ５）。また、マッチしない場合には、即座に反コマンドを捨てる（ステップ５）。
【００４４】
図５および図６は第一実施形態における反コマンドの具体的使用例を示す図である。サーバ３からＧＵＩを構成するためのコマンド列を送り遠隔制御でユーザ端末上でＧＵＩを構成した後、ユーザのＧＵＩに対する操作を逐一サーバ３にイベントとして知らせ、その結果をコマンド列としてユーザ端末に返すようなシステムを考える。このようなシステムにおいてＧＵＩ上であるボタンが押されたのを契機に、サーバ３よりＧＵＩの構成を大幅に新しい構成のものに組み直すコマンド列を発行する場合には、そのボタンが押されて以降、旧ＧＵＩのその他のボタンなどを押したことによるイベントをサーバ３で処理して、結果を新しいＧＵＩに対して返すと混乱が生じることがある。
【００４５】
これを防ぐため、当該ボタン押し下げのイベントフックに「ユーザ操作禁止コマンド」を入れる。続けて旧ＧＵＩが一時的に使えないことをユーザに示すため「画面全クリアコマンド」を入れておく。サーバ３側からは図５のように新ＧＵＩ構築のコマンド列の先頭に「反画面全クリアコマンド」を付してコマンド列をユーザ端末に送る。
【００４６】
サーバ３によるコマンド列生成に時間がかかり、ユーザ端末でイベントフック５中のコマンドの実行がすでに終わっている場合には実行キュー２中は空であり、サーバ３からのコマンド列の先頭に付された反コマンド類は単に捨て去られる。
【００４７】
サーバ３によるコマンド生成が短時間で終わり、「画面全クリアコマンド」実行前にコマンド列が返された場合には、実行キュー２中の「画面全クリアコマンド」と「反画面全クリアコマンド」とがマッチするため、消去される。この結果、図６のように「画面全クリアコマンド」が実行キューから除かれる。続けて直ちにＧＵＩ構成の組み直しコマンド類が実行される（請求項１）。
【００４８】
（第二実施形態）
図７および図８は第二実施形態における反コマンドの具体的使用例を示す図である。実行キュー２は第一実施形態と同様のものを用いる。第一実施形態における画面全クリアの代わりに、サーバ３からのコマンド列を待っている間を持たせるアニメーションを表示するコマンドをイベントフック５に登録する。サーバ３からは図７のように「アニメーション表示コマンド」をキャンセルする「反アニメーション表示コマンド」をコマンド列の先頭に付して送る。
【００４９】
サーバ反応にタイムラグがある場合にはアニメーションが実行され、表示されるが、タイムラグが短い場合は実行されていない「アニメーション表示コマンド」が「反アニメーション表示コマンド」により図８のようにキャンセルされて、直ちにサーバ３からのコマンド列が実行される。この結果、サーバ処理までにタイムラグがある場合は、ユーザにはタイムラグの間アニメーションが表示される（請求項２）。
【００５０】
（第三実施形態）
図９および図１０は第三実施形態における反コマンドの具体的使用例を示す図である。複数パターンのアニメーション表示をコマンドの列としてイベントフック５に登録する。クライアント１がイベントを送出したことを契機に、図９に示すように、複数パターンのアニメーション表示のためのコマンドである「アニメーション表示コマンド＃１」および「アニメーション表示コマンド＃２」が実行キュー２に挿入される。
【００５１】
サーバ３からは一連のアニメーション表示をキャンセルする反コマンドの列である「反アニメーション表示コマンド＃２」「反アニメーション表示コマンド＃１」を図１０のようにコマンド列先頭に付して送る。サーバ反応のタイムラグが短い場合には、図１０のように、既に実行された「アニメーション表示コマンド＃１」に続く、実行キュー２中で未だ実行されていないアニメーション表示コマンドである「アニメーション表示コマンド＃２」はキャンセルされ、直ちにサーバ３からのコマンド列実行が始まる。第三実施形態では、待ち時間が伸びるにつれ表示するアニメーションを変えて間を持たせることが可能となる（請求項３）。
【００５２】
（第四実施形態）
図１１は第四実施形態における実行キューの動作を示すフローチャートである。第四実施形態では、反コマンドを実行キュー２中に入れる必要があるため、実行キュー２へのコマンド挿入を図１１のように変更する。最終的に反コマンドがコマンド実行時に実行キュー２先頭に残っていた場合は、実行キュー２先頭から取り除き、無視する。これらの結果、実行キュー２中に反コマンドの列を保持できるようになる。
【００５３】
すなわち、図１１に示すように、実行キュー２にコマンドまたは反コマンドが到着すると、実行キュー２では、到着したコマンドがコマンドか反コマンドかを判定し（ステップ１）、コマンドの場合には、さらに、実行キュー２の最後尾のコマンドはコマンドか反コマンドか判定し（ステップ２）、コマンドの場合には実行キュー２に挿入する（ステップ３）。また、実行キュー２の最後尾のコマンドが反コマンドの場合には、到着したコマンドとマッチするか判定し（ステップ５）、マッチしない場合には、到着したコマンドを実行キュー２に挿入する（ステップ３）。また、マッチした場合には実行キュー２の最後尾反コマンドを消去し（ステップ６）、到着したコマンドを捨てる（ステップ７）。
【００５４】
また、実行キュー２では、到着したコマンドがコマンドか反コマンドかを判定し（ステップ１）、反コマンドの場合には、さらに、実行キュー２の最後尾のコマンドはコマンドか反コマンドか判定し（ステップ４）、反コマンドの場合には実行キューに挿入する（ステップ３）。また、実行キュー２の最後尾がコマンドの場合には（ステップ４）、到着した反コマンドとマッチするか判定し（ステップ５）、マッチしない場合には到着した反コマンドを実行キュー２に挿入し（ステップ３）、マッチする場合には到着した反コマンドによって実行キュー２の最後尾のコマンドを消去し（ステップ６）、到着した反コマンドも捨てる（ステップ７）（請求項９）。
【００５５】
図１２は第四実施形態における反コマンドの具体的使用例を示す図である。サーバ３からのコマンド列先頭に「お待たせしました。まもなく始まります」というような「アニメーション表示コマンド」を付する。イベントフック５の最後尾にはこれらのアニメーション表示をキャンセルする「反アニメーション表示コマンド」を付し、実行キュー２に挿入する。短時間でサーバ反応があった場合には実行キュー２中に「反アニメーション表示コマンド」が残っており、サーバ３から到着した「アニメーション表示コマンド」はキャンセルされるが、サーバ反応に時間がかかった場合は、既に実行キュー２中から「反アニメーション表示コマンド」が捨てられており、サーバ３から到着した「アニメーション表示コマンド」はキャンセルされることなく前記アニメーションが表示される（請求項１０）。
【００５６】
また、図１３および図１４は第四実施形態における反コマンドの具体的使用例の他の例を示す図である。図１３に示すように、複数の反アニメーション表示コマンド＃１および＃２をあらかじめ実行キュー２に挿入しておき、遅延の程度に応じてアニメーションを変更することができる。複数パターンの反アニメーション表示コマンドの列としてイベントフック５に登録する。クライアント１がイベントを送出したことを契機に、図１３に示すように、複数パターンのアニメーション表示のためのコマンドに対応する反コマンドである「反アニメーション表示コマンド＃１」および「反アニメーション表示コマンド＃２」が実行キュー２に挿入される。
【００５７】
サーバ３からは一連のアニメーション表示処理を制御するコマンドの列である「アニメーション表示コマンド＃２」「アニメーション表示コマンド＃１」を図１３のようにコマンド列先頭に付して送る。図１４の例では、サーバ反応のタイムラグが短い場合には実行キュー２中で未だ捨てられていない反アニメーション表示コマンドである「反アニメーション表示＃２」によりサーバ３から実行キュー２に到着した「アニメーション表示コマンド＃２」はキャンセルされ、「アニメーション表示コマンド＃１」だけが有効になり「お待たせしました。間もなく始まります」などのメッセージ表示が実行される。なお、「アニメーション表示コマンド＃２」によるアニメーション表示は「もうしばらくお待ちください」といったように、「アニメーション表示コマンド＃１」によるアニメーション表示内容よりも長い遅延を知らせる内容である。これにより待ち時間が伸びるにつれ表示するアニメーションを変えて間を持たせることが可能となる（請求項１１）。
【００５８】
【発明の効果】
以上説明したように、本発明によれば、サーバからクライアントに既に送ったコマンドを後から取り消す機能を簡単に実現することができる。
【図面の簡単な説明】
【図１】本実施形態の情報処理システムの構成図。
【図２】本実施形態のコールバックルーチンを説明するための図。
【図３】本実施形態のイベントフックを説明するための図。
【図４】第一実施形態の実行キューの動作を示すフローチャート。
【図５】第一実施形態の反コマンドの具体的使用例を示す図。
【図６】第一実施形態の反コマンドの具体的使用例を示す図。
【図７】第二実施形態の反コマンドの具体的使用例を示す図。
【図８】第二実施形態の反コマンドの具体的使用例を示す図。
【図９】第三実施形態の反コマンドの具体的使用例を示す図。
【図１０】第三実施形態の反コマンドの具体的使用例を示す図。
【図１１】第四実施形態の実行キューの動作を示すフローチャート。
【図１２】第四実施形態の反コマンドの具体的使用例を示す図。
【図１３】第四実施形態の反コマンドの具体的使用例の他の例を示す図。
【図１４】第四実施形態の反コマンドの具体的使用例の他の例を示す図。
【符号の説明】
１  クライアント
２  実行キュー
３  サーバ
４  コールバックルーチン
５  イベントフック
【図１】
2004341921.tif 000003
【図２】
2004341921.tif 000004
【図３】
2004341921.tif 000005
【図４】
2004341921.tif 000006
【図５】
2004341921.tif 000007
【図６】
2004341921.tif 000008
【図７】
2004341921.tif 000009
【図８】
2004341921.tif 000010
【図９】
2004341921.tif 000011
【図１０】
2004341921.tif 000012
【図１１】
2004341921.tif 000013
【図１２】
2004341921.tif 000014
【図１３】
2004341921.tif 000015
【図１４】
2004341921.tif 000016