(57)【要約】【課題】  動的ユーザ・インターフェースを有するアプリケーションを含めた様々なアプリケーションでのグラフィカル・ユーザ・インターフェース（「ＧＵＩ」）のアクティビティを、記録し確実に再現するための技術およびツールを提供すること。【解決手段】  この技術およびツールは、組み合わせてまたは別個に用いることができる。例えば、記録ツールは、ＧＵＩベースのアプリケーションから、内部マクロ・データを不透明トークンとして受け取り、このトークンは、再生コードに組み込まれる。再生ツールは、アプリケーション内部レコーダによる再生のために、組み込まれたトークンを元のアプリケーションに渡して返すことにより、この再生コードを実行する。【選択図】  図２
2006018827.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実行命令であって、それによってプログラムされたコンピュータ・システムに、
グラフィカル・ユーザ・インターフェース・ベースのアプリケーションから、１つまたは複数の、記録されたステップの不透明トークンとして渡される複数の内部マクロ・アクションを受け取ること、および、
前記１つまたは複数の記録ステップ不透明トークンを、外部ＵＩレコーダを用いて記録すること
を備える方法を実行させるコンピュータ実行可能命令を格納することを特徴とするコンピュータ可読媒体。
【請求項２】
前記複数の内部マクロ・アクションは、前記アプリケーションの内部マクロ・レコーダによって生成され、前記１つまたは複数の記録ステップ不透明トークンは、前記外部ＵＩレコーダによって取り扱われ、前記アプリケーションの前記内部マクロ・レコーダとの相互協調処理を行うことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記方法は、
第２のグラフィカル・ユーザ・インターフェース・ベースのアプリケーションに対するユーザの対話に関する、複数のシステム・ユーザ・インターフェース・アクションを受け取ること、
前記複数のシステム・ユーザ・インターフェース・アクションについて、１つまたは複数のシステム・ユーザ・インターフェース・トークンを生成すること、および、
前記１つまたは複数のシステム・ユーザ・インターフェース・トークンを、前記外部ＵＩレコーダを用いて記録すること
をさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項４】
前記方法は、
第２のグラフィカル・ユーザ・ベース・アプリケーションに対するユーザの対話に関する、複数の生のユーザ・アクションを受け取ること、および、
前記複数の生のユーザ・アクションを、前記外部ＵＩレコーダを用いて記録すること
をさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項５】
前記方法は、
前記１つまたは複数の記録ステップ不透明トークンを、前記外部ＵＩレコーダにおいて関連データに関連付けることをさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項６】
前記関連データは、前記アプリケーションに関するアプリケーション識別情報を備えることを特徴とする請求項５に記載のコンピュータ可読媒体。
【請求項７】
前記１つまたは複数の記録ステップ不透明トークンを、バッチ・モードで、前記アプリケーションから前記外部ＵＩレコーダが受け取ることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項８】
前記１つまたは複数の記録ステップ不透明トークンを、対話モードで、前記アプリケーションから前記外部ＵＩレコーダが受け取ることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項９】
前記外部ＵＩレコーダは、複数の異なるアプリケーションの複数の異なる内部マクロ・レコーダと相互協調処理を行い、
前記複数の異なるアプリケーションは、前記グラフィカル・ユーザ・インターフェース・ベースのアプリケーションを含む
ことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項１０】
前記方法は、
前記１つまたは複数の記録ステップ不透明トークンを、前記外部ＵＩレコーダから前記アプリケーションに返すこと、および、
前記複数の内部マクロ・アクションを再生すること
をさら備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項１１】
コンピュータ実行命令であって、それによってプログラムされたコンピュータ・システムに、
ソフトウェア・プログラムで使用される第１の記録言語で表現される、１つまたは複数のアクションからなるセットを受け取ること、および、
１つまたは複数のアクションからなる前記セットを、システムＵＩレコーダ・プログラムの１つまたは複数のレコーダ・トークンからなるセットとして表現することであって、前記１つまたは複数のレコーダ・トークン内で前記１つまたは複数のアクションが不透明になるように、前記１つまたは複数のレコーダ・トークンが前記１つまたは複数のアクションをカプセル化しているように、表現すること
を備える方法を実行させるコンピュータ実行可能命令を格納することを特徴とするコンピュータ可読媒体。
【請求項１２】
前記ソフトウェア・プログラムは、１つまたは複数のレコーダ・トークンからなる前記セットを生成することを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記システムＵＩレコーダ・プログラムは、１つまたは複数のレコーダ・トークンからなる前記セットを生成することを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
前記方法は、
第２のソフトウェア・プログラムで使用される第２の記録言語で表現される、１つまたは複数のアクションからなる第２のセットを受け取ること、および、
１つまたは複数のアクションからなる前記第２のセットを、前記システムＵＩレコーダ・プログラムのための、１つまたは複数のレコーダ・トークンからなる第２のセットとして表現すること
をさらに備えることを特徴とする、請求項１１に記載のコンピュータ可読媒体。
【請求項１５】
前記方法は、
システムＵＩ記録言語で表現される、１つまたは複数のアクションからなる第２のセットを受け取ること、および、
１つまたは複数のアクションからなる前記第２のセットを、前記システムＵＩレコーダ・プログラムのための、１つまたは複数のレコーダ・トークンからなる第２のセットとして表現すること
をさらに備えることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１６】
前記１つまたは複数のレコーダ・トークンを、バッチ・モードで、前記ソフトウェア・プログラムから前記システムＵＩレコーダ・プログラムが受け取ることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１７】
前記１つまたは複数のレコーダ・トークンを、対話モードで、前記ソフトウェア・プログラムから前記システムＵＩレコーダ・プログラムによって受け取られることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１８】
ユーザ・インターフェース・アクティビティの記録および再生を行うためのシステム・ワイドＵＩ記録ツールであって、
複数の異なるアプリケーションに対してのユーザ・インターフェース・アクティビティに関連付けられた第１のデータ・セットで、前記複数の異なるアプリケーションに対する複数の固有記録言語のうちのいずれかで表現される第１のデータ・セットを収集するためのモジュールと、
前記収集された第１のデータ・セットの少なくとも一部分を、トークンから成るセットとして取り扱うためのモジュールと、
前記第１のデータ・セットが関連付けられる前記複数の異なるアプリケーションそれぞれに、前記トークンを供給することにより、前記ユーザ・インターフェース・アクティビティの再生を管理するためのモジュールと
を備えることを特徴とするツール。
【請求項１９】
トークンの前記セットを出力コードに変換するためのモジュールをさらに備えることを特徴とする請求項１８に記載のツール。
【請求項２０】
前記モジュールは拡張可能であることを特徴とする請求項１８に記載のツール。
【請求項２１】
第２のユーザ・インターフェース・アクティビティに関連する、非固有のシステムＵＩ記録言語で表現される、第２のデータ・セットを収集するためのモジュールと、
前記第２のデータ・セットを再生することにより、前記第２のユーザ・インターフェース・アクティビティの再生を管理するためのモジュールと
をさらに備えることを特徴とする請求項１８に記載のツール。
【請求項２２】
前記第１のデータ・セットはマクロ言語命令を備えることを特徴とする請求項１８に記載のツール。
【請求項２３】
前記第１のデータ・セットの収集は、バッチ・モードで行われることを特徴とする請求項１８に記載のツール。
【請求項２４】
前記第１のデータ・セットの収集は、対話モードで行われることを特徴とする請求項１８に記載のツール。
【請求項２５】
コンピュータ実行命令であって、それによってプログラムされたコンピュータ・システムに、
１つまたは複数のレコーダ・トークンからなるセットを、ソフトウェア・プログラムの内部レコーダによる再生のために、システムＵＩレコーダ・プログラムから前記ソフトウェア・プログラムに渡すこと、および、
１つまたは複数のレコーダ・トークンからなる前記セットから、前記ソフトウェア・プログラムによって使用される内部記録言語で表現され、それによって、前記システムＵＩレコーダ・プログラムが、前記ソフトウェア・プログラムの前記内部レコーダと相互協調処理を行うことになる、１つまたは複数の内部レコーダ・アクションからなるセットを抽出すること
を備える方法を実行させるコンピュータ実行可能命令を格納することを特徴とするコンピュータ可読媒体。
【請求項２６】
前記方法は、
前記第２のソフトウェア・プログラムの第２の内部レコーダによる再生のために、１つまたは複数のレコーダ・トークンからなる第２のセットを、前記システムＵＩレコーダ・プログラムから第２ソフトウェア・プログラムに渡すこと、および、
１つまたは複数のレコーダ・トークンからなる前記第２のセットから、前記第２のソフトウェア・プログラムによって使用される第２の内部記録言語で表現され、それによって、前記システムＵＩ記録プログラムが、前記第２のソフトウェア・プログラムの前記第２の内部レコーダと相互協調処理を行うことになる、１つまたは複数の内部レコーダ・アクションからなる第２のセットを、抽出すること
をさらに備えることを特徴とする請求項２５に記載のコンピュータ可読媒体。
【請求項２７】
前記方法は、
第２のソフトウェア・プログラムをプログラムで制御するために、システムＵＩ記録言語で表現され、それによって、前記システムＵＩレコーダ・プログラムが、前記第２のソフトウェア・プログラムと相互協調処理を行うことになる、１つまたは複数のレコーダ・トークンからなる第２のセットを再生することをさらに備えることを特徴とする請求項２５に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
様々なグラフィカル・ユーザ・インターフェース・ベースのアプリケーションにおけるユーザのアクティビティを記録するためのツールおよび手法（techniques）に関する。より、詳細には、例えば、システムワイド（system-wide）な記録ツールが、アプリケーション固有のマクロまたはＵＩ記録ならびに非固有のマクロまたはＵＩ記録をサポートする。
【背景技術】
【０００２】
Ｉ．グラフィカル・ユーザ・インターフェース
多くの現代のコンピュータ・システムでは、ユーザは、グラフィカル・ユーザ・インターフェース（「ＧＵＩ」）を介してソフトウェア・プログラムと対話している。基本的に、ＧＵＩは、コンピュータとユーザの間のインターフェースであり、ユーザ入力を求め、プログラムの出力を提示するために、単に言葉だけでなく画像を用いる。典型的なＧＵＩは、ユーザ・インターフェース要素（「ＵＩ要素」）から構成され、これは、ユーザに見える、聞こえる、あるいは、ユーザが知覚または対話する、コンピュータ・システムまたはプログラムの外観（aspects）である。例えば、ＵＩ要素には、アイコン、ボタン、ダイアログ・ボックス、編集ボックス、リスト・ボックス、コンボ・ボックス、スクロール・バー、ピック・リスト、プッシュ・ボタン、ラジオ・ボタン、および、ワールド・ワイド・ウェブのページの様々なコンポーネント（例えばハイパーリンクや画像）などのアイテムが含まれる。典型的なコンピュータ・プログラムでは、誇張なしに、数千ものＵＩ要素に遭遇するのは通常のことである。
【０００３】
ＧＵＩの個々の要素は、ユーザに単一のアイテムに見えることがあるが、実際は、いくつかの別々のアイテムから構成されていたり、または下位要素が一緒に組み合わされていたりすることがある。例えば、ツール・バー・アイテムは、リスト要素、コンボ・ボックス要素、およびスクロール・バー要素などから構成される。さらに、これらの各下位要素それ自体が、他の下位要素から構成されることもある。このように、ＵＩ要素は、より複雑な他のＵＩ要素を構築するための構築ブロックの役割をすることができる。このような手法は、ユーザ・インターフェースを管理するソフトウェアが、一定の共通要素の定義を、それらを複合要素に組み立てるときに再利用することができるので便利である。
【０００４】
ＧＵＩ環境における多くのＵＩ要素は、プログラムの機能を表し、コンピュータ・スクリーン上に表示され、したがって、ユーザは、それらを選択し、強調表示し、それにアクセスし、操作を行うことによって、プログラムと対話することができる。このユーザの対話は、画面上の（通常マウスまたはキーボードによって制御される）ポインタを操作し、ポインタがＵＩ要素を指しているときに、ボタンを押すかまたはクリックすることによって行われる。例えば、ワード・プロセッサでは、ユーザは、マウスを操作することにより、プログラムのメニュー・バー上の項目を選択すること、ツール・バーにあるアイコンをクリックすること、または、表示ウィンドウ内の文字のブロックを強調表示することができる。同様に、ユーザは、コンピュータ・アプリケーションと対話するためにキーボードによる入力を用いることができる。例えば、ワード・プロセッサ・プログラムでは、ユーザは、「ＡＬＴ−Ｆ」、「ＣＴＲＬ−Ｂ」、または他の予め定義されたキー・ストロークの組合せを押すことによって、プログラムの諸機能にアクセスすることができる。マウスまたはキーボードからの入力に基づいて、コンピュータは、画面上に表示されるものに対して追加、変更、および操作を行うことができる。ＧＵＩ技術は、ユーザがコンピュータ・システムと対話するための便利でユーザ・フレンドリな環境を提供する。
【０００５】
ＩＩ．ＵＩオートメーション
ＵＩオートメーション（「ＵＩＡ」）は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）向けのアクセシビリティのフレームワークであり、ユーザ・インターフェース（「ＵＩ」）に関わる情報へのプログラムでのアクセスを可能にすることにより、支援する技術製品（assistive technology products）および自動化された試験（test）のフレームワーク（automated test frameworks）の必要性に対処することを目的としている。例えば、ＵＩＡは、スクリーン・リーダ・プログラム（screen reader program）がワード・プロセッサのＵＩに関する情報にアクセスすることを可能にし、これにより、リーダ・プログラムにその必要とする情報を与え、視覚障害を持つユーザに聴覚的手がかりを提供することを可能にする。ＵＩＡは、複数のメソッドから成るアプリケーション・プログラム・インターフェース（「ＡＰＩ」）ののセットを介して、ＵＩを作成し、それと対話するための、適切に構造化されたメカニズムを提供する。コントロールおよびアプリケーションの開発者は、ＵＩＡ  ＡＰＩセットを使用して、プログラム・メニューまたは他のＵＩ要素にアクセスする既存または（他の人々により開発され得る）新規のソフトウェアを介して、彼らの製品を様々なユーザに取ってより利用しやすくする。例えば、点字スクリーン（braile screen）、スクリーン・リーダ（ナレータ）、拡大鏡（magnifier）、およびＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）内の他のソフトウェアは、ＵＩＡを利用して、そうしなければアクセスすることができないユーザに対してコンピュータの使用を容易にすることができる。
【０００６】
実際問題として、ＵＩオートメーションは、ツリー構造に配置されたＵＩ要素の階層を使用して、信頼できるＵＩ情報をオペレーティング・システムおよびコンピュータ・アプリケーションに提供する。ＧＵＩの要素は、それらの構成を正確に記述するために、互いにその内部にネストされるものと見なすことができる。例えば、ツリー構造の最上部に、デスクトップ要素があり、この要素は、ＧＵＩの「デスクトップ」の表現、またはデフォルトの背景領域である。デスクトップ要素は、起動されユーザの命令により実行できる状態にあるアプリケーション・プログラムのためのいくつかのアプリケーション要素をその内部に有する（例えば典型的なＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のデスクトップは、ロードされ実行できる状態にある、Ｍｉｃｒｏｓｏｆｔ  ＷｏｒｄやＭｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌなどいくつかのアプリケーションのインスタンスを有することができる）。ツリー構造階層のより低い階層には、アプリケーションに関連付けられたフレームがある（例えば、ワード・プロセッサ・アプリケーションは、いつでもユーザが見ることができるいくつかのフレームを有することができる）。各フレームの内部にいくつかのドキュメントがある場合があり、各ドキュメントは、その内部にいくつかのＵＩ要素（例えば、ボタン、リスト・ボックスなど）を含む。ＵＩ要素それ自体が、他のＵＩ要素から構成されることがある。例えば、ダイアログ・ボックスまたはコンボ・ボックスは、ボタン・コントロールなど他のＵＩ要素を含む。さらに、ボタン要素が、さらに別のＵＩ要素を含むこともできる。このようなネスティングは、ユーザ・インターフェースおよびその構成要素に応じて、任意により深くすることができ、任意の数の分岐を含むことができる。
【０００７】
いくつかのオペレーティング・システム・プラットフォームでは、ＵＩ要素のインスタンスには、他のＵＩ要素から特定のＵＩ要素を見分けるのを助ける識別子が、割り当てられる。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ベースのオペレーティング・システムでは、アプリケーションが、所与のデスクトップのコンテキストにおいてアプリケーションを識別するモジュール識別子に関連付けられる。また、いくつかのユーザ・インターフェース・プラットフォーム（例えばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｊａｖａ（登録商標）Ｓｗｉｎｇ）では、ある種のＵＩ要素について数値識別子（コントロールＩＤ）を使用する。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）環境などいくつかのコンピューティング環境では、ＵＩ要素は、しばしば、それらが属するコントロール・クラスに関連付けられるクラス名に関連付けられている。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ベースのシステムでは、コンボ・ボックス、リスト・ボックス、およびボタンなど共通ＵＩ要素は、それぞれ、ＣｏｍｂｏＢｏｘクラス、ＬｉｓｔＢｏｘクラス、およびＢｕｔｔｏｎクラスに関連付けられる。同様に、他のＵＩフレームワークでも、そのＵＩ要素の各クラスに対して名前を有することができる。
【０００８】
これらの手法は、ＵＩ要素のオブジェクトのクラスまたはタイプを識別するが、プログラムを実行しているコンピュータのリブート期間、プログラムの異なるビルドの展開中、同じプログラムの別のインスタンスの開始中、または、他のコンピュータ上での同じプログラムの展開中、ＵＩ要素を一意的に識別する強力な識別子を単独で提供することはないことに留意されたい。
【０００９】
ＵＩＡは、上記の欠点を、ＧＵＩツリー内のＵＩ要素を一意的に識別する複合ＩＤを生成することにより解消する。ＵＩＡは、ＵＩ要素に直接関連付けられる識別情報（例えばコントロール名またはコントロール・タイプ）を、階層識別情報（例えば親コントロール、子コントロール、および／または兄弟コントロール）およびコントロール・パターン特有の情報（例えばツリー内のＵＩ要素の深さ）に加えることにより、複合識別子を生成する。例えば、ターゲットとするＵＩ要素に対する識別子を、ターゲットとする葉にあたるＵＩ要素と、根にあたるデスクトップにあるルート（root）要素の間の階層的配列を記述している、親ＵＩ要素に関係する識別情報を収集することにより生成することができる。パスの概念により、ＵＩ要素の固有の階層および親子関係（parentage）についての関連する（複数の）識別子を利用して、ＵＩ要素を一意に持続的に識別することができる。
【００１０】
固有識別子（持続ＩＤ）は、個々のＵＩ要素への容易なアクセスを実現し、それによって、ＵＩ要素をホストしているプログラムの機能をプログラムし、試験することができ、また、特定のＵＩ要素が他のプログラム・モジュールから識別できるようになる。ＵＩＡに関するさらなる情報については、例えば、ネットワーク（例えば、非特許文献１参照）を介して利用可能な文書を参照されたい。
【００１１】
ＩＩＩ．マクロ・ビルダおよびＵＩレコーダ
ＧＵＩ環境においてユーザのコンピュータとの対話を記録および再生する能力は、事業体（または他の大規模な組織）、ユーザ、ソフトウェア開発者、テスタ（tester）、およびコンピュータ・サポート担当者を含めた多数の当事者に利益をもたらす可能性がある。例えば、事業組織は、サプライ・チェーン・マネジメント用のソフトウェアを使用するなどして、ビジネスのプロセスの多くを自動化することによって、そのプロセスを合理化することができる。一連の入力されるアクションを、単一のステップで引き起こされる再生アクションに一体化するマクロまたはスクリプトを作成することによってユーザは利益を得る。ソフトウェア開発者は、開発中のソフトウェアのテスト・ケースを生成するのを支援する、ユーザのアクションを記録する能力を使用することができる。テスタは、自動回帰テストを実施するための試験を構築するために、記録および再生ツールを使用することができる。コンピュータ・サポート担当者は、コンピュータのクラッシュまたはハングの原因を発見するために、あるいはソフトウェアの使用の仕方をユーザが理解するのを援助するために、ユーザのアクションを記録することができる。
【００１２】
Ａ．市販のマクロ・ビルダ
多くの従来のマクロ・ビルダ・プログラムは、ある機能を実行するコンピュータまたはアプリケーションによって受け取られた内部コマンドおよびアクションを表すスクリプトを生成する。しかし、多くの事例では、ユーザは、１組のスクリプト・コマンドおよび複雑なプログラミング構成に基づいて、独力でスクリプトを開発しなければならない。したがって、ユーザは、プログラミング論理を理解し、ある程度、制御されるプログラムの内在する論理を理解して、マクロを作成し使用する必要がある。例えば、マクロ・プログラムのＡｕｔｏＭａｔｅは、ドラッグ・アンド・ドロップ・タスク・ビルダ（drag-and-drop task builder）を使用して、具体的なステップを、それらが実行されるべき順序でドラッグ・アンド・ドロップすることによって、マクロ・スクリプトを作成するが、このことは、ＡｕｔｏＭａｔｅのユーザが、どの順番でどのようにコマンドが発行されるべきかを理解する必要があることを意味する。Ｍａｃｒｏ  Ｓｃｈｅｄｕｌｅｒは、ユーザが、（実際に宣言された変数、および他のユーザ定義された構造体を含まずに）２００余りのスクリプト・コマンドおよびプログラム構成を用いてマクロ・スクリプトを書くことを可能にするマクロ作成プログラムである。このようなマクロ・プログラムで生成されるスクリプトを作成し編集することに必要とされる複雑さ、ならびに、このようなマクロ・ビルダによって生成されるスクリプトが、ＵＩアクティビティの実際のステップを追った分かり易い記録を表していない事実は、特に、初心者のユーザ、ならびに問題を解決しようとするコンピュータ・サポート担当者およびソフトウェア開発者にとって、これらのマクロ・プログラムの実用性を低いものにする。
【００１３】
Ｂ．内部マクロ言語
市販のマクロ作成ソフトウェアに対する代替として、多くのアプリケーションは、それら自体の専用のアプリケーション制御言語（「マクロ言語」）を使用してマクロを記録し再生するための組み込まれた能力を有している。アプリケーションのマクロ言語は、通常は、そのアプリケーションに固有のもので、一般に、アプリケーションの内部のオブジェクトモデル（「ＩＯＭ」）に基づいている。オブジェクト指向の手法なしにマクロ言語を構築することが可能であるが、ほとんどの内部モデルは、プログラムの構造にオブジェクト指向表現を用いている。ＩＯＭは、プログラムに内在するオブジェクトの、クラス、属性、オペレーション、パラメータ、リレーションシップ、および関連付けについてのアクセス可能なアウトラインまたはモデルを提供する。マクロ言語は、そのアプリケーションのＩＯＭにアクセスし、その通信メカニズム（イベント呼出しなど）をフック（hook）して、アプリケーション内の機能にアクセスしそれを呼び出す。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄのユーザは、文章を自動的にフォーマットするためにマクロを記録することができる。しかしながら、ほとんどのマクロ言語の主な欠点は、それらがアプリケーション特有のものであることである。あるアプリケーションによって記録されたマクロは、通常、特に２つのアプリケーションが競合するソフトウェア会社によって開発された場合、他のアプリケーションによってサポートされない。いくつかのケースでは、アプリケーションのあるバージョンで記録されたマクロは、そのアプリケーションのその後のバージョンでサポートされない。
【００１４】
Ｃ．マクロへの依存
マクロを開発することは難しいことがあり、多くのユーザおよび事業体は、既存のマクロを、ブレーク（失敗）させる（break）可能性がある何かをすることに躊躇する。特に事業体は、そのビジネス・プロセスに悪影響を及ぼす可能性があることはどのようなものでも躊躇する。実際、多くのユーザおよび事業体は、何かを「壊す」ことを恐れて、ソフトウェアのアップグレードやまたパッチのインストールさえも躊躇する。例えば、事業体が、（例えばマクロの形態で）自動化したビジネス・プロセスを採用しており、このプロセスでは、受け取ったファックスをスキャンし、これに光学式文字認識（「ＯＣＲ」）を自動的に行って、そのテキスト・ファイル版を作成し、このテキスト・ファイルのデータとスプレッドシート上の入力コンテンツとを比較して会計情報を確認し、最後にファックスの差出人に確認の電子メールを送る、ことを想定する。このようなビジネス・プロセスは、たいていは、適切に機能させるために、潜在的に複雑なマクロと、様々なソフトウェア・パッケージ（例えば、スキャナ・プログラム、ＯＣＲプログラム、表計算プログラム、テキスト・ファイル・プログラムなど）を組み合わせたセットを使用する。事業体およびユーザは、その自動化プロセスに現在投資しているものが損なわれずにそのままであることが保証されない限り、マクロまたはソフトウェアのアップグレードに関してしばしば危惧の念を抱く。
【００１５】
Ｄ．他のＵＩレコーダ
従来の多くのＵＩレコーダは、データを表現するために複雑なスクリプト・コマンドおよびプログラミング構成を使用するという点で、上述のマクロツールと同様の欠点を有する。もう１つの欠点は、従来型の再生は、記録を行うコンピュータの予め存在する状態に非常に依存していることである。例えば、再生は、特定のハードウェア構成、ソフトウェア・インストレーション、および／または（特定の記録された対話に関するＵＩ要素の利用可能性または位置など）ランタイム環境の動的状態、に依存することがある。従来型の再生ツールを使用すると、このような事前に存在する状態への何らかの変更は、再生の失敗を引き起こす可能性がある。
【００１６】
一例として、ユーザが、アプリケーション・ユーザ・インターフェースを再構成する場合を仮定する。いくつかのＧＵＩベース・アプリケーションは、ユーザが、ボタンの移動、メニューの再構成、プログラム機能に関する他のＵＩ要素の追加または除去、メニュー・バー上にマクロへのリンクの追加、または、他のＵＩの変更を行うことを可能にする。メニューをパーソナル化する（例えばユーザがその特定の必要に応じてＵＩをカスタマイズすることを可能にする）能力は、便利な機能であるが、この機能は、ＵＩ要素がその予期される位置にないために、多くの記録および再生ツールに失敗を引き起こすことがある。
【００１７】
例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）３．１のマクロ・レコーダ（Ｍａｃｒｏ  Ｒｅｃｏｒｄｅｒ）は、マウスの動きと、マウス・ボタンがクリックされたときのマウスの座標を記録することにより、ＧＵＩにおけるユーザのアクションを再現しようと試みる。再生の際にＵＩ要素がその期待される位置に存在しない場合、再生は失敗する。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）３．１におけるマクロ記録のさらなる情報については、参考文献を参照されたい（例えば、非特許文献２参照）。他の例として、低いモニタ／デスクトップの解像度においてＵＩの動作（activity）を記録すると仮定する。その後、ユーザは、より高いモニタ／デスクトップ解像度に変更する。この場合、ＵＩ要素の画面位置が変更されているので、上述のように、再生はたいてい失敗する。したがって、コンピュータ環境が変更されるにしたがって、再生は、次第に信頼性できないものになる。
【００１８】
【特許文献１】２００４年６月１５日出願の名称「Recording/Playback Tools for UI-based Applications」の米国特許出願
【非特許文献１】Microsoft Developer Network
【非特許文献２】"User's Guide for Microsoft Windows（登録商標）for Workgroups", p.137
【発明の開示】
【発明が解決しようとする課題】
【００１９】
結論としては、既存のマクロ言語、およびアプリケーション特有のマクロ・レコーダと互換性があり、単純でシステム・ワイドな、マクロおよびＵＩ記録ツールに対するニーズが存在する。それと同時に、動的ユーザ・インターフェースの状態でも機能する、単純でシステム・ワイドな、マクロおよびＵＩ記録ツールに対するニーズが存在する。
【課題を解決するための手段】
【００２０】
様々なアプリケーション用のグラフィカル・ユーザ・インターフェース（「ＧＵＩ」）のアクティビティを記録し、確実に再現するための手法およびツールを本明細書に提示する。例えば、マクロおよびＵＩの記録および再生ツールは、いくつかのアプリケーションに対して、マクロの構築、およびＧＵＩ動作の記録の作業（tasks）を単純化するとともに、他のアプリケーションに関してもアプリケーション特有のマクロ・レコーダをサポートし、また動的なユーザ・インターフェースについてのマクロおよびＵＩの記録もサポートする。
【００２１】
第１の態様によれば、ツールは、グラフィカル・ユーザ・インターフェース・ベースのアプリケーションから内部マクロ・アクションを不透明トークン（opaque tokens）として受け取る。例えば、ソフトウェア・プログラムは、それ自体の固有の記録環境でユーザのアクティビティを記録する。記録された入力に基づき、ソフトウェア・プログラムは、不透明トークンを生成し、不透明トークンは、ツールに伝送される。
【００２２】
第２の態様によれば、ツールは、内部マクロのアクションからの記録されたトークンを、他のユーザ・インターフェースのアクティビティと組み合わせる。例えば、ソフトウェア・プログラムは、記録された内部マクロ・アクションを不透明トークンとしてツールに渡す。このツールは、これらの不透明トークンを、ＵＩシステム・レコーダから受け取ったトークンと組み合わせる。組み合わされたトークンに基づいて、ツールは、ユーザ・インターフェースのアクティビティを再現する。
【００２３】
第３の態様によれば、ツールは、様々なアプリケーションから、ユーザ・インターフェースのアクティビティに関連付けられた記録されたトークンを収集し、各記録トークンを、各トークンが関連付けられているアプリケーションに供給することによって、ユーザ・インターフェース・アクティビティを再現する。例えば、複数のアプリケーションにまたがるユーザ・インターフェース・アクティビティは、記録トークンとして記録され、ツールによって再生コードに組み合わせられる。ツールは、記録トークンを再生コードから適切なソフトウェア・プログラムに渡すことにより、その記録されたユーザのアクティビティを再現する。
【００２４】
第４の態様によれば、ツールは、ソフトウェア・プログラムの内部レコーダによる再生のために、レコーダ・トークンをそのソフトウェア・プログラムに渡す。例えば、内部マクロ命令は、１組のレコーダ・トークンから抽出され、再生するために、そのトークンに関連付けられたソフトウェア・プログラムの内部レコーダに供給される。
【００２５】
本発明のさらなる機能および利点は、添付の図面を参照するとともに、以下の実装形態の詳細な説明を読めば明らかになろう。
【発明を実施するための最良の形態】
【００２６】
以下の説明は、様々なＧＵＩベースのソフトウェアのためのマクロおよびＵＩの記録および再生のための手法およびツールに関する。例えば、システム・ワイドのマクロおよびＵＩ記録ツールは、記録されるユーザ・アクティビティのタイプ、および使用されているアプリケーションの（本明細書では「スマート」記録と呼ぶことがある）記録機能に応じて、適切な記録手法を使用する。このツールでは、ＵＩＡ互換性のあるアプリケーションに対するユーザ・アクティビティを記録するために、ＵＩＡベースの記録メカニズムを使用することができる。アプリケーションがＵＩＡ互換でない場合（またはＵＩＡ互換であっても別のメカニズムで記録することが望ましい場合）、ツールは、アプリケーションと対話するユーザが行った生のステップ（raw step）（例えば、マウス・ボタンのクリック、キー・ストローク（keystroke））を記録することができる。このツールは、特別の記録メカニズムを様々な状況において使用することができる。これらの状況には、アプリケーション特有の内部マクロ言語で記述されるアクティビティの記録（アプリケーションによってそれ自体の内部記録メカニズムを使用して記録される）、および、動的ユーザ・インターフェースに対するアクティビティの記録が含まれる。本明細書に記載のツールは、様々な種類のアプリケーション、オペレーティング・システム・ソフトウェア、または他のソフトウェアに対するアクティビティを記録することができる。
【００２７】
特許文献１は、様々な記録および再生ツールを記載しており、その開示を本明細書に参考として組み込んでいる。これらのツールのいくつかは、ＵＩＡフレームワークを使用して、ＵＩ要素の識別値（「ＵＩＤ」）に基づいて入力を記録する。ＵＩＡは、ＧＵＩ内のＵＩ要素を一意に識別する複合ＩＤを生成する。ＵＩＤは、ユーザ・インターフェース内のＵＩ要素の位置、および、そのＵＩ要素と他のＵＩ要素とのリレーションシップに少なくとも部分的に依存している。ツールが、ＵＩＤを使用して特定のＵＩ要素に関わるアクティビティを記録および再生するとき、その要素の位置の変更は、再生の失敗を引き起こす可能性がある。
【００２８】
例えば、ユーザが、メニュー・バー・ボタンを削除することによりユーザ・インターフェースを再構成すると仮定する。再生ツールが、削除されたボタンを作動させようと試みると、再生が失敗する。別の例としては、アプリケーションがアップグレードされたとき、新しい機能を収容するために、いくつかの機能について移動および／または名前変更が行われる。例えば、あるバージョンでは、「Ｏｐｅｎ  Ｆｉｌｅ（開く）」機能が、「Ｆｉｌｅ（ファイル）」メニューの３番目の選択項目として配置されていると仮定する。その後のリリースでは、「Ｎｅｗ  Ｆｉｌｅ（新規作成）」機能を収容するために、「Ｏｐｅｎ  Ｆｉｌｅ」機能が移動されて「Ｆｉｌｅ」メニュー上の４番目の項目になる。ＵＩ要素が移動されかつ／またはＵＩＤが変更されたために、古いユーザ・インターフェースに基づくマクロは、ブレークする恐れがある。
【００２９】
いくつかの実装形態では、システム・ワイドのマクロおよびＵＩ記録ツールは、このような問題に対処するために、スマート記録を用いる。アプリケーションは、ユーザのアクションをアプリケーションの内部マクロ言語として記録する。記録後、アプリケーションの内部マクロ言語で表現される、記録されたステップは、記録ステップの不透明なトークン（opaque recorded step tokens）として、アプリケーションからマクロおよびＵＩ記録ツールに渡される。次いで、システム・ワイド・マクロおよびＵＩ記録ツールはさらに、記録ステップ・トークンをカプセル化し、かつ／または、記録ステップ・トークンをマーキング情報に関連付けることができる。いくつかの実装形態では、各マクロ命令が、別個の記録ステップ・トークンに変換される。あるいは、一連の関連するマクロ言語命令を、１つの記録ステップ・トークンにラップ（wrap）する。これらのトークンは、汎用化されたシステム・ワイドなマクロおよびＵＩ記録ツールとの相互協調処理を可能にするとともに、これらのトークンが記録されたときのようにアプリケーションによって再生することが可能になるように、内在するマクロ言語命令の時間的なシーケンスを維持する。記録されたステップのトークンが受け取られた後、ツールは、任意選択で、記録ステップを反映するコードを生成する。状況に応じて続いて、このコードは、記録したステップを再現するために再生することができ、あるいは、テスティング、トラブル・シューティング、または他の目的のために編集することもできる。
【００３０】
例えば、ワード・プロセッサが、「ｆｉｌｅ  ｎａｍｅ」の名前でファイルを開くためにアプリケーションの内部オブジェクト・モデルにフックする、マクロ言語命令「Ｏｐｅｎ（ｆｉｌｅｎａｍｅ）」を有すると仮定する。スマート記録ツールによって記録する際、このマクロ命令は、記録ステップ・トークンとして渡され、他の適切な情報と関連付けられ、再生のために格納され、そのときに、それに内在する命令「Ｏｐｅｎ（ｆｉｌｅｎａｍｅ）」が、記録ステップ・トークンとして、スマート記録ツールからアプリケーションに返される。このことは、アプリケーションが、そのアプリケーション自体の固有の記録環境を使用して、システム・ワイドＵＩ記録および再生フレームワークの範囲でＵＩアクティビティを記録し再生することを可能にする。メニューのカスタマイズの影響を受けない、および、内在するマクロ言語がソフトウェアの以前のバージョンと互換性がある限り、ソフトウェアのアップグレードに伴うユーザ・インターフェースにおける変更に関連する問題の影響を受けない、システム・ワイドなマクロを書くことができる。さらに、システム・ワイド記録フレームワークは、統一された記録および再生インターフェースを提供する。さらに、このフレームワークにより、組み合わされているマクロおよびＵＩ記録プロセスにおける、異なるアプリケーションに対するマクロおよび他のＵＩ記録のインタリービング（interleaving）が単純化される。
【００３１】
システム・ワイドのＵＩ記録フレームワークの一端として、アプリケーションが内部マクロ・レコーダまたは他のアプリケーション特有のＵＩレコーダを使用しないとき、別の記録メカニズムを使用することもできる。例えば、ＵＩＡベースの記録システムの使用が、静的なメニューのセットを有するアプリケーションに対するユーザ・インターフェース・アクティビティを記録するために役立つことが、特許文献１で説明されている。あるいは、アプリケーションがＵＩ自動アーキテクチャによるオペレーションをサポートしない場合、システム・ワイドのＵＩ記録フレームワークＲＰＦは、ユーザがＵＩベースのアプリケーションと対話して行った生のステップを単に記録することができる。いくつかの事例では、様々な記録手法が組み合わされて使用される。例えば、いくつかのテスト・ケースでは、生のユーザ入力、ＵＩＡベースのデータ、および内部マクロ・レコーダのデータが、すべて記録される。
【００３２】
ユーザがＵＩベース・アプリケーションと対話して行った、生のステップ（例えば、マウス・クリック、キー・ストローク）を記録することは、比較的単純である。しかし、難題は、アプリケーションが、設定可能なユーザ・インターフェース（例えば、メニューおよびメニュー項目を任意に再配置することを可能にするユーザ・インターフェース）を有するとき、アプリケーションがアップグレードされ、ユーザ・インターフェースが修正されたとき、または、アプリケーションが、マクロまたはＵＩ記録情報を内部言語で処理するとき、この（記録した）情報をどのように表現し処理するかである。概念的には、本明細書に記載のいくつかの手法およびツールが、ユーザがそれを通して記録ステップおよび入力を再生コードに変換することができる、抽象でユーザ・フレンドリなインターフェースを用いて記録が行われているアプリケーションの複数の内部記録機能を統合することにより記録性能を改善する。上述のように、それ自体の内部記録機能を有するアプリケーションは、その内部レコーダを呼び出して、ユーザのアクションをアプリケーションの内部オブジェクト・モデルにマップすることができ、したがって、「アップグレードによるロックアウト（upgrade lock-out）」、および、単純なメニュー／メニュー項目の記録で引き起こされるメニュー再設定問題が解決される。
【００３３】
いくつかの実装形態では、アプリケーション特有のマクロまたはＵＩ記録データを収集し、次いで、トークン化手法を使用して、そのデータを記録ステップ・トークンに変換する。この手法およびツールでは、アプリケーションとのユーザの対話を定義する、不透明トークンを作成する。記録されたステップのトークンが生成された後、他の記録されたアクション（例えばＵＩＡイベントもトークンの形になる）を同じまたは別のコンピュータで再生するためのプログラミング・コードに、場合によっては、アプリケーションが生成した記録ステップ・トークンがプログラミング・コード内にまだ埋め込まれた状態で、変換することができる。
【００３４】
様々な共通する状況で、本明細書に記載の手法およびツールは、システム・ワイドのマクロまたはＵＩ記録ツールが、様々な異なる種類のソフトウェア・プログラム（例えば、ＵＩＡ互換アプリケーション、内部マクロ・レコーダを有するアプリケーション、ＵＩＡに対応していないアプリケーション）、および、様々な種類の（例えば、静的、動的）ユーザ・インターフェースと、相互協調処理することを可能にする。これらの手法およびツールは、適切な場合にアプリケーション自体の内部記録機能を使用することにより、記録を信頼性のある頑強（robust）なものにする。さらに、これらのツールおよび手法は、ユーザに一貫性のあるマクロまたはＵＩ記録インターフェースを提供する。これらの手法およびツールは、様々なやり方で実装することができるが、組み合わせて使用することも別個に使用することもできる。
【００３５】
Ｉ．ＵＩ記録および生成フレームワーク
ＵＩ記録および再生フレームワーク（「ＵＩ  ＲＰＦ」）は、アプリケーションまたは他のソフトウェア・プログラムに対するＵＩアクティビティの記録および再生を支援するように設計された、拡張可能なフレームワークである。このフレームワークにプラガブルなモジュールには、フィルタ、アグリゲータ（aggregator）、トークナイザ（tokenizer）、およびコード・ジェネレータが含まれる。図１は、本明細書に記載の様々な手法を実装することができる例示的なＵＩ  ＲＰＦ１００を示す。基本的に、ＵＩ  ＲＰＦ１００は、ユーザが行っていることを記録し（または、この記録を行う他のソフトウェアと連携して動作し）、同じまたは別のコンピュータ上でユーザのアクションを再現する（または、この再現を行う他のソフトウェアと連携して動作する）。ＵＩ  ＲＰＦ１００は、複数のアプリケーションによって、また多数の構成において使用することができる、クロス・アプリケーション（例えばシステム・レベル）のフレームワークであり、様々な異なるユーザ・アクティビティの記録および再生を容易にするように設計されている。これは、基盤（foundation）であり、これに基づいて記録および再生ツールを構築することができる。ＵＩ  ＲＰＦ１００は、ＵＩ記録を容易にするために、Ｍｉｃｒｏｓｏｆｔ  ＵＩ  ＡｕｔｏｍａｔｉｏｎなどＵＩシステム・アーキテクチャ・ソフトウェア１２０によって提供されるサービスを使用することができる、しかし、これはフレームワーク１００の要件ではない。
【００３６】
図１は、ＵＩ  ＲＰＦ１００に関連する様々なモジュールを示す。ＵＩ  ＲＰＦ１００は、ＵＩシステム・アーキテクチャ・ソフトウェア１２０と対話し、これは、マウス・クリック、キー・ストローク、および、アプリケーション１２５、１２６からの入力など、記録されたＵＩ入力データを、ＵＩの記録および再生に関してより意味のあるデータに変換する。フレームワーク１００は、テキスト・エディタ１２５、電卓１２６などのアプリケーションから、ＵＩシステム・アーキテクチャ・ソフトウェア１２０を介して、記録ステップを受け取り、場合によっては、ステップは、システム・ユーザ・インターフェースのアクションをカプセル化したトークンとして渡される。ＵＩ  ＲＰＦ１００は、特許文献１で説明されているＵＩ記録および再生メカニズムを利用して、ＵＩシステム・アーキテクチャ・ソフトウェア１２０を介して受け取るＵＩアクティビティを、記録し、かつ再生する。あるいは、ＵＩ  ＲＰＦ１００は、異なるＵＩ記録および再生メカニズムを使用する。
【００３７】
ＵＩ  ＲＰＦ１００のモジュールはまた、それ自体に固有のマクロ・レコーダを有するアプリケーションと相互協調処理を行うためのスマート記録および再生モジュール１１０を含む。フレームワーク１００は、ＵＩシステム・アーキテクチャ・ソフトウェア１２０をバイパスして、ワード・プロセッサ１１５、表計算ソフト１１６、およびフォト・エディタ（photo editor）１１７などのアプリケーションから、記録されたステップまたは他のマクロ情報を、記録ステップ・トークンとして受け取る。アプリケーション１１５、１１６、１１７は、それ自体の内部記録機能を有し、その機能によって、ユーザの入力を、そのアプリケーション固有の記録環境におけるアクションにマップし、次いで、アプリケーション１１５、１１６、１１７は、内部で記録されたアクションを、スマートＵＩ記録および再生モジュール１１０を介して、トークンとしてフレームワーク１００に渡す。
【００３８】
ＵＩ  ＲＰＦ１００は、マクロまたはＵＩアクティビティの記録が行われる可能性があるアプリケーションのリストを維持する。ＵＩ  ＲＰＦ１００から見える新しいアプリケーションが、少なくとも最初に起動した時点で、このアプリケーションに、スマート記録インターフェースを介した対話をサポートしているかどうかを確かめるために照会が行われる。アプリケーションがスマート・インターフェースとの対話をサポートしない場合、ユーザのアクションは、アプリケーションの記録機能に従って記録することができ、インターフェースを介して受け渡しが行われる。代替方法では、ユーザのアクションは、（スマート記録インターフェースを介してデータが渡される）アプリケーションの内部記録メカニズムと、ＵＩシステム・アーキテクチャ・ソフトウェア１２０の両方を介して記録され、どちらの選択肢も可能である。あるいは、両方の選択肢が可能な場合でも、ユーザ、アプリケーション、またはシステム・ワイドのツールは、アプリケーションの内部記録メカニズムと、ＵＩシステム・アーキテクチャ・ソフトウェア１２０を介した記録のどちらか一方を使用することを決定することもできる。あるいは、ユーザ、アプリケーション、またはシステム・ワイド・ツールは、ユーザのアクションに関連する生のステップ（例えば、マウスの移動、マウス・ボタンのクリック、キー・ストローク）を、他の記録データと別個にまたは組み合わせて記録することを決定することもできる。
【００３９】
アプリケーションの内部記録メカニズムによって記録するユーザのアクティビティが、順番にＵＩ  ＲＰＦによってスマート・インターフェースを介して記録される際、アプリケーションは、記録されたユーザのアクティビティ・イベントをトークンに変換する。これらのトークンのコンテンツは、Ｖｉｓｕａｌ  Ｂａｓｉｃ  ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ（「ＶＢＡ」）で、他の何らかの言語で、または、アプリケーションによって使用されるオブジェクト・モデルで、定義される。最終的に、これらのトークンの「ペイロード」に格納される情報は、ＵＩ  ＲＰＦ１００によって解釈されず、情報がその固有フォーマットである各アプリケーションによってのみ解釈される。ＵＩ  ＲＰＦ１００は、さらに、記録ステップ・トークンをさらにトークン化し、このデータを、アプリケーション名など他の関連データに関連付けることができる。
【００４０】
システム・ワイド・ツールでは、システム・レベルの記録および再生を実装するために、記録ステップのトークン・データを、固有レコーダを有する他のアプリケーションから得た記録ステップのトークン・データに、または、ＵＩシステム・アーキテクチャ・ソフトウェア１２０を介して得た記録データに、連結する。
【００４１】
マクロおよびＵＩデータを記録することの他に、フレームワーク１００は、記録されたアクティビティを再現する再生コードを生成すること、かつ／または、記録されたアクティビティを他のソフトウェアが再現することを可能にするデータをカプセル化すること、ができる。
【００４２】
例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）環境では、ユーザが、ＵＩアクティビティの記録を開始し、次いで、Ｗｉｎｄｏｗｓ（登録商標）の「Ｓｔａｒｔ（スタート）」ボタンをクリックし、スマート記録インターフェースと連携して動作するワード・プロセッサを起動する。ＵＩ  ＲＰＦのコンテキストでは、「Ｓｔａｒｔ」ボタンのマウスによるクリックを含めてユーザのアクションが記録される。ワード・プロセッサが起動されると、ＵＩ  ＲＰＦは、ワード・プロセッサがスマート記録インターフェースと互換性があるかどうかを確認するために検査する。互換性がある場合、ＵＩ  ＲＰＦは、ワード・プロセッサそれ自体の内部の適切なツールを呼び出して、それに対して行われるユーザのアクションを記録する。このワード・プロセッサが、ＵＩシステム・アーキテクチャ・ソフトウェアと連携して動作することも可能になる場合、そのツールは、また、ユーザのアクション（ＵＩ自動イベント）をＵＩシステム・アーキテクチャ・ソフトウェアに関連して記録する。さらに、ツールは、ユーザのアクションと関連付けられた生のステップ（例えば、マウス・ボタンのクリック、キー・ストローク）を記録することもでき、このことは、ワード・プロセッサがスマート記録インターフェースをサポートせず、ＵＩシステム・アーキテクチャ・ソフトウェアと連携して動作することが可能でない場合に、特に重要となり得る。したがって、ＵＩ  ＲＰＦは、記録および再生の代替メカニズムを使用することができる。
【００４３】
このフレームワーク１００は、ソフトウェアおよび／またはハードウェアの要素を含むことができる。図１のモジュール間に示されている関係は、主な情報の流れを表し、簡単にするために、他のリレーションシップは図示していない。実装形態に応じて、モジュールは、追加、除外、複数のモジュールへの分割、他のモジュールとの組合せ、および／または、類似のモジュールとの交換を行うことができる。あるいは、異なる複数のモジュール、および／または他のモジュール構成を有するフレームワークは、本明細書に記載の１つまたは複数のＵＩ記録および再生手法を実施することができる。
【００４４】
ＩＩ．スマート記録
図２は、これに関連して本明細書に記載の様々な手法を実装することができるシステム・ワイドのＵＩ記録ツール２２０を示す。図１のＵＩ  ＲＰＦは、記録ツール２２０を含む。あるいは、記録ツール２２０は、他のＵＩフレームワークの一部分として使用される。
【００４５】
記録ツール２２０は、ある特定のアプリケーションについてのＵＩ記録のために、ＵＩシステム・アーキテクチャ情報を記録するが、それ自体の固有マクロ記録環境におけるユーザ・インターフェース・アクティビティを記録するアプリケーションと相互協調処理を行うこともできるという点で、システム・ワイドである。このような固有記録アプリケーションは、（図２に、スマートＲＰＦ  ＡＰＩとして示す）専用の固有記録インターフェースを介して、記録されたマクロまたはＵＩデータをツール２２０と交換する。このことは、ツール２２０が、アプリケーション自体の記録機能を使用する（また、それと相互協調処理を行う）ことを可能にし、したがって、動的ユーザ・インターフェースに関するＵＩ記録、および／または、アプリケーションの異なるバージョンに対して変更されたユーザ・インターフェースについても再生可能であるＵＩ記録、を可能にすることになる。
【００４６】
記録ツール２００は、マクロまたはＵＩデータを記録するときに使用されるメカニズムを制御する。例えば、ユーザの入力、ユーザの設定、または他の基準に応じて、ツール２２０は、個別のアプリケーションに対して、固有アプリケーション記録、ＵＩシステム記録、または両方、を用いるかどうかを決定する。このツールは、ユーザのマウスおよびキーボードからの生のＵＩ入力を、別個にまたは他の記録メカニズムと組み合わせて記録することができる。ツール２２０は、使用中の複数の各アプリケーションについて、または使用中の複数のアプリケーションから選択された複数のアプリケーションについての、マクロまたはＵＩデータを、並行して記録することができる。例えば、ユーザが、記録ツール２２０をワード・プロセッサ・プログラムからのデータだけを記録するように構成した場合、ユーザが、表計算プログラムからワード・プロセッサへのデータのカット・アンド・ペーストを記録したとき、ワード・プロセッサに関係するステップのみが記録される。
【００４７】
Ａ．固有記録経路
固有マクロまたはＵＩ記録では、ユーザは、マウス、キーボード、タッチ・パッド、タッチ・スクリーン、点字スクリーン、ジョイスティック、マイク、または他の同様の装置などの入力装置を使用して、アプリケーション２４０と対話する。ユーザがアプリケーション２４０と対話するとき、ユーザの入力は、ＶＢＡ、ＰｅｒｆｅｃｔＳｃｒｉｐｔ、Ｍ４、ＴｅＸ、または他のマクロ言語で表現される、アプリケーションの固有マクロ記録環境におけるステップとして、マクロ／ＵＩレコーダ２４５によって処理され、記録される。このアプリケーションの内部記録機能により、アプリケーションによって予測通り確実に再生できるデータを獲得するための、頑強なフレームワークが提供される。記録ステップは、アプリケーションの固有記録環境の制限によってのみ制限される。例えば、アプリケーションが、ユーザがマクロで変数を宣言することを可能にしている場合、このような変数を記録し、トークン化することができる。
【００４８】
アプリケーション２４０が、（トークナイザ２４７として示すように）記録されたステップを、それらがツール２２０に渡すことが可能になるように、トークン化する。次いで、アプリケーションは、この記録（された）ステップ・トークンを、インターフェースを介してツール２２０に渡す。このトークンは、ツール２２０にとって不透明であり、このことは、ツール２２０が、この記録ステップ・トークンを、ツール２２０によってそのコンテンツが解釈されない、離散的で不透明なデータのチャンクとして取り扱うことを意味する。一方、アプリケーション２４０は、記録ステップ・トークンのコンテンツを解釈しこれに反応することができる。このコンテンツのフォーマットは、アプリケーション２４０に固有のフォーマットである。例えば、アプリケーション２４０は、記録されたのとちょうど同じように（例えば、バイナリデータ、テキスト・コマンド、またはＤＬＬ命令として）ファイルを開くために、記録されたマクロ命令をトークンとしてカプセル化する。
【００４９】
アプリケーション２４０は、個々の記録ステップをそれぞれ１つのトークンに変換するか、あるいは、複数の記録ステップを、集めて単一のトークンとしてまとめる。このトークン化のメカニズムでは、アプリケーション２４０が、記録ステップのデータを、１つのトークンのデータ構造体の１つまたは複数のフィールドにまとめることができ、次いでそれはコピーまたは参照によってツール２２０に渡される。あるいは、アプリケーション２４０は、記録ステップのデータをメソッド呼び出しのパラメータとして渡し、ツール２２０がそれを不透明データとして受け取り、取り扱う。アプリケーション２４０は、（記録ステップ・データをトークン化するためのルールセットを定義する）ＸＭＬルール・シートを使用して、記録ステップ・データをトークンに再フォーマットまたは再編成することができる。あるいは、アプリケーション２４０は、他の何らかのトークン化のメカニズムを用いる。概念的には、トークン化は、記録ステップ・データをトークンのデータ構造体として配置する、または記録ステップ・データをトークン情報によって包むことと、見なすことができる。これは、マクロ言語命令をツールから「隠し」、マクロ言語に依存しないが、そのコンテンツは適切な固有記録環境で理解することができるトークンを生成する。
【００５０】
アプリケーション２４０は、データをトークン化するとき、マーキング・データを、先頭への追加（prepend）、付加（append）、または別のやり方で、記録ステップに追加（add）することができる。マーキング・データは、例えば、アプリケーション情報（例えば、アプリケーションの名前、およびそのバージョン）、順序を示すためのタイム・スタンプ、権限情報（例えば、ステップを再生するために必要とされる権限）など、再生のために関連する細部を提供する。
【００５１】
ツール２２０は、専用の固有記録インターフェースを介して１つまたは複数のアプリケーションから渡された（トークン・アクセプタ２３５として示すように）トークンを受け取る。一方、ツール２２０は、記録ステップのトークンのコンテンツを解釈しないが、ステップが正しいアプリケーションによって適切な順序で再生することができるようにするために、（アプリケーションの代わりに、またはアプリケーションに追加して）ツール２２０は、記録ステップのトークンにデータの追加の層を追加することができ、かつ／または、アプリケーション名、タイム・スタンプ、インデックス値などのマーキング情報にトークンを関連付けることができる。少なくともこの意味で、ツール２２０もトークン化を行うと見なすことができる。
【００５２】
アプリケーション２４０は、それが、インターフェースを介してツール２２０に渡すための情報をフォーマットすること、インターフェースを介して適切な呼び出しを行うこと、および、ツール２２０が呼び出しを行うためのコールバック・メソッド（callback method）を実装することなどの点で、固有記録インターフェースをサポートしている。ツール２２０は、それが、アプリケーションが呼び出しを行うためのメソッドを実装していること、アプリケーションによって渡された情報を期待どおりに取り扱うこと、および、アプリケーションのコールバック・メソッドを呼び出すことなどの点で、このインターフェースをサポートしている。インターフェースに対して使用される正確な呼び出しおよび処理のメカニズムは、実装形態に依存する。
【００５３】
Ｂ．ＵＩシステム記録経路
固有マクロ・レコーダを備えるアプリケーション２４０、および／または、他のアプリケーション２６０は、ＵＩシステム・アーキテクチャ・ソフトウェア１２０を介したシステム記録ツール２２０との対話をサポートすることできる。ＵＩシステム・アーキテクチャによる記録では、記録ツール２２０の様々なコンポーネント２２５が、（ａ）ユーザ入力データを収集し、（ｂ）他のＵＩアクティビティ（例えば、フォーカスの変更、選択の変更、ウィンドウの作成など）を監視し、（ｃ）再生のために適切な環境を記述または再現するのに役立つことがある、例えば、実行アプリケーション、ＯＳバージョン、ローカライズ情報、デフォルトのＵＩ言語、現在のＵＩ言語、ハードウェア・デバイスおよび構成、セキュリティ・モード、および／または他のデータなど、環境に関する情報を追跡し、（ｄ）ユーザ入力データを、ユーザ入力の影響を受けたユーザ・インターフェース要素に分解し、（ｅ）ユーザのアクティビティを、論理記録イベントとして表現する。これらの論理記録イベントは、可読性の高い（readable）ＵＩ記録出力、および信頼できるＵＩ記録再生の提供に役立つ。論理記録イベントは、ある種のＵＩ記録トークンと見なすことができるが、固有記録データを有する不透明な記録ステップ・トークンとは異なり、ツール２２０は、論理記録イベント・トークンを、表示、編集、コードへの変換などのために解釈する。
【００５４】
ツール２２０は、いくつかの実装形態において、特許文献１に記載のように、フィルタおよびアグレゲータを用いてＵＩシステム・アーキテクチャ記録を実施する。あるいは、ツール２２０は、ＵＩシステム・アーキテクチャによる記録のための他の手法を使用する。
【００５５】
ツール２２０は、デバッグ・ウィンドウ、ソース・コード・ブラウザ、またはテキスト・エディタなどのビューア（viewer）に、記録されたＵＩシステム・アーキテクチャのステップを表示し、ユーザがエラーに関するデータを読み閲覧することができるようにすることができる。このようなトークンのコンテンツはツール２２０に対して不透明なため、ツール２２０は、通常、固有記録データを有する記録ステップ・トークンに関する情報を表示しない。記録ステップ・トークンが、アプリケーション名、タイム・スタンプ、アクションラベル、あるいは、アプリケーションまたはユーザからの他のアノテーション（annotation）などの、マーキング情報と関連付けられている場合、ツール２２０は、このような情報を表示することができる。このデータは、後で分析するために、同様にログ・ファイルなどのファイルに保存することができる。
【００５６】
Ｃ．他のユーザ入力
記録ツール２２０に属する様々なコンポーネント２２５もまた、生のユーザ入力データを収集し、同様に他のＵＩのアクティビティを監視し、実行アプリケーションなど環境に関する情報を追跡する。これらのイベントを記録することは、アプリケーションがスマート記録インターフェースまたはＵＩシステム・アーキテクチャと互換性のない状況で助けとなる。これらの記録されたアクションもまたビューアに表示され、ユーザがエラーに関するデータを読み閲覧することができる。通常、生のユーザ・アクションからのデータは、上述の背景技術で説明した他のタイプの記録トークンよりも、再生に関する可読性および信頼性が低い。しかし、他の記録手法が適用できないときは、これは、システム・ワイドＵＩ  ＲＰＦにおける、非ＵＩＡで非固有のレコーダ・アプリケーションのデータを記録するためのメカニズムを提供する。生のユーザ・アクションから記録されたデータも、同様に、後で分析するためにログ・ファイルなどのファイルに保存することができる。
【００５７】
Ｄ．再生コード
いくつかの実装形態では、ツール２２０が、様々なアプリケーションおよび記録モードからのトークンを、データをインターリーブすることにより単一のファイルに組み合わせる。例えば、異なる固有レコーダからの固有記録アクションについての記録ステップ・トークンが、ＵＩシステム・アーキテクチャのアクション、および他の任意のユーザ入力のトークンと一緒に、１つの入力ストリームに組み合わせられる。通常、ユーザ入力は、連続した形で受け取られ、一連のトークンとして、この形のストリーム内の連続したトークンは、適切な順序に維持される。タイム・スタンプ、インデックス値、およびアプリケーション情報によってトークンをマーク付けして、適切な順序の維持を助けることができる。あるいは、ツール２２０は、異なるアプリケーションおよび記録モードに対して別個のファイルを作成する。
【００５８】
ＵＩシステムのアクションのトークンに対して、ツール２２０は、コード・ジェネレータ２３０を使用して、トークンから再生コード２５０を生成する。これは、自動的に、またはツール２２０において「Ｇｅｎｅｒａｔｅ  Ｃｏｄｅ（コード生成）」オプションを選択したときに行うことができる。再生コード２５０は、Ｃ＃、ＸＭＬ、Ｃ＋＋、ＪＡＶＡＪＡＶＡ（登録商標）、または他の任意の、プログラム、スクリプト、マクロ、またはドキュメント指向の言語、あるいは、再生インターフェースための他のコマンドまたは命令、あるいは、ＵＩベースのアプリケーションを駆動するための他のメカニズム含めて、様々なフォーマットで出力することができる。例えば、コード・ジェネレータ２３０は、ＵＩシステムのアクションについてのトークンを、再生コード２５０における対応する命令にマップする。ＵＩシステム・アーキテクチャ環境におけるコード生成のさらなる詳細については、特許文献１を参照されたい。
【００５９】
ツール２２０は、任意選択で、固有記録アクションについての記録ステップ・トークンを、その記録ステップ・トークンが適切な時間的シーケンスで維持されるスクリプト・ファイルなどの再生コード２５０に配置する。あるいは、ツール２２０は、コード・ジェネレータ２３０を使用して、記録ステップ・トークンを含む再生コード２５０を生成する。固有記録データをカプセル化する記録ステップ・トークンは、ツール２２０にとって不透明であり、したがって、このようなトークンは、通常、再生コード２５０にそのまま渡され、他の表現に変換するためにツール２２０によって解釈されることはないことに留意されたい。
【００６０】
ツールが、記録ステップの不透明トークンを表示し、修正することなどが可能な範囲に予想される限度があるが、再生コード２５０を表示したり、保存したり、編集したり、修正したり、追加したり、削除したり、コンパイルしたり、またはその他の使用を、再生に先立って行ったりすることができる。再生コード２５０の編集ができることにより、マクロの作成、自動テスト・ケースの生成、および、プログラムにおけるステップの自動化などのための便利で強力なメカニズムがユーザにもたらされる。この生成されたコードを編集して、このコードに対して、条件式の追加、変数の変更、ループの追加、および他のプログラミング命令の追加を行うことができる。例えば、再生に関して、ある再生コードにより、システム・ファイルが変更され、ユーザが管理者の権限でログオンすることが必要とされると仮定する。その場合、条件式が再生コードに追加され、これにより、そのコードが実行される前に適切な権限があるかどうかが検査される。別の例として、ソフトウェア開発者が、同じ一連の命令を何度も繰り返すことにより、プログラムの耐久度テストをしたいと仮定した場合、「ｆｏｒ  ｌｏｏｐ」を再生コードに追加し、これは、再生コードが一定の回数繰り返されることを引き起こす。
【００６１】
後述するように、再生コード２５０は、次いで、記録されたアクティビティの再生を管理するために使用することができる。コード２５０は、同じコンピュータ上で、あるいは異なる１つ（または複数）のコンピュータ上で再生することができる。
【００６２】
Ｅ．ツール・アーキテクチャおよび用途
一般に、ツール２２０に属する様々なモジュールはプラガブルであり、このことは、それらが、異なるアプリケーションに対して同様の機能を有する他のモジュールと交換することができることを意味する。例えば、ツール２２０内のコード・ジェネレータ２３０は、プラガブルであり、したがって、開発者は、ツール２２０のいくつかの部分を再使用できるが、コード・ジェネレータを交換することにより、コードを生成する方法を変更することもできる。このように、ツール２２０は拡張可能であり、その機能を、異なるアプリケーションに合うように変更することができる。いくつかの実装形態では、ツール２２０は、プラガブル・モジュールを選択するためのメニューを提示し、それによって、ユーザが望む機能に適切なモジュールのロードをユーザが制御すること、を可能にする。
【００６３】
例えば、「重量級」の記録モードでは、ツール２２０は、ＵＩアクティビティに関する詳細な情報を収集し、その情報を包括的にログ記録する。これは、より信頼できる再生を可能にするが、そのアクティビティが記録されるソフトウェアの実行に影響を与える可能性が高くなる。あるいは、「軽量級」の記録モードでは、ツール２２０は、より少ない情報を収集し、したがって、そのアクティビティが記録されるソフトウェアの実行に影響を与える可能性が低くなる。しかし、それでも、これは、サポート担当者にユーザのアクティビティを明らかにするために、または他の目的のために、同じ環境において再生するために、充分な情報を提供することができる。
【００６４】
同様に、ツール２２０は、対話モードで情報を記録することができ、対話モードでは、ＵＩ要素を、何が記録されるかを示す長方形の境界で強調表示したり、または点滅したりすることができる。ユーザにＵＩデータの記録が行われているアプリケーションを示すために、他の点滅フィードバックを使用することもできる。あるいは、対話モードにおいて、ユーザは、各アクションに対して、または、ツール２２０あるいはアプリケーション２４０が解決できないアクションに対して、ユーザがアノテーションの記述情報を入力するようにプロンプトが出される。あるいは、ツール２２０は、ユーザの邪魔をせずにＵＩアクティビティを記録するためにバックグラウンドで動作することができる。
【００６５】
ツール２２０は、他のプラガブル・モジュール（例えば、データの収集、データのトークン化、およびコードの生成などのためのモジュール）を必要に応じてロードすること、セキュリティの実施（例えば権限の確認）、記録スレッドの作成（spawning recording threads）、モジュール間のアクティビティの同期、記録の際に使用するキューの作成および維持、（例えばローカル・ファイルへの、または任意選択でネットワーク・サービスまたはサーバへの）エラーのログ記録、ならびに、記録に関する情報（例えば、ＯＳバージョン、ローカライズ情報、ハードウェア構成など）の収集を担当する。
【００６６】
図２のモジュール間に示す関係は、情報の主な流れを表し、簡単にするために、他の関係は示していない。実装形態に応じて、モジュールの追加および除外、複数のモジュールへの分割、他のモジュールとの組合せ、かつ／または、類似のモジュールへの交換を行うことができる。あるいは、異なる複数のモジュール、および／または他のモジュール構成を有するツールにより、本明細書に記載の１つまたは複数の記録手法を実施することができる。
【００６７】
ツール２２０のユーザ・インターフェースは、記録ウィンドウの周辺に位置したり、コンピュータ画面の上部または下部にドック（dock）されたり、あるいは、タスク・バーに最小化されたりする、ビデオ・カセット・レコーダのようなインターフェースとすることができる。インターフェースは、「Ｒｅｃｏｒｄ（記録）」、「Ｐａｕｓｅ（一時停止）」、「Ｓｔｏｐ（終了）」、および「Ｐｌａｙ（実行）」などの機能のためのボタン、ならびに、記録されているステップの記述が利用可能なときにそれを提示するための領域を含む。このようなインターフェースの例については、特許文献１を参照されたい。
【００６８】
Ｆ．記録手法、記録のタイミング
記録を行うとき、トークンをツール２２０に転送するための２つのモード、すなわちバッチ・モードと対話モードがある。一般的に、バッチ・モードでは、記録ステップのトークンは、アプリケーションで収集され、要求されたときにツール２２０に送達される。収集されたトークンを取り出すこのような要求は、フォーカスが記録アプリケーションから別のものに変更されたときに行われたり、記録の負荷を分散させるために定期的に行われたりすることもある。
【００６９】
一方、対話モードでは、トークンは、それが生じたときに、記録が行われているアプリケーションからツール２２０に送られる。対話的にトークンを送ることの欠点は、ＣＰＵに対するクロス・プロセスの負荷が増大することである。ある特定の状況では、記録が行われるアプリケーション、記録されるデータ量、ならびに、記録ステップのトークンがどれくらいの速さで生成されるかに応じて、バッチ・モードまたは対話モードのどちらか一方が他方より好ましいことがある。
【００７０】
図３は、アプリケーション固有マクロのアクティビティをシステム・ワイドＵＩ記録ツールによって記録するための手法３００を示す。図２に示す記録ツール２２０およびアプリケーション２４０などのツールおよびアプリケーションは、手法３００を実施する。あるいは、他のツールおよび／またはアプリケーションが、手法３００を実施する。
【００７１】
ツールは、アプリケーションがスマート固有記録インターフェースを使用しているかどうかを検査する（３１０）。いくつかのアプリケーションは、このインターフェースを介した対話をサポートしない。これら以外のアプリケーションは、このインターフェースを介した対話をサポートすることができる、しかし、ユーザまたはツールが、固有記録を用いないことを決定する。例えば、ユーザが最初にアプリケーションを起動したとき、ツールは、このアプリケーションが、スマート固有記録インターフェースを介した対話をサポートするかどうかを検査し、サポートする場合は、このアプリケーションの名前を、インターフェースを介した対話をサポートするアプリケーションのリストに追加する。あるいは、ツールは、記録を開始するときに、あるアプリケーションがスマート固有記録インターフェースをサポートするかどうかを検査する。アプリケーションがインターフェースを介した対話をサポートしない場合、ツールは、対話をサポートしないアプリケーションのリストに、このアプリケーションを追加することができる。
【００７２】
スマート固有記録インターフェースが使用されない場合、ツールは、他のレコーダを使用して（３１５）、ＵＩアクティビティを記録する。例えば、ツールは、ＵＩＡ使用可能アプリケーションに対して、ＵＩＡソフトウェア・レコーダを使用し、あるいは、ＵＩＡ使用不可アプリケーションに対しては、生のＵＩ入力レコーダを使用する。図３では、記録の代替経路が示されているが、代わりに、ツールは、固有記録および他方の記録の両方を同時に用いることもできる。
【００７３】
スマート固有記録インターフェースが使用されるとき、アプリケーションは、ユーザ入力を受け取り、マクロ・データを記録する（３２０）。したがって、アプリケーションの固有レコーダは、ユーザがアプリケーションに対して行ったステップを記録する。
【００７４】
マクロ・データを記録するプロセスは、アプリケーションまたはツールがプロセスを継続しないと決定する（３２５）まで続けられる。この検査では、ユーザが記録プロセスの終了を選択したかどうか、ツールがアプリケーションにトークンをバッチ・モードで要求したかどうか、バッチまたは対話モードにおいてカウンタまたはタイマが満了したかどうか、トークン化のためにリソースが利用可能かどうか、指定のＵＩ要素がアクセスされたかどうか、ならびに、特定の数の記録ステップに達したかどうかを含めて、様々な条件のいずれかを査定することができる。
【００７５】
次いで、アプリケーションは、記録されたマクロ・データをトークン化し（３３０）、ツールにとって不透明な１つまたは複数のトークンを作成する。例えば、アプリケーションは、上述のトークン化メカニズムを使用し、かつ／または、上述のマーキング情報を追加する。あるいは、ツールは、このトークン化または情報追加の一部または全部を実行する。
【００７６】
ツールまたはアプリケーションは、マクロ・データ記録を継続するかどうか査定する（３３５）。さらに、この検査では、ユーザが記録プロセスの終了を選択したか、トークン化が成功したか、あるいはアノテーション情報をユーザに請求すべきかなどを含めて、様々な条件のいずれかを査定することができる。
【００７７】
ツールは、任意選択で、受け取ったトークンを、トークンが組み込まれたスクリプトなどのコードに変換する（３４０）。例えば、ツールは、上述のコード生成メカニズムを使用する。
【００７８】
あるいは、手法３００の様々な段階は、個別に、または様々な組合せで他の段階に関連して実行される。例えば、図３は、マクロ・データ記録３２０の後にトークン化３３０および変換３４０が行われるように示しているが、別法では、これらの動作の一方または両方は、記録３２０と同時に行われる。
【００７９】
ＩＩＩ．スマート再生
図４は、システム・ワイドＵＩ再生ツール４２０を示し、このツールと関連して、本明細書に記載の様々な手法を実装することができる。図１のＵＩ  ＲＰＦは、再生ツール４２０を含む。あるいは、再生ツール４２０は、他のＵＩフレームワークの一部分として使用される。
【００８０】
再生ツールは、再生コードを受け取り、ＵＩシステム・サービスを通してアプリケーションを駆動することにより、または、それ自体の固有記録環境で解釈するアプリケーションにトークンを渡すことにより、または、ＵＩアクティビティに関連付けられた生のステップを再生することにより、ＵＩアクティビティを再現する。再生ツール４２０は、それが、特定のアプリケーションによるＵＩ記録再生のためのＵＩシステム・アーキテクチャ情報の再生を取り扱うが、それ自体の固有マクロ・レコーダ環境でユーザインターフェース・アクティビティを再生するアプリケーションと相互協調処理も行う、という点でシステム・ワイドである。このような固有レコーダ・アプリケーションは、（図４にスマートＲＰＦ  ＡＰＩとして示す）専用の固有再生インターフェースを介して、記録されたマクロまたはＵＩデータをツール４２０と交換する。このことは、ツール４２０が、アプリケーション自体の記録機能の制御（および、その機能との相互協調処理）をすることを可能とし、したがって、動的ユーザ・インターフェースに関するＵＩ再生、および／または、あるアプリケーションの異なるバージョンの変更された、ユーザ・インターフェースに関するＵＩ再生を可能にすることができる。
【００８１】
再生ツール４２０は、マクロまたはＵＩデータを再生するときに使用される経路を制御することができる。例えば、どんなデータが記録されたかに応じて、ツール４２０は、固有アプリケーション・レコーダ再生、ＵＩシステム再生、またはその両方を使用するかどうかを決定する。あるいは、ツールは、生の記録されたステップを再生することもできる。ツール４２０は、使用中の複数の各アプリケーションの、または、使用中の複数のアプリケーションのうちから選択された複数のアプリケーションの、マクロまたはＵＩデータを同時に再生することができる。
【００８２】
Ａ．リーダ  再生ツール４２０は、図２に示すコード・ジェネレータ２３０などのコード・ジェネレータまたはその他から、入力として再生コード４５０を受け取る。再生コード４５０は、Ｃ＃、ＸＭＬ、Ｃ＋＋、ＪＡＶＡ（登録商標）、または他の任意の、プログラム、スクリプト、マクロ、またはドキュメント指向の言語、あるいは、再生インターフェースためのあるいは、ＵＩシステム・アクションのためにＵＩベースのアプリケーションを駆動するための他のメカニズムのための、他のコマンドまたは命令、を含む、様々な形式のコードにすることができる。固有記録アクションの記録ステップ・トークンは、（トークン・パサー（token passer）４３５に直接送られることがある）スクリプト・ファイルなどのコード４５０に含めることができ、または他のコード４５０に組み込むことができる。
【００８３】
いくつかの実装形態では、再生ツール４２０は、データをインターリーブすることにより、異なるアプリケーションおよび記録モードからのコードおよびトークンを組み合わせた単一のファイルを受け取る。例えば、異なる固有レコーダ（複数）での固有記録アクションの記録ステップのトークンは、ＵＩシステム・アーキテクチャのアクション、および他の任意の記録されたユーザ入力に関するコードと一緒に、１つのストリームに組み合わせられる。あるいは、ツール４２０は、異なるアプリケーションおよび記録モードについて別個のファイルを受け取る。
【００８４】
再生ツール４２０において、リーダ４１０は、再生コード４５０を受け取り、コード４５０の正確性（correctness）を検査する。例えば、再生ツールは、再生コードを含むファイルを受け取り、ファイルの内部の整合性、および、ファイルとシステムの現在の状況との整合性があることを検証しようと試みる。何らかの不整合が見つかった場合、ユーザに通知され、実装形態によっては、ユーザは手動でそのステップを完了するように求められる。あるいは、再生が打ち切られる。
【００８５】
ＵＩシステム・アーキテクチャの再生経路に従う再生では、リーダ４１０が、コード４５０が指定するアプリケーションのプログラムでの制御のために、コード４５０をＵＩシステム・アーキテクチャ・プレーヤ４２５に渡す。固有記録再生経路に従う再生では、リーダ４１０は、固有記録データについての記録ステップ・トークンを、トークン・パサー４３５に渡す。
【００８６】
Ｂ．固有レコーダ再生経路
固有マクロまたはＵＩレコーダの再生では、再生ツール４２０は、ツール４２０（トークン・パサー４３５として示すように）から、適切な固有記録環境を含むアプリケーション４４０にトークンを渡す。ツール４２０は、このトークンを専用の固有再生インターフェースを介して渡す。それを行うのに先立って、ツール４２０は、記録ステップ・トークンに追加された、アプリケーション名、タイム・スタンプ、およびインデックス値などのマーキング情報を含めたデータの追加の層を解釈することができ、それによって、これらのステップは、正しいアプリケーションによって、適切な順序、で再生されるようになる。
【００８７】
固有記録データに関する記録ステップ・トークンは、コード４５０における他の種類の情報と異なり、再生ツール４２０によって直接解釈されない。解釈されない代わりに、これらのトークンは、トークン・パサー４３５により、不透明なデータ・チャンクとして、（トークン・アクセプタ４４２コンポーネントとして示されるように）アプリケーション４４０に渡される。アプリケーション４４０は、トークンを解釈し、トークンの中のマクロ記録データをマクロ・プレーヤ４４５に渡す。アプリケーション４４０では、記録マクロ・データを、アプリケーションの固有マクロ記録環境において解釈する。マクロ・データは、ＶＢＡ、ＰｅｒｆｅｃｔＳｃｒｉｐｔ、Ｍ４、ＴｅＸ、または他のマクロ言語などの言語として表現されている。アプリケーションの内部記録機能は、堅固で信頼できる再生のためのフレームワークを提供し、場合によっては、ＵＩシステム・アーキテクチャを通しては不可能な再生を可能にする。
【００８８】
アプリケーション４４０は、記録ステップの抽出し、再生のために記録ステップを準備する。アプリケーション４４０は、単一のトークンから、１つの記録ステップ・アクションを抽出することも、複数の記録ステップ・アクションを抽出することもできる。逆トークン化のメカニズムでは、アプリケーション４４０は、コピーまたは参照によりツール４２０から渡される、トークンのデータ構造体の１つまたは複数のフィールドから、記録ステップ・アクションのデータを読み取る。あるいは、アプリケーション４４０は、メソッド呼び出しのパラメータとして渡された、記録ステップ・アクションのデータをアンパック（unpack）することもできる。あるいは、アプリケーション４４０は、他の何らかのメカニズムを使用して、記録ステップ・アクションをトークンから抽出する。概念的には、このような抽出は、記録ステップ・アクションのデータを、トークンのデータ構造体から読み取ること、または、トークン情報から取り出すことと見なすことができる。これは、マクロ言語命令を「明らか」にし、それらを、適切な固有記録環境において認識される。
【００８９】
アプリケーション４４０は、データをトークン化する際に、プリペンドされた、アペンドされた、または別のやり方で記録ステップ・アクションのデータに追加された、マーキング・データを処理することもできる。マーキング・データは、例えば、アプリケーション情報（例えば、アプリケーションの名前、およびそのバージョン）、順序を示すためのタイム・スタンプ、権限情報（例えば、ステップを再生するために必要とされる権限）など、再生に関連する細部を提供する。
【００９０】
ツール４２０は、インターフェースを介してアプリケーション４４０に渡すための情報をフォーマットすること、インターフェースを介して適切な呼び出しをすること、および、アプリケーション４４０が呼び出しを行うためのコールバック・メソッドを実装することなどの点で、専用の固有再生インターフェースをサポートしている。アプリケーション４４０は、ツール４２０が呼び出しを行うためのメソッドを実装していること、ツールによって渡された情報を期待どおりに取り扱うこと、および、ツール４２０のコールバック・メソッドを呼び出すことなどの点でこのインターフェースをサポートしている。インターフェースに対して使用される正確な呼び出しおよび処理のメカニズムは、実装形態に依存する。
【００９１】
Ｃ．ＵＩシステム再生経路
固有マクロ・レコーダ再生を備えるアプリケーション４４０、および／または、他のアプリケーション４６０は、ＵＩシステム・アーキテクチャ・プレーヤ４２５を用いて、ＵＩシステム・アーキテクチャによる再生をサポートすることができる。プレイヤ４２５は、基本的に、ＵＩベースのアプリケーションの機能をプログラムで制御するためのエンジンである。この再生経路では、再生ツール４２０は、プレイヤ４２５を用いてコード４５０を処理し、ＵＩベース・アプリケーションとのプログラムによる対話を通して記録ステップおよびＵＩアクティビティを再現する。
【００９２】
いくつかの実装形態においてツール４２０は、特許文献１に記載のようなコンポーネントを用いてＵＩシステム・アーキテクチャの再生を実施する。あるいは、ツール４２０は、ＵＩシステム・アーキテクチャの再生のための他の手法を使用する。
【００９３】
再生を開始するとき、現在の状態とＵＩ記録が行われた際の状態との比較を行うことができる。重大な格差が検出された場合、ユーザに通知を行い、継続するかどうかの選択肢を提供する。
【００９４】
いくつかの場合では、再生コードは、自己実行型であり、制御するために追加の入力またはアクションを必要としない。あるいは、ＵＩシステム・アクションは、内部再生キューに入れられ、これは、プレイヤ・モジュール４２５が、各記録ステップを順次に処理することを可能にする。プレイヤ４２５は、記録ステップをキューから取り出し、該当するアプリケーションが利用可能になるのを待機し、プロセスが入力に対して作動可能になるのを待機し、それから、記録ステップを実行し、このステップの結果を再生ツール４２０またはその他に報告する。これらの工程のうちいずれかが失敗した場合、単純なスリープ機能が呼び出され、プレイヤ４２５は、単純に一定期間の待機をした後、記録ステップの再生を再試行する。あるいは、ステップを実行できないとき、ユーザに通知し、ステップを完了させるように求める。これは、再生の失敗が、再生ツールまたは関連する他のどのアプリケーションも機能停止させずに、何事もなかったかのように処理されることを可能にする。
【００９５】
プレイヤ４２５に依存する代わりに、いくつかのアプリケーションでは、生成されたコードを実行するために、アプリケーション自体の再生ツールで代用することもできる。
【００９６】
Ｄ．ツール・アーキテクチャおよび用途
一般に、ツール４２０の様々なモジュールがプラガブルであり、このことは、それらが異なるアプリケーションに対して同様の機能を有する他のモジュールと置き換えることができることを意味する。したがって、ツール４２０は拡張可能であり、その機能を、異なるアプリケーションに合うように変更することができる。ツール４２０は、プラガブル・モジュールを選択するためのメニューを提示し、これは、ユーザが望む機能に適切なモジュールのロードを、ユーザが制御することを可能にする。
【００９７】
再生ツールには、様々な構成可能なオプションを提供する。再生ツール４２０は、どのように再生が行われるかを表示するように構成することもできる。例えば、再生ツールは、再生中に、「Ｐａｕｓｅ」ボタンが押されたとき、一時停止が行われるように構成することができる。あるいは、ツール４２０は、再生コードの処理を継続するためにユーザの入力が必要なとき、一時停止を行うことができる。再生ツールは、コードを実行しているコンピュータ・システムが「ペイント（paint）」することができるのと同じ速さで再生を実行するように構成することもできる。あるいは、再生は、ペイントが完了するのを待たずに可能な限り速く行われる。いくつかの実装形態では、複数の一連の再生が、別個のアプリケーションに対して同時に実行される。
【００９８】
再生のセキュリティを改善するために、図２の記録ツール２２０は、再生コードおよび／またはそれに組み込まれるトークンを暗号化することができる。その場合、再生ツール４２０が、コードおよび／またはトークンを復号する。他のセキュリティ手段は、ユーザ名およびパスワードを、再生の際にユーザがこのようなデータを再入力することを求めること、この種のデータをログしないこと、再生コードのセキュリティ・モードをユーザのセキュリティ・モードに突き合わせて検査すること（例えば、管理者レベルのスクリプトを再生しようとするユーザには、管理者のステータスが求められる）、ならびに、バッファのコンテンツが現行セッションで現在のユーザによって記録されたことが確認できた場合のみ、バッファ再生（ファイル内に置かれていないコードおよび／またはトークンからの再生）を許可すること、を含む。
【００９９】
ツール４２０は、他のプラガブル・モジュールを必要に応じてロードすること、セキュリティの実施（例えば権限の確認）、再生スレッドの作成、モジュール間のアクティビティの同期、再生の際に使用するキューの作成および維持、（例えばローカル・ファイルへの、または任意選択でネットワーク・サービスまたはサーバへの）エラーのログ記録、ならびに、再生に関する情報の収集を担当する。
【０１００】
図４のモジュール間に示す関係は、情報の主な流れを表し、簡単にするために、他の関係は示していない。実装形態に応じて、モジュールの追加および除外、複数のモジュールへの分割、他のモジュールとの組合せ、および／または、類似のモジュールへの交換を行うことができる。あるいは、異なる複数のモジュール、および／または他のモジュール構成を有するツールが、本明細書に記載の１つまたは複数の再生手法を実施することができる。
【０１０１】
ツール４２０のユーザ・インターフェースは、再生ウィンドウの周辺に位置したり、コンピュータ画面の上部または下部にドックされたり、あるいはタスク・バーに最小化されたりする、ビデオ・カセット・レコーダのようなインターフェースとすることができる。インターフェースは、「Ｐａｕｓｅ」、「Ｓｔｏｐ」、および「Ｐｌａｙ」などの機能のためのボタン、ならびに、再生されているステップの説明が利用可能なときにそれを提示するための領域を含む。このインターフェースの例については、特許文献１を参照されたい。
【０１０２】
Ｅ．再生手法
図５は、システム・ワイドＵＩ再生ツールを用いた、アプリケーション固有マクロのアクティビティの再生を管理するための手法５００を示す。図４に示す再生ツール４２０およびアプリケーション４４０などのツールおよびアプリケーションは、手法５００を実施する。あるいは、他のツールおよび／またはアプリケーションが、手法５００を実施する。
【０１０３】
このツールは、記録ステップのトークンによってコードを受け取る（５１０）。例えば、このコードは、トークンを含むスクリプト・ファイルである。あるいは、このコードは、それに組み込まれたトークンを有するプログラミング言語コードである。
【０１０４】
次いで、このツールはこのコードの検査を行う（５２０）。このツールは、トークンの正確性、順序、および内部の整合性を検査する、または、このツールおよびアプリケーションが正しい再生ができる状態になっていることを検査することができる。その場合、ツールは、識別または順序付けのためにトークンに追加されたマーキング情報を考慮することができる。例えば、このツールは上述の検査メカニズムを使用する。記録されたアクションを検証することができなかった場合、ユーザに、再生を終了するように、あるいはアクションを実行するように、プロンプトで促すことができる。
【０１０５】
次いで、ツールは、適切なアプリケーションに記録ステップ・トークンを渡す（５４０）。アプリケーションは、トークンを処理して（５５０）、記録されたマクロ・データを抽出し、記録された固有マクロ・アクションを、アプリケーションの固有記録再生環境で再生して、ユーザがアプリケーションに対して行ったステップを再現する。固有環境で記録されたアクションの処理には、ユーザによる干渉をほとんどまたはまったく受けずに可能な限り円滑に、記録されたＵＩアクティビティを再現することになるのが通常である。したがって、システムＵＩレコーダ・ツールは、アプリケーションの高い信頼性を有する内部記録環境を効率的に管理し、それとの相互強調処理を効率的に行うことができる。
【０１０６】
ツールまたはアプリケーションは、再生を継続するかどうかを決定する（５６０）。例えば、ツールおよびアプリケーションは、コードまたはトークンの再生が完了した場合、ユーザが再生を終了させた場合、またはエラーのために再生が終了した場合に完了し、そうではなく、ユーザにデータの入力を求めるために再生がストール（stall）している場合は待機を行う。
【０１０７】
あるいは、手法５００の様々な段階は、個別に、または様々な組合せで他の段階に関連して実行される。例えば、図５では、トークンを処理する（５５０）のに先立って、検証し（５２０）、渡す（５４０）ように示しているが、別法では、この２つの動作の一方または両方が、再生パイプラインにおいてトークンの処理（５５０）と同時に行われる。
【０１０８】
ＩＶ．コンピューティング環境
上述の、様々なＧＵＩベースのソフトウェアでのマクロおよびＵＩの記録および再生のためのツール（例えば図２のツール２００）、ならびにマクロおよびＵＩ記録手法は、少数の一般例として、様々なフォーム・ファクタ（form factor）（パーソナル、ワークステーション、サーバ、ハンドヘルド、ラップトップ、タブレット、または他のモバイル）のコンピュータ、分散コンピューティング・ネットワーク、およびウェブ・サービスを含めて、任意の様々なコンピューティング装置および環境に実装することができる。このマクロおよびＵＩ記録のツールおよび手法は、ハードウェア回路、ならびに、例えば図６に示すような、コンピュータまたは他のコンピューティング環境で実行される、マクロを記録し、処理し、および表示するためのソフトウェア６８０に実装することができる。
【０１０９】
図６は、上述の手法を実装することができる適切なコンピューティング環境６００を一般化した例を示す。コンピューティング環境６００は、本明細書に記載のツールおよび手法の使用または機能の範囲にいかなる限定も示唆するものではなく、これらのツールおよび手法は、様々な汎用または専用のコンピューティング環境で実装することができる。
【０１１０】
図６を参照すると、コンピューティング環境６００は、少なくとも１つの処理装置６１０およびメモリ６２０を含んでいる。図６では、この最も基本的な構成６３０を破線で囲っている。処理装置６１０は、コンピュータ実行可能命令を実行し、また、現実のまたは仮想のプロセッサとすることができる。マルチ・プロセッシング・システムでは、処理能力を増大させるために、複数の処理装置がコンピュータ実行可能命令を実行する。メモリ６２０は、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）、非揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリなど）、または、この両方のある種の組合せとすることができる。メモリ６２０は、スマート記録ツールおよび手法を実装するソフトウェア６８０を格納する。
【０１１１】
コンピュータ環境は、追加の機能を有することもできる。例えば、コンピューティング環境６００は、ストレージ６４０、１つまたは複数の入力装置６５０、１つまたは複数の出力装置６６０、および、１つまたは複数の通信接続６７０を含む。バス、コントローラ、またはネットワークなどの相互接続メカニズム（図示せず）は、コンピューティング環境６００のコンポーネントを相互接続する。通常、オペレーティング・システム・ソフトウェア（図示せず）は、コンピューティング環境６００で実行される他のソフトウェアの動作環境を提供し、コンピューティング環境６００の複数のコンポーネントのアクティビティを調整する。
【０１１２】
ストレージ６４０は、リムーバルまたは非リムーバルとすることができ、ストレージ６４０には、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、あるいは、情報を格納するのに使用することができ、コンピューティング環境６００においてアクセスすることができる、他の任意の媒体が含まれる。ストレージ６４０は、マクロおよびＵＩ記録再生ソフトウェア６８０の命令を格納する。
【０１１３】
（例えば、装置接続アーキテクチャにおける制御点として動作する各装置のための）入力装置６５０は、キーボード、マウス、ペン、またはトラック・ボールなどのタッチ入力装置、音声入力装置、スキャン装置、あるいは、コンピューティング環境６００に入力を提供する他の装置とすることができる。音声に関しては、入力装置６５０は、アナログまたはデジタル形式で音声入力を受け取るサウンドカードまたは類似の装置、あるいは、音声サンプルをコンピュータ環境に提供するＣＤ−ＲＯＭリーダとすることができる。出力装置６６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ（writer）、または、コンピュータ環境６００からの出力を提供する他の装置とすることができる。
【０１１４】
通信接続６７０は、通信媒体を介して他のコンピューティング・エンティティへの通信を可能にする。通信媒体は、コンピュータ実行可能命令などの情報、音声／映像または他の媒体情報、あるいは変調されたデータ信号としての他のデータを運搬する。変調されたデータ信号は、１つまたは複数の信号特性のセットを有し、または、情報を信号として符号化するように変更された信号である。限定ではなく例として挙げると、通信媒体には、電子、光、ＲＦ、赤外線、音響、または他のキャリアで実装する有線または無線の技術が含まれる。
【０１１５】
本明細書に記載のマクロおよびＵＩの記録および再生技術は、コンピュータ可読媒体の一般的なコンテキストにおいて記述することができる。コンピュータ可読媒体は、コンピューティング環境においてアクセスすることができる任意の利用可能な媒体である。コンピューティング環境６００において、限定ではなく例として挙げると、コンピュータ可読媒体には、メモリ６２０、ストレージ６４０、通信媒体、およびこれらの任意の組合せが含まれる。
【０１１６】
本明細書に記載の技術は、例えばプログラム・モジュールに含まれ、ターゲットとする現実または仮想のプロセッサ上のコンピューティング環境で実行される、コンピュータ実行可能命令の一般的なコンテキストにおいて記述することができる。一般に、プログラム・モジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、および、データ構造などが含まれる。様々な実施形態において、プログラム・モジュールの機能を、必要に応じて、プログラム・モジュール間で組み合わせたり、分割したりすることが可能である。プログラム・モジュールのコンピュータ実行可能命令は、ローカルまたは分散コンピューティング環境において実行することができる。
【０１１７】
提示の目的で、本明細書の詳細な説明では、コンピューティング環境におけるコンピュータの動作を記述するために、「決定する」、「生成する」、「調整する」、および「適用する」などのような用語を使用している。これらの用語は、コンピュータによって行われる動作について高度に抽象化した概念であり、人間によって行われる行為と混同されるべきではない。このような用語に対応する実際のコンピュータの動作は、実装形態に応じて異なっている。
【０１１８】
本発明の原理が適用され得る多数の可能な実施形態に鑑みて、添付の特許請求の範囲およびその均等物の範囲および趣旨に含むことができるすべての実施形態を本発明として主張する。
【図面の簡単な説明】
【０１１９】
【図１】ユーザ・インターフェース記録および再生フレームワークを示すブロック図である。
【図２】システム・ワイドＵＩ記録ツールを示すブロック図である。
【図３】システム・ワイドＵＩ記録ツールによって、アプリケーション固有のマクロのアクティビティを記録するための技術を示すフローチャートである。
【図４】システム・ワイドＵＩ再生ツールを示すブロック図である。
【図５】システム・ワイドＵＩ再生ツールによって、アプリケーション固有マクロのアクティビティの再生を管理するための技術を示すフローチャートである。
【図６】システム・ワイドＵＩ記録および／または再生を実装するために適切なコンピューティング環境を示すブロック図である。
【符号の説明】
【０１２０】
１００    記録および再生フレームワーク
１１０    スマートＵＩ記録および再生モジュール
１１５    （内部マクロ・レコーダを有する）ワード・プロセッサ
１１６    （内部マクロ・レコーダを有する）表計算ソフト
１１７    （内部マクロ・レコーダを有する）フォト・エディタ
１２０    ＵＩシステム・アーキテクチャ・ソフトウェア
１２５    メモ帳（Ｗｉｎ３２）
１２６    電卓（Ａｖａｌｏｎ）
２２０    スマートレコーダ
２２５    ＵＩシステム記録フィルタ、アグレゲータなど
２３０    コード・ジェネレータ
２３５    トークン・アクセプタ
２４０    アプリケーション
２４５    マクロ・レコーダ
２４７    トークナイザ
２５０    （組み込まれたトークンを有する）コード
２６０    アプリケーション
４１０    リーダ
４２０    スマート・プレイヤ
４２５    ＵＩシステム・アーキテクチャ・プレーヤ
４３５    トークン・パサー
４４０    アプリケーション
４４２    トークン・アクセプタ
４４５    マクロ・プレーヤ
４５０    （組み込まれたトークンを有する）コード
４６０    アプリケーション
６００    コンピューティング環境
６１０    処理装置
６２０    メモリ
６４０    ストレージ
６５０    入力装置
６６０    出力装置
６７０    通信接続
６８０    スマート記録および再生のためのソフトウェア
【図１】
2006018827.tif 000003
【図２】
2006018827.tif 000004
【図３】
2006018827.tif 000005
【図４】
2006018827.tif 000006
【図５】
2006018827.tif 000007
【図６】
2006018827.tif 000008