(57)【要約】【課題】エラーが発生しても手戻りの発生を防止すること。【解決手段】復元装置は、操作入力を受け付けるごとに、メモリのデータ状態を所定の記憶部にバックアップする。復元装置は、バックアップした後に、操作入力に対応するアプリケーションが操作入力に対応する処理を実行するように制御する。復元装置は、操作入力を受け付けた際にバックアップされたデータ状態にメモリのデータ状態を戻すことで、操作入力に対応する処理の実行前におけるアプリケーションの状態を復元する。また、復元装置は、メモリの記憶領域のうち、操作入力に対応するアプリケーションによって使用される記憶領域である使用記憶領域すべてのデータ状態をバックアップし、バックアップされたデータ状態に使用記憶領域のデータ状態を戻す。【選択図】図１
2011192219.tif 000002
【特許請求の範囲】
【請求項１】
操作入力を受け付けるごとに、メモリのデータ状態を所定の記憶部にバックアップするバックアップ部と、
前記バックアップ部によってバックアップされた後に、前記操作入力に対応するアプリケーションが該操作入力に対応する処理を実行するように制御する実行制御部と、
前記操作入力を受け付けた際に前記バックアップ部によってバックアップされたデータ状態に前記メモリのデータ状態を戻すことで、該操作入力に対応する処理の実行前における前記アプリケーションの状態を復元する復元部と
を備えたことを特徴とする復元装置。
【請求項２】
前記バックアップ部は、前記メモリの記憶領域のうち、前記操作入力に対応するアプリケーションによって使用される記憶領域である使用記憶領域すべてのデータ状態をバックアップし、
前記復元部は、前記バックアップ部によってバックアップされたデータ状態に前記使用記憶領域のデータ状態を戻すことを特徴とする請求項１に記載の復元装置。
【請求項３】
前記バックアップ部は、前記アプリケーションごとに前記使用記憶領域のデータ状態をバックアップし、
前記復元部は、前記アプリケーションにエラーが発生する場合に、該アプリケーションについてバックアップされたデータ状態を前記所定の記憶部から取得し、取得したデータ状態に該アプリケーションに対応する使用記憶領域を戻すことを特徴とする請求項２に記載の復元装置。
【請求項４】
操作入力を受け付けるごとに、メモリのデータ状態を所定の記憶部にバックアップするバックアップ手順と、
前記バックアップ手順によってバックアップされた後に、前記操作入力に対応するアプリケーションが該操作入力に対応する処理を実行するように制御する実行制御手順と、
前記操作入力を受け付けた際に前記バックアップ手順によってバックアップされたデータ状態に前記メモリのデータ状態を戻すことで、該操作入力に対応する処理の実行前における前記アプリケーションの状態を復元する復元手順と
コンピュータに実行させることを特徴とする復元プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復元装置及び復元プログラムに関する。
【背景技術】
【０００２】
利用者は、コンピュータで各種のアプリケーションを使用する。利用者は、コンピュータに対して、様々な操作を行う。例えば、利用者は、データを更新する更新操作を行い、プリンタに印刷を実行させる操作を行い、アプリケーションを設定する設定操作を行う。
【０００３】
利用者が更新操作を行った場合に、更新前のデータをメモリに記憶する記憶装置がある。記憶装置は、利用者によって特定のキー操作が行われると、更新操作が行われた箇所のデータをメモリに記憶された更新前のデータに置き換える。言い換えると、記憶装置は、直前に利用者が行った操作を取り消し、元の状態に戻す。例えば、利用者は、誤った更新操作を行ったことに気づくと、特定のキー操作を行う。また、更新前のデータを記憶するメモリを複数有する記憶装置もある。
【０００４】
利用者が何らかの操作を行うことでエラーが発生し、アプリケーションが終了することがある。この場合、利用者がデータを作成中であった場合には、未保存のデータは失われる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６１−２０１３４９号公報
【特許文献２】特開平７−１６８９５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した記憶装置では、エラーが発生すると、同じ操作を利用者が再度行うことになるという問題があった。つまり、上述した記憶装置では、手戻りが発生するという問題があった。
【０００７】
例えば、上述した記憶装置では、更新前のデータを１つ又は複数記憶するにすぎない。また、上述した記憶装置では、エラーが発生すると更新前のデータが失われる。このため、上述した記憶装置では、エラーが発生した場合に、最後にデータが保存された後に行った更新操作すべてを利用者が再度行うことになる。
【０００８】
また、例えば、上述した記憶装置では、更新前のデータを記憶するにすぎず、エラーが発生すると、アプリケーションに対して利用者が設定した設定内容が失われる。このため、アプリケーションを設定する設定操作を利用者が行った後にエラーが発生すると、エラー発生前に行った設定操作すべてを利用者が再度行うことになる。
【０００９】
開示の技術は、上述に鑑みてなされたものであって、エラーが発生しても手戻りの発生を防止可能である復元装置及び復元プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
開示する復元装置は、一つの態様において、操作入力を受け付けるごとに、メモリのデータ状態を所定の記憶部にバックアップするバックアップ部を備える。また、開示する復元装置は、前記バックアップ部によってバックアップされた後に、前記操作入力に対応するアプリケーションが該操作入力に対応する処理を実行するように制御する実行制御部を備える。また、開示する復元装置は、前記操作入力を受け付けた際に前記バックアップ部によってバックアップされたデータ状態に前記メモリのデータ状態を戻すことで、該操作入力に対応する処理の実行前における前記アプリケーションの状態を復元する復元部を備える。
【発明の効果】
【００１１】
開示する復元装置の一つの態様によれば、エラーが発生しても手戻りの発生を防止可能であるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る復元装置の構成の一例を示すブロック図である。
【図２】図２は、実施例２に係る復元装置の構成の一例を示すブロック図である。
【図３】図３は、実施例２に係る復元装置による処理の流れの一例を示すフローチャートである。
【図４】図４は、実施例２に係る復元装置による処理の流れの一例を示す図である。
【図５】図５は、実施例２における異常検出処理部による処理の流れの一例を示すフローチャートである。
【図６】図６は、実施例２に係る復元プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、開示する復元装置及び復元プログラムの実施例について、図面に基づいて詳細に説明する。なお、本実施例により開示する発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１４】
図１を用いて、実施例１に係る復元装置１００の構成の一例を示す。図１は、実施例１に係る復元装置の構成の一例を示すブロック図である。復元装置１００は、図１に示す例では、記憶部１０１と、バックアップ部１０２と、実行制御部１０３と、復元部１０４とを有する。
【００１５】
バックアップ部１０２は、操作入力を受け付けるごとに、メモリのデータ状態を所定の記憶部１０１にバックアップする。また、実行制御部１０３は、バックアップ部１０２によってバックアップされた後に、操作入力に対応するアプリケーションが操作入力に対応する処理を実行するように制御する。
【００１６】
復元部１０４は、操作入力を受け付けた際にバックアップ部１０２によってバックアップされたデータ状態にメモリのデータ状態を戻すことで、該操作入力に対応する処理の実行前におけるアプリケーションの状態を復元する。
【００１７】
すなわち、アプリケーションの状態は、メモリに記憶されることを踏まえ、実施例１に係る復元装置１００は、操作入力ごとに、アプリケーションの状態を保持するメモリのデータ状態をバックアップする。そして、復元装置１００は、エラーが発生すると、メモリのデータ状態をエラー発生直前に戻すことでエラー発生直前のアプリケーションの状態を復元する。この結果、復元装置１００によれば、エラーが発生しても手戻りの発生を防止可能である。つまり、復元装置１００によれば、同じ操作を利用者が再度行うことを防止可能である。
【実施例２】
【００１８】
［復元装置の構成］
実施例２に係る復元装置２００について説明する。復元装置２００は、各種のアプリケーションを利用者が使用する際に利用者によって用いられる。例えば、復元装置２００は、パーソナルコンピュータやワークステーション、家庭用ゲーム機、ＰＤＡ（Personal  Digital  Assistant）、携帯電話やＰＨＳ（Personal  Handyphone  System）端末などが該当する。
【００１９】
図２を用いて、実施例２に係る復元装置２００の構成の一例を示す。図２は、実施例２に係る復元装置の構成の一例を示すブロック図である。復元装置２００は、図２に示す例では、入力部２０１と、出力部２０２と、第１の記憶部３００と、第２の記憶部４００と、制御部５００とを有する。
【００２０】
入力部２０１は、制御部５００と接続される。入力部２０１は、利用者から各種の操作入力を受け付け、受け付けた操作入力を制御部５００に入力する。入力部２０１は、操作入力として、例えば、データを更新する更新操作を利用者から受け付け、アプリケーションを設定する設定操作を利用者から受け付ける。入力部２０１は、利用者がアプリケーションを実行する際に、更新操作や設定操作を受け付ける。入力部２０１は、例えば、キーボードやマウス、マイクなどが該当する。出力部２０２は、制御部５００と接続される。出力部２０２は、制御部５００から情報を受け付け、受け付けた情報を利用者に出力する。例えば、出力部２０２は、利用者によって実行されるアプリケーションの操作画面を出力する。出力部２０２は、例えば、モニタやスピーカなどが該当する。
【００２１】
第１の記憶部３００は、制御部５００と接続される。第１の記憶部３００は、制御部５００によってアプリケーションが実行される際に用いられるデータを記憶する。第１の記憶部３００は、例えば、ＲＡＭ（Random  Access  Memory）が該当する。第１の記憶部３００は、「メモリ」とも称する。
【００２２】
ここで、第１の記憶部３００とアプリケーションとの関係について説明する。第１の記憶部３００は、アプリケーションの状態を示す情報を記憶する。言い換えると、アプリケーションは、現在の状態を示す情報を第１の記憶部３００に格納して用いた上で、各種の処理を実行する。アプリケーションの状態を示す情報とは、例えば、アプリケーションが出力部２０２を介して利用者に出力する出力画面を示す情報や、アプリケーションの設定内容を示す情報などが該当する。
【００２３】
また、第１の記憶部３００は、アプリケーションの状態を示す情報すべてを記憶するものとして説明する。言い換えると、一時ファイルなどの中間ファイルをアプリケーションが使用しないものとして説明する。このため、第１の記憶部３００のデータ状態を任意の時点における第１の記憶部３００のデータ状態と同一になるように変更することで、任意の時点におけるアプリケーションの状態が復元される。このため、例えば、アプリケーション「Ａ」に割り当てられた記憶領域のデータ状態を、任意の時点におけるデータ状態と同一になるように変更することで、任意の時点におけるアプリケーション「Ａ」の状態が復元される。
【００２４】
また、第１の記憶部３００の記憶領域のうちアプリケーションによって使用される記憶領域は、アプリケーション自身やアプリケーションを管理するＯＳ（Operating  System）によって、アプリケーションごとに割り当てられる。例えば、アプリケーションの起動時に、アプリケーション自身やアプリケーションを管理するＯＳによって割り当てられる。
【００２５】
また、アプリケーションが、メモリを管理する際に用いる変数として、ローカル変数ではなくグローバル変数を用いる場合を用いて説明する。ローカル変数は、関数内で一時的に変数を使うときに割り当てられる変数であり、アプリケーションを形成するプログラムのうち特定のブロックによって参照されたり更新されたりする。ローカル変数は、関数終了時に自動消滅する。ローカル変数は、自動変数とも称される。グローバル変数は、すべてのアプリケーションによって参照されたり更新されたりすることが可能な変数を示す。ただし、ローカル変数によって指定される記憶領域をアプリケーションに割り当てられた記憶領域の内いずれかとすることで、グローバル変数だけでなくローカル変数も使用するようにしても良い。
【００２６】
第２の記憶部４００は、制御部５００と接続される。第２の記憶部４００は、制御部５００による復元処理に用いられるデータを記憶する。第２の記憶部４００は、例えば、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、ハードディスク、光ディスクなどが該当する。第２の記憶部４００は、「所定の記憶部」とも称する。
【００２７】
第２の記憶部４００は、第１の記憶部３００のデータ状態のバックアップを記憶する。具体的には、第２の記憶部４００は、制御部５００によって実行されるアプリケーションごとに、第１の記憶部３００の記憶領域のうち、アプリケーションによって使用される記憶領域である使用記憶領域すべてのデータ状態のバックアップを記憶する。第２の記憶部４００によって記憶されるバックアップは、制御部５００によって格納され、制御部５００によって用いられる。
【００２８】
制御部５００は、入力部２０１、出力部２０２、第１の記憶部３００及び第２の記憶部４００と接続される。制御部５００は、各種の処理手順などを規定したプログラムを記憶する内部メモリを有し、種々の処理を制御する。制御部５００は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）などの電子回路が該当する。制御部５００は、図２に示す例では、バックアップ復元処理部５０１と、実行制御部５０２と、異常検出処理部５０３とを有する。
【００２９】
バックアップ復元処理部５０１は、以下に順に説明するように、第１の記憶部３００をバックアップするバックアップ処理を実行し、バックアップを用いて第１の記憶部３００を復元する復元処理を実行する。
【００３０】
バックアップ復元処理部５０１のバックアップ処理について説明する。バックアップ復元処理部５０１は、操作入力を入力部２０１が受け付けるごとに、第１の記憶部３００のデータ状態を第２の記憶部４００にバックアップする。具体的には、バックアップ復元処理部５０１は、第１の記憶部３００の記憶領域のうち、操作入力に対応するアプリケーションによって使用される記憶領域である使用記憶領域すべてのデータ状態をバックアップする。また、バックアップ復元処理部５０１は、アプリケーションごとに、使用記憶領域のデータ状態をバックアップする。言い換えると、バックアップ復元処理部５０１は、使用記憶領域のスナップショットをアプリケーションごとに作成し、作成したスナップショットを第２の記憶部４００に格納する。
【００３１】
バックアップ復元処理部５０１は、例えば、データを更新する更新操作を利用者が行った際にバックアップ処理を実行し、プリンタに印刷を実行させる操作を利用者が行った際にバックアップ処理を実行する。また、例えば、バックアップ復元処理部５０１は、アプリケーションを設定する設定操作を利用者が行った際にバックアップ処理を実行する。
【００３２】
より詳細な一例をあげて説明すると、バックアップ復元処理部５０１は、利用者によってアプリケーションのメニューから任意のコマンドが選択された際に、バックアップ処理を実行する。また、バックアップ復元処理部５０１は、アプリケーションの作業領域においてマウスやキー操作が利用者によって行われた際に、バックアップ処理を実行する。
【００３３】
また、バックアップ復元処理部５０１は、操作入力に対応するアプリケーションが操作入力に対応する処理を実行する前に、第１の記憶部３００のデータ状態を第２の記憶部４００にバックアップする。すなわち、バックアップ復元処理部５０１は、操作入力に対応するアプリケーションが操作入力に対応する処理を実行するとエラーが発生する可能性があることを踏まえ、処理実行前の第１の記憶部３００のデータ状態をバックアップする。
【００３４】
ここで、バックアップ復元処理部５０１は、操作入力を入力部２０１が受け付けるごとに、操作入力に対応するアプリケーションが操作入力に対応する処理を実行する前に、バックアップを実行する。この結果、エラーを発生させる操作入力をアプリケーションが実行した場合に、第２の記憶部４００は、エラーを発生させる操作入力が実行される直前の第１の記憶部３００のバックアップを記憶することになる。
【００３５】
また、バックアップ復元処理部５０１は、新たにデータ状態をバックアップするごとに、以前にバックアップされたデータ状態に上書きする。この結果、第２の記憶部４００のリソースを節約できるとともに、アプリケーションごとに複数のバックアップを管理することにより発生する管理の手間を省くことが可能である。ただし、本発明はこれに限定されるものではなく、アプリケーションごとに複数のバックアップを記憶しても良い。
【００３６】
バックアップ復元処理部５０１の復元処理について説明する。バックアップ復元処理部５０１は、操作入力を受け付けた際に第２の記憶部４００にバックアップしたデータ状態に第１の記憶部３００のデータ状態を戻すことで、該操作入力に対応する処理の実行前におけるアプリケーションの状態を復元する。具体的には、バックアップ復元処理部５０１は、後述する実行制御部５０２による制御によって実行された処理によりエラーが発生する場合に、復元処理を実行する。
【００３７】
より詳細には、バックアップ復元処理部５０１は、バックアップしたデータ状態に使用記憶領域のデータ状態を戻す。すなわち、バックアップ復元処理部５０１は、アプリケーションにエラーが発生する場合に、エラーが発生するアプリケーションについてバックアップされたデータ状態を第２の記憶部４００から取得する。そして、バックアップ復元処理部５０１は、アプリケーションに対応する使用記憶領域のデータ状態を取得したデータ状態と同一にする。例えば、バックアップ復元処理部５０１は、復元する旨の指示を示す操作である復元操作を利用者から入力部２０１が受け付けると、復元処理を実行する。ただし、本発明はこれに限定されるものではなく、例えば、バックアップ復元処理部５０１は、後述する異常検出処理部５０３によってエラーが検出されるごとに、自動的に、復元処理を実行しても良い。
【００３８】
実行制御部５０２は、バックアップ復元処理部５０１によってバックアップされた後に、操作入力に対応するアプリケーションが操作入力に対応する処理を実行するように制御する。実行制御部５０２がアプリケーションを実行する場合を用いて説明する。この場合、実行制御部５０２は、バックアップ復元処理部５０１によってバックアップが終了した操作入力に対応する処理を、操作入力に対応するアプリケーションにて実行する。
【００３９】
異常検出処理部５０３は、コンピュータに発生するエラーを検出する。具体的には、操作入力に対応する処理を実行することでエラーが発生するかを監視することで、エラーを検出する。アプリケーションが操作入力に対応する処理について監視することで、エラーを検出する。
【００４０】
例えば、異常検出処理部５０３は、操作入力に対応するアプリケーションが実際に処理を実行した際にエラーが発生したかを監視することで、エラーを検出する。異常検出処理部５０３は、例えば、例外エラーや、０割りエラーなどが発生したかを監視し、発生したとの監視結果が得られた場合にエラーありとする。例外エラーは、例えば、操作入力に対応する処理において、不正な命令へのアクセスが発生した場合、無効なデータやコードにアクセスした場合などに発生するエラーを示す。０割りエラーとは、分母を「０」とする除算処理が実行されることで発生するエラーを示す。
【００４１】
また、例えば、異常検出処理部５０３は、ＯＳのイベントログを参照し、操作入力に対応するアプリケーションについてのエラーや致命的な警告が通知されたか否かを監視することで、エラーを検出する。異常検出処理部５０３は、例えば、イベントログにエラーが通知された場合にエラーありとする。イベントログは、ＯＳやアプリケーションの動作状態のログを記憶する。例えば、イベントログは、ＯＳやアプリケーションが正常に動作する際には、正常に動作する旨の情報を記憶し、ＯＳやアプリケーションにエラーが発生した場合には、エラーが発生した旨を示す情報や如何なるエラーが発生したかを示す情報などを記憶する。
【００４２】
また、例えば、異常検出処理部５０３は、コンピュータのメモリ使用率やＣＰＵ使用率を参照し、メモリ使用率やＣＰＵ使用率が所定値以上であるかを監視することでエラーを検出する。例えば、コンピュータのメモリ使用率やＣＰＵ使用率が所定の時間を越えて１００％となっているかを監視することで、エラーを検出する。異常検出処理部５０３は、例えば、メモリ使用率やＣＰＵ使用率が所定の時間を越えて１００％となっているとの監視結果が得られた場合にエラーありとする。つまり、メモリ使用率やＣＰＵ使用率が１００％となっている場合にはエラーが発生したことが多いことを踏まえ、異常検出処理部５０３は、メモリ使用率やＣＰＵ使用率を用いてエラーを検出する。
【００４３】
また、例えば、異常検出処理部５０３は、操作入力に対応するアプリケーションからの応答が所定の時間ないかを監視することで、エラーを検出する。異常検出処理部５０３は、例えば、アプリケーションからの応答が所定の時間ない場合にエラーありとする。つまり、アプリケーションからの応答が所定の時間ない場合にはエラーが発生したことが多いことを踏まえ、異常検出処理部５０３は、応答が所定の時間ないかを用いてエラーを検出する。
【００４４】
異常検出処理部５０３は、エラーを検出すると、復元操作を受け付ける画面を出力部２０２を介して利用者に出力する。例えば、「現在の操作によって、アプリケーションが異常終了したり、応答なしになる可能性があります。操作を中断しますか？」とのメッセージを出力するとともに、復元操作を利用者から受け付ける選択肢を利用者に出力する。ここで、利用者によって復元操作を受け付ける選択肢が選択されると、バックアップ復元処理部５０１が、操作入力に対応する処理の実行直前の第１の記憶部３００のデータ状態を復元する。この結果、操作入力に対応する処理直前のアプリケーションの状態が復元される。
【００４５】
［復元装置による処理］
図３及び図４を用いて、実施例２に係る復元装置２００による処理の流れの一例を示す。図３は、実施例２に係る復元装置による処理の流れの一例を示すフローチャートである。図４は、実施例２に係る復元装置による処理の流れの一例を示す図である。
【００４６】
図４において、６１０は、出力部２０２によって出力される情報や利用者によって実行される操作を示す領域であり、６２０は、復元装置２００によって実行される処理を示す領域である。６１１や６１３は、アプリケーションの画面の一例を示し、６１２は、復元操作を受け付ける画面の一例を示す。６１２ａは、復元操作を利用者から受け付ける選択肢を示し、６１２ｂは、復元しないことを示す操作を利用者から受け付ける選択肢を示す。６２１や６２３は、同じアプリケーションによって用いられる第１の記憶部３００の記憶領域を示し、６２２は、記憶領域６２１のスナップショットを示す。
【００４７】
図３に示すように、バックアップ復元処理部５０１は、操作入力を入力部２０１が受け付けると（ステップＳ１０１肯定）、第１の記憶部３００のデータ状態を第２の記憶部４００にバックアップする（ステップＳ１０２）。例えば、図４の（１）に示すように、アプリケーションの画面に対して利用者が何らかの操作を実行すると、バックアップ復元処理部５０１は、第１の記憶部３００をバックアップする。例えば、図４の（２）に示すように、バックアップ復元処理部５０１は、アプリケーションによって用いられる第１の記憶部３００の記憶領域６２１のスナップショット６２２を作成し、第２の記憶部４００に格納する。
【００４８】
そして、復元装置２００では、図４の（３）に示すように、アプリケーションが操作入力に対応する処理を実行する（ステップＳ１０３）。そして、異常検出処理部５０３は、エラーを検出する（ステップＳ１０４）。
【００４９】
ここで、異常検出処理部５０３は、エラーが検出された場合には（ステップＳ１０５肯定）、復元操作を受け付ける画面を出力する（ステップＳ１０６）。例えば、図４の（４）に示すように、エラーが発生した場合に、図４の（５）に示すように、復元操作を受け付ける画面６１２を表示する。図４の（５）に示す例では、「現在の操作によって、アプリケーションが異常終了したり、応答なしになる可能性があります。操作を中断しますか？」とのメッセージを出力する場合を示した。また、図４の（５）に示す例では、復元操作を受け付ける選択肢６１２ａと、復元しないことを示す操作を受け付ける選択肢６１２ｂとを出力する場合を示した。
【００５０】
ここで、利用者から復元操作を受け付けた場合には（ステップＳ１０７肯定）、バックアップ復元処理部５０１は、ステップＳ１０２にて作成されたデータ状態のバックアップを用いて、復元処理を実行する（ステップＳ１０８）。つまり、バックアップ復元処理部５０１は、第２の記憶部４００にバックアップしたデータ状態に第１の記憶部３００のデータ状態を戻すことで、処理の実行前におけるアプリケーションの状態を復元する。例えば、図４の（６）に示すように、画面６１２において利用者が選択肢６１２ａを選択すると、図４の（７）に示すように、スナップショット６２２と同じデータ状態に記憶領域６２３を変更する。つまり、バックアップ復元処理部５０１は、スナップショット６２２を用いて記憶領域６２３をリカバリする。この結果、図４の６２３に示す記憶領域６２３のデータ状態は、操作入力に対応する処理が実行される前の記憶領域６２１と同じ状態となる。この結果、例えば、図４の（８）に示すように、アプリケーションは、操作入力を受け付ける前の状態と同じ状態となるアプリケーションの画面６１３を利用者に出力する。つまり、画面６１３と、画面６１１とは、同じアプリケーションの状態における画面となる。
【００５１】
一方、上述したステップＳ１０５において、エラーが検出されなかった場合には（ステップＳ１０５否定）、復元処理を実行しない。また、上述したステップＳ１０７において、利用者から復元操作を受け付けなかった場合には（ステップＳ１０７否定）、復元処理を実行しない。
【００５２】
［異常検出処理部による処理］
図５を用いて、実施例２に係る異常検出処理部による処理の流れの一例を示す。図５は、実施例２に係る異常検出処理部による処理の流れの一例を示すフローチャートである。図５に示す一連の処理は、図３におけるステップＳ１０４に対応する。
【００５３】
図５に示すように、異常検出処理部５０３は、操作入力に対応するアプリケーションが処理を実行することで、例外エラーや０割りエラー発生が発生したかを監視する（ステップＳ２０１）。ここで、異常検出処理部５０３は、例外エラーや０割りエラー発生が発生したとの監視結果が得られた場合には（ステップＳ２０２肯定）、エラーありとする（ステップＳ２０３）。
【００５４】
また、例外エラーや０割りエラー発生が発生したとの監視結果が得られなかった場合について説明する（ステップＳ２０２否定）。この場合、異常検出処理部５０３は、イベントログを参照し、操作入力に対応するアプリケーションについてのエラーがイベントログに通知されたかを監視する（ステップＳ２０４）。ここで、異常検出処理部５０３は、イベントログにエラーが通知されたとの監視結果が得られた場合には（ステップＳ２０５肯定）、エラーありとする（ステップＳ２０３）。
【００５５】
また、イベントログにエラーが通知されなかったとの監視結果が得られた場合について説明する（ステップＳ２０５否定）。この場合、異常検出処理部５０３は、コンピュータのメモリ使用率やＣＰＵ使用率を参照し、メモリ使用率やＣＰＵ使用率が所定値以上であるかを監視する（ステップＳ２０６）。ここで、異常検出処理部５０３は、メモリ使用率やＣＰＵ使用率が所定値以上であるとの監視結果が得られた場合には（ステップＳ２０７肯定）、エラーありとする（ステップＳ２０３）。
【００５６】
一方、異常検出処理部５０３は、メモリ使用率やＣＰＵ使用率が所定値以上であるとの監視結果が得られなかった場合には（ステップＳ２０７否定）、エラーなしとする（ステップＳ２０８）。
【００５７】
なお、上記の処理手順は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲で適宜変更しても良い。例えば、上記のステップＳ２０１、Ｓ２０４、Ｓ２０６を任意の順番で実行しても良い。また、例えば、異常検出処理部５０３は、上述したステップに加えて、応答がない時間を用いてエラーを検出する処理を実行しても良い。
【００５８】
［実施例２の効果］
上述したように、実施例２によれば、復元装置２００は、操作入力を受け付けるごとに、第１の記憶部３００のデータ状態を第２の記憶部４００にバックアップする。また、復元装置２００は、バックアップした後に、操作入力に対応するアプリケーションが操作入力に対応する処理を実行するように制御する。また、復元装置２００は、実行された処理によりエラーが発生する場合に、バックアップしたデータ状態に第１の記憶部３００のデータ状態を戻すことで、処理の実行前におけるアプリケーションの状態を復元する。この結果、エラーが発生しても手戻りの発生を防止可能である。具体的には、コンピュータにエラーが発生しても、同じ作業を利用者が再度実行することを防止可能である。
【００５９】
例えば、不意のエラーが発生したとしても、編集中のファイルだけでなくエラー発生直前の状態を再現できる。この結果、保存されたデータにどの操作が反映されているかを利用者が確認する手間を省くことが可能であり、各種の操作を利用者が再度実行する手間を省くことが可能である。
【００６０】
また、実施例２によれば、復元装置２００は、第１の記憶部３００の記憶領域のうち、操作入力に対応するアプリケーションによって使用される記憶領域である使用記憶領域すべてのデータ状態をバックアップする。また、復元装置２００は、バックアップしたデータ状態に使用記憶領域のデータ状態を戻す。この結果、操作入力に対応するアプリケーションによって使用される記憶領域について、選択的に戻すので、他のアプリケーションに影響を与えることなく、操作入力に対応するアプリケーションの状態を戻すことが可能である。
【００６１】
また、実施例２によれば、復元装置２００は、アプリケーションごとに使用記憶領域のデータ状態をバックアップする。また、復元装置２００は、アプリケーションにエラーが発生する場合に、アプリケーションについてバックアップされたデータ状態を第２の記憶部４００から取得し、取得したデータ状態にアプリケーションに対応する使用記憶領域を戻す。この結果、アプリケーションが複数起動されている場合であっても、アプリケーションそれぞれについて復元することが可能である。
【実施例３】
【００６２】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例を示す。
【００６３】
［バックアップ］
例えば、バックアップを外部ファイルとして用いても良い。この結果、アプリケーションによって作成された成果物だけでなく、成果物を作成したアプリケーションの状態についても復元可能なファイルとしてやりとりを行うことが可能となる。この結果、成果物を作成したアプリケーションの状態を他の利用者が再現する手間を省くことが可能である。
【００６４】
例えば、難しい操作を連続して利用者が成功させる必要がある場合に、１段階目の操作が成功した状態のバックアップを外部ファイル化する。ＣＡＤ（Computer  Aided  Design）の操作中に、特定の３箇所をマウスで選択する場合を用いて説明する。また、特定の３箇所について選択することが難しい場合を用いて説明する。この場合、１箇所目の選択が成功した段階において、バックアップを外部ファイル化しておくことで、他の利用者がかかるバックアップを用いることで１箇所目の選択が成功したＣＡＤの状態をすぐに用いることが可能になる。また、ＵＮＤＯやＲＥＤＯなどの操作と異なり、アプリケーションを終了した後でも、外部ファイル化することでかかる状態を保存でき、また、別の端末にかかる状態をコピーすることも可能である。ＵＮＤＯは、直前の操作を取り消す操作を示し、ＲＥＤＯは、ＵＮＤＯにより取り消した操作を再度実行する操作を示す。
【００６５】
［システム構成］
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。例えば、復元装置２００は、利用者から復元操作を受け付けると復元する場合を用いて説明したが、本発明はこれに限定されるものではなく、エラーを検出すると、自動的に復元しても良い。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については（図１〜図５）、特記する場合を除いて任意に変更することができる。
【００６６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、第２の記憶部４００を復元装置２００の外部装置としてネットワーク経由で接続するようにしても良い。アプリケーションを実行する装置と復元装置２００とを別装置として、ネットワーク経由で接続するようにしても良い。
【００６７】
また、操作入力に対応するアプリケーション自体が、成就したバックアップ処理や復元処理、異常検出処理を実行しても良い。また、操作入力に対応するアプリケーションを管理するアプリケーションや、操作入力に対応するアプリケーションとは別のアプリケーションが、成就したバックアップ処理や復元処理、異常検出処理を実行しても良い。
【００６８】
［コンピュータ］
また、上述の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図６を用いて、上述の実施例と同様の機能を有する復元プログラムを実行するコンピュータの一例を示す。なお、図６は、実施例２に係る復元プログラムを実行するコンピュータの一例を示す図である。
【００６９】
図６に示すように、実施例２におけるコンピュータ３０００は、操作部３００１、マイク３００２、スピーカ３００３、ディスプレイ３００４、通信部３００６、ＣＰＵ３０１０、ＲＯＭ３０１１などを有する。また、コンピュータ３０００は、ＨＤＤ（Hard  Disk  Drive）３０１２、ＲＡＭ３０１３、バス３００９などを有する。コンピュータ３０００の各部は、バス３００９で接続される。
【００７０】
ＲＯＭ３０１１は、図２にて示したバックアップ復元処理部５０１と、実行制御部５０２と、異常検出処理部５０３と同様の機能を発揮する制御プログラムを記憶する。つまり、図６に示すように、ＲＯＭ３０１１は、バックアップ復元処理プログラム３０１１ａと、実行制御プログラム３０１１ｂと、異常検出処理プログラム３０１１ｃとを記憶する。なお、これらのプログラム３０１１ａ〜３０１１ｃについては、図２に示した復元装置２００の各構成要素と同様、適宜統合または分離しても良い。
【００７１】
そして、ＣＰＵ３０１０が、これらのプログラム３０１１ａ〜３０１１ｃをＲＯＭ３０１１から読み出して実行する。この結果、図６に示すように、各プログラム３０１１ａ〜３０１１ｃは、バックアップ復元処理プロセス３０１０ａと、実行制御プロセス３０１０ｂと、異常検出処理プロセス３０１０ｃとして機能する。なお、各プロセス３０１０ａ〜３０１０ｃは、図２に示した、バックアップ復元処理部５０１と、実行制御部５０２と、異常検出処理部５０３とにそれぞれ対応する。
【００７２】
そして、ＨＤＤ３０１２には、バックアップデータ３０１２ａが設けられる。なお、バックアップデータ３０１２ａは、第２の記憶部４００に記憶されたバックアップに対応する。
【００７３】
そして、ＣＰＵ３０１０は、バックアップデータ３０１２ａを読み出してＲＡＭ３０１３に格納する。そして、ＣＰＵ３０１０は、ＲＡＭ３０１３に格納されたバックアップデータ３０１３ａを用いて、復元プログラムを実行する。
【００７４】
ただし、上述した説明では、プロセス３０１０ａ〜３０１０ｃすべてが常にＣＰＵ３０１０上にて仮想的に実現される場合について示した。しかしながら、本発明はこれに限定されるものではない。例えば、プロセス３０１０ａ〜３０１０ｃのうち処理に必要な一部のプロセスについて、ＣＰＵ３０１０上にて仮想的に実現されても良い。言い換えると、常にすべてのプロセスがＣＰＵ３０１０上にて動作するのではなく、処理に必要なプロセスが選択的に動作するようにしても良い。
【００７５】
［その他］
なお、本実施例で説明した復元プログラムは、インターネットなどのネットワークを介して配布することができる。また、復元プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００７６】
１００      復元装置
１０１      記憶部
１０２      バックアップ部
１０３      実行制御部
１０４      復元部
２００      復元装置
２０１      入力部
２０２      出力部
３００      第１の記憶部
４００      第２の記憶部
５００      制御部
５０１      バックアップ復元処理部
５０２      実行制御部
５０３      異常検出処理部
【図１】
2011192219.tif 000003
【図２】
2011192219.tif 000004
【図３】
2011192219.tif 000005
【図４】
2011192219.tif 000006
【図５】
2011192219.tif 000007
【図６】
2011192219.tif 000008