(57)【要約】クライアント・サーバ・アプリケーションのための初期のユーザ・インタフェースの性能を改善するファシリティが記述されている。ファシリティは、初期のユーザ・インタフェースのユーザ・インタフェース要素の適切な部分集合体を選択する。選択されたユーザ・インタフェース要素の各々について、ファシリティは、選択されたユーザ・インタフェース要素のより効率的な置換物を生成する。そして、ファシリティは、初期のユーザ・インタフェースの選択されたユーザ・インタフェース要素に対して生成された置換物と共に、初期のユーザ・インタフェースの選択されていないユーザ・インタフェース要素を含む修正されたユーザ・インタフェースを生成する。【特許請求の範囲】
【請求項１】
遠隔アプリケーションによって提示される表示を指定するデータ構造を集合的に伝達するための１つまたは２つ以上の生成されたデータ信号であって、前記データ構造は、
１つまたは２つ以上のユーザ・インタフェース・コントロールを実装するコンパイラ・コードへのノード間参照であって、実装された前記ユーザ・インタフェース・コントロールが前記遠隔アプリケーションへのユーザ対話要素を提供するノード間参照と、
実装された前記ユーザ・インタフェース・コントロールのための視覚的コンテキストを指定する情報とを備えており、
前記データ信号がクライアントにより受信されると、前記クライアントが前記ノード間参照を使用して、参照されるべき前記コンパイラ・コードを前記クライアントにコピーすることができるようになっていることを特徴とする、生成されたデータ信号。
【請求項２】
前記クライアントが、さらに、前記遠隔アプリケーションを対象としたユーザ対話を受信するために、コピーされた参照されるべき前記コンパイラ・コードを使用して、前記情報により指定された前記視覚的コンテキスト内に実装された前記ユーザ・インタフェース・コントロールを表示する、請求項１に記載の生成されたデータ信号。
【請求項３】
実装された前記ユーザ・インタフェース・コントロールがアクティブＸコントロールである、請求項１に記載の生成されたデータ信号。
【請求項４】
実装された前記ユーザ・インタフェース・コントロールがジャバ・コントロールである、請求項１に記載の生成されたデータ信号。
【請求項５】
コンピュータ・システムにおいて、クライアント・サーバ・アプリケーションのための初期のユーザ・インタフェースの性能を改善する方法であって、前記初期のユーザ・インタフェースが複数のユーザ・インタフェース要素を備え、前記方法は、
前記初期のユーザ・インタフェースの前記ユーザ・インタフェース要素の適切な部分集合体を選択するステップと、
前記初期のユーザ・インタフェースから選択された前記ユーザ・インタフェース要素の各々について、選択された前記ユーザ・インタフェース要素のより効率的な置換物を生成するステップと、
修正されたユーザ・インタフェースを生成するステップとを含んでおり、
ここで、前記修正されたユーザ・インタフェースは、
前記初期のユーザ・インタフェースの選択されていないユーザ・インタフェース要素と、
前記初期のユーザ・インタフェースの選択された前記ユーザ・インタフェース要素の生成された前記置換物とを有することを特徴とする、クライアント・サーバ・アプリケーションのための初期のユーザ・インタフェースの性能を改善する方法。
【請求項６】
その性能が前記初期のユーザ・インタフェースの有用性に否定的な影響を及ぼしていると判断された特定のユーザ・インタフェース要素を選択する、請求項５に記載の方法。
【請求項７】
前記特定のユーザ・インタフェース要素が、自動性能分析技術に基づいて選択される、請求項６に記載の方法。
【請求項８】
前記特定のユーザ・インタフェース要素が、分析を行う人間の決定に基づいて選択される、請求項６に記載の方法。
【請求項９】
前記方法が、さらに、前記クライアント・サーバ・アプリケーションのユーザによる前記初期のユーザ・インタフェースと前記修正されたユーザ・インタフェースとの間の選択を可能にするステップを含む、請求項５に記載の方法。
【請求項１０】
前記ユーザ・インタフェースが表示範囲内の表示を対象としており、置換された前記ユーザ・インタフェース要素の少なくとも一部が、各々、前記表示範囲の特定の下位領域における最新性の維持を担当するプログラム・エンティティである、請求項５に記載の方法。
【請求項１１】
置換された前記ユーザ・インタフェース要素の少なくとも一部がアクティブＸオブジェクトである、請求項５に記載の方法。
【請求項１２】
コンピュータ・システムによる、クライアント・サーバ・アプリケーションのための初期のユーザ・インタフェースの性能の改善を可能にする内容を有するコンピュータ読取可能な媒体であって、前記ユーザ・インタフェースが複数のユーザ・インタフェース要素を備え、前記改善は、
前記初期のユーザ・インタフェースの前記ユーザ・インタフェース要素の適切な部分集合体を選択するステップと、
前記初期のユーザ・インタフェースから選択された前記ユーザ・インタフェース要素の各々について、選択された前記ユーザ・インタフェース要素のより効率的な置換物を生成するステップと、
修正されたユーザ・インタフェースを生成するステップとを含んでおり、
ここで、前記修正されたユーザ・インタフェースは、
前記初期のユーザ・インタフェースの選択されていないユーザ・インタフェース要素と、
前記初期のユーザ・インタフェースの選択された前記ユーザ・インタフェース要素の前記置換物とを有することを特徴とする、コンピュータ読取可能な媒体。
【請求項１３】
遠隔使用がなされるアプリケーションによって提示される表示を指定するデータ構造を集合的に格納する１つまたは２つ以上のコンピュータ・メモリであって、前記データ構造は、
第１のクライアント実装技術を使用して実装される第１のユーザ・インタフェース要素を指定する情報と、
前記第１のクライアント実装技術とは異なる第２のクライアント実装技術を使用して実装される第２のユーザ・インタフェース要素を指定する情報とを備えることを特徴とする、コンピュータ・メモリ。
【請求項１４】
指定された前記第１のユーザ・インタフェース要素が、ジャバスクリプトのスクリプトによって維持されるＤＨＴＭＬコンテントを使用して実装され、指定された前記第２のユーザ・インタフェース要素が、コンパイラ・コードによって維持されるアクティブＸコントロールを使用して実装される、請求項１３に記載のコンピュータ・メモリ。
【請求項１５】
遠隔使用がなされるアプリケーションによって提示される表示を指定するデータ構造を集合的に伝達する１つまたは２つ以上の生成されたデータ信号であって、前記データ構造は、
第１のクライアント実装技術を使用して実装される第１のユーザ・インタフェース要素を指定する情報と、
前記第１のクライアント実装技術とは異なる第２のクライアント実装技術を使用して実装される第２のユーザ・インタフェース要素を指定する情報とを備えることを特徴とする、コンピュータ・メモリ。
【請求項１６】
コンピュータ・システムにおいて、遠隔アプリケーションのユーザ・インタフェースのページを提供する方法であって、
ユーザを代表して送信される要求であって、前記ユーザ・インタフェースの指定されたページに対する要求を受信するステップと、
受信された前記要求によって指定される前記ページの複数の異なるバージョンから、１つのバージョンを選択するステップと、
前記指定されたページの選択された前記バージョンによって、受信された前記要求に応答するステップとを含むことを特徴とする、遠隔アプリケーションのユーザ・インタフェースのページを提供する方法。
【請求項１７】
前記指定されたページの前記複数の異なるバージョンが、高対話性バージョンおよび低対話性バージョンを含む、請求項１６に記載の方法。
【請求項１８】
前記指定されたページの前記複数の異なるバージョンが、前記指定されたページの第１のバージョンと、前記第１のバージョンに対して性能が最適化された前記指定されたページの第２のバージョンとを含む、請求項１６に記載の方法。
【請求項１９】
前記指定されたページの前記複数の異なるバージョンが、第１のクライアント実装技術を使用して実装される第１のバージョンと、前記第１のクライアント実装技術とは異なる第２のクライアント実装技術を使用して実装される第２のバージョンとを含む、請求項１６に記載の方法。
【請求項２０】
前記指定されたページのバージョンが、受信された前記要求の内容に基づいて選択される、請求項１６に記載の方法。
【請求項２１】
前記指定されたページのバージョンが、前記要求が受信された経路に基づいて選択される、請求項１６に記載の方法。
【請求項２２】
前記指定されたページのバージョンが、前記ユーザのために維持される状態に基づいて選択される、請求項１６に記載の方法。
【請求項２３】
前記方法が、さらに、
前記要求の受信に応答してクエリー（query ）を発行するステップと、
発行された前記クエリーに対する応答を受信するステップとを含み、
前記指定されたページのバージョンが、受信された前記応答の内容に基づいて選択される、請求項１６に記載の方法。
【請求項２４】
前記方法が、自動判断に基づいて選択される、請求項１６に記載の方法。
【請求項２５】
前記方法が、前記ユーザの接続の種類の自動判断に基づいて選択される、請求項１６に記載の方法。
【請求項２６】
前記方法が、前記ユーザの接続の速度の自動判断に基づいて選択される、請求項１６に記載の方法。
【請求項２７】
遠隔アプリケーションのユーザ・インタフェースのユニットを提供するコンピュータ・システムであって、
ユーザを代表して送信される要求であって、指定された前記ユーザ・インタフェースのユニットに対する要求を受信する要求受信部と、
受信された前記要求によって指定される前記ユーザ・インタフェースのユニットの１つのバージョンを、複数の異なるバージョンから選択するバージョン選択部と、
前記指定されたユーザ・インタフェースのユニットの選択された前記バージョンによって、受信された前記要求に応答する応答サブシステムとを備えることを特徴とする、コンピュータ・システム。
【請求項２８】
前記ユーザ・インタフェースのユニットの各々がページである、請求項２７に記載のコンピュータ・システム。
【請求項２９】
前記ユーザ・インタフェースのユニットの各々が、ページの構成部分であるユーザ・インタフェース要素である、請求項２７に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ・インタフェースの技術およびその実装（implementations）に関する。
【背景技術】
【０００２】
クライアント・サーバ・アプリケーションでは、ユーザがクライアント・コンピュータ・システムと直接対話して、クライアント・コンピュータ・システムから物理的に離れていることが多いサーバ・コンピュータ・システム上で実行されるアプリケーション・プログラムを使用する。いくつかのクライアント・サーバ・アプリケーションでは、データは、アプリケーションが管理するデータベース中で生成され、アプリケーション内に組み込まれているユーザ・コマンドとビジネス・ルールとの組み合わせに基づいて検索したり、操作したり、表示したりしてもよい。例えば、ユーザは、一般的なアプリケーションを使用して、ユーザの顧客との関係に関する情報を格納したり、検索したり、操作したりしてもよい。
【０００３】
当初、クライアント・サーバ・アプリケーションでは、ユーザによるデータおよび命令の入力を可能にし、かつ、入力されたデータまたは命令をユーザがサーバに送信することを可能にするようなデータの表示以外、クライアント・コンピュータ・システムにて提供される機能はほとんどなかった。例えば、ユーザは表示された１５フィールドのフォームの各々のフィールドに文字を入力し、その後、送信ボタンを選択して、入力された全ての文字をサーバ上のアプリケーションに送信することができる。
【０００４】
このような「低対話性（low-interactivity ）」ユーザ・インタフェースを有するクライアント・サーバ・アプリケーションは、クライアント・ハードウェアに対する要求が控えめで、通常、端末エミュレータまたは基本的なウェブ・ブラウザといったような非常に簡単なクライアント・プログラムを実行するダム端末（dumb terminal ）またはマイクロコンピュータ・システムで十分であるという利点を有する。さらに、低対話性ユーザ・インタフェースがクライアントとサーバとの間で伝達するデータおよび命令はごく少量なので、クライアントとサーバとの間に安価でどこにでもあるような低速接続があれば、低対話性ユーザ・インタフェースをサポートするには通常十分である。
【０００５】
しかしながら、低対話性ユーザ・インタフェースには大きな欠点がある。この低対話性ユーザ・インタフェースのユーザは、通常、表示されたフォームの全てのフィールドにデータを入力してからフォーム全体の内容を送信することしかできないため、上記ユーザは、フォームの個々のフィールドに必要なデータを記入している間、アプリケーションから何らフィードバックを得ることができない。例えば、ユーザが１５フィールドのフォームの最初のフィールドに無効な値を入力した場合、ユーザは１５フィールド全てを記入してその内容を送信した後までその誤りに気付かない。さらに、ユーザが一旦有効な値をフォームのフィールドに記入してしまえば、アプリケーションは、フォーム内に表示されたフィールドの集合体を修正したり、入力された値に基づいてフォーム内の別のフィールドの値を示唆したりするメカニズムを有していない。
【０００６】
低対話性ユーザ・インタフェースのいくつかの欠点は、クライアント・サーバ・アプリケーションのための従来の高対話性（high-interactivity）ユーザ・インタフェースによって解消されている。従来の高対話性ユーザ・インタフェースは、通常、ジャバスクリプト・コード（JavaScript code ）と一緒にクライアント・コンピュータ・システム上のウェブ・ブラウザに配信されるような、ダイナミック・ハイパーテキスト・マークアップ言語（ＤＨＴＭＬ：Dynamic Hypertext Markup Language）のウェブ・ページを定義することによって構成される。上記ジャバスクリプト・コードは、ＤＨＴＭＬの定義を修正してウェブ・ページを更新することにより、様々な種類のユーザ入力に応答する。上記のような修正は、ジャバスクリプト・コード内の論理に基づいて行うか、または、ジャバスクリプト・コードによって送信された要求に応答するアプリケーションのためのサーバ・コード内の論理に基づいて行えばよい。このような従来の高対話性ユーザ・インタフェースは、通常、個々のキー入力およびマウスのクリックといったようなユーザ入力イベントを処理し、かつ、上記のようなより細分化されたイベントに応答するフィードバックを直接提供することによって、高いレベルの対話性を提供することができる。
【０００７】
しかしながら、従来の高対話性ユーザ・インタフェースは固有の欠点を有している。
【０００８】
大部分のウェブ・ブラウザでは、ＤＨＴＭＬの更新は、当該ＤＨＴＭＬを更新するために使用されるメカニズムにかかわらず低速である。さらに、ジャバスクリプトはインタープリタ言語（interpreted language）であるために、通常の従来の高対話性ユーザ・インタフェースで使用されているジャバスクリプトは低速で実行される。それゆえに、通常の従来の高対話性ユーザ・インタフェースの実装態様の性能が低下し、ひいては見た目の応答性が低下する。
【０００９】
したがって、一般的な低対話性ユーザ・インタフェースや従来の高対話性ユーザ・インタフェースに関してこれまで述べたような欠点を解消するような、クライアント・サーバ・アプリケーションのための高対話性ユーザ・インタフェースは大いに有用であろう。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は上記問題点に鑑みてなされたものであり、一般的な低対話性ユーザ・インタフェースや従来の高対話性ユーザ・インタフェースの欠点を解消することが可能な、クライアント・サーバ・アプリケーションのための高対話性ユーザ・インタフェースを利用したユーザ・インタフェースの技術およびその実装を提供することを目的とするものである。
【課題を解決するための手段】
【００１１】
上記問題点を解決するために、本発明は、遠隔アプリケーションにより提示される表示を指定するデータ構造を集合的に伝達するための１つまたは２つ以上の生成されたデータ信号であって、上記データ構造は、１つまたは２つ以上のユーザ・インタフェース・コントロールを実装するコンパイラ・コードへのノード間参照であって、実装された上記ユーザ・インタフェース・コントロールが上記遠隔アプリケーションへのユーザ対話要素を提供するノード間参照と、実装された上記ユーザ・インタフェース・コントロールのための視覚的コンテキスト（visual context）を指定する情報とを備えており、上記データ信号がクライアントにより受信されると、上記クライアントが上記ノード間参照を使用して、参照されるべき上記コンパイラ・コードを上記クライアントにコピーすることができるようになっている、生成されたデータ信号を提供する。
【００１２】
また一方で、本発明は、コンピュータ・システムにおいて、クライアント・サーバ・アプリケーションのための初期のユーザ・インタフェースの性能を改善する方法であって、上記初期のユーザ・インタフェースが複数のユーザ・インタフェース要素を備え、上記方法は、上記初期のユーザ・インタフェースの上記ユーザ・インタフェース要素の適切な部分集合体を選択するステップと、上記初期のユーザ・インタフェースから選択された上記ユーザ・インタフェース要素の各々について、選択された上記ユーザ・インタフェース要素のより効率的な置換物（replacement ）を生成するステップと、修正されたユーザ・インタフェースを生成するステップとを含んでおり、ここで、上記修正されたユーザ・インタフェースは、上記初期のユーザ・インタフェースの選択されていないユーザ・インタフェース要素と、上記初期のユーザ・インタフェースの選択された上記ユーザ・インタフェース要素の生成された上記置換物とを有するような、クライアント・サーバ・アプリケーションのための初期のユーザ・インタフェースの性能を改善する方法を提供する。
【００１３】
本発明では、クライアント・サーバ・アプリケーションのための高対話性ユーザ・インタフェースを効率的に実装するためのソフトウェア・ファシリティ（software facility）（「ファシリティ（facility）」と称する）が提供される。このファシリティのいくつかの実施形態によれば、従来の高対話性ユーザ・インタフェースの実装態様（implementation）が分析され、これによって、性能の不足によってユーザの操作感（experience）が最も大きく損なわれるのは従来の実装態様の中のどの態様であるかが特定される。このような分析は、自動性能分析ツールもしくは人間の分析者、またはその両方を使用して行えばよい。
【００１４】
このような分析に続いて、いくつかの実施形態では、（１）ユーザの操作感が最も大きく損なわれるような性能を有するものとして特定された従来の実装態様の中の特定の態様を置換すること、および、（２）（上記の置換によって生じる性能の改善以外の点では）従来の実装態様により提供されるユーザ・インタフェースの外観および感触を模倣することの２つの目的に従って、ファシリティが高対話性ユーザ・インタフェースの修正された実装態様を生成する。いくつかの実施形態では、上記の置換は、ＤＨＴＭＬ表示要素を、アクティブＸコントロールのようなより効率的な表示要素に置換すること、および／または、ユーザの対話を受信し処理して表示要素を更新するための（ジャバスクリプト・コードのような）インタープリタ・コードを、Ｃプログラミング言語もしくはその変形で書かれたコンパイラ・コード（「Ｃコード」と称する）またはジャバ・コード（Java code ）のような別の種類のコンパイラ・コードに置換することを含む。ファシリティの要素により生成されて上記のように修正されたユーザ・インタフェースの実装態様は、より高速で実行され、通常、低対話性ユーザ・インタフェースまたは高ユーザ対話性ユーザ・インタフェースの従来の実装態様よりも良好なユーザの操作感を提供することができる。
【００１５】
いくつかの実施形態では、ファシリティは、クライアント・サーバ・アプリケーションのユーザが使用可能な複数のユーザ・インタフェースの実装態様を組み合わせる。例えば、いくつかの実施形態では、低対話性ユーザ・インタフェース、高対話性ユーザ・インタフェース、および、高対話性ユーザ・インタフェースの置換された実装態様は、全てユーザが同時に使用可能である。他の実施形態では、このようなユーザ・インタフェースの実装態様の部分集合体または上位集合体が使用可能である。ユーザにとって望ましい対話性のレベルや、ユーザのネットワーク接続の速度を含むようなユーザが使用可能なコンピュータ・リソースや、ユーザにとって馴染みのある特定のユーザ・インタフェースを使用するユーザの好み等といったような要因に基づいて、個々のユーザは特定の使用可能なユーザ・インタフェースの実装態様を使用すればよく、あるいは、個々の使用可能なユーザ・インタフェースの実装態様がユーザのために自動的に選択されるようにしてもよい。異なるユーザ・インタフェースの実装態様間の上記のようなユーザ毎の選択性のレベルによって、個々のユーザは、自分の要求にとって最適なユーザ・インタフェースの実装態様を利用することが可能である。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面（図１〜図４）を参照しながら、本発明の好適な実施形態を説明する。
【００１７】
図１は、ファシリティが動作する代表的なハードウェア環境の態様を示すネットワーク図である。このネットワーク図は、サーバ側のクライアント・サーバ・アプリケーションが実行される１つまたは２つ以上のサーバ・コンピュータ・システム１００を示す。複数のサーバ・コンピュータ・システムを１つの場所に一緒に配置してもよく、いくつかの異なる場所に分散して配置してもよい。サーバ・コンピュータ・システム１００は、ネットワーク１５０を介して、いくつかの異なるクライアント・コンピュータ・システム１６１〜１６３に接続される。各々のクライアント・コンピュータ・システムによって、１人または２人以上のユーザは、サーバ・コンピュータ・システム上で実行されるクライアント・サーバ・アプリケーションにアクセスして当該クライアント・サーバ・アプリケーションを使用することができる。このようなクライアント・コンピュータ・システムは、デスクトップ型またはラップトップ型の汎用コンピュータ・システム、携帯情報端末、有線電話および無線電話等を含む多様な装置であってよい。ネットワーク１５０は、有線、導波型または見通し内の光（line-of-sight optical ）、または、無線周波数によるネットワーク通信を含む多様なネットワーク通信技術を使用してもよい。いくつかの実施形態では、ネットワークは公衆交換電話ネットワークを含む。クライアントとサーバとの間のネットワーク接続は、常時接続型、セッション・ベース（session-based ）、または、パケット・ベース（packet-based）のような断続型でもよい。
【００１８】
図２は、ファシリティが動作する代表的なハードウェア環境をさらに詳細に示すネットワーク図である。１つまたは２つ以上のサーバ・コンピュータ・システム１００は、コンピュータ・プログラムを実行する１つまたは２つ以上の中央演算処理装置（central processing unit ）（「プロセッサ」と称する）２０１と、プログラムが使用されている間、プログラムおよびデータ（データ構造を含む）を格納するコンピュータ・メモリ２２０と、プログラムおよびデータを永続的に格納するためのハードディスク装置のような永続的記憶装置２１０とを含む。永続的記憶装置２１０は、アプリケーションによって使用されるように保持されるデータベース・データを含むことが図示されている。メモリ２２０は、データベース・データ２１１を格納したり検索したり他の形式でデータベース・データ２１１にアクセスしたりするデータベース・エンジン２２２と、アプリケーション２２１と、データベース・エンジン２２２を介してアプリケーション２２１のためのデータベース・データへのアクセスを提供するデータ・マネージャ・プログラム２２３と、アプリケーションで使用されるデータベース・データ２１１の一部を抽出するビジネス・コンポーネント２２４とを含むことが図示されている。当業者にとって明らかなように、永続的記憶装置２１０およびメモリ２２０は、ここで図示されていない様々な他の内容を有してもよい。さらに、個々のデータの利用可能性を最適化して個々のデータの持続性を保証するといったような目的で、永続的記憶装置とメモリとの間、および個々の記憶装置間でデータを転送してもよい。
【００１９】
クライアント・コンピュータ・システム１６１は、コンピュータ・プログラムを実行する１つまたは２つ以上の中央演算処理装置２６１と、ビデオ・モニタまたはＬＣＤパネルといったような、プログラム出力を表示する１つまたは２つ以上の表示装置２６２と、キーボード、マイクロホン、またはマウス等のポインティング・デバイスといったような、ユーザ入力を受信する１つまたは２つ以上の入力装置２６３と、プログラムおよびデータを永続的に格納するハードディスク装置のような永続的記憶装置２６４と、プログラムおよびデータ（データ構造を含む）を格納するコンピュータ・メモリ２７０とを含む。メモリ２７０は、クライアント・サーバ・アプリケーションがそのユーザ・インタフェースをクライアント・コンピュータ・システムのユーザにまで拡張するための経路であるウェブ・ブラウザ・プログラム２７１と、クライアント・サーバ・アプリケーションのユーザ・インタフェースの現在の表示を表すＨＴＭＬドキュメント２７２と、全体として現在のＨＴＭＬドキュメント中の自律的な表示要素を表すアプリケーション・オブジェクト２７３と、各々現在のＨＴＭＬドキュメント中の４つの自律的な表示要素の１つを表す４つのアクティブ（Active）Ｘコントロール２７４〜２７７と、サーバ・コンピュータ・システム上に存在するビジネス・コンポーネント２２４のプロキシ２７８とを含むことが図示されている。以下、メモリ２７０内に示されている各々の要素をさらに詳細に説明する。
【００２０】
通常、上記で説明したような構成のコンピュータ・システムを使用してファシリティの動作をサポートしているが、様々な種類および構成の、様々なコンポーネントを有する装置を使用してファシリティを実装してもよいことを当業者は認識するであろう。
【００２１】
以下の議論では、ファシリティの実施形態を多様な例と共に説明する。ファシリティの実施形態は、様々な点で上記の例と大きく異なる状況で使用してもよいことを当業者は認識するであろう。
【００２２】
図３は、ファシリティにより提示され得る例示的なユーザ・インタフェースを示す表示図である。例示的なユーザ・インタフェースは、飲料製品グループの製品を示すが、これらの製品の価格はアプリケーションにより管理されている。クライアント上で実行されるウェブ・ブラウザ・プログラムによって表示されるメインウィンドウ（main window ）のクライアント領域に通常提示されるユーザ・インタフェース３００は、２つの第１レベルのユーザ・インタフェース要素３１０および３５０を含む。これらのユーザ・インタフェース要素３１０および３５０は「サブウィンドウ（subwindows）」または「ユーザ・インタフェース・アプレット（user interface applets）」といったような様々な呼び方がなされており、上記ユーザ・インタフェース要素３１０および３５０の各々は、様々な第２レベルのユーザ・インタフェース要素を含む。サブウィンドウ３１０は、飲料製品グループの一部である異なる製品の製品名３２１と、基準価格３２２と、実効価格３２３とを各々含む行３１１〜３１３を有している。サブウィンドウ３１０では、バブルワンという製品に対応する行３１１をユーザが選択したことがわかる。
【００２３】
サブウィンドウ３５０は、サブウィンドウ３１０で選択された行の製品についての詳細を示す。このサブウィンドウ３５０は、バブルワンという製品の製品名３５１と、基準価格３５２と、値引き金額３５３と、実効価格３５４とを含むことがわかる。
【００２４】
図３に示すユーザ・インタフェースは、従来の高対話性ユーザ・インタフェースの実装態様によって提供され得ると共に、置換された高対話性ユーザ・インタフェースの実装態様によって提供され得る。例えば、従来の高対話性ユーザ・インタフェースの実装態様では、サブウィンドウ３１０および３５０の全ての内容を含むユーザ・インタフェース３００の多くは、ＨＴＭＬドキュメント内に含まれるＤＨＴＭＬとして指定されてもよい。あるいは、ユーザ入力に応答するために、ＨＴＭＬドキュメントの一部としてダウンロードしたジャバスクリプト・ルーチンを（インタープリタ方式で）実行してもよい。例えば、ジャバスクリプト・ルーチンは、ユーザがサブウィンドウ３１０の行の１つをクリックしたり、サブウィンドウ３５０のフィールドの１つにデータを入力したりすることに対応するユーザ・インタフェース・イベントを受信してもよい。上記のような応答によって表示を更新する必要が生じた場合、ジャバスクリプト・ルーチンは、一方または両方のサブウィンドウの外観を指定するＤＨＴＭＬを修正することによってその更新を行ってもよい。
【００２５】
いくつかの実施形態では、ファシリティは、図３に示す例示的なユーザ・インタフェース表示を含むユーザ・インタフェースの従来の実装態様のどの態様が、当該ユーザ・インタフェース実装態様を使用するユーザの操作感を最も大きく損ねているかを決定する。この例では、ファシリティは、ユーザ・インタフェース要素３１０、３５２、３５３および３５４を管理する従来のユーザ・インタフェース実装態様の態様がユーザの操作感を最も大きく損ねていると決定することができる。ファシリティは、ユーザ・インタフェースのページまたは他のユニットのうちユーザにとって最も重要なものはどれか、ユーザ・インタフェースのページ上の要素の種類のうち最も重要なものはどれか、および、個々のサブウィンドウおよびボタンのような個々のユーザ・インタフェース要素のうち最も重要なものはどれか、といったような要因に基づいて上記のような決定を行ってもよい。上記で論じた重要性の基準は、客観的に見てユーザ入力に対する応答が最も遅いのはユーザ・インタフェースのどの態様か、ユーザ入力に対する応答が最も遅いとユーザが感じるのはユーザ・インタフェースのどの態様か、および、ユーザが最も頻繁に使用するのはユーザ・インタフェースのどの態様か、といったような要因や、特定の態様が他の態様よりも目立つかまたは重要であることを決定するための他の基準のような要因に基づいて決定してもよい。
【００２６】
選択されたユーザ・インタフェース要素の各々について、ファシリティは、ユーザ・インタフェース要素の修正された実装態様を生成する。いくつかの実施形態では、ファシリティは、当該ページについて指定されたＤＨＴＭＬコードから上記のユーザ・インタフェース要素を除去し、アクティブＸコントロールに置換することによって、上記の修正された実装態様を生成する。
【００２７】
アクティブＸコントロールの一般的な性質は、ホームページの"http://msdn．microsoft.com/library/en-us/dnaxctrl/html/msdn_actxcont.asp"にて入手可能なクラッツおよびナンシーによる「マイクロソフト・アクティブＸコントロールの概要」（Cluts, Nancy, Microsoft ActiveX Controls Overview ）（１９９８年１０月２３日）、およびホームページの"http://msdn.microsoft.com/library/en-us/dnaxctrl/html/msdn_abcsmfc.asp"にて入手可能なジョーンズおよびポールによる「ＭＦＣアクティブＸコントロールのＡＢＣ」（Johns, Paul, The ABCs of MFC ActiveX Controls ）（１９９６年１０月２２日）で論じられている。上記ホームページの各々は、その全体が引用によって本願明細書の記載に援用されている。
【００２８】
ウェブ・ページに組み込むためのアクティブＸコントロールの構成は、例えば、ホームページの"http://msdn.microsoft.com/library/en-us/dnaxctrl/html/msdn_creaactx.asp "にて入手可能なクラッツおよびナンシー・ウィニックによる「Ｃ＋＋におけるアクティブＸコンポーネントの生成」（Cluts, Nancy Winnick, Creating ActiveX Components in C++）（１９９６年１１月）、およびホームページの"http://msdn.microsoft.com/workshop/components/activex/tutorial.asp"にて入手可能なマイクロソフト社による「アクティブＸコントロールを使用したウェブ・ページの自動化」（Microsoft Corporation, Using ActiveX Controls to Automate Your Web Pages）で論じられている。上記ホームページの各々は、その全体が引用によって本願明細書の記載に援用されている。いくつかの実施形態では、ファシリティによって置換されたアクティブＸコントロールが、Ｃプログラミング言語、または、Ｃ＋＋プログラミング言語を含むＣプログラミング言語の変形といったようなコンパイラ・プログラミング言語で構成される。
【００２９】
アクティブＸコントロールをウェブ・ページに組み込む処理は、例えば、ホームページの"http://msdn.microsoft.com/library/en-us/dnaxctrl/html/msdn_deplactx.asp "にて入手可能なマイクロソフト社による「インターネット・コンポーネント・ダウンロードを伴うウェブ上のアクティブＸコントロールの展開」（Microsoft  Corporation, Deploying ActiveX Controls on the Web with the Internet Component Download）（１９９７年４月）、およびホームページの"http://hotwired.lycos.com/webmonkey/01/49/index2ａ.html?tw=multimedia "にて入手可能なパウエルおよびアダムによる「ウィンドウズ・メディア・プレーヤーの埋め込み」（Powell, Adam, Embedding a Windows Media Player）（２００１年１２月５日）で論じられている。上記ホームページの各々は、その全体が引用によって本願明細書の記載に援用されている。
【００３０】
図３に示すページの修正された実装態様は、図２にＨＴＭＬドキュメント２７２として図示されるようにダウンロードされたときに、ユーザ・インタフェース要素３１０、３５２、３５３および３５４を表すように生成される４つのアクティブＸコントロールへの参照と、これらのアクティブＸコントロールによって表示が管理されたページの下位領域の識別子とを含んでいる。ブラウザは上記のような参照を使用して、図２でアクティブＸコントロール２７４〜２７７として図示されているアクティブＸコントロールを、サーバ（サーバ・コンピュータ・システム１００の１つまたは別のサーバ）からクライアント・コンピュータ・システムのメモリにダウンロードする。これらのアクティブＸコントロールのために確保されたユーザ・インタフェースの下位領域を表示するために、アクティブＸオブジェクトに含まれるコンパイラ・コードがブラウザによって呼び出される。上記ブラウザはまた、上記のアクティブＸコントロールの１つを対象とした文字の入力、マウスのクリック、または音声の入力といったようなユーザ・インタフェース対話を受信したときにも、アクティブＸコントロールに関連したコードを呼び出す。このような入力の処理は、クライアント・コンピュータ・システムへのロジックの適用、および／または、サーバ・コンピュータ・システムへの要求の送信を含んでもよい。
【００３１】
また一方で、ダウンロードされた、図３に図示されているようなページの修正された実装態様は、通常、ビジネス・コンポーネント・プロキシ・オブジェクト、アプリケーション・オブジェクト、および、２つのアプレット・オブジェクトといったような、クライアント・コンピュータ・システム上の３つの他の種類のオブジェクトのインスタンス生成を行うための参照をも含んでいる。図２でビジネス・コンポーネント１のプロキシ２７７として図示されているビジネス・コンポーネント・プロキシ・オブジェクトは、図２でビジネス・コンポーネント１  ２２４として図示されているサーバ・コンピュータ・システム上の対応するビジネス・コンポーネント・オブジェクトと対話するための、クライアント・コンピュータ・システム上のオブジェクトへのインタフェースを提供する。この例では１つのビジネス・コンポーネント・プロキシ・オブジェクトのみのインスタンスを生成しているが、ファシリティは、通常、現在のページを提示する際にデータが使用されている各々のビジネス・コンポーネント・オブジェクトに対して異なるビジネス・コンポーネント・プロキシ・オブジェクトのインスタンスを生成する。図２でアプリケーション・オブジェクト２７３として図示されているアプリケーション・オブジェクトは、図３で図示されているページ全体を表しており、クライアント・コンピュータ・システム上のオブジェクトにより行われるサーバ・コンピュータ・システムに対する全ての遠隔手続き呼び出しのブローカーの役割を担当する。アプレット・オブジェクト２７９および２８０は各々、現在のページの一部として表示されたアプレットまたは他の第１レベルのユーザ・インタフェース・コンポーネントに対応する。例えば、アプレット・オブジェクト１  ２７９は、図３で図示されているアプレット３１０に対応し、アプレット・オブジェクト２  ２８０は、図３で図示されているアプレット３５０に対応する。アプレット・オブジェクトは、アクティブＸコントロールと他の種類のコントロールおよび適切なビジネス・コンポーネント・プロキシ・オブジェクトとの間のルーティング情報に含まれる。
【００３２】
ユーザ・インタフェースが図３で図示された状態にあるときに、ユーザは、バブルワンという製品についての詳細を含むサブウィンドウ３５０の値引き金額フィールド３５３をクリックして値引き金額をタイプすること等によって、この金額フィールドに値を入力してもよい。例えば、ユーザは、値引き金額フィールドをクリックして＄．３０（０．３０ドル）という値を入力してもよい。ブラウザは、上記のようなユーザ入力イベントを、フィールド３５３に対応するアクティブＸコントロールにルーティングする。このアクティブＸコントロール内のコードは、バブルワンという製品の値引き金額フィールドの現在の値を権限を持って保持している、サーバ上の対応するビジネス・コンポーネントを更新するためのビジネス・コンポーネント１のプロキシ・オブジェクト上の方法を呼び出すことによって、上記のようなユーザ入力イベントを処理する。ビジネス・コンポーネント・プロキシ・オブジェクト２７７は、上記方法の呼び出しを、アプリケーション・オブジェクト２７３を介してビジネス・コンポーネント２２４に伝える。上記呼び出しを受信すると、ビジネス・コンポーネントは、通常、（１）データ・メンバとしてメモリ内に保持されているバブルワンという製品の値引き金額フィールドの現在の値を更新すること、および、（２）データベース・データの中で更新された値を永続的記憶装置２１０上に永続的に格納するデータベース・エンジン２２２を呼び出すためにデータベース・マネージャ２２３を呼び出すことにより、上記の更新された値を永続的に格納することの両方を行う。いくつかの実施形態では、上記の更新された値を永続的に格納するステップは、他の同様の永続的格納に対する要求と一括することができるようになるまで延期される。
【００３３】
上記のような更新の結果として、ビジネス・コンポーネントは、バブルワンという製品の値引き金額フィールドと実効価格フィールドの両方の値が変更されたと判断し、これらのフィールドの更新された値をアプリケーション・オブジェクト２７３を介してビジネス・コンポーネントのプロキシ２７７に送信する。これに応答して、ビジネス・コンポーネントは、値引き金額および実効価格のフィールドの現在の値に応じた各々のアプレット・オブジェクト、すなわち、この場合はアプレット・オブジェクト１  ２７９とアプレット・オブジェクト２  ２８０の両方を呼び出す。また一方で、アプレット・オブジェクトは、変更された２つのデータ・フィールドについての更新を受信するために登録されている各々のアクティブＸオブジェクトを呼び出す。この例では、アプレット３５０のためのアプレット・オブジェクト２  ２８０は、値引き金額フィールド用に登録された値引き金額フィールド３５３用のアクティブＸコントロールと、実効価格フィールド用に登録された実効価格フィールド３５４用のアクティブＸコントロールとを呼び出し、アプレット３１０のためのアプレット・オブジェクト１  ２７９は、実効価格フィールド用に登録されたサブウィンドウ３１０用のアクティブＸコントロールを呼び出す。呼び出された各々のアクティブＸコントロールは、それ自体を再表示して更新された値を組み込む。
【００３４】
図４は、上記で説明したようにアクティブＸコントロールが呼び出された後にファシリティにより提示される例示的なユーザ・インタフェースのバージョンを示す表示図である。値引き金額４５３は、ユーザが入力した値引き金額＄．３０（０．３０ドル）を反映していること、実効価格フィールド４５４は、新しい値引き金額を考慮したバブルワンという製品の新しい実効価格＄．９９（０．９９ドル）を含んでいること、および、サブウィンドウ４１０は、行４１１と列４２３との交点に上記の新しい実効価格を含むことがわかる。
【００３５】
いくつかの実施形態では、アクティブＸコントロールを呼び出して、他のユーザ、または他の外部イベントにより発生したビジネス・コンポーネント・オブジェクトの状態の変化といったような、当該ユーザ・インタフェースのユーザにより発生したものではないビジネス・コンポーネント・オブジェクトの状態の変化を反映するように表示を更新してもよい。さらに、サーバは、任意の数のビジネス・コンポーネント・オブジェクトのホストになってもよい。各々のクライアントは、当該クライアントで現在利用されているユーザ・インタフェースの必要性に応じて、上記のようなビジネス・コンポーネント・オブジェクトの任意の部分集合体についてプロキシのインスタンスを生成することができる。
【００３６】
上記で論じたように、ファシリティの実施形態は、１つのユーザ・インタフェースの２つまたは３つ以上の異なる実装態様を同時に使用可能にする。ユーザは、異なるユーザ・インタフェースの実装態様間の選択を手動で行ってもよく、あるいは、上記ユーザ・インタフェースの実装態様の１つが自動的に選択されるようにしてもよい。いくつかの実施形態では、特定のユーザ・インタフェース実装態様の特定のページが、クライアント側の多様なユーザ・インタフェース技術を利用してもよい。
【００３７】
上記で説明したようなファシリティは、様々な形で容易に適応または拡張され得ることを当業者は認識するであろう。例えば、置換されるべきユーザ・インタフェース要素を特定するために様々な技術を使用してもよい。特定された１つのユーザ・インタフェース要素に対して、各々がある状況で有利であるような、種々の置換要素を使用可能としてもよい。さらに、ファシリティにより提供されるユーザ・インタフェースにおいて、様々なクライアント側のユーザ・インタフェース技術を使用してもよい。さらに、ユーザ・インタフェースまたはユーザ・インタフェース要素の異なるバージョンが使用可能である場合、特定のユーザまたはユーザのグループにより使用されるバージョンを選択するために、実質的に任意の基準を使用してもよい。
【００３８】
さらに、ファシリティは、ほぼ全ての種類のクライアント・サーバ・アプリケーションと共に使用するのに適している。これまでの説明は好適な実施形態を参照して行ったが、本発明の範囲は、添付の特許請求の範囲の請求項、および当該請求項に記載の構成要素によってのみ定義されるべきものである。
【図面の簡単な説明】
【００３９】
【図１】ファシリティが動作する代表的なハードウェア環境の態様を示すネットワーク図である。
【図２】ファシリティが動作する代表的なハードウェア環境をさらに詳細に示すネットワーク図である。
【図３】ファシリティにより提示され得る例示的なユーザ・インタフェースを示す表示図である。
【図４】ユーザ入力に応答して更新された状態で、ファシリティにより提示される例示的なユーザ・インタフェースを示す表示図である。
【図１】
2005531082.tif 000002
【図２】
2005531082.tif 000003
【図３】
2005531082.tif 000004
【図４】
2005531082.tif 000005
【国際調査報告】
2005531082.tif 000006