(57)【特許請求の範囲】
【請求項１】
タイムラインベースのコンピューティング環境を使用してアプリケーションを回復する方法であって、
回復のために前記アプリケーションのデータ項目を定期的にプロセッサにより記憶デバイスに保存するステップであって、そこでは当該保存されたデータ項目は、前記項目が保存された時点における前記アプリケーションの回復を可能にするステップと、
前記保存されたデータ項目の時間ベースのアーカイブを前記プロセッサにより探索するステップと、
前記アプリケーションの回復を始める時点を指定手段により指定するステップと、
当該指定された時点において保存されたデータ項目を表示デバイスにより表示するステップと、
当該指定された時点において保存され、表示されたデータ項目を使用して前記アプリケーションを前記プロセッサにより回復するステップと
を含み、
前記定期的に前記データ項目を保存するステップは、さらに、
前記アプリケーションが、当該アプリケーションを終了することなしに作業ファイルを保存することができるタイプであるかどうかの第１判定を前記プロセッサにより実行するステップと、
前記第１判定が真の場合、前記作業ファイルをキャプチャするステップと、
前記第１判定が真ではない場合、前記アプリケーションが、終了要求を受け取ることなしに回復ファイルを保存し、前記作業ファイルを保存するために終了要求を受け取るタイプであるかどうかの第２判定を前記プロセッサにより実行するステップと、
前記第２判定が真の場合、保存された前記回復ファイルをキャプチャするステップと、
前記第２判定が真ではない場合、前記アプリケーションが、前記作業ファイルを保存する前に終了要求を受け取らなければならないかどうかの第３判定を前記プロセッサにより実行するステップと、
前記第３判定が真の場合、前記アプリケーションの複製を前記記憶デバイス上で前記プロセッサにより作成するステップと、
前記プロセッサにより終了コマンドを前記アプリケーションの複製に送り、ファイル保存コマンドを開始するステップと、
保存されたファイルを前記ファイル保存コマンドに応答して前記プロセッサによりキャプチャするステップと、
前記第３判定が真ではない場合、仮想マシンを前記プロセッサにより起動するステップと、
前記仮想マシンにおいて前記プロセッサにより前記アプリケーションを実行するステップと、
前記時点における前記仮想マシンの状態を前記プロセッサによりキャプチャするステップと
をさらに含むことを特徴とする方法。
【請求項２】
前記データ項目が保存された前記時点に関係のあるコンテキスト情報を前記プロセッサにより前記記憶デバイスに保存するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記指定された時点における回復されたアプリケーションのフォークを前記プロセッサにより生成するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
生成された前記フォークは、前記回復されたアプリケーションの新たな使用を反映する代替のタイムラインであることを特徴とする請求項３に記載の方法。
【請求項５】
指定された時点で回復されたアプリケーションからデータを前記プロセッサにより複製するステップと、
現在の時点に前記プロセッサにより戻すステップと、
当該現在の時点において前記アプリケーション中に複製されたデータを前記プロセッサにより貼り付けるステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項６】
タイムラインベースのコンピューティング環境を使用してアプリケーションを回復するためのコンピュータ実行可能命令を記録したコンピュータ可読記録媒体であって、前記コンピュータ実行可能命令はコンピュータに、
回復のために前記アプリケーションのデータ項目を定期的に記憶デバイスに保存するステップであって、当該保存されたデータ項目は、前記項目が保存された時点における前記アプリケーションの回復を可能にするステップと、
前記保存されたデータ項目の時間ベースのアーカイブを探索するステップと、
前記アプリケーションの回復を始める時点であって指定手段により指定される時点を受け取るステップと、
前記指定手段により指定された時点における保存された前記データ項目を表示デバイスに表示させるステップと、
当該指定された時点において保存された前記データ項目を使用して前記アプリケーションを回復するステップと
を実行させ、
前記データ項目を定期的に保存するステップは、
前記アプリケーションが、終了要求なしに作業ファイルを保存することができるタイプであるかどうかの第１判定を実行するステップと、
前記第１判定が真の場合、保存された前記作業ファイルをキャプチャするステップと、
前記第１判定が真ではない場合、前記アプリケーションが、終了要求を受け取ることなしに回復ファイルを保存し、作業ファイルを保存するために終了要求を受け取るタイプであるかどうかの第２判定を実行するステップと、
前記第２判定が真の場合、保存された前記回復ファイルをキャプチャするステップと、
当該キャプチャされた回復ファイルと前記作業ファイルの間のマッピングをキャプチャするステップと、
前記第２判定が真の場合、作業ファイルを保存する前に、前記アプリケーションが終了要求を受け取らなければならないかどうかの第３判定を実行するステップと、
前記第３判定が真の場合、前記アプリケーションの複製を作成するステップと、
終了コマンドを前記アプリケーションの前記複製に送り、ファイル保存コマンドを開始するステップと、
するためのコンピュータ実行可能命令と、
保存されたファイルを前記ファイル保存コマンドに応答してキャプチャするステップと、
前記第３判定が真ではない場合、仮想マシンを起動するステップと、
前記仮想マシンに前記アプリケーションを実行させるステップと、
前記時点における前記仮想マシンの状態をキャプチャするステップと
を有することを特徴とするコンピュータ可読記録媒体。
【請求項７】
前記データ項目が保存された前記時点に関係のあるコンテキスト情報を前記記憶デバイスに保存するステップを前記コンピュータ実行可能命令は前記コンピュータに実行させることを特徴とする請求項６に記載のコンピュータ可読記録媒体。
【請求項８】
前記指定された時点における前記回復されたアプリケーションのフォークを使用のために生成するステップを前記コンピュータ実行可能命令は前記コンピュータに実行させることを特徴とする請求項６に記載のコンピュータ可読記録媒体。
【請求項９】
前記生成されたフォークは、前記回復されたアプリケーションの新たな使用を反映する代替のタイムラインであることを特徴とする請求項８に記載のコンピュータ可読記録媒体。
【請求項１０】
指定された時点で回復されたアプリケーションからデータを複製するステップと、
現在の時点に戻すステップと、
当該現在の時点において前記アプリケーション中に、当該複製されたデータを貼り付けるステップと
を前記コンピュータ実行可能命令は前記コンピュータに実行させることを特徴とする請求項６に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピューティング環境におけるデータの回復に関し、より詳細には、タイムラインベースのアプローチを使用してデータおよびアプリケーション状態を使用し、アーカイブし、回復する方法に関する。
【背景技術】
【０００２】
ここ数年、ユーザは、職業上の通信および個人用の通信のために非常にコンピュータに依存するようになっている。この結果、毎日、ユーザは、テキストだけに限られず、サウンド、ピクチャ、音楽、およびビデオも含む貴重な情報をコンピュータを使用して、コンピュータを介して交換している。しかし、この大量の情報がコンピュータ上に格納されていて、ユーザは、そのような大量のデータを管理するのが困難であると感じる傾向にある。さらに、情報の量と価値が長い期間のうちに増大するにつれ、データ回復がより重要となる。ますます多くの人々が、ほとんどの個人情報およびビジネス情報をコンピューティング環境において扱っているが、同時に、コンピュータおよびソフトウェアアプリケーションの脆弱性には、適切な対処がなされていない。例えば、バックアップメカニズムをまめに使用することなしには、情報は容易に失われる可能性がある。しかし、バックアップメカニズムの抱える問題は、回復のために必要な時間と労力が、通常、多大であることである。データ損失のリスクは、近年におけるワーム活動およびウイルス活動の大幅な増加によりさらに大きくなっている。
【０００３】
このため、オペレーティングシステムまたはアプリケーションなどの、情報を扱うソフトウェアは、情報をもはや取り出すことができない場合、使用できない状態になる可能性がある。状態とは、一般に、情報を扱うソフトウェアの現在の構成、属性、条件、または情報内容を指す。さらに、多量の情報が時間とともに蓄積する傾向にあるため、ユーザは、最終的には、もはや自分が理解できる形で情報を保存できなくなる。この結果、ユーザは、特定の所望される情報を探し出すのに困難を感じる可能性がある。その限りで、名前または時刻、および階層的分類による、すべてのファイルまたはすべての時刻のリストなどのグローバルカタログは、所望の項目を他の項目と区別する十分なコンテキスト情報を提供することができない。インデクサも同様に、この問題を解決しない。これは、１つには、ユーザがデータの視覚的レイアウトに最も親しみを感じるからである。さらに悪いことに、バックアップは、実際、この問題を悪化させる可能性がある。というのは、ユーザがバックアップを実際の情報と同一の名前空間に格納した場合、類似した名前および内容を有する多数の異なるバージョンが、時間とともに蓄積するからである。さらに、異なる変形体（ｖａｒｉａｎｔ）も同様に、同一のファイルまたはデータ項目の複数のバージョンをもたらす傾向があり、所望の情報が実際にどこにあるかに関して、全体的な混乱が増す。
【０００４】
時間中心のアプローチを使用してファイルをアーカイブするための１つの周知の方法は、アーカイブするためにファイルをデスクトップにドラッグすることに関わる。ファイルがもはや必要とされない場合、ユーザは、デスクトップ上のごみ箱を使用してファイルを削除することができる。ただし、ユーザは、後の時点で削除されたファイルを必要とする場合、そのファイルがデスクトップ上にあった時点を指定し、その時点からデスクトップを復元することにより、削除されたファイルを回復することができる。したがって、階層フォルダシステムを使用する代わりに、ユーザは、単にファイルをデスクトップにドラッグすることにより、ファイルをアーカイブする。
【０００５】
この方法の変種は、時間ベースのアプリケーション間通信に基づくシステムをさらに含む。方法は、基本的に次の３つの特徴を有する。すなわち、（１）各ソフトウェアアプリケーションは、「現在時刻」の概念を有し、（２）一方のアプリケーションの「現在時刻」が変化すると、そのアプリケーションは、他方のアプリケーションにその変化した時刻を通知し、その結果、（３）他方のアプリケーションが、その情報に従って「現在時刻」状態を変更する。以上の特徴で、時間ベースのデスクトップシステムは、デスクトップ上のドキュメントの任意の関連するアプリケーションの時刻を変更するように操作されて、ドキュメントが適切に開かれることを確実にすることが可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上２つの方法が抱える問題は、これらの方法が、既存の階層フォルダ構造に対する代替である、ユーザが自分のファイルを常に把握しておくやり方、すなわち、時間ベースのアプローチだけに関わることである。よくても、これらの方法は、削除されたファイルを引き上げる仕方、または現在時刻に基づいてファイルを容易に保存する方法を提供するに過ぎない。しかし、これらの方法は、以前の時点からアプリケーションを回復する仕方を提供せず、アプリケーション状態をアーカイブする仕方も提供しない。さらに、この方法は、ユーザに見える整合性のある保存済みファイルを有さないアプリケーション群に対処しない。このため、データをアーカイブするため、および回復するための改良された方法およびシステムの必要性が存在する。
【０００７】
本発明は、コンピューティング環境においてデータをアーカイブし、回復する仕方に関し、より具体的には、タイムラインベースのアプローチを使用してアプリケーション群をアーカイブすること、および回復することに関する。
【課題を解決するための手段】
【０００８】
本発明の諸実施形態では、アプリケーションを、そのアプリケーションの作業ファイルとともに回復する方法およびシステムが示される。詳細には、一実施形態において、アプリケーションのデータ項目が、回復のために定期的に保存され、保存されたデータ項目により、その項目が保存された時点から、アプリケーションをアプリケーションの作業ファイルとともに回復することが可能になる。その後、タイムラインベースのアーカイブの中で探索を行って、異なる時点におけるアプリケーションを回復することができる。そのような時点が指定された後、アプリケーションは、それに応じて、その指定された時点におけるアプリケーションの保存されたデータ項目を使用して回復されることが可能である。さらに、本発明の諸実施形態では、回復されたアプリケーションからのデータを、使用のために、コピーして、現時点のアプリケーションに貼り付けることができる。さらに別の実施形態では、それぞれの保存された項目に関するメタデータにインデックスが付けられることが可能であり、そのメタデータの探索が、ユーザが選択した探索変数を使用して行われることが可能である。この探索から、保存されたメタデータとユーザが選択した探索変数の間の合致に応じたデータ項目のリストが、選択のために生成されることが可能である。
【０００９】
アプリケーションが複数のメッセージを有する通信クライアントである、さらに別の実施形態では、通信クライアントにおけるメッセージが、求められていない電子メールまたは他の情報などの、スパムであるかどうかを示すインデックスデータが保存され、次に、このデータが、ユーザが選択した探索変数を使用する、スパムとして示されたメッセージは探索しない探索において使用されることが可能である。探索されたメッセージとユーザが選択した探索変数の間の合致に応じたメッセージのリストが、それに応じて探索から生成される。通信クライアントに関連する代替の実施形態は、メッセージがスパムであるかどうかを示すようにインデックスデータにマークを付けるように適合させられ、スパムとして示されたメッセージは、クライアントのデータ項目を回復のために保存するのに先立って削除（ｐｕｒｇｅ）される。
【００１０】
以上の様々な実施形態を介して、タイムラインベースのアプローチを使用してデータを回復する仕方を提示した。本発明は、ユーザフレンドリであり、効果的で、扱いやすい、データを回復するための改良された技術を提供する。その結果、ユーザは、以前の時点からデータを回復することができ、壊れた状態からの回復と、重要な情報の作成および使用のコンテキストにおける重要な情報の回復がともにサポートされる。タイムラインベースのアプローチは、現行のフォルダ階層よりも直観的である傾向にあるため、本発明は、データを回復するための単純で、直観的なグラフィック表現およびエンドユーザインターフェースを可能にする、理解するのが容易なパラダイムを提供する。このパラダイムをサポートするため、ユーザコンピューティング環境およびユーザコンピューティングコンテキストの継続的な自動的キャプチャが、前述した本発明の諸実施形態において実行される。
【００１１】
本発明のさらなる特徴および利点は、添付の図を参照して行われる、例示的な実施形態の以下の詳細な説明から明白となろう。
【００１２】
添付の特許請求の範囲は、本発明の特徴を詳細に記載しているが、本発明、ならびに本発明の目的および利点は、添付の図面と関連して解釈される以下の詳細な説明からよく理解することができる。
【発明を実施するための最良の形態】
【００１３】
本説明は、タイムラインベースのアプローチを使用してアプリケーションを回復するための技術を開示する。具体的には、アプリケーションのデータ項目が、回復のために定期的に保存され、保存されたデータ項目を使用して、その項目が保存された時点において、アプリケーションをアプリケーションの作業ファイルとともに回復することができるようになる。この結果、時間ベースのアーカイブの中の探索が提供されて、異なる時点におけるアプリケーションが回復される。したがって、保存された情報を使用して、アプリケーションが、アプリケーションのファイルとともに、指定された時点において回復されることが可能である。このため、タイムラインベースのアプローチを使用する際、よりユーザフレンドリであり、効果的で、扱いやすい、データを回復する改良された方法およびシステムが提供されている。
【００１４】
本発明は、コンピューティング環境において動作することができる。本発明の実施形態では、説明するプロセスは、１つまたは複数のコンピューティングデバイスの集合の上で動作する。本発明のすべての態様、または一部の態様を実施するのに使用できる適切なコンピューティングデバイスを、図１を参照して最初に説明し、その後、本発明の特定の実施形態によるネットワーク環境をより完全に説明する。
【００１５】
本発明を実施するのに適した多数のコンピューティングデバイスが存在するが、いくつかの典型的なタイプのコンピューティングデバイスを、図１に関連して以下に説明する。以下の説明は、理解を容易にするために提供するものであり、本発明の範囲を限定するものではないことを理解されたい。
【００１６】
必須ではないが、本発明は、コンピュータによって実行される、プログラムモジュール群などの、コンピュータ実行可能命令の一般的な文脈において説明する。一般に、プログラムモジュール群には、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含め、他のコンピュータシステム構成で実施してもよいことが、当業者には認識されよう。本発明は、通信ネットワークを介してリンクされたリモート処理装置群によってタスクが実行される、分散コンピューティング環境において実施してもよい。分散コンピューティング環境では、プログラムモジュール群は、ローカルメモリ記憶装置とリモートメモリ記憶装置の両方の中に配置することができる。
【００１７】
次に、図１を参照すると、処理装置２１、システムメモリ２２、ならびにシステムメモリを含む様々なシステムコンポーネントを処理装置２１に結合するシステムバス２３を含む、従来のコンピュータ２０の形態で、汎用コンピューティングデバイスが示されている。システムバス２３は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかのタイプのバス構造のいずれかの１つまたは複数の物理バスを含む。システムメモリは、読み取り専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。始動中などに、コンピュータ２０内部の要素間で情報を転送するのを助けるルーチンを含む、基本入出力システム（ＢＩＯＳ）２６が、ＲＯＭ２４の中に格納される。コンピュータ２０は、ハードディスク６０に対して読み取りおよび書き込みを行うためのハードディスクドライブ２７、リムーバブルな磁気ディスク２９に対して読み取りまたは書き込みを行うための磁気ディスクドライブ２８、およびＣＤ−ＲＯＭまたは他の光媒体などの、リムーバブルな光ディスク３１に対して読み取りまたは書き込みを行うための光ディスクドライブ３０をさらに含む。
【００１８】
ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、それぞれ、ハードディスクドライブインターフェース３２、磁気ディスクドライブインターフェース３３、および光ディスクドライブインターフェース３４でシステムバス２３に接続される。ドライブ群、および関連するコンピュータ可読媒体により、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージがコンピュータ２０に提供される。本明細書で説明する典型的な環境は、ハードディスク６０、リムーバブルな磁気ディスク２９、およびリムーバブルな光ディスク３１を使用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ、読み取り専用メモリ、ストレージエリアネットワークなどの、データを格納することができ、コンピュータがアクセスすることができる他のタイプのコンピュータ可読媒体も、典型的な動作環境において使用されることが可能であることが、当業者には認識されよう。オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、その他のプログラムモジュール群３７、およびプログラムデータ３８を含め、いくつかのプログラムモジュールが、ハードディスク６０、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５に格納されることが可能である。
【００１９】
ユーザは、キーボード４０やポインティングデバイス４２などの入力デバイス群を介して、コマンドおよび情報をコンピュータ２０に入力することができる。その他の入力デバイス群（図示せず）には、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることが可能である。以上、およびその他の入力デバイスは、しばしば、システムバスに結合されたシリアルポートインターフェース４６を介して処理装置２１に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）、あるいはネットワークインターフェースカードなどの、他のインターフェース群で接続してもよい。モニタ４７、またはその他のタイプのディスプレイデバイスも、ビデオアダプタ４８などのインターフェースを介してシステムバス２３に接続される。モニタに加え、コンピュータは、スピーカやプリンタなどの、図示していない他の周辺出力デバイスも含むことが可能である。
【００２０】
コンピュータ２０は、リモートコンピュータ４９のような、１つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境で動作しているか、または動作可能である。リモートコンピュータ４９は、ドメインコントローラ、サーバ、ルータ、ネットワークＰＣ、パーソナルコンピュータ、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、コンピュータ２０に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶装置５０だけを図１に示した。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２を含む。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
【００２１】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ２０は、ネットワークインターフェースまたはネットワークアダプタ５３を介してローカルネットワーク５１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ２０は、通常、ＷＡＮ５２を介して通信を確立するためのモデム５４、または他の手段を含む。内部にあることも、外部にあることも可能なモデム５４は、シリアルポートインターフェース４６を介してシステムバス２３に接続される。コンピュータ２０に関連して示したプログラムモジュール群、またはプログラムモジュール群の諸部分は、リモート記憶装置が存在する場合、そのような装置の中に格納することができる。図示したネットワーク接続は、典型的であり、コンピュータ間で通信を確立する他の手段も使用できることが認められよう。
【００２２】
本明細書で、本発明は、一般に、特に明示しない限り、１つまたは複数のコンピュータによって実行される動作の作用および記号表現に関連して説明する。このため、時として、コンピュータによって実行されるものとして述べる、そのような作用および動作には、構造化された形態のデータを表す電気信号の、コンピュータの処理装置による操作が含まれることを理解されたい。この操作は、データを変換するか、またはコンピュータのメモリシステム内の場所にデータを保持し、これにより、当業者によってよく理解される仕方でコンピュータの動作が再構成されるか、または別の形で変更される。データが保持されるデータ構造は、データのフォーマットによって定義された特定のプロパティを有する、メモリの物理的な場所である。ただし、本発明を以上の文脈で説明するが、以下に説明する様々な作用および動作をハードウェアで実施してもよいことが当業者には認められるように、以上の文脈は、限定することを意図するものではない。以下の説明では、クライアント、ドメインコントローラ、サーバなどのコンピューティングデバイス群は、コンピュータ２０および／またはリモートコンピュータ４９に関して図１に関連して前述したアーキテクチャを有することも、代替として、他の任意のタイプのアーキテクチャを有することも可能である。本明細書で説明するコンピュータ動作は、コンピュータまたはコンピューティングデバイスによる、コンピュータ可読媒体からのコンピュータ実行可能命令の読み取りの後に実行される。コンピュータ可読媒体には、光媒体、磁気媒体、電気媒体、またはその他のタイプの媒体とともに、記憶媒体、伝送媒体なども含まれる。
【００２３】
次に、図２を参照すると、本発明は、複数のアプリケーション１０２、１０４、ならびにデータベース１０６を含むコンピューティング環境１００において実施されることが可能である。本発明の諸実施形態では、アプリケーション１０２および１０４は、タイムライン１０８および１１０に基づく回復のために追跡される。具体的には、タイムライン１０８および１１０が、それぞれのアプリケーションＡ１０２およびアプリケーションＢ１０４に関連付けられる。アプリケーションのタイプに依存して、データベースに対するデータの保存をトリガする複数の実施形態を使用することができる。例えば、一実施形態は、アプリケーションＡ１０２において変更が存在する場合はいつでも、データベース１０６に対するデータ１１２、１１４、および１１６の保存を含むことが可能である。別の実施形態では、アプリケーションＢ１０４からのデータ１１８、１２０、および１２２が、事前定義された期間でデータベース１０６に保存されることが可能である。以上２つの実施形態のいずれも、一時的な場所にまずデータを保存し、保存されたデータがデータベース内の最新データと異なる場合、データベースを少なくとも更新することにより、実施形態のデータベース格納要件を小さくすることができる。データには、アプリケーションに関するデータが保存された時点におけるアプリケーションを回復するのに必要とされる、あらゆる情報が含まれる。このため、データには、アプリケーションの、作業ファイル、回復ファイル、一時ファイル、データベースエントリ、レジストリキー、メモリ状態、スクリーンショット、および／またはその他の事前定義されたアプリケーション状態が含まれることが可能であるが、以上には限定されない。作業ファイルは、安定したストレージの中に永久的に保存される、整合性のあるユーザファイルであり、一方、回復ファイルは、作業ファイルのバックアップファイルまたは回復可能なファイルとして、安定したストレージに一時的に、または永久的に保存されることが可能な、整合性のあるファイルである。アプリケーション群からのデータをキャプチャする以上の様々なインプリメンテーション、および保存されるデータのタイプは、コンピューティング環境のアプリケーションのタイプ、および記憶容量に依存する可能性がある。
【００２４】
さらに、図２に示すアプリケーション１０２および１０４のそれぞれは、インプリメンテーションのニーズおよび用法に依存して、オペレーティングシステムまたはユーザアプリケーションであることが可能である。本発明は、電子メールクライアント、メモを取るアプリケーション、または共同作業（ｃｏｌｌａｂｏｒａｔｉｏｎ）アプリケーションなどの、インフォメーションワーカー（ｉｎｆｏｒｍａｔｉｏｎ  ｗｏｋｅｒ）アプリケーションに特に役立つが、あらゆるタイプのアプリケーションに使用することができる。実際、本発明の一実施形態は、各環境が独自の関連するタイムラインを有して、最も外側の環境が最新のオペレーティングシステムであることが可能であるようにする、入れ子にされたコンピューティング環境を作成する。このため、本発明は、ユーザアプリケーション群およびサブアプリケーション群を含むオペレーティングシステム全体に関連する、または、最も単純な場合には、オペレーティングシステムにおいて動作する単一のユーザアプリケーションに関連するデータを保存するインプリメンテーションを企図している。この場合も、これらの様々なインプリメンテーションは、ユーザのニーズおよび用法、およびシステムのタイプに大幅に依存する。
【００２５】
本発明の一実施形態における、アプリケーションによって生成されたデータの継続的な自動的キャプチャが、図３に示され、１５０で全体的に示されている。図示するとおり、アプリケーションからのデータ１５２、１５４、１５６、１５８、および１６０が、ユーザの使用またはアプリケーションの使用により、時間とともに変化する。図３に示したデータには、ある時点におけるアプリケーションに関連するあらゆる情報が含まれることが可能である。情報には、特定の時点におけるアプリケーションの、作業ファイル、回復ファイル、一時ファイル、データベースエントリ、レジストリキー、メモリ状態、スクリーンショット、および／またはその他の事前定義されたアプリケーション状態が含まれることが可能であるが、以上には限定されない。図示した実施形態では、以上のデータ項目の１つまたは複数に対する変更が、データベースに保存される。具体的には、デルタΔ１６２、Δ１６４、Δ１６６、およびΔ１６８で示されるデータ間の変化が、タイムライン１７０に基づく。デルタΔ１６２、Δ１６４、Δ１６６、およびΔ１６８に関して、変化は、ログ１７２上に保存される。図示したこの実施形態では、変化は、時間とともにログに継続的に、自動的に追加される。つまり、時刻ｉにおけるデータ１５２と時刻ｊにおけるデータ１５４の間の変化（すなわち、デルタΔ１６２）が、ログ１７２に追加され、時刻ｊにおけるデータ１５４と時刻ｋにおけるデータ１５６の間の変化を含むデルタΔ１６４が、ログ１７２に追加される。同様に、デルタΔ１６６は、時刻ｋにおけるデータ１５６と時刻ｌにおけるデータ１５８の間の変化を示し、デルタΔ１６８は、時刻ｌにおけるデータ１５８と時刻ｍにおけるデータ１６０の間の変化を示す。
【００２６】
様々な時点におけるスクリーンショットなどの、ログ１７２内に保存された情報を使用して、本発明は、特定の時点からのスクリーンショットを示すグラフィカルアプリケーションウィンドウを提供することができる。ユーザは、スクリーンショットを調べることにより、所望の時点を識別することができる。ユーザが所望の時点を識別すると、その時点からのアプリケーションを、ログ１７２内の保存された情報を使用して再現することができる。このように、ユーザは、タイムラインと対話して、異なる時点における自分の作業環境を回復することができる。
【００２７】
ユーザには、ポインタが異なる時点を示す、アプリケーションウィンドウグラフィック状態の表示（ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）を含むユーザインターフェースが提供されることが可能である。ユーザは、ユーザインターフェースにおけるタイムライン上でポインタを物理的に動かして、回復のための時点を選択することができる。一実施形態では、アプリケーションウィンドウグラフィック状態の低解像度の小型表示が、ユーザがタイムライン上でポインタを動かす間に使用される。ただし、ユーザが選択されたポイントでポインタを動かすのを止めると、アプリケーションウィンドウグラフィック状態は、好ましくは、基礎にある状態から、具体的には、ログ１７２内の保存されたデータ項目を使用して、フル解像度で再現される。記録されたタイムラインは、アプリケーションウィンドウの状態に加え、他の任意のコンテキスト情報も格納することができる。例えば、記録されたタイムラインは、各時点におけるユーザまたはコンピュータの地理的場所を追跡することができる（例えば、異なる場所における出張の際に行われた作業を迅速に識別するために）。他のコンテキスト情報には、コンピュータに接続されたデジタルカメラによって撮影されたユーザまたは環境（ｓｕｒｒｏｕｎｄｉｎｇｓ）のイメージ、またはユーザの作業パターン（例えば、ユーザがどれだけ、どの時間帯に、どのようなタイプの情報に対して作業しているか）が含まれることが可能である。この情報は、ユーザがタイムライン上でポインタを動かすにつれ、ユーザにグラフィックスで示されることが可能である。図示するとおり、記録されるタイムラインに含められるコンテキスト情報のタイプには、際限がなく、このため、本発明は、以上の典型的なコンテキスト情報に限定されない。したがって、他の様々なコンテキスト情報も企図され、本発明の範囲に含まれる。
【００２８】
さらに、本発明は、単一の直線的な時間に限定されず、代替の表示（ｖｉｅｗ）を提供するように任意のフォーク（ｆｏｒｋ，ｆｏｒｋｉｎｇ）も許すことができる。フォークは、最初のタイムライン上、または別のフォークしたタイムライン上の所与の時点に開始点を有する代替のタイムラインの視覚的表現を作成するのに使用することができる。したがって、フォークは、特定の時点からのユーザの活動から進行する一連のアプリケーション状態である。これらのフォークは、タイムライン上にグラフィックスで表示されることが可能である。一実施例として、ユーザが異なる時点までスクロールして戻る場合、フォークのグラフィック表示がユーザに表示される。アプリケーションに対して作業が行われている場合はいつでも、タイムライン上でフォークが生成されて、アプリケーションが何らかの形で変更されたことをユーザに示すことが可能である。フォークに沿って、アプリケーションに対して行われた作業、または使用されたファイルのタイトルなどの、アプリケーションを説明するさらなる注釈を追加することができる。つまり、一実施形態では、フォークは、ユーザが所与の時点におけるアプリケーションにおいて作業するようにスクロールして戻った場合にはいつでも、自動的に作成される。
【００２９】
これらのフォークは、一実施形態では、一時的または揮発性であり、過去が不変であることを可能にする永久ストレージに保存されない可能性がある。しかし、フォークの代替の実施形態は、その過去の時点においてアプリケーションに行われた作業を永久的に保存することである。その過去の時点におけるアプリケーションに対する現在の変更に関する情報も、ユーザ参照のために含められることが可能である。さらに、これらの状態系列（ｓｅｒｉｅｓ  ｏｆ  ｓｔａｔｅｓ）を、ユーザが扱う代替タイムラインの永続的な視覚的イメージとしてデータベースの中に保存することもできる。フォークを使用してアプリケーションに関する様々な情報が保存されると、次に、諸時点に関連するそれらのフォークのグラフィック表示が、ユーザに表示されることが可能である。この結果、ユーザがタイムラインをスクロールしていると、より馴染みがあり、ユーザによって行われた以前の一連のアクションに従って合理化されたタイムラインが、ユーザに提示される。
【００３０】
ログを使用することで、異なる時点の間で情報項目を動かすことを可能にする、帯域外メッセージ受け渡し（ｏｕｔ−ｏｆ−ｂａｎｄ−ｍｅｓｓａｇｅ−ｐａｓｓｉｎｇ）メカニズムと呼ばれる、別のメカニズムも実施することができる。このメカニズムを使用して、ユーザが、以前の時刻からの情報項目を取り出し、変更することを所望する場合、ユーザは、時刻ｘにおけるウィンドウグラフィック状態に移動し、選択された項目をクリップボードにコピーした後、現時点におけるアプリケーションに戻り、選択されたデータを、変更のために現在におけるアプリケーションにおいて貼り付けることができる。この結果、ユーザは、過去のデータを取り出し、その過去のデータを現在において使用することができる一方で、同時に、過去のデータの変更を完全に回避するようにデータを不変に保つことができる。そのようなメカニズムは、現行のコピーして貼り付ける（ｃｏｐｙ−ａｎｄ−ｐａｓｔｅ）クリップボードメカニズムを使用して実施することができる。さらに、過去のデータが変更されないことを確実にするため、ユーザが過去の時点におけるアプリケーションに対して作業している場合、ユーザが「読み取り専用モード」で作業していることを、グラフィック表示がユーザに示す。また、タイムラインが、厳密に直線的である必要も、ポインタが、ユーザがポインタを方々に動かす場合に、同等に速く動く必要もない。それどころか、タイムラインは、極めて動的であり、変化の度合いやタイプ、データの量、不連続性、またはその他の作業パターンなどの、基礎にある保存された状態の手触り（ｔａｃｔｉｌｅ  ｆｅｅｌ）を与えることが可能である。
【００３１】
別の実施形態では、データの内容、品質、条件、および／またはその他の特性を記述するデータを一般的に指すメタデータに、インデックスが付けられて、ログ１７２に保存されることが可能である。メタデータが生成される多数の仕方が存在する。一実施形態では、メタデータは、フォルダの中にメッセージをファイルすることなどの、事前定義されたユーザアクションの結果であることが可能である。別の実施形態では、メタデータは、関係のある重要なテキストを選択すること、イメージの内容の分析に基づいてイメージのカタログを作成すること（ｃａｔａｌｏｇｉｎｇ）、またはメッセージの事前定義された基準を特定することなど、アプリケーションのコンテキスト情報を使用することにより、自動的に生成されることも可能である。この結果、ユーザは、タイムラインベースのインターフェースを介してデータを回復することができるだけでなく、名前またはキーワードなどのメタデータを探索することにより、データを回復することもできる。このため、本発明は、断面（ｃｒｏｓｓ−ｓｅｃｔｉｏｎａｌ）（例えば、メタデータに基づく回復探索）回復パラダイムを、直線（例えば、タイムラインに基づく回復探索）回復パラダイムとともに企図している。
【００３２】
詳細には、ログ１７２は、好ましくは、各データ項目に関する概要およびポインタ情報を含む追加専用（ａｐｐｅｎｄ−ｏｎｌｙ）ログである。概要は、構造化されていない大量の項目のなかでデータ項目を探し出すのに役立つ十分なデータを含むことが可能である。テキストの場合、インデックスベースの探索のためのテキスト内のすべての語は、データファイルの簡単な表現であることが可能であるのに対し、ポインタは、ユーザが、データ項目が位置している時点に行くことができるようにすることが可能である。通常、各データ項目の最終バージョンは、ログ１７２の中で表現される。ただし、所与の項目に関して多数の最終バージョンが存在する可能性がある。例えば、ユーザが戻り、さらなる変更のために古い項目を取り出す際、ログを使用して、すべてのそのような項目に対するポインタ群が保持され、それらの項目がどのように由来しているかも表されることが可能である。図示するとおり、様々なタイプの情報が、ログ１７２に保存されることが可能であり、保存された情報のデータ構造は、様々な形で実施されることが可能である。このため、本発明は、図示した諸実施形態に限定されず、当業者が容易に認めることができる他のインプリメンテーションも、企図され、本発明の範囲に含まれる。
【００３３】
次に、図４を参照すると、アプリケーションの回復情報を保存するための、本発明の実施形態によるステップを示す流れ図が示され、２００で全体的に示されている。プロセスは、ステップ２０２で開始し、ステップ２０４で、アプリケーションのスクリーンショットをキャプチャする。図２および図３で説明するとおり、スクリーンショットは、ユーザが、探索中に低解像度でスクリーンショットを見ることを可能にするような形でキャプチャされ、指定の時点が選択された後、スクリーンショットではなく、ライブのアプリケーション自体が、ユーザに表示されることが可能である。
【００３４】
図３を参照すると、アプリケーションのスクリーンショットは、キャプチャされ、時刻ｉにおけるデータ１５２で保存されることが可能であるが、次の時刻ｊに、スクリーンショット全体を保存することは必要ない可能性がある。というのは、時刻ｊにおけるスクリーンショットに必要とされるデータの多くは、一般に、スクリーンが時刻ｉにおいてキャプチャされた時点で見られる可能性があるからである。このため、保存される必要がある情報は、スクリーンショットを再構築するのに必要とされる、時刻ｉと時刻ｊの間の変化、デルタΔ１６２である。この結果、スクリーンショットなどのデータは、コンピュータの最小限のリソースを使用することによってより効率的にキャプチャされることが可能である。
【００３５】
ステップ２０４でスクリーンショットがキャプチャされた後、ステップ２０５で、アプリケーションに関連するコンテキスト情報が保存される。詳細には、その時点に関係のあるコンテキスト情報が保存される。つまり、コンテキスト情報は、その時点を思い出すのにユーザに役立つ任意の情報であることが可能である。このため、前述したとおり、コンテキスト情報には、各時点におけるユーザまたはコンピュータの地理的場所、撮影されたユーザまたは環境のイメージ、ユーザの作業パターン、または妥当なキーワードが含まれることが可能である。
【００３６】
プロセスは、次にステップ２０６で、アプリケーションが、アプリケーションを終了することなしに整合性のある作業ファイルを保存するタイプであるかどうかを判定する。電子メールプログラムは、一般に、整合性のある作業ファイルを使用して、ユーザの現在の下書きが、障害が生じた場合に失われるのを防止する。アプリケーションが、終了することなしに整合性のある作業ファイルを保存するタイプである場合、プロセスは、好ましくは、ステップ２０８でアプリケーションを観察し、ステップ２１０で、アプリケーションによって保存される整合性のある作業ファイルをキャプチャし、アーカイブする。
【００３７】
他方、ステップ２０６で、アプリケーションが、終了することなしに整合性のある作業ファイルを保存することができるタイプではなかった場合、プロセスは、ステップ２１２で、アプリケーションが、終了することなしに整合性のある回復ファイルを作成するが、整合性のある作業ファイルを保存するのに終了しなければならないタイプであるかどうかを判定する。ワードプロセッシングプログラムは、一般に、障害が生じた場合にユーザのドキュメントが失われるのを防ぐために終了する際、整合性のある回復ファイルを保存する。また、ワードプロセッシングプログラムは、一般に、動作している最中にも整合性のある回復ファイルを保存する。アプリケーションが、ステップ２１２で説明したようなアプリケーションであった場合、ステップ２１４で、アプリケーションは、プロセスによってやはり観察されて、ステップ２１６で、アプリケーションによって保存される整合性のある回復ファイルがキャプチャされる。ステップ２１８で、アプリケーションが終了する際、キャプチャされた回復ファイルと保存された整合性のある作業ファイルの間のマッピングが作成される。
【００３８】
しかし、ステップ２１２で、アプリケーションが、終了することなしに整合性のある回復ファイルを作成するが、整合性のある作業ファイルを保存するのに終了しなければならないタイプではなかった場合、プロセスは、次にステップ２２０で、アプリケーションが、整合性のある作業ファイルをシステムの中に保存するために終了しなければならないタイプであるかどうかを判定する。そのようなタイプである場合、ステップ２２２で、アプリケーションは、フォークさせられて、アプリケーションの複製が作成されることが可能である。次にステップ２２４で、終了コマンドが、複製されたアプリケーションに送られることが可能である。アプリケーションは、終了する場合、整合性のある作業ファイルを保存する。この結果、プロセスは、ユーザが対話しているアプリケーションのコピーが、予期される形で動作し続けていても、ステップ２２６で、回復のために保存されたファイルをキャプチャすることができる。
【００３９】
しかし、ステップ２２０を再び参照すると、アプリケーションが、整合性のある作業ファイルを保存するために終了しなければならないタイプではなかった場合、プロセスは、ステップ２２８で、オペレーティングシステムまたは全体的なコンピューティングデバイスの状態をキャプチャするのに十分なスペースが存在するかどうかを判定する。存在しない場合、プロセスは、ステップ２３０で単に終了する。というのは、回復のためにアプリケーションの情報を保存する様々な選択可能なオプションが尽きたからである。しかし、状態全体をキャプチャするのに十分なスペースが存在する場合、プロセスは、ステップ２３２で、仮想マシンを実行することができる。アプリケーションが実行されているシステムの状態を保存するため、仮想マシンは、好ましくは、アプリケーションの実行に先立って実行され、アプリケーションが、作業（ｗｏｒｋｉｎｇ）マシンによって作成された仮想環境のコンテキスト内で実行されることが可能であるようになる。ステップ２３４で、アプリケーションの前回の状態に関する必要とされるすべての情報を含む、仮想マシンの状態全体が、キャプチャされる。代替の実施形態は、オペレーティングシステムまたは全体的なコンピューティングシステムの状態全体を単にキャプチャすることである。ただし、仮想マシンの状態は、しばしば、単に仮想マシンによって作成されたいくつかのファイルを保存することによって保存することができるため、前のプロセスの方がより効率的である可能性がある。
【００４０】
回復システムの中にデータをアーカイブする場合の１つの大きな問題は、データを保存するのに必要とされるリソースの量である。この結果、多数のメッセージを一般に含む通信クライアントが、問題となる可能性がある。というのは、そのようなアプリケーションの状態を保存することにより、システムのディスクスペースおよびリソースに負担がかかり過ぎるきらいがあるからである。このため、プロセス中に保存される無駄な情報を少なくするメカニズムが、好ましくは、実施される。１つのそのような例が、通信クライアントにおけるスパムメッセージである。一実施形態では、スパムメッセージを保存するのを避けるため、追加のデータを有するインデックスが、各メッセージがスパムであるかどうかを示すために含められることが可能である。そのようなインプリメンテーションは、２つの異なる探索を含み、ユーザにいくらかの柔軟性を提供することが可能である。具体的には、ユーザは、データを回復する場合に、スパムインデックスデータを探索しない高速探索と、スパムインデックスデータを含むより低速の探索の間で選択を行うことができる。さらに、スパムインジケータは、インデックスデータの一部であるため、スパムである、またはスパムではないとしてメッセージにマークを付ける、またはマークを外す手段がユーザに与えられることが推奨され、あるいは最低限、自動的なユーザ既定が、アプリケーション設定に含められることが可能である。
【００４１】
代替の実施形態では、通信クライアントは、通信クライアントの状態が保存されるのに先立って、スパムを除去する（ｃｌｅａｎ  ｏｕｔ）ように強制されることも可能である。例えば、クライアントが終了できる前に、スパムメッセージが、自動的に、または手動で削除されることが可能である。この結果、データの回復は、好ましくは、スパムメッセージが削除された直後である状態において行われる。残念なことに、無駄な情報が保存される可能性は低くなるものの、ユーザは、スパムメッセージとして誤ってラベルが付けられた貴重な情報を失うリスクを冒す。
【００４２】
以上、タイムラインベースのコンピューティング環境を使用してデータを回復するためのシステムおよび方法が説明されたことが認められよう。本発明の原理を適用することができる多くの可能な実施形態に鑑みて、図面に関連して本明細書で説明した諸実施形態は、単に例示的であり、本発明の範囲を限定するものと解釈されるべきでないことを認識されたい。例えば、ソフトウェアとして示した例示した諸実施形態の一部の要素は、ハードウェアとして実装してもよく、その逆も同様であること、あるいは本発明の趣旨を逸脱することなく、例示した諸実施形態の構成および詳細を変更することが可能であることが、当業者には認識されよう。さらに、例示したプロセスは、本発明の趣旨を逸脱することなく、わずかに変更し、並べ替えることも可能である。したがって、本明細書で説明する本発明は、添付の特許請求の範囲に含まれる可能性があるすべてのそのような実施形態、およびそのような実施形態の均等物を企図している。
【図面の簡単な説明】
【００４３】
【図１】本発明の諸実施形態のすべて、または一部を実施することができるデバイスアーキテクチャの実施例を全体的に示すブロック図である。
【図２】本発明の諸実施形態のすべて、または一部を実施することができる典型的なコンピューティング環境の全体的構造を示す概略図である。
【図３】本発明の実施形態を実施するのに使用できる、タイムラインにわたってアプリケーションによって生成されたデータの典型的な構造を示す概略図である。
【図４】アプリケーションの回復可能なデータを保存するための、本発明の実施形態によるステップを示す流れ図である。
【符号の説明】
【００４４】
図１
２０  パーソナルコンピュータ
２１  処理装置
２２  システムメモリ
２７  ハードディスクドライブ
２８  磁気ディスクドライブ
３０  光ドライブ
３２  ハードディスクドライブインターフェース
３３  磁気ディスクドライブインターフェース
３４  光ディスクドライブインターフェース
３５  オペレーティングシステム
３６  アプリケーションプログラム
３７  他のプログラムモジュール群
３８  プログラムデータ
４０  キーボード
４２  マウス
４６  シリアルポートインターフェース
４７  モニタ
４８  ビデオアダプタ
４９  モニタ
５３  ネットワークインターフェース
５４  モデム
【図１】
0004847709.tif 000002
【図２】
0004847709.tif 000003
【図３】
0004847709.tif 000004
【図４】
0004847709.tif 000005