(57)【要約】  【課題】  サーバベースコンピューティング環境において，通信回線の障害発生時に作業ができなくなる。  【解決手段】文字入力作業中に，クライアントのバッファに文字情報を蓄積しておき，突発的な通信の切断時には，蓄積しておいた文字情報を利用して，クライアント単体で文字入力作業を継続し，通信回線の回復時に，入力文字情報をサーバに送信し，サーバ側で作業を継続できるようにする。  【選択図】  図２
2008210071.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置と，サーバ装置とが，ネットワークで接続されるクライアントサーバシステムであって，
前記クライアント装置と，前記サーバ装置とは，互いを接続する通信路を，前記ネットワーク上に確立する手段を備え，
前記クライアント装置は，
利用者の操作を受け付ける入力装置と，
前記入力装置の操作から生成される入力装置操作情報を，前記通信路を介して，前記サーバ装置に送信する手段と，を備え，
前記サーバ装置は，
前記通信路を介して，前記クライアント装置から受信した前記入力装置操作情報に基づき，文字情報を生成する手段と，
前記文字情報に基づく処理を行うサーバ側プログラム実行手段と，を備え，
前記クライアント装置は，
文字情報に基づく処理を行うクライアント側プログラム実行手段と，
前記サーバ装置における，前記サーバ側プログラム実行手段による作業状態を，当該クライアント装置において復元するに必要な文字情報を取得し，蓄積する手段と，
を備える
ことを特徴とするクライアントサーバシステム。
【請求項２】
請求項１に記載のクライアントサーバシステムにおいて，
前記サーバ装置は，
生成した前記文字情報を，前記通信路を介して，前記クライアント装置に送信する手段と，を備え，
前記クライアント装置の文字情報を取得する手段は，前記送信された文字情報を蓄積する手段と，
前記クライアント装置は，前記通信路を監視する手段と，
前記通信路を監視する手段が，前記通信路が利用できなくなった，と判断した場合に，前記蓄積している前記文字情報を取得して，前記サーバ側プログラム実行手段による，前記判断時点以前の作業状態を復元する復元手段を備える
ことを特徴とするクライアントサーバシステム。
【請求項３】
請求項１記載のクライアントサーバシステムであって，
前記クライアント装置の文字情報を取得する手段は，前記入力装置操作情報に基づき，文字情報を生成する手段を備え，
前記クライアント装置は，さらに，当該クライアント装置において生成された前記文字情報を用いて，前記作業状態を復元する復元手段を備える
ことを特徴とするクライアントサーバシステム。
【請求項４】
請求項１記載のクライアントサーバシステムであって，
前記クライアント装置は，復元した前記作業状態に対して，前記通信路が利用できなくなったと判断した時点以後に受け付けた前記入力操作情報に基づき，文字情報を生成する手段を備え，
前記クライアント装置のクライアント側プログラム実行手段は，前記復元された状態に対して，生成された前記文字情報に基づく処理を行う
ことを特徴とするクライアントサーバシステム。
【請求項５】
請求項２記載のクライアントサーバシステムであって，
前記クライアント装置は，前記判断時点以後は，前記受け付けた入力操作情報に基づき，前記文字情報を生成し，蓄積する手段を備える
ことを特徴とするクライアントサーバシステム。
【請求項６】
請求項４記載のクライアントサーバシステムであって，
前記クライアント装置は，前記通信路を監視する手段が，前記通信路が回復したと判断した場合に，当該回復時点での当該クライアント側プログラム実行手段における作業状態を，前記サーバ側プログラム実行手段において復元するための復元情報を，前記サーバ装置へ送信する手段を備える
ことを特徴とするクライアントサーバシステム。
【請求項７】
請求項６記載のクライアントサーバシステムであって，
前記クライアント装置の前記復元情報を送信する手段は，前記判断した時点から当該回復時点までの，当該クライアント側プログラム実行手段における作業状態を復元する情報を送信する
ことを特徴とするクライアントサーバシステム。
【請求項８】
請求項３記載のクライアントサーバシステムであって，
前記クライアント装置は，前記送信する手段による，前記通信路を介した，前記サーバ装置への入力装置操作情報の送信と，前記復元手段による前記作業状態の復元とを，平行して繰り返す手段を備える
ことを特徴とするクライアントサーバシステム。
【請求項９】
請求項１記載のクライアントサーバシステムであって，
前記サーバ装置は，前記クライアント装置から，前記サーバ側プログラム実行手段の処理終了指示を受けた場合に，前記クライアント装置に，前記クライアント装置が蓄積している文字情報の消去を指示する手段を備え，
前記クライアント装置は，前記文字情報の消去を指示された場合に，前記取得し，蓄積した文字情報を消去する手段を備える
ことを特徴とするクライアントサーバシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，サーバベースコンピューティング，シンクライアントシステム，シンクライアント−サーバ間の制御方法に関する。
【背景技術】
【０００２】
近年企業の一般業務でのPCの利用が拡大するとともに、企業がPCを従業員に貸し与えるために、多くの投資を必要としている。また、従業員数の増大にともなって、個々のPCのOS（Operating System）や業務アプリケーションのバージョンアップ、バグフィックス、ウィルス対策、バックアップなどを効率的に管理することは困難なものになりつつある。
【０００３】
この管理コストを低減するための一手法として、サーバベースコンピューティング（あるいはクライアントサーバ形式）と呼ばれる形態のシステム運用手法がある。これは、主なプログラムやデータをサーバ装置（以下，サーバという）側に蓄積し、クライアント装置（以下，クライアントという）側に蓄積するデータを減らすものである（例えば特許文献１）。
【０００４】
サーバベースコンピューティングでは、演算処理やデータの蓄積は主にサーバ側で行われるため、クライアント側に個々にＯＳや業務に利用するアプリケーションのバージョンアップやバグフィックス、ウィルス対策やウィルス駆除などを行う必要性や頻度が減少し、全体の管理コストを低減できる。またハードウェアの置き換えはサーバ側を適宜行えばよいし、クライアント側は，性能や機能を削減してシンクライアント化することができるためコスト低減を図ることができる。
【０００５】
また，上記サーバベースコンピューティングでは，クライアント側でのキーボードやマウスの操作情報がサーバ側へ送信され，サーバ側で生成された画面情報をクライアント側に転送する処理形態を用いることができる。この形態では，情報の実体はサーバ側に保存されているため，クライアント側には情報の実体がなく，万が一，クライアントを紛失したり，盗難にあったりした場合でも情報が漏えいすることがないという効果がある。
【０００６】
一方で，サーバベースコンピューティングの可用性や利便性は，通信路の品質に大きく依存してしまうという課題がある。
【０００７】
この課題に対して，例えば特許文献２には，シンクライアント端末において，サーバ装置のグラフィカルユーザインタフェース（GUIという）を疑似し、この疑似されたGUIにおける操作内容を所定量まとめてサーバ装置に送信することにより、サーバとの間のネットワークの伝送遅延が大きいような環境であっても、GUI機能によって作業効率良く操作できるという技術が記載されている。
【０００８】
【特許文献１】特開2004-094411号公報
【特許文献２】特開 2003-323402 号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述したように，上記処理形態では，クライアント側に情報の実体がないため，ユーザが意図しない通信路の切断など通信路に障害が起こった場合に，作業が中断され，処理を継続できなくなり，利便性や可用性が犠牲になってしまうという課題がある。
【００１０】
しかしながら，特許文献２の技術では，アプリケーション種別毎にGUIエミュレータを作成する必要があり多様なアプリケーションに対応するのは困難である。またクライアントにもGUIエミュレータを動作させるために処理能力が必要とされ，クライアントのコスト低減を図ることが困難となる。
【００１１】
したがって，上記処理形態において通信路が正常に使用できない場合の，利便性や可用性の確保と，コスト低減との両立が望まれている。
【課題を解決するための手段】
【００１２】
本発明は，サーバベースコンピューティングにおいて，クライアント側に情報の実体を置かないことを基本とする処理形態において，通信路が正常に使用できない状態になった場合であっても，クライアント側での入力作業の継続を可能とし，また通信路の回復時には，クライアント側に情報の実体を置かない基本の処理形態に戻って作業を継続可能とする方法とシステムを提供する。
【００１３】
より具体的には，入力装置操作情報から生成した，作業状態を復元するための情報をサーバから，クライアントに送信して蓄積させ，通信路が正常に使用できない場合に，クライアントにおいて，蓄積している文字情報を用いて，作業状態を復元し，ユーザの作業継続を可能とする。そして，通信路の回復時には，通信路を使用しなかった期間のクライアント側で処理した入力情報をサーバに移動し，通信路の回復時の作業状態をサーバで復元することにより，上述の基本処理形態での作業を可能とする。
【００１４】
作業状態を復元するための情報とは，例えば，文字コードや文字位置情報や，当該文字コードを挿入するのか削除するのかを示すフラグや，更新対象となるアプリケーションプログラムIDなどの，一つ以上の任意の組み合わせを含む。さらに，下線，フォント種別，文字サイズ，文字の色等の書式を示す情報の任意の一つ以上を付加してもよい。
【００１５】
本発明は，その一態様として，クライアント装置と，サーバ装置とが，ネットワークで接続され，クライアント装置と，サーバ装置とは，互いを接続する通信路を，ネットワーク上に確立する手段を備え，クライアント装置は，利用者の操作を受け付ける入力装置と，入力装置の操作から生成される入力装置操作情報を，通信路を介して，サーバ装置に送信する手段と，を備え，サーバ装置は，通信路を介して，クライアント装置から受信した入力装置操作情報に基づき，文字情報を生成する手段と，文字情報に基づく処理を行うサーバ側プログラム実行手段と，を備え，クライアント装置は，文字情報に基づく処理を行うクライアント側プログラム実行手段と，サーバ装置における，サーバ側プログラム実行手段による作業状態を，当該クライアント装置において復元するに必要な文字情報を取得し，蓄積する手段と，を備えるクライアントサーバシステムを提供する。
【００１６】
さらに，サーバ装置は，生成した文字情報を，通信路を介して，クライアント装置に送信する手段と，を備え，クライアント装置の文字情報を取得する手段は，送信された文字情報を蓄積する手段と，クライアント装置は，通信路を監視する手段と，通信路を監視する手段が，通信路が利用できなくなった，と判断した場合に，蓄積している文字情報を取得して，サーバ側プログラム実行手段による，判断時点以前の作業状態を復元する復元手段を備えてもよい。
【００１７】
さらに，クライアント装置の文字情報を取得する手段は，入力装置操作情報に基づき，文字情報を生成する手段を備え，クライアント装置は，さらに，当該クライアント装置において生成された文字情報を用いて，作業状態を復元する復元手段を備えてもよい。
【００１８】
さらに，クライアント装置は，復元した作業状態に対して，通信路が利用できなくなったと判断した時点以後に受け付けた入力操作情報に基づき，文字情報を生成する手段を備え，クライアント装置のクライアント側プログラム実行手段は，復元された状態に対して，生成された文字情報に基づく処理を行ってもよい。
【００１９】
さらに，クライアント装置は，判断時点以後は，受け付けた入力操作情報に基づき，文字情報を生成し，蓄積する手段を備えてもよい。
【００２０】
さらに，クライアント装置は，通信路を監視する手段が，通信路が回復したと判断した場合に，当該回復時点での当該クライアント側プログラム実行手段における作業状態を，サーバ側プログラム実行手段において復元するための復元情報を，サーバ装置へ送信する手段を備えてもよい。
【００２１】
さらに，クライアント装置の復元情報を送信する手段は，判断した時点から当該回復時点までの，当該クライアント側プログラム実行手段における作業状態を復元する情報を送信してもよい。
【００２２】
さらに，クライアント装置は，送信する手段による，通信路を介した，サーバ装置への入力装置操作情報の送信と，復元手段による作業状態の復元とを，平行して繰り返す手段を備えてもよい。
【００２３】
さらに，サーバ装置は，クライアント装置から，サーバ側プログラム実行手段の処理終了指示を受けた場合に，クライアント装置に，クライアント装置が蓄積している文字情報の消去を指示する手段を備え，クライアント装置は，文字情報の消去を指示された場合に，取得し，蓄積した文字情報を消去する手段を備えてもよい。
【００２４】
本発明のその他の特徴は，本明細書の記述および添付図面から明らかになるであろう。
【発明の効果】
【００２５】
本発明によれば，通信路が使用できない時においても，入力作業の継続が可能となり，利便性が向上する。
【発明を実施するための最良の形態】
【００２６】
本発明の実施の形態について、図面を参照しながら以下に説明する。なお、図面中にて同一の参照番号を付したものは、同一の機能を有する構成要素を示し、重複した説明は省略する。
【実施例１】
【００２７】
図１は本発明の第一の実施形態におけるシステム構成例を説明するための図であり，クライアント装置１０００とサーバ１２００とがネットワーク１１１０で接続されている。
【００２８】
クライアント装置（以下，クライアントという）１０００は，ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１０とメモリ１０２０と記憶装置１０８０と表示装置１１２０とキーボード１１００とマウス１０９０から構成される。表示装置１１２０は，画面情報を表示するものであり，例えば液晶ディスプレイやＣＲＴディスプレイなどである。キーボード１１００とマウス１０９０は，ユーザからの入力情報を伝えるものであり，そのほか，例えばスタイラスとタッチパネル等，ユーザからの入力情報を伝達するものであるなら利用可能である。
【００２９】
記憶装置１０８０には，仮名漢字変換アプリケーションプログラム（以下仮名漢字変換ＡＰという）１０４０，テキストエディタプログラム（以下テキストエディタという）１０５０，遠隔操作アプリケーションプログラム（以下遠隔操作ＡＰという）１０６０，入力情報管理アプリケーションプログラム（以下，クライアント側入力情報管理ＡＰという）１０７０，ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１０３０が格納されている。
【００３０】
ＯＳと各アプリケーションプログラムはメモリ１０２０にロードされてＣＰＵ１０１０で実行され，以下に説明する処理を実現する。また，ＯＳ１０３０には，図示していないマウス１０９０やキーボード１１００のデバイスドライバが組み込まれている。メモリ１０２０は，揮発性であり，クライアント１０００の電源がオフにされると内容が失われる。
【００３１】
各プログラムは，あらかじめ、記憶装置１０８０に格納されていても良いし、必要なときに、図示していない入出力インタフェースとクライアント端末１０００が利用可能な媒体を介して、他の装置から記憶装置１０８０に導入されてもよい。媒体とは、たとえば、入出力インタフェースに着脱可能な記憶媒体、または通信媒体（すなわちネットワーク１１１０またはネットワーク１１１０を伝搬する搬送波やディジタル信号）を指す。
【００３２】
仮名漢字変換ＡＰ１０４０は，ローマ字やかなで入力された文章の読みから仮名漢字混じり文への変換を実現する。テキストエディタ１０５０は，文書を作成，編集するために用いる。遠隔操作ＡＰ１０６０は，ネットワーク１１１０を介してサーバ１２００の遠隔操作を実現し，クライアント１０００からキーボード１１００とマウス１０９０の操作情報をサーバ１２００へ送信し，サーバ１２００からは画面情報を受信して表示する機能を実現する。
【００３３】
クライアント側入力情報管理ＡＰ１０７０は，詳細は後に説明するが，通信回線すなわち，ネットワーク１１１０の異常検知時にも文字入力を継続できるように，文字入力作業中に文字情報をクライアント１０００のメモリバッファに一時格納するなどの機能を持つ。
【００３４】
ネットワーク１１１０の異常検知方法としては，例えば，クライアント１０００とサーバ１２００間でパケットが往復する時間であるラウンドトリップタイムを定期的に計測して，ラウンドトリップタイムがある一定の値以上であった場合には異常と判定する，という方法がある。その他の方法であっても良いし，2つ以上を組み合わせても良い。
【００３５】
クライアント１０００とサーバ１２００をつなぐ通信回線であるネットワーク１１１０としては，有線ＬＡＮや無線ＬＡＮ，電話回線，光ファイバ回線などが利用可能である。
【００３６】
サーバ１２００は，ＣＰＵ１２５０とメモリ１２６０と記憶装置１２４０から構成される。記憶装置１２４０には，仮名漢字変換ＡＰ１２１０，テキストエディタ１２２０，サーバ文字情報管理アプリケーション（サーバ側入力情報管理ＡＰという）１２３０，ＯＳ１２７０などのプログラムが格納されている。
【００３７】
各プログラムはメモリ１２６０にロードされてＣＰＵ１２５０で実行され，以下に説明する処理を実現する。例えば，サーバ側入力情報管理ＡＰ１２３０は，詳細は後に説明するが，文字入力作業中に文字情報をクライアント端末へ送信するなどの機能を持つ。
【００３８】
上記各プログラムは，あらかじめ、記憶装置１２４０に格納されていても良いし、必要なときに、図示していない入出力インタフェースとサーバ１２００が利用可能な媒体を介して、他の装置から記憶装置１２４０に導入されてもよい。媒体とは、たとえば、入出力インタフェースに着脱可能な記憶媒体、または通信媒体（すなわちネットワーク１１１０またはネットワーク１１１０を伝搬する搬送波やディジタル信号）を指す。
【００３９】
図２は，ユーザ２０００とクライアント１０００とサーバ１２００の処理の流れを説明するための図である。
【００４０】
ユーザ２０００は，クライアント１０００上で遠隔操作ＡＰ１０６０を起動してサーバ１２００へのログインを行う（２０３０，２０８０，２１９０）。ログイン時の認証には，パスワード認証やＩＣカード認証等を利用する。認証に成功すると，クライアント１０００とサーバ１２００との間にセッションが確立され，ログインしたことになり，以後，クライアント１０００はサーバ１２００を遠隔操作することが可能となる。
【００４１】
次に，ユーザ２０００が遠隔操作により，サーバ１２００のテキストエディタ１２２０を起動する（２０４０，２２００）と，ユーザ２０００のキーボード１１００の操作によりキー入力（２０５０）されると，キーボード１１００が操作されたキーに対応したスキャンコードをクライアント１０００のＯＳ１０３０あるいは図示していないＢＩＯＳ（Basic Input/Output System）に送出し，ＯＳ１０３０またはＢＩＯＳが前記スキャンコードを対応するキーコードに変換し，操作されたキーに対応するキーコードを遠隔操作ＡＰ１０６０がサーバ１２００へ送信する（２０８５）。
【００４２】
当該キーコードは，サーバ１２００側のテキストエディタ１２２０により，英数字文字コードに変換され，さらに，必要に応じて，仮名漢字変換ＡＰ１２１０によって，日本語文字コードへの変換が行われる（２２１０）。以後，英数字文字コードと日本語文字コードをまとめて文字コードと表記する。
【００４３】
また，テキストエディタ１２２０の制御のためのキーコード（制御コードという）は，文字コードへ変換されず，テキストエディタに，例えば「貼り付け（Paste）」や「削除（Delete）」といった所定の動作を行わせる。
【００４４】
以後の説明では，「貼り付け」や「削除」などによる文字の入力を，テキストエディタのメニュー機能や制御コードにより行った場合においても，キーコードから文字コードに変換されて入力されたものとして扱う。
【００４５】
また，マウス１０９０の操作情報は，マウスポインタ座標とクリック情報などであり，キー入力と同様にサーバへ送信される。テキストエディタは，マウス操作情報によってカーソル位置の変更や範囲選択等を行う。
【００４６】
次にサーバ側入力情報管理ＡＰ１２３０は，テキストエディタ１２２０に入力された文字コードを，文字の位置情報などと共に後に詳述する文字情報として，クライアント１０００へ送信する（２２２０）。
【００４７】
例えば，テキストエディタ１２２０が，メモリ領域への文字情報の格納方法を他のプログラムに提供するものであれば，サーバ側入力情報管理ＡＰ１２３０は，テキストエディタ１２２０のメモリ領域を監視することにより，文字がテキストエディタに入力されたことを認識し，１文字入力される毎に文字情報を送信してもよいし，定期的に一定の文字数をまとめて送信するなどしてもよい。
【００４８】
送信された文字情報は，クライアント側入力情報管理ＡＰ１０７０によってメモリ１０２０に確保された文字情報バッファ７０００に格納される（２０９０）。また，サーバ側入力情報管理ＡＰ１２３０は，削除された文字の位置情報も文字情報に含めて送信する。クライアント側入力情報管理ＡＰ１０７０は，削除された文字の位置情報を受信することにより，文字情報バッファ７０００に格納されている対応する文字を削除する。
【００４９】
キー入力（２０５０），文字入力（２２１０），文字情報送信（２２２０），文字情報バッファ７０００への格納（２０９０）の一連の流れを繰り返すことにより，文字情報バッファ７０００とサーバのテキストエディタ１２２０の内容を同期させておく。
【００５０】
ここで，
通信回線の遅延や切断が発生したものとする（２１００）。クライアント側入力情報管理ＡＰ１０７０は，セッションの異常を検知する（２１１０）。例えばネットワークの伝送ビットレートが予め定めた値を下回った場合に高遅延による異常と判定したり，予め定めた時間，サーバからの応答がない場合を切断による異常と判定したりする。
【００５１】
クライアント側入力情報管理ＡＰ１０７０は，テキストエディタ１０５０を起動する（２１２０）。クライアント側入力情報管理ＡＰ１０７０は，上記文字情報バッファに格納されているテキスト内容を上記テキストエディタにロードし，作業内容をクライアント１０００側で復元する（２１３０）。これで，ユーザ２０００は，作業の継続が可能になり，キー入力（２０６０），上記テキストエディタ１０５０への文字入力を繰り返して行う（２１４０）。
【００５２】
また，サーバ側とクライアント側でテキスト内容の同期がとれていない場合（すなわち，ステップ２０９０の前に，ステップ２１００の異常が発生した場合）においても，作業内容の復元２１３０は，クライアント側入力情報管理ＡＰ１０７０が蓄積しているテキスト内容をテキストエディタにロードすることで実現する。併せて，最後に同期処理を行った時刻を利用者に表示してもよい。
【００５３】
通信回線が正常状態に回復すると（２１５０），遠隔操作ＡＰ１０６０は，再ログインを行い（２１６０），サーバ１２００が再ログインを認証する（２２３０）。再ログインには，再度ユーザに対してパスワード認証やＩＣカード認証を求めてもよいし，ある一定の時間内のセッション切断であってセッションキーやアクセス元ＩＰアドレス等がセッション切断前と同一であれば，再認証なしで再ログインを許可するようにしても良い。
【００５４】
再認証に成功すると，クライアント１０００とサーバ１２００との間にセッションが確立され，再ログインしたことになり，以後，クライアント１０００はサーバ１２００を遠隔操作することが可能となる。
【００５５】
クライアント側入力情報管理ＡＰ１０７０は，セッションの回復を検知する（２１７０）。クライアント側入力情報管理ＡＰ１０７０は，上記テキストエディタに入力されているテキスト内容を文字情報バッファに格納し，次に文字情報バッファのテキスト内容をサーバ１２００へ送信する（２１７５）。サーバ側入力情報管理ＡＰ１２３０は，送られてきた上記テキスト内容をテキストエディタにロードし，作業内容をサーバ１２００側で復元する（２２４０）。文字情報バッファ７０００の内容は，消去せずに維持する。
【００５６】
また，テキスト内容をサーバ１２００へ送信する（２１７５）際には，テキスト内容の変更前を保持しておいて変更後と比較することにより変更部分だけを文字情報として送信してもよい。さらにクライアント１０００側とサーバ１２００側でテキスト内容が完全に同期がとれていなかった場合には，サーバ１２００側に最後に同期処理を行った時刻を送信し，サーバ１２００側では最後に同期処理を行ったテキスト内容に対して作業内容の復元を行う。また，作業状態の復元の前にサーバ側の最終作業状態は保存しておき，利用者に最終作業状態から始めるのか，あるいは，作業復元状態から始めるのかを選択させてもよい。
【００５７】
以降，キー入力２０７０，文字入力２２６０，文字情報送信２２７０，文字情報バッファ格納２２８０と同様の流れを繰り返すことにより，文字情報バッファとサーバのテキストエディタの内容を同期させておく。
なお，文字入力２２６０は，ステップ２０８５，２２１０に例示する，キーコード送信，文字コードへ変換という処理を含む処理である。
【００５８】
図６は，文字情報の一例である。文字情報６０００は，文字コード６０１０と文字位置情報６０２０と削除フラグ６０３０とテキストエディタＩＤ６０４０を含んで構成される。文字位置情報６０２０は，テキストエディタに入力されたテキスト中での当該文字の位置を表す情報である。削除フラグ６０３０は，当該文字位置の文字の削除操作を指示するフラグである。テキストエディタＩＤ６０４０は，サーバ１２００で起動されて当該文字が入力されたテキストエディタ１２２０を識別するための識別子（例えば番号）である。
【００５９】
また，文字情報には，テキストエディタの画面上の入力位置を表すカーソルの位置情報を付加してもよい。
【００６０】
図７は，上述の文字情報バッファ７０００の一例である。文字情報バッファ７０００は，テキストエディタ毎にエントリを持つテーブルとして構成してもよい。各エントリはテキストエディタＩＤ６０４０とテキスト内容７０２０から構成される。
テキスト内容７０２０は，テキストの内容を表す文字コードの集合である。
【００６１】
図４は，サーバ側入力情報管理ＡＰ１２３０がテキストエディタ１２２０に入力された文字を文字情報６０００に変換する例と，クライアント側入力情報管理ＡＰ１０７０が文字情報６０００を受信して文字情報バッファ７０００を更新する例を説明するための図である。
【００６２】
テキストエディタ１２２０に文字が入力されると，サーバ側入力情報管理ＡＰ１２３０は，当該文字の文字コードと，先頭バイトからの当該文字の位置情報（図中では４バイト目）と，削除操作が行われたのかどうか（図中では削除操作ではないのでＯＦＦ）と，当該文字が入力されたテキストエディタＩＤ（図中では００１番）を取得し，文字情報６０００を作成し，クライアント１０００へ送信する。
【００６３】
上述の通り，１文字入力される毎に文字情報６０００を送信してもよいし，一定数の文字情報６０００を記憶装置１２４０やメモリ１２６０に蓄積し，まとめて送信するなどしてもよい。
【００６４】
次に，上記文字情報６０００を受信したクライアント側入力情報管理ＡＰ１０７０は，文字情報バッファ７０００の当該テキストエディタＩＤを検索する。当該テキストエディタＩＤの項目が存在すれば，図中に示すように，テキスト内容の文字位置情報が示す文字位置に，当該文字コードを挿入する。当該テキストエディタＩＤが存在しなければ，新たにエントリを作成し，当該文字コードを挿入する。
【００６５】
また，サーバ１２００のテキストエディタ１２２０とクライアント１０００のテキストエディタ１０５０が取り扱える文字コード体系（たとえば，ＥＵＣやＳｈｉｆｔ−ＪＩＳ）や改行コードが異なる場合，クライアント側入力情報管理ＡＰ１０７０は，文字情報バッファへの格納の前と，サーバへの文字情報の送信２１７５の前に，文字コードおよび改行コードを変換する。
【００６６】
図８は，文字情報バッファ７０００を消去する場合の一例を説明するための図である。
【００６７】
ユーザ２０００からテキストエディタ終了指示（８０００）によりテキストエディタ１２２０が終了される（８０１０）。次にサーバ側入力情報管理ＡＰ１２３０は，上記終了したテキストエディタ１２２０のＩＤとともに文字情報バッファ７０００の消去命令をクライアント１０００へ送信する（８０２０）。上記消去命令を受信したクライアント側入力情報管理ＡＰ１０７０は，文字情報バッファ７０００における当該テキストエディタＩＤに対するエントリのテキスト内容を消去する（８０３０）。
【００６８】
また，クライアント１０００がサーバ１２００からログアウトしたり，クライアント１０００の当該テキストエディタ１０５０を終了したり，ユーザ２０００が文字情報バッファ７０００の消去を指示したりした場合も，クライアント側入力情報管理ＡＰ１０７０がＯＳ１０３０に指示されることにより，テキストエディタ１０５０の文字情報および文字情報バッファ７０００を消去する。また，クライアント１０００の電源をオフにした場合は，その文字情報バッファ７０００の内容は揮発するので消去したことになる。
【００６９】
セッションの異常の検知２１１０とセッションの回復の検知２１７０は，ユーザ２０００の操作を必要とせずに通信回線の状態を判定してオフライン作業からオンライン作業に切り替えるためのものであるが，ユーザが手動で切り替えてもよい。
【００７０】
例えば，図５に示すようにデスクトップ画面中にオンライン作業切り替え用ボタン５０２０とオフライン作業切り替えボタン５０１０を表示する。セッション確立状態でサーバ１２００のデスクトップ画面上のオフライン切り替えボタンをユーザ２０００が押下した場合，サーバ側入力情報管理ＡＰ１２３０はクライアント側入力情報管理ＡＰ１０７０にオフライン切り替え指示を送信し，クライアント側入力情報管理ＡＰ１０７０は図２中のテキストエディタ起動２１２０から始まる処理を行う。
【００７１】
また，通信回線が回復している状態でクライアント１０００のデスクトップ画面上のオンライン切り替えボタンをユーザ２０００が押下した場合，図２中の遠隔操作ＡＰによるログイン２１６０から始まる処理を行う。
【００７２】
以上述べたように，本実施例によれば，サーバ１２００側テキストエディタへの文字入力と並行して，クライアント１０００へ文字情報を送信してクライアント１０００の文字情報バッファ７０００へ文字情報を蓄積しておくことにより，ユーザ２０００が予想しない通信路の異常時においても，蓄積されている文字情報を使ってテキスト入力作業を継続できる。
【００７３】
また，文字単位での追記や挿入や削除の場合，すなわち，変更がテキストの一部であった場合に，テキストの全体をクライアントに送信する必要がなく，変更のあった文字だけを送信すればよいため，通信量の削減の効果がある。
【実施例２】
【００７４】
本発明の第二の実施形態について説明する。本実施形態におけるシステム構成を，実施例1と同様，図1に示す。
【００７５】
図３は，本発明の第二の実施形態におけるユーザ２０００とクライアント１０００とサーバ１２００の処理の流れを説明するための図である。
【００７６】
ユーザ２０００は，クライアント１０００上で遠隔操作ＡＰ１０６０を起動してサーバ１２００へのログインを行う（２０３０，２０８０，２１９０）。ログイン認証には，パスワード認証やＩＣカード認証等を利用する。ログイン認証に成功すると，クライアント１０００とサーバ１２００との間にセッションが確立され，以後サーバ１２００を遠隔操作することが可能となる。次に，ユーザ２０００がサーバ１２００のテキストエディタ１２２０を起動する（２２００）。
【００７７】
上記テキストエディタの起動指示を受け取ると，サーバ側入力情報管理ＡＰ１２３０は，クライアント１０００に対してテキストエディタ１０５０の起動指示を送信する（３０３０）。起動指示３０３０を受信したクライアント側入力情報管理ＡＰ１０７０は，テキストエディタ１０５０を起動する（３０００）。サーバ側入力情報管理ＡＰ１２３０は，仮名漢字変換情報をクライアントへ送信する（３０５０）。
【００７８】
仮名漢字変換情報とは，仮名漢字変換ＡＰ１２１０においてユーザが個別に設定した辞書ファイルや変換学習情報などの仮名漢字変換のための設定情報である。仮名漢字変換情報を受信したクライアント側入力情報管理ＡＰ１０７０は，当該仮名漢字変換情報を仮名漢字変換ＡＰ１０４０に設定する（３０４０）。
【００７９】
実施例１と同様に，ユーザ２０００がキー入力（２０５０）することにより，クライアント１０００から，操作されたキーに対応するキーコードがサーバ１２００へ送信される（２０８５）。当該キーコードは，サーバ１２００側のテキストエディタ１２２０により，英数字文字コードあるいは，必要に応じて，仮名漢字変換ＡＰ１２１０によって日本語文字コードへの変換が行われ，テキストエディタ１２２０に文字入力が実行される(２２１０）。
【００８０】
また，本実施例においては，クライアント１０００上で起動されているテキストエディタ１０５０にも上記キーコードが送られ，英数字文字コード，あるいは，仮名漢字変換ＡＰ１０４０によって日本語文字コードへの変換が行われ，上記サーバ上のテキストエディタに入力された文字と同一の文字が入力される（３０１０）。また，上記キーコードは，文字入力のためのキーコードであって，ＯＳやテキストエディタへの制御信号としてのキーコードを含まない。
【００８１】
キー入力（２０５０），キーコード送信（２０８５），文字入力（２２１０，３０１０）の一連の流れを繰り返すことにより，クライアントのテキストエディタとサーバのテキストエディタの内容を同期させておく。
【００８２】
ここで，通信回線の遅延や切断が発生したものとする（２１００）。クライアント側入力情報管理ＡＰ１０７０は，セッションの異常を検知する（２１１０）。例えばネットワークの伝送ビットレートが予め定めた値を下回った場合に高遅延による異常と判定したり，予め定めた時間，サーバからの応答がない場合を切断による異常と判定したりする。
【００８３】
本実施例においては，既に，ステップ３０００でテキストエディタを起動済みであり，文字入力も継続して行っている（ステップ３０１０）ので，ユーザ２０００は，引き続き，キー入力を行い（２０６０），クライアント１０００上のテキストエディタへの文字入力が実行され（２１４０），この一連の流れが繰り返される。
【００８４】
通信回線が正常状態に回復すると（２１５０），遠隔操作ＡＰ１０６０は，再ログインを行い（２１６０），サーバ１２００が再ログインを認証する（２２３０）。再ログインには，再度ユーザに対してパスワード認証やＩＣカード認証を求めてもよいし，ある一定の時間内のセッション切断あってセッションキーやアクセス元ＩＰアドレス等がセッション切断前と同一であれば，再認証なしで再ログインを許可するようにしても良い。
【００８５】
再認証に成功すると，クライアント１０００とサーバ１２００との間にセッションが確立され，再ログインしたことになり，以後，クライアント１０００はサーバ１２００を遠隔操作することが可能となる。
【００８６】
クライアント側入力情報管理ＡＰ１０７０は，セッションの回復を検知する（２１７０）。クライアント側入力情報管理ＡＰ１０７０は，上記テキストエディタに入力されているテキスト内容をサーバ１２００へ送信する（２１７５）。サーバ側入力情報管理ＡＰ２２４０は，送られてきた上記テキスト内容をテキストエディタにロードし，作業内容をサーバ１２００側で復元する（２２４０）。ユーザ２０００からのキー入力（２０７０）により，上記テキストエディタに文字入力が実行される(２２５０）。また同時にクライアント１０００上で起動されているテキストエディタ１０５０にも文字入力が実行される（３０２０）。
【００８７】
また，テキスト内容をサーバ１２００へ送信する（２１７５）際には，テキスト内容の変更前を保持しておいて変更後と比較することにより変更部分だけを文字情報として送信してもよい。さらにクライアント１０００側とサーバ１２００側でテキスト内容が完全に同期がとれていなかった場合には，サーバ１２００側に最後に同期処理を行った時刻を送信し，サーバ１２００側では最後に同期処理を行ったテキスト内容に対して作業内容の復元を行う。また，作業状態の復元の前にサーバ側の最終作業状態は保存しておき，利用者に最終作業状態から始めるのか，あるいは，作業復元状態から始めるのかを選択させてもよい。
【００８８】
キー入力（２０７０），文字入力（２２５０，３０２０）の一連の流れをセッション確立中は繰り返すことにより，クライアントのテキストエディタとサーバのテキストエディタの内容を同期させておく。
【００８９】
以上述べたように，本実施例によれば，サーバ１２００への文字入力と平行してクライアント１０００でも文字入力を実行して文字を蓄積しておくことにより，ユーザが意図しない通信路の異常時においても，テキスト入力作業を継続できる。また，クライアント１０００側とサーバ１２００側で並行して文字入力を実行することにより，サーバ１２００とクライアント１０００間の通信を行うことなくクライアント１０００側に文字を蓄積していくことが可能となる。
【００９０】
上記各実施形態における概念は，文字入力によるテキスト情報だけに限らず，様々な種類の情報に応用可能であることは明らかである。
【００９１】
例えば，プレゼンテーション作成の場合には，サーバ上の編集途中のプレゼンテーションファイルをクライアントへ送信し，クライアントは上記プレゼンテーションファイルをバッファに格納する。ネットワーク異常の際には，上記バッファに格納されたプレゼンテーションファイルをプレゼンテーション作成ツールにロードして編集作業を継続することが可能となる。プレゼンテーションファイルの送信タイミングは，一定時間ごとであってもよいし，一定量の変更が加えられたときに送信するものであってもよい。
【００９２】
このように，上記実施形態により，ネットワーク品質が低い環境においてもサーバ上の様々なアプリケーションを継続して利用可能となり，利便性を向上させることが可能となる。
【図面の簡単な説明】
【００９３】
【図１】第１の実施形態における構成要素を説明するための全体構成図である。
【図２】第１の実施形態における文字入力のフローを説明するためのフロー図である。
【図３】第２の実施形態における文字入力のフローを説明するためのフロー図である。
【図４】第１の実施形態における文字情報の作成と文字情報バッファへの格納の一例を説明するための図である。
【図５】第１の実施形態におけるオフライン作業への切り替え方法の一例を説明するための図である。
【図６】第１の実施形態における文字情報の詳細を説明するための図である。
【図７】第１の実施形態における文字情報バッファの詳細を説明するための図である。
【図８】第１の実施形態における文字情報バッファを消去する際のフローを説明するためのフロー図である。
【符号の説明】
【００９４】
１０００：クライアント、１０１０：CPU、１０２０：メモリ、１０３０：ＯＳ、１０４０：仮名漢字変換ＡＰ、１０５０：テキストエディタ、１０６０：遠隔操作ＡＰ、１０７０：クライアント側入力情報管理ＡＰ、１０８０：記憶装置、１０９０：マウス、１１００：、１１１０：ネットワーク、１２００：サーバ、１２１０：仮名漢字変換ＡＰ、１２２０：テキストエディタ、１２３０：サーバ側入力情報管理ＡＰ、１２４０：記憶装置、１２５０：ＣＰＵ、１２６０：メモリ、１２７０：ＯＳ。
【図１】
2008210071.tif 000003
【図２】
2008210071.tif 000004
【図３】
2008210071.tif 000005
【図４】
2008210071.tif 000006
【図５】
2008210071.tif 000007
【図６】
2008210071.tif 000008
【図７】
2008210071.tif 000009
【図８】
2008210071.tif 000010