(57)【要約】  【課題】    【解決手段】  ユーザインターフェイス（「ＵＩ」）コントロールフレームワークは、従来のＵＩコントロールモデルに通常必要となるｂｏｉｌｅｒｐｌａｔｅ  ＪａｖａＳｃｒｉｐｔ（登録商標）を書き込む必要なしに、ＨＴＭＬマークアップを用いて、ＵＩコントロールをインラインで宣言的に作成できるようにするものである。ＵＩコントロールフレームワークは、既存のＷｉｎＪＳ（ＪａｖａＳｃｒｉｐｔ（登録商標）用Ｗｉｎｄｏｗｓ（登録商標）ライブラリ）機能の上位に位置するように設計され、ＵＩコントロールテンプレートの単一インスタンスを使用して複数のコントロールインスタンスをスタンプアウトできるように、多くのコントロール実施態様にわたって一般的な挙動をカプセル化している。ＵＩコントロールフレームワークは、バッキングコントロール内の「コードビハインド」とはレイアウトを分離しているため、コントロール及びその子コントロールのいずれのレイアウトについての明確な知識も持たずにデータ結合を抽象的に実施することができる。マークアップは、コードが子コントロールに直接アクセスできるようにする「アンカーポイント」を提供する。名前付きプロパティをコントロールインスタンス上に配置するカスタムエクスパンドのＨＴＭＬ属性が使用される。【選択図】  図８
2015534145.tif 000002
【特許請求の範囲】
【請求項１】
ユーザインターフェイス（「ＵＩ」）コントロールフレームワークを実施するための方法であって、
カスケーディングスタイルシート（「ＣＳＳ」）及びハイパーテキストマークアップ言語（「ＨＴＭＬ」）コードを備えるマークアップ文書を生成するステップであって、前記文書はｉ）少なくとも１つのＵＩコントロール及びそのレイアウトのインライン宣言定義を含み、ｉｉ）単一のインスタンス化されたテンプレートとして使用される生成する、ステップと、
前記テンプレートを使用して複数のＵＩコントロールインスタンスをスタンプアウトするステップと、
各ＵＩコントロールインスタンスについて１対１ベースでバッキングコントロールを生成するステップと、
前記テンプレート内のＨＴＭＬ要素に関連付けられたエクスパンド属性を使用するステップであって、前記属性は、前記バッキングコントロールが前記レイアウト内の任意の子ＵＩコントロールに直接アクセスできるように、名前付きプロパティをコントロールインスタンス上に配置する使用するステップと、
を含む、方法。
【請求項２】
前記ＨＴＭＬはＨＴＭＬバージョン５（「ＨＴＭＬ５」）であり、前記ＣＳＳはＣＳＳレベル３（「ＣＳＳ３」）である、請求項１に記載の方法。
【請求項３】
前記ＨＴＭＬ要素は、ＵＩコントロールを表す、請求項１に記載の方法。
【請求項４】
前記バッキングコントロールは、ＪａｖａＳｃｒｉｐｔ（登録商標）を使用して実施される、請求項１に記載の方法。
【請求項５】
前記属性は前記マークアップ文書内にアンカーポイントを定義できるようにする、請求項１に記載の方法。
【請求項６】
レイアウトが改訂され、前記改訂全体を通じて前記アンカーポイントの名前が維持される、請求項５に記載の方法。
【請求項７】
バッキングコントロールが、スタンプアウトされたレイアウトに１対１ベースでマッピングされる、請求項１に記載の方法。
【請求項８】
前記レイアウトは、前記ＵＩコントロールを実施するアプリケーションの基礎をなすビジネス論理に疎に結合される、請求項１に記載の方法。
【請求項９】
バッキングコントロールが、ＵＩコントロール又は子コントロールに結合するためのデータを提供し、前記バッキングコントロールは、前記子コントロールの直接的な知識を持たずに前記データを抽象的に提供する、請求項１に記載の方法。
【請求項１０】
前記ＨＴＭＬコードは、前記エクスパンド属性を使用して指定されたアンカーポイントを含む、請求項１に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  「ＨＴＭＬ５」と呼ばれるハイパーテキストマークアップ言語のバージョン５は、ワールドワイドウェブコンソーシアム（「Ｗ３Ｃ」）として知られる国際標準化団体によって公式に定義されている。ＨＴＭＬ５は、次世代ウェブ技術に関する１００を超える規格を含む。ＨＴＭＬ５は、設計者及び開発者が次世代のウェブサイト及びアプリケーションを構築できるように構成されたＨＴＭＬ、ＣＳＳ（カスケーディングスタイルシート）、及びＪａｖａＳｃｒｉｐｔ（登録商標）規格のセットを記述している。このような技術は多くの使用シナリオで十分に機能しているが、今後実施されるウェブアプリケーションの開発経験をより機能強化された豊かなものにする機会は依然として残されている。
【０００２】
[0002]  「背景技術」は、下記の「発明の概要」及び「発明を実施するための形態」に関する簡単なコンテキストを紹介するために提供されている。「背景技術」は、請求する対象の範囲を決定する際の補助となること、或いは請求する対象を上述の欠点又は問題点のいずれか又はすべてを解決する実施態様に限定するものとみなすことも意図していない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
[0003]  ユーザインターフェイス（「ＵＩ」）コントロールフレームワークは、従来のＵＩコントロールモデルに通常必要となるｂｏｉｌｅｒｐｌａｔｅ  ＪａｖａＳｃｒｉｐｔ（登録商標）を書き込む必要なしに、ＨＴＭＬマークアップを用いて、ＵＩコントロールをインラインで宣言的に作成できるようにするものである。特定の例示的実施形態において、ＵＩコントロールフレームワークは、既存のＷｉｎＪＳ（ＪａｖａＳｃｒｉｐｔ（登録商標）用Ｗｉｎｄｏｗｓ（登録商標）ライブラリ）機能の上位に位置するように設計され、ＵＩコントロールテンプレートの単一インスタンスを使用して複数のコントロールインスタンスをスタンプアウトできるように、多くのコントロール実施態様にわたって一般的な挙動をカプセル化している。ＵＩコントロールフレームワークは、バッキングコントロール内の「コードビハインド」とはレイアウトを分離しているため、コントロール及びその子コントロールのいずれのレイアウトについての明確な知識も持たずにデータ結合を抽象的に実施することができる。マークアップは、コードが子コントロールに直接アクセスできるようにする「アンカーポイント」を提供する。名前付きプロパティをコントロールインスタンス上に配置するカスタムエクスパンドのＨＴＭＬ属性が使用される。
【課題を解決するための手段】
【０００４】
[0004]  有利なことに、レイアウトとバッキングコントロールとの間の疎結合は、ＨＴＭＬ及びＣＳＳのスペシャリストである傾向にあるが、プログラマー／開発者としてＪａｖａＳｃｒｉｐｔ（登録商標）コーディングには精通していない可能性のあるウェブアプリケーション設計者が、ＵＩコントロールを容易に作成できるようにする。フレームワークは、設計者がバッキングコントロールコードに接触する必要なしに、ＵＩコントロールの宣言的作成をサポートする。さらに、フレームワーク及びその宣言テンプレートは、本来は柔軟性があるため、結果として設計者はバッキングコートロール内のコードを更新する必要を生じさせることなく、アンカーポイントに同じ名前が付けられたままである限り、レイアウトをコントロールするために大規模な変更を行うことができる。このような柔軟性が、ユーザの豊かな経験を作り出すための強力なツールをアプリケーション設計者に提供すると共に、コードの保守管理に関連付けられた経費も削減する。
【０００５】
[0005]  「発明の概要」は、以下の「発明を実施するための形態」でさらに説明される簡略化された形での概念の選択を紹介するために提供されている。「発明の概要」は、請求する対象の重要な特徴又は不可欠な特徴を識別すること、或いは、請求する対象の範囲を決定する際の補助として使用されることも意図していない。
【図面の簡単な説明】
【０００６】
【図１】[0006]本ＵＩコントロールフレームワークが実施することができる例示的コンピューティング環境を示す。
【図２】[0007]従来のＵＩコントロールモデルにおいて、基礎をなす「コードビハインド」にＵＩコントロールレイアウトがどのように密結合されるかを示す。
【図３】[0008]音楽トラックを表示し、それらの購入を可能にするＵＩコントロールを呼び出す例示的ＨＴＭＬコードを示す。
【図４】[0009]図３に示されたＵＩコントロールを実施するために使用されるｂｏｉｌｅｒｐｌａｔｅ  ＪａｖａＳｃｒｉｐｔ（登録商標）の例を示す。
【図５】[0010]ＵＩコントロールレイアウトを指定するマークアップファイルが、本ＵＩコントロールフレームワーク内でバッキングコントロールとどのように疎結合され分離されるかを示す。
【図６】[0011]宣言ＵＩコントロールテンプレートを使用して、複数のコントロールインスタンスをどのように「スタンプアウト」するかの例を示す。
【図７】[0012]データがバッキングコントロールによって提供されるレイアウトにおいて、データとコントロールとを結合するための例示的配置構成を示す。
【図８】[0013]本ＵＩコントロールフレームワークの実施のための例示的アーキテクチャを示す。
【図９】[0014]ＷｉｎＪＳの下で、本ＵＩコントロールフレームワークをサポートする名前空間及び関数の作成を示す。
【図１０】[0015]本ＵＩコントロールフレームワークの例示的使用例を示す。
【図１１】[0015]本ＵＩコントロールフレームワークの例示的使用例を示す。
【図１２】[0015]本ＵＩコントロールフレームワークの例示的使用例を示す。
【図１３】[0016]例示的ＨＴＭＬ  ＤＯＭ（文書オブジェクトモデル）ツリーの一部を示す。
【図１４】[0017]ＨＴＭＬ要素に関連付けられた様々なエクスパンド属性を含む例示的ＨＴＭＬフラグメントを示す。
【図１５】[0017]ＨＴＭＬ要素に関連付けられた様々なエクスパンド属性を含む例示的ＨＴＭＬフラグメントを示す。
【図１６】[0017]ＨＴＭＬ要素に関連付けられた様々なエクスパンド属性を含む例示的ＨＴＭＬフラグメントを示す。
【図１７】[0017]ＨＴＭＬ要素に関連付けられた様々なエクスパンド属性を含む例示的ＨＴＭＬフラグメントを示す。
【図１８】[0018]本ＵＩコントロールフレームワークが実施することができるパーソナルコンピュータ又はサーバなどの例示的コンピュータシステムを示す簡略ブロック図である。
【０００７】
[0019]  図面内で同様の参照番号は同様の要素を記述している。
【発明を実施するための形態】
【０００８】
[0020]  図１は、本ＵＩコントロールフレームワークが実施することができる例示的コンピューティング環境１００を示す。環境１００において、何人かのウェブアプリケーションユーザ１０５は、それぞれのコンピューティングデバイス１１０を使用して、ウェブアプリケーションプロバイダ１１５を含むウェブベースのリソースにインターネット１２０を介してアクセスする。コンピューティングデバイス１１０は、例えば、携帯電話、スマートフォン、パーソナルコンピュータ（「ＰＣ」）、ウルトラモバイルＰＣ、ＰＤＡ（携帯情報端末）、電子メール機器、デジタルメディアプレーヤ、タブレットコンピュータ、ハンドヘルド型ゲームプラットフォーム及びゲームコンソール、ノートブック型及びラップトップ型コンピュータ、インターネット接続テレビジョン、セットトップボックス、ＧＰＳ（全地球測位システム）及びナビゲーションデバイス、デジタルカメラ、並びに本明細書で提供される機能の様々な組み合わせを有するデバイスを含む様々な特徴及び機能を有する様々なプラットフォームを備えることができる（図１ではこのようなプラットフォームのすべてが示されているわけではない）。しかしながら、上述のリストは例示的であることが意図され、本配置構成は、ＨＴＭＬ５の機能又はそれらのサブセットをサポートする様々なプラットフォームのいずれかで使用されることが期待されることを強調する。
【０００９】
[0021]  本ＵＩコントロールフレームワークを実施するために必要な機能ではないが、コンピューティングデバイス１１０は、多くの場合、直接的又は中間デバイス（例えばインターネット接続パーソナルコンピュータ）を介した何らかの形のネットワーク接続機構、並びにデバイス上で動作し、タッチスクリーン、キーパッド、ポインティングディバイスなどの表示及び入力デバイスを介したユーザ対話性をサポートする同様の機能を提供するウェブブラウザ又はアプリケーション又は埋め込み型機構を有する場合がある。図１に示されるように、コンピューティングデバイス１１０は、モバイルネットワーク１２５を使用して、又はインターネットサービスプロバイダ（「ＩＳＰ」）１３０を介して、或いは、場合によってはその両方を使用してインターネット１２０及びウェブアプリケーションプロバイダ１１５にアクセスすることができる。
【００１０】
[0022]  ウェブアプリケーション設計者１３５は、プロバイダ１１５と協働で、ＨＴＭＬ５の機能を利用するアプリケーション及びウェブサイトを含む次世代ウェブ技術を設計する。プログラマー１４０は、プロバイダとも協働する。この図示された例では、設計者は典型的にはＨＴＭＬ及びＣＳＳに精通しており、これらを使用するが、コーディングにおいて必ずしもプログラマーと同様の高水準の専門知識を有するとは限らない。
【００１１】
[0023]  図２に示されるように、従来のＵＩコントロール開発モデルは、多くの場合、ユーザのためにディスプレイ上でコントロールを編成及び提示するＵＩコントロールレイアウト２０５と、ウェブアプリケーションのビジネス及び／又は提示論理を使用してコントロールを実施するために利用される基礎的コード２１０（多くの場合、「コードビハインド」と呼ばれる）との間に密結合を実施する。このような密結合は、コードが、各ＵＩコントロール及び任意の子コントロールのレイアウトの明示的な知識を有する必要があることを意味する。また、子コントロールが所有するいずれの依存性も、親によって明示的に管理される必要がある。
【００１２】
[0024]  従来の開発モデルを使用する場合、設計者は、アプリケーション機構の作成又は修正時にコードに接触する必要が生じる場合があり、多くの場合、設計者のコードに関する専門知識がより限定的な場合問題となり得る。コードとレイアウトとの間の密結合は、各ＵＩコントロールに関して、比較的大量のｂｏｉｌｅｒｐｌａｔｅコードを生成する必要を生じさせる場合もある。図３及び図４は、ＷｉｎＪＳにおけるこのようなｂｏｉｌｅｒｐｌａｔｅコードの例示を提供する。ＷｉｎＪＳは、設計者、プログラマー、及び開発者が、ＪａｖａＳｃｒｉｐｔ（登録商標）を使用して、メトロスタイルアプリケーション（「ａｐｐｓ」）用に設計された新しいコントロールを実施できるようにするための総合機能を提供する。現在、ＷｉｎＪＳは、ＨＴＭＬマークアップとＪａｖａＳｃｒｉｐｔ（登録商標）との間の簡単であるが強力なコントラクトを用いて、ＵＩコントロールを定義している。それぞれのボタンを押すことによって購入できる様々な音楽トラックを表示したＵＩコントロール用のＨＴＭＬマークアップの例示的フラグメントが、図３の参照番号３０５によって示されている。対応するＪａｖａＳｃｒｉｐｔ（登録商標）コードは、図４の参照番号４０５によって示されている。
【００１３】
[0025]  この例で示されるように、比較的簡単なコントロールであっても大量のｂｏｉｌｅｒｐｌａｔｅコードが存在し、このようなコードが典型的には事実上あらゆるＵＩコントロールに対して反復される必要がある。この状況は、プログラマー（例えば、図１及び図２のプログラマー１４０）にとって、コーディングのエラー及び不一致につながり得る同様の問題を複数回解決する必要が生じること、共通及び共有のコーディングパターンの普及を低下させること、及び最終的にアプリケーション保守コストをより高くすることにつながり得る。
【００１４】
[0026]  従来のＵＩコントロールモデルにおける密結合とは異なり、ＵＩコントロールレイアウト５０５は、図５に示されるように、本ＵＩコントロールフレームワークでは、コードビハインド５１０と疎に結合される。特に疎結合は、例えばＨＴＭＬ及びＣＳＳを含むことができるマークアップファイル５１５をバッキングコントロール５２０から分離できるようにする。ＵＩコントロールは、それらのレイアウトを任意の子コントロールへの参照を含むマークアップファイル５１５に記憶し、このファイルはその後、複数のコントロールに関するレイアウトを「スタンプアウト」するために宣言テンプレートとして使用される。図６に示されるように、マークアップファイル５１５（すなわち宣言テンプレート）自体は単一インスタンスであるが、コントロールインスタンスごとにスタンプアウトが実行される。各レイアウト６０５は、１：１ベースでバッキングコントロール６１０内にマッピングされる。したがって本ＵＩコントロールフレームワークは、有利なことに、複数のＵＩコントロールを単一テンプレート内に定義することができ、これによってｂｏｉｌｅｒｐｌａｔｅコードを繰り返し生成する必要がなくなる一方、マークアップを介したコントロールの簡単な宣言レイアウトが可能となる。
【００１５】
[0027]  プロパティ又は値などのＵＩコントロールに関するデータは、レイアウト内のコントロールによって直接管理されない。代わりに、データは、レイアウト内の宣言指定を介して、バッキングコントロールからデータを疎にソーシングするように要求される。図７はこのようなデータ結合の例を示し、コントロールレイアウト７０５は、参照番号７１５及び７２０で示されるような２つの子コントロールを含む。子コントロールに関するデータは、参照番号７２５及び７３０で示されるように、プロパティを提供するバッキングコントロール７１０からの結び付きがある。重要なことに、疎結合は、バッキングコントロールによって提供されるデータを子コントロールの明示的な知識なしに抽象的に達成できるようにするものである。
【００１６】
[0028]  図８は、既存のＷｉｎＪＳプラットフォーム上に構築された本ＵＩコントロールフレームワークの特定の一実施のための例示的アーキテクチャを示す。ＷｉｎＪＳに関する追加情報は、http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspxで見ることができる。この特定の例において、コントロールフレームワーク８０５は、ＵＩコントロール８１０をサポートし、３つのＷｉｎＪＳコンポーネント上にコア構築ブロックとして構築される。コンポーネントは、タイプ定義を提供し、ＷｉｎＪＳ約束オブジェクトを使用して非同期延期呼び出しモデルをサポートするＷｉｎＪＳタイプライブラリであるＢａｓｅ．ｊｓ（参照番号８１５で示される）を含む。Ｂｉｎｄｉｎｇ．ｊｓコンポーネント８２０は、一方向の動的プロパティ結合のための宣言及び命令結合システムを提供するために使用される。ＵＩ．ｊｓコンポーネント８２５は、基本コントロールモデル、ＨＴＭＬフラグメントローダ、及び様々なＵＩユーティリティ機能を提供する。ＷｉｎＪＳプラットフォーム及びその特定の構築ブロックコンポーネントの使用は例示的であることが意図され、本ＵＩコントロールフレームワークはＷｉｎＪＳプラットフォーム実施に限定されないことを強調する。本明細書に提示された原理は、特定の実施の要件に応じて、様々なプログラミングパラダイム（そのうちの幾つかはＣＳＳ及びＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクトを使用しない場合がある）と共に使用するように構成されてもよい。
【００１７】
[0029]  図９に示されるように、名前空間及びデフォルトのコントロールクラスが、コードセグメント９０５に示されるようなＷｉｎＪＳ内に定義される。このクラスは、コントロール宣言を簡略化し、最適化、及びフラグメント、テンプレートなどの背景管理のうちの幾つかをカプセル化するように構成された関数セットを提供する。ＷｉｎＪＳコントロール定義関数に代わって、新しいコントロールクラスが使用される。しかしながら、提供されたｄｅｆｉｎｅＵｓｅｒＣｏｎｔｒｏｌ関数は、同じＷｉｎＪＳコントロールコントラクトに準拠する。関数は、デフォルトコントロールクラスに値を渡すと共に、多くのパラメータをＷｉｎＪＳからＷｉｎＪＳ．Ｃｌａｓｓ．ｄｅｆｉｎｅ（）内に渡す。
【００１８】
[0030]  関数パラメータを以下の表１に示す。
【表１】
2015534145.tif 000003
【００１９】
[0031]  既存のコントロールから導出可能であることに留意されたい。この場合の共通の使用法は、同じコントロール挙動に異なるテンプレートを採用することである。このような使用法は、Ｗｉｎｄｏｗｓ（登録商標）  Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎ（「ＷＰＦ」）でのコントロール実施と同様である。
【００２０】
[0032]  コントロール基本クラスは、ＷｉｎＪＳコントラクト（例えばｓｅｔＯｐｔｉｏｎｓ、ｓｅｔＥｌｅｍｅｎｔ、及び関数（要素、オプション）コンストラクタ機能）を実施する一方、このクラスを拡張するオプションのカスタマイゼーションを設計者及びプログラマーに提供する。コントロール基本クラスは、以下の表２に示されるように様々な機能をサポートしている。
【表２】
2015534145.tif 000004
【００２１】
[0033]  例えばリソースを解放するか又は状態を持続させるために、作成者のコントロールがＵＩから除去されるときにコントロール作成者が作業を実行する必要がある場合があり得る。これを可能にするため、ＨＴＭＬ  ＤＯＭ（文書オブジェクトモデル）からコントロールが除去される場合、コントロールインスタンス時に「アンロード」と呼ばれる方法が呼び出される。これによって作成者は、適切な時に作業を実行することができる。
【００２２】
[0034]  テンプレートは、ロードされる場合、ＵＩコントロールを実施するマークアップ及びＣＳＳのローディングがコントロール消費者（例えば設計者１３５）に対して透過的であるようにカプセル化される。この透過性を可能にするために、コントロール定義は、ファイルと、そのファイル内のテンプレートに関する識別子との両方を表すＵＲＩ（ユニフォームリソース識別子）を有することになる。説明する例は、以下の表３に示すように、「ＳｉｍｐｌｅＣｏｎｔｒｏｌｓ．ｈｔｍｌ＃ＥｄｉｔＢｏｘ」である。
【表３】
2015534145.tif 000005
【００２３】
[0035]  ＨＴＭＬ識別属性を使用して特定テンプレートを識別することが可能な場合があるが、親文書とマージされた場合、一意性に関する何らかの問題が存在する。これを解決するために、ＨＴＭＬ文書内で一意の値に設定されたカスタムＨＴＭＬエクスパンド属性「ｄａｔａ−ｅｎｔ−ｔｅｍｐｌａｔｅｉｄ」が使用される。ファイル経路と識別の組み合わせを使用して、テンプレートをグローバルに識別することができる。
【００２４】
[0036]  コントロールレイアウトファイルとテンプレートとの１対多の関係が与えられた場合、テンプレートへのアクセスのために特定ファイル（フラグメント）をＤＯＭにロードすることは、コントロール消費者に対して透過である必要がある。ＷｉｎＪＳは、本ＵＩコントロールフレームワークによって利用できるリッチ及びフル機能のフラグメントローディング機構を有する。これにより、フラグメントを文書内にロードすることが可能であり、フラグメントは明示的にアンロードされるまで文書内に常駐する。したがって、同じフラグメントをロードするための後続の呼び出しは、即時に完了されることになる。したがってこの暗黙のキャッシングは、フラグメントがロードされている場合それらを管理する。また、インスタンス化されたＷｉｎＪＳ．Ｂｉｎｄｉｎｇ．Ｔｅｍｐｌａｔｅインスタンスは、コントロールがレンダリングされるたびにフェッチされる必要のないようにキャッシュに入れられる。
【００２５】
[0037]  ソースＨＴＭＬファイルに含まれるＣＳＳ及びスクリプトは、親文書内への複写なしにマージされる。ＷｉｎＪＳは、フラグメントを「アンロード」するための機能を提供し、これがコンテンツを除去及びアンロードすることになる。テンプレートは、ＷｉｎＪＳ内のＷｉｎＪＳ．Ｂｉｎｄｉｎｇ．Ｔｅｍｐｌａｔｅ（）関数（コントロールコントラクトに従う）を使用して、コントロールに関する実際のテンプレート水和及びデータ結合を実行する。したがって、フラグメントローディング及びテンプレート水和の両方が、コントロール作成者に対してシームレスに処理されることになる。
【００２６】
[0038]  図１０〜図１２は、本ＵＩコントロールフレームワークの例示的使用例を示す。図１０は、図３及び図４に示され、添付のテキストで説明される例と同様に、表示された音楽トラックをユーザがボタンを押すことで購入できるようにするためのＵＩを実施するＵＩコントロールテンプレートに関するＨＴＭＬコードのフラグメント１００５を示す。対応するＪａｖａＳｃｒｉｐｔ（登録商標）コード１１０５が図１１に示されている。コントロール消費者は、図１２に示されたＨＴＭＬフラグメント１２０５を使用して、ＵＩコントロールを単に宣言的にインスタンス化することができる。
【００２７】
[0039]  上述のＵＩコントロールフレームワークのコア機能に加えて、追加のコントロール挙動を提供する幾つかのカスタムＨＴＭＬエクスパンド属性を使用することができる。属性によって対処される特定の問題の１つは、所与のコントロールのＤＯＭツリーについて、直接的又はその要素によって表されるコントロールを介した特定のＨＴＭＬ要素へのアクセスが必要となる場合があることである。アプリケーションのページを、キー１３１５に示されるようなＨＴＭＬ要素、テキスト要素、及び属性を含む接続されたノードのグループとして表す例示的ＤＯＭツリー１３１０が図１３に示される。ＪａｖａＳｃｒｉｐｔ（登録商標）は、そのコンテンツを修正又は削除し、新しい要素を作成するために、ツリーを介してノードにアクセスすることができる。ＤＯＭツリー内のノードは、互いに階層関係を有する。
【００２８】
[0040]  このアクセス問題に対処するために、「ｄａｔａ−ｅｎｔ−ｍｅｍｂｅｒ」と命名されたエクスパンド属性がある要素に配置されるテンプレートが作成可能である。この属性は、メンバとして配置されている要素のインスタンスをコントロールインスタンス上に配置することと解釈される。要素がコントロールを表す場合、要素の代わりに、コントロールインスタンスがそのメンバ内に配置される。図１４に示されたＨＴＭＬフラグメント１４０５内に例が示されている。この例において、このテンプレートを消費するコントロールは、それらの要素への容易なアクセスを可能にするｍｅｍｂｅｒ１、ｍｅｍｂｅｒ２という２つのプロパティセットを有することがわかる。以下の表４で、プロパティを説明する。
【表４】
2015534145.tif 000006
【００２９】
[0041]  典型的なＤＯＭツリーの複雑さ、及び可能な限りコード実施からレイアウトを分離するというターゲットが与えられると、コードを使用すること及びイベントリスナーを実施することではなく、イベントが宣言的に付加される。「ｄａｔａ−ｅｎｔ−ｍｅｍｂｅｒ」属性は、テンプレートの構成部分を移動し、コードに与える影響を少なく維持することが可能であるが、依然としてイベントリスナーへの呼び出し、定義済み関数などが必要である。また、「ｔｈｉｓ」ポインタは、コントロール自体ではなく、イベントを引き起こす要素を指し示す。これは典型的には、開発者が「ｖａｒ  ｔｈａｔ」を使用しているか、又はそれらのコード全体を通じて．ｂｉｎｄ（ｔｈｉｓ）を実行していることを意味する。開発者がこのような形式に関心を持ち、いずれの他の機能とも全く同様にイベントハンドラを作成する必要を回避するために、図１５のＨＴＭＬフラグメント１５０５に示されるようにエクスパンド属性「ｄａｔａ−ｅｎｔ−ｅｖｅｎｔ」が使用される。図１５に示された特定の例において、ＨＴＭＬ要素に付加されることになるＤＯＭイベントが、以下の表５に示される。
【表５】
2015534145.tif 000007
【００３０】
[0042]  すべてのハンドラ方法はコントロールインスタンス上で見られ、それらの「ｔｈｉｓ」ポインタは、コントロールインスタンスに設定される。それらは呼び出されると、任意のＤＯＭイベントハンドラに渡される標準パラメータを渡す。
【００３１】
[0043]  さらに必要なことは、コントローラ消費者から動作の複雑さを隠すために、アプリケーション内のある動作、例えばビデオの再生、トラックの購入などを抽象化することである。これを解決するために、「アクション」と呼ばれる概念が作成される。この概念は、呼び出し、有効（例えば有効な選択を有する）、及び使用可能（機械構成又は市場要件に基づいては発生し得ない）の状態に対して簡単なコントラクトを提供する。
【００３２】
[0044]  本ＵＩコントロールフレームワークは機能自体の実際の呼び出しを処理しない（最良の対話を決定することはコントロール次第であるため）が、アクションの実行、可用性の処理、及びコントロールによる使用可能化のインフラストラクチャは、コントロールフレームワークの一部である。したがって、図１６のＨＴＭＬフラグメント１６０５に示されるように、エクスパンド属性「ｄａｔａ−ｅｎｔ−ａｃｔｉｏｎ」が使用される。この例において、「ｄａｔａ−ｅｎｔ−ａｃｔｉｏｎ」属性の値は、内部サービスにおけるアクションを検索するため、及び実際のコントロール上にインスタンスを配置するために使用される。次に、コントロールは、ｔｒｕｔｈｙの場合、アクションプロパティは有効なアクション及びデータ結合であるものと想定することができ、それ以外の場合はそれを操作する。
【００３３】
[0045]  ユーザに関する強制的な経験セットを生成するために、多くの場合、アニメーションが使用される。一貫した強制的な経験を有効にするために、単に要素が不快な視覚的フラッシュとしてスクリーン上に現れるのではなく、本ＵＩコントロールフレームワークの目的はコントロール自体を明らかにさせることである。これをコントロールに個別に状況に応じて管理させるのではなく、「ｄａｔａ−ｅｎｔ−ｓｈｏｗａｎｉｍａｔｉｏｎ」及び「ｄａｔａ−ｅｎｔ−ｈｉｄｅａｎｉｍａｔｉｏｎ」のエクスパンド属性を使用して、それぞれ表示及び／又は非表示にされる場合、所与の要素上で再生されるＣＳＳアニメーションを宣言することができる。「表示」は、要素自体が可視であると考えられる可能性を考慮に入れるが、親要素の可視性により、実際には可視でない場合があることに留意されたい。これは、常駐しているツリーを考慮に入れる際、要素が実際に可視になった場合にのみ、これらのアニメーションが再生されるべきであることを意味する。また、表示又は非表示である場合、これらのアニメーションを自動的に再生させることに加えて、それらを明示的に開始する方法が必要である。これは主に、ＤＯＭからの既知の［ｒｅｍｏｖｅ｜ｉｎｓｅｒｔ｜ａｐｐｅｎｄ］Ｃｈｉｌｄ関数の当座の代替として意図される関数を中心に展開することになる。関数の全セット及び対応する説明が、以下の表６に示される。
【表６】
2015534145.tif 000008
【００３４】
[0046]  図１７のＨＴＭＬフラグメント１７０５内にアニメーション処理の例が示される。この例では、２つのＨＴＭＬ要素上に２つの表示アニメーションが存在する。これらの要素が可視になると、属性が設定された要素に適用されたアニメーションを呼び出すことになり、開発者がアニメーション自体の再生を管理する必要性を回避することができる。また、このアニメーション機能を用いる場合、可視性全体にわたるプログラムコントロールが存在する。具体的に言えば、表示／非表示にするため、すなわちプロパティとするために、適切なアニメーションを再生することになる「可視性」ブールプロパティが存在し、これによって、可視性をコントロールするための容易なデータ結合が可能になる。
【００３５】
[0047]  図１８は、本ＵＩコントロールフレームワークを実施することができるＰＣ又はウェブサーバなどの例示的コンピュータシステム１８００の簡略ブロック図である。コンピュータシステム１８００は、プロセッサ１８０５、システムメモリ１８１１、及び、システムメモリ１８１１を含む様々なシステムコンポーネントをプロセッサ１８０５に結合するシステムバス１８１４を含む。システムバス１８１４は、メモリバス又はメモリコントローラ、周辺バス、或いは様々なバスアーキテクチャのいずれかを使用するローカルバスを含む幾つかのタイプのバス構造のいずれかとすることができる。
【００３６】
[0048]  システムメモリ１８１１は、読み取り専用メモリ（「ＲＯＭ」）１８１７及びランダムアクセスメモリ（「ＲＡＭ」）１８２１を含む。起動中などに、コンピュータシステム１８００内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力／出力システム（「ＢＩＯＳ」）１８２５が、ＲＯＭ１８１７に記憶される。コンピュータシステム１８００は、内部に配設されたハードディスク（図示せず）からの読み取り又はこれへの書き込みのためのハードディスクドライブ１８２８と、取り外し可能磁気ディスク１８３３（例えばフロッピィディスク）からの読み取り又はこれへの書き込みのための磁気ディスクドライブ１８３０と、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスク）、又は他の光媒体などの取り外し可能光ディスク１８４３からの読み取り又はこれへの書き込みのための光ディスクドライブ１８３８とをさらに含むことができる。ハードディスクドライブ１８２８、磁気ディスクドライブ１８３０、及び光ディスクドライブ１８３８は、それぞれハードディスクドライブインターフェイス１８４６、磁気ディスクドライブインターフェイス１８４９、及び光ドライブインターフェイス１８５２によって、システムバス１８１４に接続される。
【００３７】
[0049]  ドライブ及びそれらに関連付けられたコンピュータ読み取り可能記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、及びコンピュータシステム１８００に関する他のデータの不揮発性ストレージを提供する。この例示的な例はハードディスク、取り外し可能磁気ディスク１８３３、及び取り外し可能光ディスク１８４３を示しているが、本ＵＩコントロールフレームワークの幾つかの用途では、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、データカートリッジ、ＲＡＭ、ＲＯＭなどの、コンピュータによるアクセスが可能なデータを記憶することができる他のタイプのコンピュータ読み取り可能記憶媒体も使用することができる。また、本明細書で使用される場合、コンピュータ読み取り可能媒体という用語は、媒体タイプのうちの１つ又は複数のインスタンス（例えば１つ又は複数の磁気ディスク、１つ又は複数のＣＤなど）を含む。
【００３８】
[0050]  オペレーティングシステム１８５５、１つ又は複数のアプリケーションプログラム１８５７、他のプログラムモジュール１８６０、及びプログラムデータ１８６３を含む幾つかのプログラムモジュールをハードディスク、磁気ディスク１８３３、光ディスク１８４３、ＲＯＭ１８１７、又はＲＡＭ１８２１上に記憶することができる。ユーザは、キーボード１８６６、及びマウスなどのポインティングディバイス１８６８などの入力デバイスを介して、又はナチュラルユーザインターフェイス（「ＮＵＩ」）（図１８には図示せず）を使用する音声を介して、コマンド及び情報をコンピュータシステム１８００に入力することができる。
【００３９】
[0051]  他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用ディスク、スキャナなどを含むことができる。これら及び他の入力デバイスは、多くの場合、システムバス１８１４に結合されたシリアルポートインターフェイス１８７１を介してプロセッサ１８０５に接続されるが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス（「ＵＳＢ」）などの他のインターフェイスによっても接続することができる。モニタ１８７３又は他のタイプのディスプレイデバイスも、ビデオアダプタ１８７５などのインターフェイスを介してシステムバス１８１４に接続される。
【００４０】
[0052]  モニタ１８７３に加えて、パーソナルコンピュータは、典型的にはスピーカ及びプリンタなどの他の周辺出力デバイス（図示せず）を含む。図１８に示された例は、ホストアダプタ１８７８、スモールコンピュータシステムインターフェイス（「ＳＣＳＩ」）バス１８８３、及びＳＣＳＩバス１８８３に接続された外部ストレージデバイス１８７６も含む。
【００４１】
[0053]  コンピュータシステム１８００は、リモートコンピュータ１８８８などの１つ又は複数のリモートコンピュータへの論理接続を使用するネットワーク化環境内で動作可能である。リモートコンピュータ１８８８は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、又は他の共通ネットワークノードとして選択することができ、典型的にはコンピュータシステム１８００に関して上記で説明された要素のうちの多く又はすべてを含むが、図１８には単一の代表的なリモートメモリ／ストレージデバイス１８９０のみが示されている。
【００４２】
[0054]  図１８に示された論理接続は、ローカルエリアネットワーク（「ＬＡＮ」）１８９３及びワイドエリアネットワーク（「ＷＡＮ」）１８９５を含む。このようなネットワーキング環境は、多くの場合、事務所、企業規模コンピュータネットワーク、イントラネット、及びインターネット内に配設される。
【００４３】
[0055]  ＬＡＮネットワーキング環境で使用される場合、コンピュータシステム１８００は、ネットワークインターフェイス又はアダプタ１８９６を介してローカルエリアネットワーク１８９３に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータシステム１８００は、典型的には、ブロードバンドモデム１８９８、ネットワークゲートウェイ、又は、インターネットなどのワイドエリアネットワーク１８９５を介して通信を確立するための他の手段を含む。内蔵又は外付けであってもよいブロードバンドモデム１８９８は、シリアルポートインターフェイス１８７１を介してシステムバス１８１４に接続される。
【００４４】
[0056]  ネットワーク化環境において、コンピュータシステム１８００に関するプログラムモジュール又はその一部は、リモートメモリストレージデバイス１８９０に記憶することができる。図１８に示されたネットワーク接続は例示的なものであり、特定の用途の特有の要件に応じて、コンピュータ間に通信リンクを確立する他の手段も使用することができることに留意されたい。
【００４５】
[0057]  以上、構造上の特徴及び／又は方法論的動作に特有の言い回しで対象を説明してきたが、添付の特許請求の範囲で定義される対象は、必ずしも上述の特定の特徴又は動作に限定されるものでないことを理解されたい。むしろ、上述の特定の特徴及び動作は、特許請求の範囲を実施する例示的な形として開示されている。
【図３】
2015534145.tif 000009
【図４】
2015534145.tif 000010
【図９】
2015534145.tif 000011
【図１０】
2015534145.tif 000012
【図１１】
2015534145.tif 000013
【図１２】
2015534145.tif 000014
【図１４】
2015534145.tif 000015
【図１５】
2015534145.tif 000016
【図１６】
2015534145.tif 000017
【図１７】
2015534145.tif 000018
【図１】
2015534145.tif 000019
【図２】
2015534145.tif 000020
【図５】
2015534145.tif 000021
【図６】
2015534145.tif 000022
【図７】
2015534145.tif 000023
【図８】
2015534145.tif 000024
【図１３】
2015534145.tif 000025
【図１８】
2015534145.tif 000026
【国際調査報告】
2015534145.tif 000027
2015534145.tif 000028
2015534145.tif 000029