(57)【特許請求の範囲】
【請求項１】
システム上において、プログラムの実行の間に、特定のポイントに対応するスクリーンブレークポイントを設定するステップと、
前記プログラムの実行の間に前記特定のポイントに到達したことを検出したことに応答して、ベクトル・グラフィックス・ライブラリ・コンポーネントを利用して、ベクトル・グラフィックス・スクリーンキャプチャ・ファイルを生成するステップであって、
前記ベクトル・グラフィックス・スクリーンキャプチャ・ファイルは、あるプログラムの現在のスクリーン出力のプラットフォームにとらわれないファイルであり、
前記生成するステップが、
前記システムのオペレーティング・システムに、前記オペレーティング・システムに構成されるネイティブ・レンダリング・ライブラリの代わりに、プラットフォームにとらわれないベクトル・グラフィックス・ライブラリ・コンポーネントを利用して、現在のスクリーン出力の汎用化されたビューを描写するベクトル・グラフィックス・データを生成するように教示するステップと、
前記ベクトル・グラフィックス・データを、ベクトル・グラフィックス・スクリーンキャプチャ・ファイルとして、セーブするステップと、
を含む、
方法。
【請求項２】
システム上において、プログラムの実行の間に、特定のポイントに対応するスクリーンブレークポイントを設定するステップと、
前記プログラムの実行の間に前記特定のポイントに到達したことを検出したことに応答して、ベクトル・グラフィックス・ライブラリ・コンポーネントを利用して、ベクトル・グラフィックス・スクリーンキャプチャ・ファイルを生成するステップであって、
前記ベクトル・グラフィックス・スクリーンキャプチャ・ファイルは、あるプログラムの現在のスクリーン出力のプラットフォームにとらわれないファイルであり、
前記生成するステップが、
前記システムのオペレーティング・システムに、前記オペレーティング・システムに構成されるネイティブ・レンダリング・ライブラリの代わりに、プラットフォームにとらわれないベクトル・グラフィックス・ライブラリ・コンポーネントを利用して、現在のスクリーン出力の汎用化されたビューを描写するベクトル・グラフィックス・データを生成するように教示するステップと、
前記ベクトル・グラフィックス・データを、ベクトル・グラフィックス・スクリーンキャプチャ・ファイルとして、セーブするステップと、
を含み、
複数の異なるオペレーティング・システムについて、前記ベクトル・グラフィックス・スクリーンキャプチャ・ファイルの発行された版を含むエンド・ユーザー文書を生成するステップと、
を含む
方法。
【請求項３】
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行可能なコードを含むメモリ・デバイスであって、前記コードが、
あるプログラムと、
プログラムの実行の間に、特定のポイントに対応するスクリーンブレークポイントを設定するように構成されたブレークポイント・コンポーネントと、
前記プログラムの実行の間に前記特定のポイントに到達したことを検出したことに応答して、前記プログラムの現在のスクリーン出力のプラットフォームにとらわれない前記ベクトル・グラフィックス・スクリーンキャプチャ・ファイルを生成するように構成された、あるスクリーン・データ・キャプチャ・ツールと、
を含んでいて、
前記生成することが、
前記システムのオペレーティング・システムに、前記オペレーティング・システムに構成されるネイティブ・レンダリング・ライブラリの代わりに、プラットフォームにとらわれないベクトル・グラフィックス・ライブラリ・コンポーネントを利用して、現在のスクリーン出力の汎用化されたビューを描写するベクトル・グラフィックス・データを生成するように教示することと、
前記ベクトル・グラフィックス・データを、ベクトル・グラフィックス・スクリーンキャプチャ・ファイルとして、セーブすることとと、
を含む、
システム。
【請求項４】
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行可能なコードを含むメモリ・デバイスであって、前記コードが、
あるプログラムと、
プログラムの実行の間に、特定のポイントに対応するスクリーンブレークポイントを設定するように構成されたブレークポイント・コンポーネントと、
前記プログラムの実行の間に前記特定のポイントに到達したことを検出したことに応答して、前記プログラムの現在のスクリーン出力のプラットフォームにとらわれない前記ベクトル・グラフィックス・スクリーンキャプチャ・ファイルを生成するように構成された、あるスクリーン・データ・キャプチャ・ツールと、
を含んでいて、
ここで、前記生成することが、
前記システムのオペレーティング・システムに、前記オペレーティング・システムに構成されるネイティブ・レンダリング・ライブラリの代わりに、プラットフォームにとらわれないベクトル・グラフィックス・ライブラリ・コンポーネントを利用して、現在のスクリーン出力の汎用化されたビューを描写するベクトル・グラフィックス・データを生成するように教示することと、
前記ベクトル・グラフィックス・データを、ベクトル・グラフィックス・スクリーンキャプチャ・ファイルとして、セーブすることとと、
を含み、
複数の異なるオペレーティング・システムについて、前記ベクトル・グラフィックス・スクリーンキャプチャ・ファイルの発行された版を含むエンド・ユーザー文書を生成するように構成されている、
システム。
【請求項５】
スクリーンキャプチャを実行するためのコンピュータ・プログラムであって、
プロセッサによって実行可能なコードを含むプログラムとして、
前記プログラムの現在のスクリーン出力のプラットフォームにとらわれないベクトル・グラフィックス・スクリーンキャプチャ・ファイルを生成するステップを含んでいて、
ここで、前記生成するステップが、
前記システムのオペレーティング・システムに、前記オペレーティング・システムに構成されるネイティブ・レンダリング・ライブラリの代わりに、プラットフォームにとらわれないベクトル・グラフィックス・ライブラリ・コンポーネントを利用して、現在のスクリーン出力の汎用化されたビューを描写するベクトル・グラフィックス・データを生成するように教示するステップと、
前記ベクトル・グラフィックス・データを、ベクトル・グラフィックス・スクリーンキャプチャ・ファイルとして、セーブするステップと、
を含んでいて、
前記生成するステップが、前記プログラムの実行中の所定のポイントに関連するスクリーン・ブレークポイントが決定されることに応答して自動的に実行され、
各ステップをコンピュータのプロセッサに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はスクリーンキャプチャ・ツールに関し、特にプラットフォームにとらわれないスクリーンキャプチャ・ツールに関する。
【背景技術】
【０００２】
ソフトウエア文書（documentation）は、コンピュータ ・ソフトウエアを伴い、ソフトウエアをどのように使用するかそしてソフトウエアがどのように動作するかを説明するように書き込まれたテキストよりなる。エンド・ユーザー・ソフトウエア文書がそのエンド・ユーザー、システム管理者およびサポート・スタッフのためのマニュアルを含んでもよい。エンド・ユーザー・ソフトウエア文書はそのプログラムの各特徴を普通は記述し、これらの特徴ならびにトラブル・シューティングを理解する上でユーザーを助けることができる。
【０００３】
コンピュータ・スクリーンのイメージはソフトウエア文書の重要なコンポーネントである。これらのスクリーン・イメージはまた、スクリーンショットまたはスクリーンキャプチャとも呼ばれるが、ソフトウエア開発プロセスの種々のステージでエンド・ユーザー・ソフトウエア文書を適切に説明する上で助けるように取られてもよい。これらのスクリーンキャプチャはそのスクリーンからのピクセルをピクセル・ベースのグラフィカル・ファイルの中に実際に抽出する。このグラフィカル・ファイルは通常は静的であり、その解像度およびファイル・フォーマットに基づいて特定のプレゼンテーション・プラットフォームをターゲットにする。異なるプレゼンテーション・プラットフォームがターゲットにされる必要があるとき、例えばバッチＰｈｏｔｏｓｈｏｐ変換を使用することによってそのファイルが再キャプチャ（recapture）されもしくは処理される必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、プラットフォームにとらわれないスクリーンキャプチャ・ツールを提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一実施例による方法は、ディスプレイ・スクリーンを有するコンピュータからスクリーン・データを獲得するステップと、前記スクリーン・データを、複数のソフトウエア・プラットフォームで表現されることのできる表示に変換するステップと、前記スクリーン・データの前記表示を、複数のソフトウエア・プラットフォームに発行されることができるようなベクトル・グラフィックス・ファイルの中にレンダリングするステップとを含む。
【０００６】
本発明の他の実施例による方法は、ソフトウエア（製品）におけるユーザー・インターフェースであってスクリーンディスプレイを含むものを修正するステップと、前記ソフトウエア製品に実質的な変更が生じたか決定し、もし生じていれば、前記ディスプレイ・スクリーン上に表示されるような前記ユーザー・インターフェースを表わすスクリーン・データを獲得するステップと、前記スクリーン・データを、複数のソフトウエア・プラットフォームで表現されることのできる表示に変換するステップと、前記スクリーン・データの前記表示を、別箇の層のウイジェットを有するベクトル・グラフィックス・ファイルの中にレンダリングするステップとを含む。
【０００７】
本発明の他の実施例によるシステムは、コンピュータ・システムに結合されたスクリーンキャプチャ・ツールであって、前記コンピュータ・システム上に表示された現在のスクリーンに関するスクリーン・データを受取る前記スクリーンキャプチャ・ツールと、前記スクリーンキャプチャ・ツールに結合され、かつ前記スクリーン・データの表示を生じるベクトル・グラフィックス・ライブラリ・コンポーネントとを含み、前記スクリーンキャプチャ・ツールが、複数のソフトウエア・プラットフォームに発行され得るベクトル・グラフィックス・スクリーンキャプチャ・ファイルを生じるように前記表示を用いるシステムである。
【０００８】
本発明の他の実施例によるシステムは、コンピュータ・システムに結合されたスクリーンキャプチャ・ツールであって、ソフトウエア（製品）上に表示された現在のスクリーンに関するスクリーン・データを受取る前記スクリーンキャプチャ・ツールと、前記スクリーンキャプチャ・ツールに結合され、かつ前記スクリーン・データの表示を生じるベクトル・グラフィックス・レンダリング・ライブラリとを含み、前記スクリーンキャプチャ・ツールが、複数のソフトウエア・プラットフォームに発行され得るベクトル・グラフィックス・スクリーンキャプチャ・ファイルを生じるように前記表示を用いることと、複数の前記ベクトル・グラフィックス・スクリーンキャプチャ・ファイルを発行された版を含むエンド・ユーザー文書とを含むシステムである。
【０００９】
本発明の他の実施例によるコンピュータ・プログラムは、スクリーンキャプチャを実行するためのコンピュータ・プログラムであって、ディスプレイ・スクリーンを有するコンピュータからスクリーン・データを獲得するステップと、前記スクリーン・データを、複数のソフトウエア・プラットフォームで表現されることのできる表示に変換するステップと、前記スクリーン・データの前記表示を、複数のソフトウエア・プラットフォームに発行されることができるようなベクトル・グラフィックス・ファイルの中にレンダリングするステップとをコンピュータに実行させるコンピュータ・プログラムである。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例によるスクリーンキャプチャ・システムのためのアーキテクチャの図である。
【図２】本発明の実施例によるオンデマンド・スクリーンキャプチャのためのプロセスのフローチャートを示す。
【図３】本発明の実施例によるソフトウエア開発中のエンド・ユーザー向け文書用のスクリーンキャプチャを自動的に発生するプロセスのプロ―チャートを示す。
【図４】本発明の一実施例を実装するために有用な情報処理システムの高レベル・ブロック図を示す。
【発明を実施するための形態】
【００１１】
本発明の実施例はプラットフォームにとらわれないスクリーンキャプチャ・ツールを提供する。前述のとおり、スクリーンキャプチャはエンド・ユーザー文書のためのソフトウエア開発中に頻繁に取られる。スクリーンキャプチャ・プロセスにより直面する幾つかの技術的な問題の内の一つは、結果として生じるピクセル・ベースのグラフィカル・ファイルが特定のプレゼンテーション・プラットフォームをターゲットにすることである。その結果、異なるプレゼンテーション・プラットフォームがターゲットにされる必要のあるときに、そのファイルが再キャプチャされるかまたは、例えば一括Ｐｈｏｔｏｓｈｏｐ（フォトショップ）変換を用いて更に処理される。
【００１２】
エンド・ユーザー文書のためのスクリーンキャプチャで遭遇する他の問題は、ソフトウエア開発のライフサイクルにおけるキャプチャのタイミングである。これらのキャプチャはソフトウエア・イメージを提供するのに使用することができるようソフトウエア開発プロセスの終わりに向かって一般的には取る必要がある。多くの開発組織で用いられる圧縮されたソフトウエア開発時間枠において、このことはユーザー文書を適切に図解するのに必要な全ての英語スクリーンキャプチャを創出するのを困難にしている。翻訳し、ビルドし、そして手動で追加の国語版をキャプチャするのはスケジュールするためのもっと多くの時間を加えることになる。これらの問題をマイグレートするために、以下の事がしばしば生じる。すなわち、スクリーンキャプチャが英語のみの製品から取られ、それから全ての言語を図解するように使用される。 幾つかの場合には、英語版と他の言語版との間のパリティを確保するため全くスクリーンキャプチャを持たないこともあり得る。
【００１３】
また、ソフトウエア開発中にエンド・ユーザー文書のためのスクリーンキャプチャとともに生じるプロセス問題もある。これはアプリケーション・プログラマがユーザー・インターフェースへの最新の変更を行うときに生じる。コードが「翻訳フリーズ」下にあるとき、かつ翻訳されたテキストを含むプロパティのファイルが変更されないときでさえ、開発者がユーザー・インターフェースのウイジェットの順序および性質を変更せず、任意の記述的なテキストを変更しないままにする可能性がある。テキストの変更がないときでさえ、実際のユーザー・インターフェースと文書との間で完全に異なるようにみえるウイジェットの構成またはタブ移動順序を有するのは先例がない。
【００１４】
本発明のこの問題およびその他の問題に対処するために、本発明の実施例は、スクリーンをオペレーティング・システム・レベルのレンダリングするものとして坐しているソフトウエア・ライブラリおよび関連するランタイム実行ファイルを提供する。
【００１５】
図１は、本発明の実施例によるスクリーンキャプチャ・システム１０のためのアーキテクチャを示す。コンピュータ１２がオペレーティング・システム（図示せず）、ディスプレイ・ユニット１６をディスプレイ・スクリーン１８とともにランするＣＰＵユニット１４を含む。コンピュータ１２は、ネイティブ・ライブラリ２０、ＪａｖａＮａｔｉｖｅ Ｉｎｔｅｒｆａｃｅ（ＪＮＩ、 Ｊａｖａネイティブ・インターフェース、Ｊａｖａはサン・マイクロシステムズ社の登録商標）２２、ディスプレイ・コンポーネント２４、シェル・コンポーネント２６、標準ウイジェット・ツールキット（ＳＷＴ）２８、およびプロパティーズ・ファイル３０を含む種々の標準的なソフトウエア・コンポーネントの「層」を含んでもよい。本発明の実施例によれば、スクリーンキャプチャ・ツール３２およびスケーラブル・ベクトル・グラフィックス（ＳＶＧ）レンダリング・ライブラリ３４も、スクリーン１８の所与の時点でのイメージをストアすることができるようにスクリーンキャプチャ・ファイル３６の出力を促すよう含まれていてもよい。
【００１６】
従来からのスクリーンキャプチャ・システムでは、ソフトウエア開発者は、ユーザー・インターフェースのスクリーンのための幾らかの情報を含むような窓を創出するために、例えばＳＷＴ２８を使用してもよい。この窓はピクセル（画素）の点から見て特定のサイズを有するように定義されてもよい。その窓はシェル２６、ディスプレイ２４、およびＪＮＩ２２の層を介してネイティブ・ライブラリ２０まで処理されるシステム・コールを走査することによってレンダリングされてもよい。このオペレーティング・システムは、ネイティブ・ライブラリ２０を呼び出すが、それは例えばＬｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標）、Ｗｉｎｄｏｗｓ（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標）、または、Ｍａｃなどといった、各オペレーティング・システム毎に異なるかもしれない。
【００１７】
対照的に、本発明の実施例のスクリーンキャプチャ・システム１０では、オペレーティング・システムにネイティブ・ライブラリ２０に話しかけさせる代わりに、そのオペレーティング・システムがＸＭＬにおいてＳＶＧレンダリング・ライブラリ３４に話しかけてその窓をスクリーン上に引く。こうして、シェル２６、ディスプレイ２４およびＪＮＩを介しての全ての呼び出しがＳＶＧレンダリング・ライブラリ３４に話しかける。ＳＶＧレンダリング・ライブラリ３４は所望の窓を表わすグラフィックスを発生する。これらのグラフィックスは、窓がどのように見えるかということについて汎用化されてもよく、すなわちいずれかの特定のオペレーティング・システムに特化されて適用されるような表示でなくてよい。従ってＳＶＧレンダリング・ライブラリ３４はプラットフォームにとらわれない。従来からのソフトウエア開発プロセスにおいては、エンド・プラットフォーム・オペレーティング・システムとは独立の態様でコーディングが行われるが、ユーザー・インターフェース・スクリーンが特定のオペレーティング・システムにより実際のコンピュータ・スクリーンの中にレンダリングされることができるだけであることに留意されたい。また、この特定のオペレーティング・システムはそのオペレーティング・システムに構成されるネイティブ・ライブラリ２０とともに動作しなければならない。本発明の実施例はこのステップを飛ばして、そのスクリーンをＳＶＧスクリーンキャプチャ・ファイル３６の中に直接、レンダリングする。例えば、スクリーンキャプチャ・ファイルはユーザー・インターフェース上の所望の窓の中にカーブを表わすことができる。
【００１８】
ＳＶＧファイルは、Ｗｉｎｄｏｗｓなどのオペレーティング・システムにおいてレンダリングされるとき実際の窓がどのように見えるかを表わすレプリカではないことに留意されたい。即ち、ＳＶＧレンダリング・ライブラリ３４中のＳＶＧ表示はその窓がどのように見えるかを表わす汎用化された版を示すであろう。例えば、その窓が縁を有し、広げたり狭めたりする方法があることをそれが示してもよい。当業者はそのような窓を表わす種々の方法があることを理解されたい。
【００１９】
従来のシステムでは、コードがシステム１０においてランしているとき、それがオペレーティング・システム・スクリーン上で特定のユーザー・インターフェース・スクリーン、ボタン等を通常はレンダリングするであろうある種のコールを呼び出す。これに比べ、本発明の実施例では、ＳＶＧレンダリング・ライブラリ３４が代わりにスクリーン上にＳＶＧファイルをレンダリングする。システム１０がランしているとき、スクリーンはスクリーンキャプチャ・ツール３２によってキャプチャされているかもしれない。これはネイティブ・ライブラリ２０と同じレベルに位置している実行可能層を含む。スクリーンキャプチャ・ツール３２はこれらのＳＶＧファイルをコードがそれらを呼び出す際に順序付け、修正する。従来からのシステムでは、ネイティブ・ライブラリ２０がこれを行うだろう。本発明の実施例では、ネイティブ・ライブラリ２０を使用することなく、このスクリーンキャプチャ・ツール３２がそのランしている際にそのコードに追従することができ、そして任意の所与のポイントでそのスクリーンがどのように見えるかを決定する必要がある。この所与のポイントは、ボタンを押すなどユーザーが幾つかのアクションを取った後であってもよい。スクリーンキャプチャ・ツールはスクリーンキャプチャ・ファイル３６中に現在のディスプレイ・スクリーン１８をレンダリングするＳＶＧレンダリング・ライブラリ３４を呼び出す。一般に、スクリーンキャプチャ・ツール３２はＳＶＧレンダリング・ライブラリ３４がその窓の見え方を決定する間、その順序付けを行う。
【００２０】
スクリーンキャプチャ・ファイル３６は翻訳された、取り出し可能な、プラットフォームに無関係なスクリーンキャプチャＳＶＧファイルを含んでもよい。スクリーンキャプチャ・ファイル３６は標準ウイジェット・ツールキット（ＳＷＴ）ソース・コード・ユニット２８によって発生され、プロパティーズ・ファイル３０中のエントリへの原始ウイジェット呼び出しへのマッピングを保持する。これはデバッガがソース・ラインへのリンクを保持するための能力に似ている。
【００２１】
スクリーンは２つのモードでキャプチャされることができる。幾つかの実施例では、そのスクリーンがユーザーによりオンデマンドで、またはそのランニング・システムとともにスクリプトドリブンのインタラクションによりキャプチャされる。 他の実施例では、デバッギング・モードに似た特別のスクリーンキャプチャ・モードがイネーブルされてもよい。このスクリーンキャプチャ・モードでは、スクリーンの「ブレークポイント」が、いつスクリーンをキャプチャするかをそのシステムに教示し、そしてユーザー・インターフェースへの実質的な変更が自動的にキャプチャされる。
【００２２】
システム１０のアーキテクチャは、アプリケーションと同じソースを共有するスクリーンキャプチャのオンデマンド・ビルディングを許容する。実際のユーザー・インターフェースにおけるよりもエンド・ユーザー文書において異なるスクリーンキャプチャを有するという問題は除かれるかもしれない。これは実際のユーザー・インターフェースと同じ、ソフトウエア開発中のビルドにおいてそのスクリーンが「キャプチャ」され得るからである。この実施例では、自動化テスト・ツール、例えば「Ｒａｔｉｏｎａｌ  Ｆｕｎｃｔｉｏｎａｌ  Ｔｅｓｔｅｒ」が正しいスクリーン構成を入手（access）するのに使用されてもよい。何故ならこれらはこれまでランタイムのとき動的に創り出されるだけだからである。「Ｒａｔｉｏｎａｌ」はインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎ）の、米国もしくは他の国あるいは両方における商標もしくは登録商標である。代わりに、オンにされたスクリーンキャプチャ・ツール３２でもって製品を手動で働かせること（exercising）が、ユーザー・インターフェースへの実質的な変化が起こる際に、オンデマンドのキャプチャか自動のキャプチャかを許容する。
【００２３】
スクリーンキャプチャ・ファイル３６のためのフォーマットは、この実施例では、ＸＭＬベースであってよく、これが（例えば、スクリーン・タイトルにより）グラフィックスのサーチおよび検索を許容する。重要なことだが、スクリーン上の任意のテキストが元のソースと同じプロパティーズ・ファイル３０を有していてもよい。ディスプレイ・スクリーン１８上のテキストのためのこの標準的な（信頼できる）ソースを知ることによって、最初のビルドの前でさえサーチを許容する追加のツールが創出される。さもなければ、もしテキストの編集が所望であればその元のプロパティーズの戻るようスクリーンキャプチャからのマッピングを許容する。プロパティーズ・ファイル（例えば、ハード・コーディングの英語テキスト）を用いずにプログラマが創出するスクリーンはスクリーンキャプチャ・ツール３２によって迅速に発見される。
【００２４】
プロパティーズ・ファイル３０はスクリーンキャプチャ・システム１０を用いて開発される種々の版のソフトウエア製品を生じやすくするのに使用される。例えば、多くの異なる言語で販売するために種々の版のソフトウエア製品を持つことができるのが望ましいかもしれない。多くのソフトウエア製品が１０を越える言語で販売される必要がある。コンピュータが窓およびユーザー・インターフェース・ウイジェットをいかにして記憶するかを知るようにプロパティーズ・ファイル３０が一群の命令をストアするのに使用される。これらの命令はプロパティーズ・ファイル３０をポイントする変数でもってラベル付けされる。プロパティーズ・ファイル３０は、異なる言語版の一片のテキストでもってストアされる。例えば、英語の「ＯＫ」というワードは異なる言語のための異なる表現に翻訳される必要がある。従来のシステムでは、異なる版のソフトウエア製品は言語ごとに異なるスクリーンキャプチャを生じるように取り扱われる。スクリーンキャプチャ・システム１０では、ＳＶＧレンダリング・ライブラリ３４は、ユーザーがテキストを一回そうあるべきところに差し込むのを許容し、そしてその翻訳版がプロパティーズ・ファイル３０からＳＶＧレンダリング・ライブラリ３４中のそれが現れるべきところにフォローアップする。
【００２５】
更に、任意のスケールでレンダリングすることになるＳＶＧのもっとも共通の利益が本発明で得られ、その結果広い範囲のプラットフォーム（ウェッブ、ＰＤＦなど）への発行が可能となる。
【００２６】
図２は本発明の実施例によるオンデマンド・スクリーンキャプチャのためのプロセス４０のフローチャートを示す。ブロック４２では、スクリーンキャプチャのデマンド（demand）を、ユーザーからもしくはスクリプトドリブンのインタラクション（interaction）から受ける。前述のとおり、そのデマンドは種々のソースから生じる。このデマンドはユーザーから直接生じる。例えば、このユーザーというのは、それらのオペレーティング・システムに上がってくるスクリーンを観察するシステムをランしているソフトウエア開発者であってもよい。ネイティブ・ライブラリ２０がなおもアクティブであることに留意されたい。ユーザーはスクリーンをその時点でキャプチャするように決定してもよい。従来は、スクリーンキャプチャ・ツールがこの時点で使用され、その時点でのこれらのピクセルを取得しそれらをファイルに置く。
【００２７】
これに比べ、本発明のスクリーンキャプチャ・システム１０では、そのシステムがそのコード中のどこにそれがあるか、そしてその時点で何がランしているか、何の呼び出しがなされたかを決定する。その呼び出しの代わりに、スクリーンキャプチャ・システム１０がＳＶＧレンダリング・ライブラリ３４への呼び出しを行い、それからスクリーンキャプチャ・ファイル３６の中に汎用化されたビューでスクリーンが見える態様の表示をダンプする。これはＳＶＧレンダリング・ライブラリ３４が呼び出される態様である。オペレーティング・システム・スクリーンにスクリーンを書き出す代わりに、そのスクリーンをＳＶＧファイルに書き込む。
【００２８】
代替例として、ブロック４２でデマンドがユーザーから手動で生じる代わりに、それがデバッギング・ブレークポイントと類似のスクリーンキャプチャ・ブレークポイントから生じることができる。従って、そのプログラムにおける所定のポイントで、そのシステムがスクリーンキャプチャを取るコマンドを発する。このアプローチの一つの利点は、もしスクリーンへの変更またはスクリーンが現れる順序への変更があったなら、任意の時点でそのプログラムが再度キャプチャするように再度ランされることができることである。当業者ならブロック４２でスクリーンキャプチャ・デマンドをトリガする更に他のソースまたはイベントがあってもよいことを認めるであろう。
【００２９】
ブロック４３では、現在のスクリーン・データが別の表示に変換され、ＳＶＧレンダリング・ライブラリ３４にストアされる。このＳＶＧレンダリング・ライブラリ３４ではこの別の表示は複数のソフトウエア・プラットフォームにストアされることのできるものである。ブロック４４では、これはＳＶＧレンダリング・ライブラリ３４から獲得される。ブロック４６では、このスクリーン・データがＳＶＧファイルなどのベクトル・グラフィックス・ファイルにレンダリングされる。ブロック４８では、そのベクトル・グラフィックス・ファイルが出力される。
【００３０】
図３は、ソフトウエア開発中にエンド・ユーザー文書のためのスクリーンキャプチャを自動的に生じる本発明の他の実施例によるプロセス５０のフローチャートを示す。ブロック５２で、ソフトウエア製品開発プロセスが起動される。この多くが標準ウイジェット・ツールキット（ＳＷＴ）２８を通じて行われ、プログラマがエンド・オペレーティング・システムに関心を払う必要をなくすことができる。この側面は本発明による効果ととらえられる。このことがこのコーディングをキャプチャし、それをＳＶＧファイルに変換して、複数のオペレーティング・システムで表現され得るＳＶＧファイルにそれを変換する。ブロック５４で、ソフトウエア（製品）のユーザー・インターフェースが修正される。ブロック５６で、ソフトウエア（製品）への実質的な変更が生じたか決定がなされる。一実施例では、これが前述の「Ｒａｔｉｏｎａｌ  Ｆｕｎｃｔｉｏｎａｌ  Ｔｅｓｔｅｒ」や他の同様なテスト製品など、ユーザー・インターフェースを使用するのと協働してなされる。その場合には、ブロック５２ないし５６のステップが反復され、それからそのプログラムを通じてのランの後そのスクリーンがレンダリングされる。
【００３１】
もしブロック５６により決定されるように変更がなかったなら、そのプロセス５０はブロック５４に戻る。もしブロック５６により決定されるように変更があったなら、スクリーン・データは複数のオペレーティング・システムで表現され得る代替表示にスクリーン・データが変換される。ブロック５８では、そのスクリーン・データが代替表示を用いてベクトル・グラフィックス・ファイルにレンダリングされる。ブロック６０で、そのベクトル・グラフィックス・ファイルが出力され、ソフトウエア（製品）のユーザー文書で使用されることができる。
【００３２】
前述の開示から分かるように、本発明の実施例はプラットフォームにとらわれないスクリーンキャプチャ・ツールを提供する。当業者に認められるように、本発明はシステム、方法またはコンピュータ・プログラムとして実施され得る。従って、本発明は、安全にハードウエアの実施例、完全にソフトウエア（ファームウエア、常駐ソフトウエア、マイクロコード等を含む）の実施例、またはソフトウエアおよびハードウエアの側面を組合わせた実施例の態様を取ることができ、これらは全てここで一般に「回路」、「モジュール」または「システム」と呼ぶかもしれない。
【００３３】
更に、本発明は媒体に含まれるコンピュータ使用可能なプログラム・コードを有する表現よりなる、任意の有体物に取り込まれることも可能なコンピュータ・プログラムの形態をとることもできる。１個以上のコンピュータ可用媒体もしくはコンピュータ可読媒体が使用されてもよい。コンピュータ可用媒体もしくはコンピュータ可読媒体は、例えば、以下に限定されるものではないが、電子的、磁気的、光学的、電磁気的、赤外線の、または半導体のシステム、装置、デバイス、または伝播媒体であってよい。コンピュータ可読媒体のもっと具体的な例（限定的なリスト）は、以下を含む。１本もしくはそれ以上のワイヤ、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、消去可能なプログラマブル読出し専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読出し専用メモリ（ＣＤＲＯＭ）、光ストレージ・デバイス、インターネットまたはイントラネットをサポートするものなどの伝送媒体、あるいは磁気ストレージ・デバイスを含む。コンピュータ可用媒体またはコンピュータ可読媒体というのは、プログラムがプリントされた用紙または他の適当な媒体であってよいことに留意されたい。例えば用紙または他の媒体の光学的な走査を介してプログラムが電子的に捕捉され、それからコンパイルされ、翻訳され、あるいは必要なら他の適当な態様で処理され、そしてコンピュータ・メモリにストアされ得るからである。この文書のコンテキストでは、コンピュータ可用媒体もしくはコンピュータ可読媒体というのは、命令実行システム、装置またはデバイスにより使用されもしくはそれと関係づけられるようなプログラムを含み、ストアし、通信し、伝播し、搬送することができるような任意の媒体であってよい。コンピュータ可用媒体は、それに含まれるコンピュータの使用可能なプログラム・コードとともにベースバンドにおいてもしくは搬送波の一部として伝播されるデータ信号を含んでいてもよい。コンピュータの使用可能なプログラム・コードは、以下に限定されるわけではないが、無線、有線、光ファイバー・ケーブル、ＲＦ（ラジオ周波数）などを含む任意の適当な媒体を用いて伝送されてもよい。
【００３４】
本発明の動作を実行するコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋などのオブジェクト指向プログラミング言語と、Ｃプログラミング言語もしくは類似のプログラミング言語など、従来からある手続きプログラミング言語を含む１個もしくはそれ以上の任意の組み合わせのプログラミング言語で書かれても良い。このプログラム・コードはユーザーのコンピュータ上で完全に実行されてもよいし、一部はユーザーのコンピュータで、スタンドアローンのソフトウエア・パッケージとして、あるいは一部はユーザーのコンピュータ上、かつ一部は遠隔のコンピュータ上で、というのでもよいし、遠隔のコンピュータまたはサーバー上で完全に実行されるのでもよい。後者のシナリオでは、遠隔のコンピュータがユーザーのコンピュータに任意の型のネットワーク、例えばローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）を介して接続されていてもよい。あるいは外部コンピュータ（例えば、インターネット・サービス・プロバイダを用いるインターネットを介して）その接続がなされていてもよい。
【００３５】
本発明は、本発明の実施例による方法、装置（システム）およびコンピュータ・プログラムのフローチャートの説明および／もしくはブロック図に沿って以下で説明される。フローチャートの説明および／もしくはブロック図の各ブロックおよびその複数のブロックの組み合わせコンピュータ・プログラム命令によって実施されることができることは理解されたい。これらのコンピュータ・プログラム命令は、そのような命令がコンピュータもしくは他のプログラム可能なデータ処理装置を介して実行し、フローチャートおよび／もしくはブロック図の１個もしくは複数個のブロックで特定される機能ないし動作を実施するための手段を生じるというようなマシンを生じるため、汎用のコンピュータ、特定目的のコンピュータ、もしくは他のプログラム可能なデータ・プロセシング装置のプロセッサに提供されてもよい。
【００３６】
これらのコンピュータ・プログラム命令はまたコンピュータ可読媒体にストアされていてもよく、これがコンピュータもしくは他のプログラム可能データ処理装置に特定の態様で、例えばコンピュータ可読媒体にストアされている命令がフローチャートおよび／もしくはブロック図の１個もしくは複数個の命令で特定される機能ないし動作を実施する命令手段を含む製品（an article of manufacture）を生じるような態様で機能するよう命令することができる。
【００３７】
コンピュータ・プログラム命令はまた、コンピュータもしくは他のプログラム可能なデータ処理装置上にロードされてもよく、これによって当該コンピュータもしくはプログラム可能な装置上で行われるべき一連の動作ステップが、コンピュータもしくは他のプログラム可能装置上で実行する命令がが、フローチャートおよび／もしくはブロック図の１個もしくは複数個のブロックで特定される機能ないし動作を実施するためのプロセスを提供するようにコンピュータ実施プロセスを生じさせる。
【００３８】
図のフローチャートおよびブロック図は、本発明のいろいろな実施例に従うシステム、方法およびコンピュータ・プログラムの可能な導入例のアーキテクチャ、機能および動作を説明している。この点で、フローチャートまたはブロック図が、モジュール、セグメント、または特定の論理機能を実装するための１個以上の実行可能命令を含むコードの部分を表してもよい。代替実施例ではそのブロックに示された機能が、図に示された順序から外れて生じてもよいことに留意されたい。例えば、連続して示されている２個のブロックが、そこに含まれる機能によっては、実際はほぼ同時に実行されたり、それらのブロックがときには逆の順序で実行されたりする。ブロック図および／もしくはフローチャートの説明の各ブロック、およびブロック図および／もしくはフローチャートの説明のブロックの組み合わせが、特定目的のハードウエアおよびコンピュータ命令の機能もしくは動作またはその組み合わせを実行する特定目的のハードウエアをベースにするシステムによって実装され得ることにも留意されたい。
【００３９】
図４は本発明の一実施例を実装するのに使用される情報処理システムを示す高レベル・ブロック図である。このコンピュータ・システムはプロセッサ１０２など、１個もしくは複数個のプロセッサを含む。プロセッサ１０２は通信インフラ１０４（例えば、通信バス、クロスオーバー・バー、またはネットワーク）に接続される。種々のソフトウエアの実施例がこの例示のコンピュータ・システムによって記述される。この記述を読めば、他のコンピュータ・システムおよび／もしくはコンピュータ・アーキテクチャを用いて本発明をどのように実施するかが当業者には明らかである。
【００４０】
このコンピュータ・システムは、ディスプレイ・ユニット１０８上に表示するために通信インフラ１０４からのグラフィックス、テキスト、および他のデータを進めるためのディスプレイ・インターフェース１０６を含むことができる。このコンピュータ・システムはまた主メモリ１１０を含み、好ましくはランダム・アクセス・メモリ（ＲＡM）を、更には２次メモリ１１２をも含む。２次メモリ１１２は、例えばハード・ディスク・ドライブ１１４および／もしくはリムーバブル・ストレージ・ドライブ１１６を含むことができる。後者は、例えばフロッピー・ディスク・ドライブ、磁気テープ・ドライブ、またはヒカリディスク・ドライブを表わす。リムーバブル・ストレージ・ドライブ１１６は当業者に良く知られた態様でリムーバブル・ストレージ・ユニット１１８に読み書きすることができる。リムーバブル・ストレージ・ユニット１１８は、リムーバブル・ストレージ・ドライブ１１６によって読み書きされる、例えばフロッピー・ディスク、コンパクト・ディスク、磁気テープまたは光ディスクを表わす。リムーバブル・ストレージ・ユニット１１８が、コンピュータ・ソフトウエアおよび／もしくはデータを内部にストアさせたコンピュータ可読媒体を含むことが理解されている。
【００４１】
代替実施例では、２次メモリ１１２はコンピュータ・プログラムまたは他の命令がコンピュータ・システムにロードされるのを許容するための他の類似の手段を含んでもよい。このような手段は、例えばリムーバブル・ストレージ・ユニット１２０およびインターフェース１２２を含んでもよい。このような手段の例はプログラム・カートリッジ、カートリッジ・インターフェース（例えば。ビデオ・ゲーム装置に見られるようなもの）、リムーバブル・メモリ・チップ（例えば、ＥＰＲＯＭまたはＰＲＯＭ）および関連するソケット、ならびにリムーバブル・ストレージ・ユニット１２０からコンピュータ・システムにソフトウエアおよびデータが転送されるのを許容するリムーバブル・ストレージ・ユニット１２０およびインターフェース１２２を含んでもよい。
【００４２】
このコンピュータ・システムはまた通信インターフェース１２４を含むことができる。通信インターフェース１２４はソフトウエアおよびデータがコンピュータ・システムおよび外部装置の間で転送されるのを許容する。通信インターフェース１２４の例は、モデム、ネットワーク・インターフェース（Ｅｔｈｅｒｎｅｔカードなど）、通信ポート、またはＰＣＭＣＩＡスロットおよびカードなどを含むことができる。通信インターフェース１２４を介して転送されるソフトウエアおよびデータは、通信インターフェース１２４が受取ることのできる電子的、電磁気的、光学的もしくは他の信号であってもよい信号の形式である。これらの信号は通信パス（例えばチャネル）１２６を介して通信インターフェース１２４に提供される。通信パス１２６は信号を担持し、そしてワイヤもしくはケーブル、ファイバ・オプティックス、電話線、携帯電話のリンク、ＲＦリンクおよび／もしくは他の通信チャネルを用いて実装されてもよい。
【００４３】
この文書では、「コンピュータ・プログラム媒体」、「コンピュータ可用媒体」および「コンピュータ可読媒体」という用語が主メモリ１１０および２次メモリ１１２、リムーバブル・ストレージ・ドライブ１１６およびハード・ディスク・ドライブ１１４に据え付けられたハード・ディスクといった媒体を一般に指すのに使用される。
【００４４】
コンピュータ・プログラム（コンピュータ制御論理とも称する）が主メモリ１１０および／もしくは２次メモリ１１２にストアされる。コンピュータ・プログラムはまた通信インターフェース１２４を介して受取られてもよい。このようなコンピュータ・プログラムは、実行時に、ここで開示するとおり本発明の特徴を実行させるようにコンピュータ・システムをイネーブルする。特に、コンピュータ・プログラムは、実行時にコンピュータ・システムの特徴を実行させるようにプロセッサ１０２をイネーブルする。従って、このようなコンピュータ・プログラムはコンピュータ・システムのコントローラを表わす。
【００４５】
前述の説明から、本発明がその実施例を導入するためのシステム、コンピュータ・プログラム、および方法を提供することが分かる。特許請求の範囲で単一形の要素に言及する、あるいは複数であることを特定しないことが、「唯一」を、特にそのように断らない限り、意味するのではなく、むしろ「１個もしくは複数個の（１個以上）」を意味することを意図している。当業者に現在知られている、あるいは後に知られるようになる前述の実施例の要素と構造的および機能的に等価なものの全てが本発明により包含されることを意図している。ここでの特許請求の範囲の要素は、その要素が「〜のための手段（means for）」もしくは「〜のためのステップ（step for）」といったフレーズ（句）を明示的に用いていれば別であるが、米国特許法１１２条第６パラグラフの下で解釈されない筈である。
【００４６】
ここで使用される用語は、特定の実施例のみを記述するためであり、本発明を制限する意図はない。ここで使用されるように、単一形「１個の（a、an）」、および「前記１個の（the）」、あるいは「複数個の」と特定していない「前記」は、その内容が他の事を明確に示していない限り、複数形も同様に含むことを意図している。「含む」あるいは「含んでいる」という用語は、この明細書で使用されるとき、叙述した機能、整数、ステップ、動作、要素および／もしくはコンポーネントの存在を特定するが、１個もしくは複数個の特徴、整数、ステップ、動作、要素およびコンポーネントおよび／もしくはそのグループが存在することまたは付加されていることを除外するものではないことを理解されたい。
【００４７】
特許請求の範囲における全ての対応する構造、材料、行為および機能手段もしくは機能ステップの全要素（all means or step plus function elements）の等価物が、特許請求の範囲に特定されるような他の請求された要素と組み合わされた機能を実行するための任意の構造、材料もしくは技法を含むことを意図している。本発明の記述は図解および説明の目的から提供されたものであり、開示された形態での本発明に限定する意図も、全てを網羅する意図もない。本発明の趣旨および範囲から逸れずに当業者には多くの修正例や変形例が明らかである。ここでの実施例は本発明の原理および実際的な応用例をもっともよく説明するために選択され記述されたものであり、また他の当業者が特定の使用目的に合わせ、種々の修正を加えた種々の実施例のために本発明を理解するのを容易にしている。
【符号の説明】
【００４８】
１０  スクリーンキャプチャ・システム
１２  コンピュータ
１４  ＣＰＵユニット
１６  ディスプレイ・ユニット
１８  ディスプレイ・スクリーン
２０  ネイティブ・ライブラリ
２２  Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ  （ＪＮＩ）
２４  ディスプレイ・コンポーネント
２６  シェル・コンポーネント
２８  標準ウイジェット・ツールキット（ＳＷＴ）
３０  プロパティーズ・ファイル
３２  スクリーンキャプチャ・ツール
３４  スケーラブル・ベクトル・グラフィックス（ＳＶＧ）レンダリング・ライブラリ
３６  スクリーンキャプチャ・ファイル
【図１】
0005798552.tif 000002
【図２】
0005798552.tif 000003
【図３】
0005798552.tif 000004
【図４】
0005798552.tif 000005