(57)【特許請求の範囲】
【請求項１】
コンピューティングシステムであって：
メモリと；
前記メモリに通信可能に結合されて、
アプリケーションのアプリケーションロジックを実行し、
前記アプリケーションロジックの実行中の１つ以上の機能の起動に基づいて生成される１つ以上のイベントの検出に応答して、前記１つ以上のイベントを記録することであって、該イベントを記録することは、前記１つ以上のイベントのうちのメインロジックイベントと、前記１つ以上のイベントのうちの前記メインロジックイベント以外の非メインロジックイベントを記録することを含み、
前記非メインロジックイベントを、該非メインロジックイベントに先行するメインロジックイベントとともにイベントブロックにラップし、
前記イベントブロックを将来の再生のためにメモリ内に格納する、
プロセッサと；
を備え、
前記イベントを記録することは、各イベントによって起動される機能をその起動順序に従って記録することと、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録することとを含む、
コンピューティングシステム。
【請求項２】
前記アプリケーションは、ウェブアプリケーション、ゲームアプリケーション又は生産性アプリケーションのうちの１つ以上である、
請求項１に記載のコンピューティングシステム。
【請求項３】
前記非メインロジックイベントは、ユーザ対話、タイミングイベント、ネットワークダウンロード、コールバック又はウェブワーカータスクのうちの１つ以上を含む、
請求項１に記載のコンピューティングシステム。
【請求項４】
前記プロセッサは更に、
前記記録された関連データを使用して、前記記録されたイベントを順番に再生する、
請求項１に記載のコンピューティングシステム。
【請求項５】
前記の記録すること及び前記の再生することは、ソフトウェアスタックの１つ以上のレイヤで行われる、
請求項４に記載のコンピューティングシステム。
【請求項６】
前記プロセッサ及びネットワークと通信可能に結合される通信インタフェースと；
ナビゲーションデバイス及びディスプレイを含み、前記プロセッサと通信可能に結合されるユーザインタフェースと；
前記アプリケーションロジックを記録し、前記プロセッサと通信可能に結合されるストレージと；
を更に備え、前記プロセッサは、前記アプリケーションロジックをロードして実行し、前記アプリケーションロジックの実行は、前記ユーザインタフェースを介して前記アプリケーションを提示することを含む、
請求項１乃至５のいずれか一項に記載のコンピューティングシステム。
【請求項７】
プロセッサに、
アプリケーションのアプリケーションロジックを実行させ、
前記アプリケーションロジックの実行中の１つ以上の機能の起動に基づいて生成される１つ以上のイベントの検出に応答して、前記１つ以上のイベントを記録させることであって、該イベントを記録することは、前記１つ以上のイベントのうちのメインロジックイベントと、前記１つ以上のイベントのうちの前記メインロジックイベント以外の非メインロジックイベントを記録することを含み、
前記非メインロジックイベントを、該非メインロジックイベントに先行するメインロジックイベントとともにイベントブロックにラップさせ、
前記イベントブロックを将来の再生のためにメモリ内に格納させ、
前記イベントを記録することは、各イベントによって起動される機能をその起動順序に従って記録することと、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録することとを含む、
コンピュータプログラム。
【請求項８】
前記プロセッサに更に、
前記記録された関連データを使用して、前記記録されたイベントを順番に再生させる、
請求項７に記載のコンピュータプログラム。
【請求項９】
前記の記録すること及び前記の再生することは、ソフトウェアスタックの１つ以上のレイヤで行われる、
請求項８に記載のコンピュータプログラム。
【請求項１０】
コンピューティング装置であって：
アプリケーションのアプリケーションロジックを実行するための手段と；
前記アプリケーションロジックの実行中の１つ以上の機能の起動に基づいて生成される１つ以上のイベントの検出に応答して、前記１つ以上のイベントを記録するための記録手段であって、該記録手段は、前記１つ以上のイベントのうちのメインロジックイベントと、前記１つ以上のイベントのうちの前記メインロジックイベント以外の非メインロジックイベントを記録する、記録手段と；
前記非メインロジックイベントを、該非メインロジックイベントに先行するメインロジックイベントとともにイベントブロックにラップするための手段と；
前記イベントブロックを将来の再生のためにメモリ内に格納するための手段と；
を備え、前記イベントを記録するための手段は、各イベントによって起動される機能をその起動順序に従って記録し、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録する手段を含む、
コンピューティング装置。
【請求項１１】
前記記録された関連データを使用して、前記記録されたイベントを順番に再生するための手段、
を更に備える、請求項１０に記載のコンピューティング装置。
【請求項１２】
前記の記録及び前記の再生は、ソフトウェアスタックの１つ以上のレイヤで行われる、
請求項１１に記載のコンピューティング装置。
【請求項１３】
アプリケーション処理の方法であって：
プロセッサによって、アプリケーションのアプリケーションロジックを実行することと；
前記プロセッサによって、前記アプリケーションロジックの実行中の１つ以上の機能の起動に基づいて生成される１つ以上のイベントの検出に応答して、前記１つ以上のイベントを記録することであって、該イベントを記録することは、前記１つ以上のイベントのうちのメインロジックイベントと、前記１つ以上のイベントのうちの前記メインロジックイベント以外の非メインロジックイベントを記録することを含むことと；
前記非メインロジックイベントを、該非メインロジックイベントに先行するメインロジックイベントとともにイベントブロックにラップすることと；
前記プロセッサによって、前記イベントブロックを将来の再生のためにメモリ内に格納することと；
を備え、前記イベントを記録することは、各イベントによって起動される機能をその起動順序に従って記録することと、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録することとを含む、方法。
【請求項１４】
前記記録された関連データを使用して、前記記録されたイベントを順番に再生すること、
を更に備える、請求項１３に記載の方法。
【請求項１５】
前記の記録すること及び前記の再生することは、ソフトウェアスタックの１つ以上のレイヤで行われる、
請求項１４に記載の方法。
【請求項１６】
請求項１３乃至１５のいずれか一項に記載の方法を実行する装置。
【請求項１７】
請求項１３乃至１５のいずれか一項に記載の方法を実行するチップセット及びメモリを備えるコンピューティングデバイス。
【請求項１８】
請求項７乃至９のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で説明される技術は、一般に、コンピューティングシステムアプリケーションの記録（record）及び再生（replay）に関する。
【背景技術】
【０００２】
アプリケーション分析、デバッグ、チューニング等にとって、コンピュータシステムアプリケーションの自動的かつ反復可能なテストケース又はワークロードを構築することは望ましいことがある。これは、複雑なアプリケーション、例えばウェブアプリケーション（例えばインターネット上でアクセスされるアプリケーション）及びランタイム等にとって、特に、高度かつ素早く進歩するＨＴＭＬ５及びオープンウェブプラットフォーム技術の観点から重大なことであり得る。そのような複雑なアプリケーションでは、アプリケーションフローを記録し、記録段階中にキャプチャされたものを正確に反復することは課題となり得る。再現性及び信頼性は、アプリケーションの様々な非決定論的特性によって大いに影響を受けることがあり、その結果、再生の際の一貫性のない挙動又は完全に誤った挙動につながることがある。
【０００３】
現在の記録及び再生のソリューションは、時間ベースの記録及び再生を用いる。このソリューションでは、同様のタイミングを使用して（例えば記録したタイムスタンプに基づいて）アプリケーションへの入力をキャプチャして反復し、アプリケーションフローを再作成することができる。再生中に、記録された入力は、これらの入力について記録されたタイミングを使用してシミュレートされる。そのようなソリューションの欠点は、一部のアプリケーション（例えばウェブアプリケーション）のランダム性が、再生段階の「時間」に関して、所望の挙動を予想外に変化させ得る、かなりの相違を生じ得ることである。例えば再生中の必要なリソースのロードが、記録中のロードよりも遅くなる可能性があり、これは、記録された時間に従って入力（例えばユーザアクション）に関連する更なるシミュレーションが依然として起こる場合に、誤った結果又は予期しない結果を招く可能性がある。別の例では、その順序が定義又は同期されていない場合、かつ／又はランタイムがマルチスレッドである場合にも、再生の際にコールバック（例えばタイマー、アニメーション等）が異なるシーケンスで起動される可能性がある。更に別の例では、記録段階中にタイムスタンプを記録するのに使用されるタイマーが正確でない場合、この不正確性が再生にも伝搬されて、完全に予期しないアプリケーションフローを生じる可能性がある。これらの問題を回避することを試みる現在のソリューションは時間ベースであり、十分に信頼性がない可能性がある。
【図面の簡単な説明】
【０００４】
【図１】一実施形態に係る、例示のアプリケーションのブロック図である。
【図２】一実施形態に係る、記録及び再生段階の例示のイベント順序のブロック図である。
【図３】一実施形態に係る、イベントの記録及び再生の方法を示す例示のフローチャートである。
【図４】一実施形態に係る、例示のコンピューティングデバイスのブロック図である。  図面において、参照番号の最も左の桁は、その参照番号が最初に現れる図面を特定していることがある。
【発明を実施するための形態】
【０００５】
本明細書で説明される実施形態では、アプリケーションイベントを、信頼性がある決定論的な方法で記録し再生することができる。この技術では、アプリケーションの非決定論的挙動を、機能（関数、function）起動のイベントベースの方法で記録し、再生中に、記録時と正確に同じ方法で挙動するように管理することができる。再生は、潜在的なランダム性の除去により、本質的に決定論的かつ反復可能であり得る。
【０００６】
上記で議論したように、現在使用されている記録及び再生技術は、同様のタイミングを使用して（例えば記録されたタイムスタンプに基づいて）アプリケーションへの入力をキャプチャして反復し、アプリケーションフローを再作成する、時間ベースの記録及び再生を用いる。再生中に、記録された入力が、これらの入力について記録されたタイミングを使用してシミュレートされる。しかしながら、これらの時間ベースの技術では、一部のアプリケーションのランダム性が、再生段階の「時間」に関して、所望の挙動を予想外に変化させ得る、かなりの相違を生じる可能性がある。図１は、この問題を簡単な手法で図示する、例示のアプリケーションのブロック図である。図１では、記録済みのゲームが、シミュレーションで再生されている。スクリーンショット１０２では、プレイヤ１０４が、プラットフォーム１６上へジャンプしようとしている。言い換えると、ジャンプイベントがまさに発信されようとしているところである。ゲームが、時間ベースの記録技術を使用して記録された場合、プレイヤ１０４が、スクリーンショット１０８に示されるようにプラットフォーム１０６上へのジャンプを成功させるためには、記録されるタイムスタンプが、元々プレイされていたゲーム内の順序と（正確でない場合は）ほぼ正確であることが必要とされ得る。タイムスタンプがほんのわずかでもずれた場合、プレイヤ１０４は、代わりに、スクリーンショット１１０に示されるように地面に落ちる可能性がある。再生中の非常に小さな差異が、予期とは大いに異なるようにアプリケーションを挙動させることになり、これは、再生されるシミュレーションが、その目的を満たすことを失敗させ得る。
【０００７】
本明細書で説明される実施形態では、使用される記録及び再生技術は、以前のソリューションのような時間ベースではない。むしろ、アプリケーションのトレース（すなわち記録）は、機能起動に基づく、イベントベースである。機能が、非決定論的順序で起動される場合も、あるいはこれらが非決定論的結果を生じる場合も、これらの機能をトレースへ記録することができる。非決定論的順序で起動され得る機能の例には、これらに限定されないが、コールバック（例えばアニメーションのコールバック）、ネットワークダウンロード、マルチスレッドウェブワーカー等が含まれ得る。このタイプの記録された機能の再生中に、機能は、記録された順序と同じ順序で再生される。非決定論的結果を生じ得る機能の例には、これらに限定されないが、例えばアプリケーションプログラミングインタフェース（ＡＰＩ）（例えばMath.random()、Date.now()等のようなJavaScript（登録商標）ＡＰＩ）が含まれ得る。このタイプの記録された機能の再生中に、記録されたものと同じ出力が生成される。出力が同じになるようにアプリケーションに対する外部入力が固定され得るので、この方法で記録されるアプリケーションは、信頼性があり反復可能である。
【０００８】
実行中のアプリケーションは、これらに限られないが、ユーザ入力、タイミングイベント、（例えばゲームの複数のプレイヤが存在する場合）ネットワークイベント等を含め、複数のイベントを伴う。各イベントは、対応するイベントハンドラ機能によって処理され得る。イベントは、非決定論的順序で起こり、かつ／又は非決定論的結果を返し得る。記録中に、各トップレベルの機能の起動が、これらの順序に従って記録され得る。このような順序は機能実行シーケンスを形成し得る。これは、一実施形態に従って図２で明らかにされている。図２の記録段階２２０では、メインのロジック機能２２２（Ａ１）が記録され、続いて順番に、ユーザ入力２２４（Ｂ１）、ネットワークイベント２２６（Ｄ１）、メインロジック機能２２８（Ａ２）及びタイミングイベント２３０（Ｃ１）の記録が続く。したがって、記録されるアプリケーションは、全体の順序２３２「Ａ１  Ｂ１  Ｄ１  Ａ２  Ｃ１」を含む。機能とともに、例えば機能パラメータ（function  parameter）及び戻り値（例えばＡＰＩの戻り値）を含む、各機能に関連付けられるデータも記録され得る。この結果、記録後には、関連する実行データコンテキストとともに、機能起動順序の完全なトレースが得られ、これにより、再生時、最初に実行されたアプリケーションのロジック挙動を完全に決定することができる。
【０００９】
図２の再生段階２３４では、機能Ａ１、Ｂ１、Ｄ１、Ａ２及びＣ１の実行フロー及びスケジューリングが、記録段階２２０中に記録されたトレースに従って管理され得る。アプリケーションの再生は、アプリケーションの実行が非決定論的イベントハンドラによる影響を受けないように、イベントフリーの方法で実行されるように管理され得る。様々なイベントが、自動再生中（例えばユーザ入力）に存在しないようになるか、あるいは抑制されることになる。抑制されることになるイベント（例えばタイミングイベント、ネットワークイベント等）は、フックされてバイパスされ得る。アプリケーションフローの間にいかなる未管理イベントも入れることなく、全ての機能の実行順序が、制御された方法でメインロジックによって決定され得る。これらの非メインロジックのイベント（例えばユーザ入力イベント、タイミングイベント、ネットワークイベント等）は、記録された機能の実行順序に従って、イベントハンドラを含むよう、その先行メインロジックイベントへラップされ得る。図２に図示される例では、メインロジック機能Ａ１は、イベントブロック２３６（「Ａ１  Ｂ１  Ｄ１」）へラップされ、メインロジック機能Ａ２は、イベントブロック２３８（「Ａ２  Ｃ１」）へラップされる。したがって、再生段階２３４では、全体の機能実行シーケンス２４０は、「Ａ１  Ｂ１  Ｄ１  Ａ２  Ｃ１」のままである。記録された機能パラメータ及び戻り値を再生中に提供して整列せることができ、その結果、全ての機能が記録段階２２０と同じデータコンテキストで実行されることになる。同じデータコンテキストの下で同じ機能の起動順序を用いて、アプリケーションを、記録段階と正確に同じロジック及び決定論的挙動を用いて完全に再生することができる。
【００１０】
諸実施形態では、ソフトウェアスタックの異なるレイヤで記録及び再生する、複数の可能性がある実装が存在し得る。例えば本明細書で説明される技術は、スクリプトエンジン（例えばJavaScript（登録商標）エンジン）、アプリケーションレイヤ（例えばJavaScript（登録商標））、（例えばエクステンションとしての）ブラウズエンジン、オペレーティングシステム等のうちの１つ以上で実装され得る。これらの例は、単に説明の目的のためであり、限定するようには意図されていない。
【００１１】
例として、様々なアプリケーション（例えばウェブアプリケーション）を記録して再生するツールを（例えばJavaScript（登録商標）で）書くことができる。アプリケーションのフローは、ツールによってトレースされ得る（例えばアニメーションコールバック、タイムアウトコールバック、ユーザイベントハンドラ等の）様々な機能によって駆動され得る。アニメーションコールバックは、例えばスクリーンペイントが必要とされるときにブラウザによって起動されるので、ツールは、メインアプリケーションロジックとしてアニメーションコールバックの実行を処理することができる。このようにして、アプリケーションのレンダリングの性質が維持され得る。タイムアウトコールバック及びユーザイベントハンドラは、記録トレースに従ってツールによって自動的に起動されることになるイベントとして扱われ得る。ツールは、組込機能（例えばツールがJavaScript（登録商標）で書かれている場合は組込JavaScript（登録商標）機能）をフックしてワープし、スクリプト言語の動的な特徴を用いることができる。
【００１２】
図３は、実施形態に係る、イベント記録及び再生の方法３００を示す例示のフローチャートである。３０２において、アプリケーションのアプリケーションロジックが実行され得る。３０４において、アプリケーションに関連付けられるイベントが、これらのイベントに関連付けられる機能の実行に基づいて記録され得る。イベントを記録することは、トップレベルのイベントを、その順序に従って記録することを含んでよく、また、例えば使用される機能パラメータ及び戻り値のように、記録されるイベントに関連するデータを記録することを含んでもよい。３０６において、記録されたイベントが、将来の再生のためにメモリ内に格納され得る。３０８において、再生中に実行しようとする、未記録のイベントを抑制しつつ、記録されたイベントが、この記録されたイベントに関連付けられる記録されたデータを使用して順番に再生され得る。
【００１３】
本明細書で開示される１つ以上の特徴は、別個の又は集積回路ロジック、特定用途向け集積回路（ASIC）ロジック及びマイクロコントローラを含め、ハードウェア、ソフトウェア、ファームウェア又はその組合せで実装されてよく、ドメイン固有の集積回路パッケージの一部として、あるいは集積回路パッケージの組合せとして実装されてもよい。本明細書で使用されるとき、ソフトウェア及びファームウェアという用語は、少なくとも１つのコンピュータ読取可能媒体を含むコンピュータプログラム製品を指す。コンピュータ読取可能媒体は、コンピュータシステムに、本明細書で開示される１つ以上の特徴及び／又は特徴の組合せを実行させるコンピュータ実行可能命令等のコンピュータプログラムを有する。コンピュータ読取可能媒体は、一時的であっても、非一時的であってもよい。一時的なコンピュータ読取可能媒体の例は、ローカル又はワイドエリアネットワークを通して、あるいはインターネット等のネットワークを通して、無線周波数又は導電体を介して伝送されるデジタル信号であり得る。非一時的コンピュータ読取可能媒体の例は、コンパクトディスク、フラッシュメモリ、SRAM、DRAM、ハードドライブ、半導体ドライブ又は他のデータ記憶デバイス等であり得る。
【００１４】
上記のように、諸実施形態では、本明細書で説明される処理の一部又は全てがハードウェア、ソフトウェア及び／又はファームウェアとして実装され得る。そのような実施形態は、図４に図示される例示のコンピューティングシステム４５０のコンテキストで説明され得る。コンピューティングシステム４５０は、リンク４５８又は同様の機構によってメモリ４５４及び１つ以上の二次記憶デバイス４５６に接続される、１つ以上のプロセッサ４５２を含み得る。プロセッサ４５２は、本明細書で説明される方法を実施するための１つ以上の論理ユニットを含み得る。当業者には、論理ユニットの機能が単一の論理ユニットによって実行されてもよく、複数の論理ユニットによって実行されてもよいことが認識されよう。コンピューティングシステム４５０は、任意選択で、通信インタフェース４６０及び／又はユーザインタフェースコンポーネント４６２を含み得る。通信インタフェース４６０は、ハードウェア又はハードウェアとソフトウェアの組合せで実装されてよく、ネットワークへの有線又は無線ネットワークインタフェースを提供し得る。ユーザインタフェースコンポーネント４６２は、例えばタッチスクリーン、ディスプレイ、１つ以上のユーザ入力コンポーネント（例えばキーボード、マウス等）、スピーカ等又はその任意の組合せを含み得る。本明細書で説明される方法を介して処理されるデータ及び／又はグラフィクスは、１つ以上のユーザインタフェースコンポーネント上に表示され得る。１つ以上の二次記憶デバイス４５６は、例えば１つ以上のハードドライブ等であってよく、プロセッサ４５２によって実行されるロジック４６４（例えばアプリケーションロジック）を記憶することができる。一実施形態において、プロセッサ４５２はマイクロプロセッサであってよく、ロジック４６４は、プロセッサ４５２による実行のためにメモリ４５４に記憶又はロードされて、本明細書で説明される機能を提供する。本明細書で説明される実施形態に従って、記録されたイベント及び関連するデータがメモリ４５４に記憶されてもよい。図示されていないが、コンピューティングシステム４５０は追加のコンポーネントを含んでもよいことに留意されたい。
【００１５】
本明細書で説明される技術は、信頼性がある決定論的な方法で、アプリケーションイベントを記録及び再生することを可能にする。アプリケーションの非決定論的挙動は、機能起動イベントベースの方法で記録され、再生中に、記録されたときと正確に同じ方法で挙動するように管理され得る。再生は本質的に、潜在的なランダム性の除外により、決定論的で反復可能である。上記で議論したように、ワークロード、ベンチマーク及びテストケースのために信頼性がある決定論的な記録及び再生技術の使用は、アプリケーション分析、デバッグ及びチューニングに重要であり得る。本明細書で説明される技術は、特に、豊富なアニメーション及びユーザ対話を含み得る高度なウェブアプリケーション（例えばウェブワーカー、ウェブベースのゲーム（例えばスライシングゲーム、シューティングゲーム、カーレーシングゲーム等）、オンライン生産ツール（電子メール、ドキュメント管理システム等）等）に有益である。そのような新しいウェブアプリケーションは、従来の記録及び再生ソリューションを使用して一貫性のある一致した方法で再生することは非常に困難であり得る。というもの、非常に小さな相違が、再生中の挙動では大きな相違となり得るからである。本明細書で説明される技術は、従来のソリューションの潜在的な問題を回避する。例えば一部のアプリケーションでは、時間ベースの技術は再生時に予期しない挙動につながることがあるので、タイムスタンプではなく、画面又はフレームの変化に基づいて機能を起動することによって、より良い再生結果を得ることができる。
【００１６】
本明細書で説明される技術を使用することに様々な利点が存在する。例えば１つの利点では、アプリケーションを、あるプラットフォームで記録し、信頼性及び反復性を失うことなく、別のプラットフォーム上で再生することができることにある。多くの他の利点も考えられ得る。
【００１７】
本明細書で使用される特定の例及びシナリオは、理解を容易にするためであり、限定するものではない。本明細書で説明される特徴は、当業者には理解されるように多くの他のコンテキストにおいて使用されてもよい。
【００１８】
以下の例は、更なる実施形態に関する。
【００１９】
例１は、メモリと、メモリに通信可能に結合されるプロセッサとを備えるコンピューティングシステムを含み、プロセッサが、アプリケーションのアプリケーションロジックを実行し；アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録し；記録されたイベントを将来の再生のためにメモリ内に格納する。
【００２０】
例２は、例１に係る主題を含んでよく、アプリケーションは、ウェブアプリケーション、ゲームアプリケーション又は生産性アプリケーションのうちの１つ以上である。
【００２１】
例３は、例１又は例２に係る主題を含んでよく、イベントは、ユーザ対話、タイミングイベント、ネットワークダウンロード、コールバック又はウェブワーカー（web  worker）タスクのうちの１つ以上を含む。
【００２２】
例４は、例１乃至例３のいずれか１つに係る主題を含んでよく、イベントを記録することは、各イベントのトップレベルの機能をその順序に従って記録することと、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録することとを含む。
【００２３】
例５は、例４に係る主題を含んでよく、プロセッサは更に、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生する。
【００２４】
例６は、例５に係る主題を含んでよく、記録すること及び再生することは、ソフトウェアスタックの１つ以上の異なるレイヤで行われる。
【００２５】
例７は、例１乃至例６のいずれか１つに係る主題を含んでよく、イベントを記録することは、非メインロジックのイベントを、その先行するメインロジックイベントにラップすることを含む。
【００２６】
例８では、例１乃至例７のうちのいずれか１つが、任意選択で、プロセッサ及びネットワークと通信可能に結合される通信インタフェースと；ナビゲーションデバイス及びディスプレイを含み、プロセッサと通信可能に結合されるユーザインタフェースと；アプリケーションロジックを記録し、プロセッサと通信可能に結合されるストレージと；を含んでよく、プロセッサは、アプリケーションロジックをロードして実行し、アプリケーションロジックの実行は、ユーザインタフェースを介してアプリケーションを提示することを含む。
【００２７】
例９は、コンピュータプログラムロジックを有する少なくとも１つのコンピュータ読取可能媒体を含む少なくとも１つのコンピュータプログラム製品を含んでよく、コンピュータプログラムロジックは、プロセッサに：アプリケーションのアプリケーションロジックを実行させ；アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録させ；記録されたイベントを将来の再生のためにメモリ内に格納させるロジックを含む。
【００２８】
例１０は、例９に係る主題を含んでよく、イベントを記録することは、各イベントのトップレベルの機能をその順序に従って記録することと、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録することとを含む。
【００２９】
例１１は、例１０に係る主題を含んでよく、コンピュータプログラムロジックは更に、プロセッサに、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生させるロジックを含む。
【００３０】
例１２は、例１１に係る主題を含んでよく、記録すること及び再生することは、ソフトウェアスタックの１つ以上の異なるレイヤで行われる。
【００３１】
例１３は、例９乃至１２のいずれか１つに係る主題を含んでよく、イベントを記録することは、非メインロジックのイベントを、その先行するメインロジックイベントにラップすることを含む。
【００３２】
例１４は、コンピューティング装置であって：アプリケーションのアプリケーションロジックを実行するための手段と；アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録するための手段と；記録されたイベントを将来の再生のためにメモリ内に格納するための手段と；を備える、コンピューティング装置を含み得る。
【００３３】
例１５は、例１４に係る主題を含んでよく、イベントを記録するための手段は、各イベントのトップレベルの機能をその順序に従って記録し、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録するための手段を含む。
【００３４】
例１６において、例１５は、任意選択で、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生するための手段を更に含み得る。
【００３５】
例１７は、例１６に係る主題を含んでよく、記録及び再生は、ソフトウェアスタックの１つ以上の異なるレイヤで行われる。
【００３６】
例１８は、例１４乃至１７のいずれか１つに係る主題を含んでよく、イベントを記録するための手段は、非メインロジックのイベントを、その先行するメインロジックイベントにラップするための手段を含む。
【００３７】
例１９は、アプリケーション処理の方法を含んでよく、当該方法は：プロセッサによって、アプリケーションのアプリケーションロジックを実行するステップと；プロセッサによって、アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録するステップと；プロセッサによって、記録されたイベントを将来の再生のためにメモリ内に格納するステップと；を備える。
【００３８】
例２０は、例１９に係る主題を含んでよく、イベントを記録するステップは、各イベントのトップレベルの機能をその順序に従って記録するステップと、機能パラメータ又は戻り値のうちの１つ以上を含む関連データを記録するステップを含む。
【００３９】
例２１において、例２０は、任意選択で、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生するステップを含み得る。
【００４０】
例２２は、例２１に係る主題を含んでよく、記録するステップ及び再生するステップは、ソフトウェアスタックの１つ以上の異なるレイヤで行われる。
【００４１】
例２３は、例１９乃至２２のいずれか１つに係る主題を含んでよく、イベントを記録するステップは、非メインロジックのイベントを、その先行するメインロジックイベントにラップするステップを含む。
【００４２】
例２４は、コンピューティングデバイス上で実行されたことに応答して、該コンピューティングデバイスに例１９乃至２３のいずれか１つに係る方法を実行させる複数の命令を備える、少なくとも１つのマシン読取可能媒体を含み得る。
【００４３】
例２５は、例１９乃至２３のいずれか１つに係る方法を実行する装置を含み得る。
【００４４】
例２６は、例１９乃至２３のいずれか１つに係る方法を実行するコンピュータシステムを含み得る。
【００４５】
例２７は、例１９乃至２３のいずれか１つに係る方法を実行するマシンを含み得る。
【００４６】
例２８は、例１９乃至２３のいずれか１つに係る方法を実行するための手段を備える装置を含み得る。
【００４７】
例２９は、例１９乃至２３のいずれか１つに係る方法を実行するチップセット及びメモリを備えるコンピューティングデバイスを含み得る。
【００４８】
本明細書では、機能、特徴及びその関係を示す機能構築ブロックを用いて方法及びシステムが開示されている。これらの機能構築ブロック図の境界の少なくとも一部は、説明の便宜性のために本明細書において任意に適宜されている。指定される機能及びその関係が適切に実行される限り、代替的な境界を適宜してもよい。
【００４９】
本明細書では、様々な実施形態が開示されるが、これらは、限定ではなく、単なる例示として提示されていることを理解されたい。本明細書で開示される方法及びシステムの範囲から逸脱することなく、形式及び詳細における様々な変更を行ってもよいことが当業者には明らかであろう。したがって、特許請求の範囲の広さ及び範囲は、本明細書で開示される例示の実施形態のいずれによっても限定されるべきではない。
【００５０】
本明細書及び特許請求の範囲で使用されるとき、「〜の１つ以上」という用語によって結合されるアイテムの列挙は、列挙される用語の任意の組合せを意味する可能性がある。例えば「Ａ、Ｂ又はＣのうちの１つ以上」及び「Ａ、Ｂ及びＣのうちの１つ以上」というフレーズは、Ａ；Ｂ；Ｃ；Ａ及びＢ；Ａ及びＣ；Ｂ及びＣ；あるいはＡ、Ｂ及びＣを意味する可能性がある。
【図１】
0006529987.tif 000002
【図２】
0006529987.tif 000003
【図３】
0006529987.tif 000004
【図４】
0006529987.tif 000005