JP2015534145A - 宣言テンプレートを使用してコントロールをスタンプアウトするためのユーザインターフェイスコントロールフレームワーク - Google Patents

宣言テンプレートを使用してコントロールをスタンプアウトするためのユーザインターフェイスコントロールフレームワーク Download PDF

Info

Publication number
JP2015534145A
JP2015534145A JP2015527582A JP2015527582A JP2015534145A JP 2015534145 A JP2015534145 A JP 2015534145A JP 2015527582 A JP2015527582 A JP 2015527582A JP 2015527582 A JP2015527582 A JP 2015527582A JP 2015534145 A JP2015534145 A JP 2015534145A
Authority
JP
Japan
Prior art keywords
control
html
layout
backing
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015527582A
Other languages
English (en)
Other versions
JP2015534145A5 (ja
Inventor
シリンシオン,コリー
リース,マーク
ホプトン,ドミニク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015534145A publication Critical patent/JP2015534145A/ja
Publication of JP2015534145A5 publication Critical patent/JP2015534145A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】【解決手段】 ユーザインターフェイス(「UI」)コントロールフレームワークは、従来のUIコントロールモデルに通常必要となるboilerplate JavaScript(登録商標)を書き込む必要なしに、HTMLマークアップを用いて、UIコントロールをインラインで宣言的に作成できるようにするものである。UIコントロールフレームワークは、既存のWinJS(JavaScript(登録商標)用Windows(登録商標)ライブラリ)機能の上位に位置するように設計され、UIコントロールテンプレートの単一インスタンスを使用して複数のコントロールインスタンスをスタンプアウトできるように、多くのコントロール実施態様にわたって一般的な挙動をカプセル化している。UIコントロールフレームワークは、バッキングコントロール内の「コードビハインド」とはレイアウトを分離しているため、コントロール及びその子コントロールのいずれのレイアウトについての明確な知識も持たずにデータ結合を抽象的に実施することができる。マークアップは、コードが子コントロールに直接アクセスできるようにする「アンカーポイント」を提供する。名前付きプロパティをコントロールインスタンス上に配置するカスタムエクスパンドのHTML属性が使用される。【選択図】 図8

Description

[0001] 「HTML5」と呼ばれるハイパーテキストマークアップ言語のバージョン5は、ワールドワイドウェブコンソーシアム(「W3C」)として知られる国際標準化団体によって公式に定義されている。HTML5は、次世代ウェブ技術に関する100を超える規格を含む。HTML5は、設計者及び開発者が次世代のウェブサイト及びアプリケーションを構築できるように構成されたHTML、CSS(カスケーディングスタイルシート)、及びJavaScript(登録商標)規格のセットを記述している。このような技術は多くの使用シナリオで十分に機能しているが、今後実施されるウェブアプリケーションの開発経験をより機能強化された豊かなものにする機会は依然として残されている。
[0002] 「背景技術」は、下記の「発明の概要」及び「発明を実施するための形態」に関する簡単なコンテキストを紹介するために提供されている。「背景技術」は、請求する対象の範囲を決定する際の補助となること、或いは請求する対象を上述の欠点又は問題点のいずれか又はすべてを解決する実施態様に限定するものとみなすことも意図していない。
[0003] ユーザインターフェイス(「UI」)コントロールフレームワークは、従来のUIコントロールモデルに通常必要となるboilerplate JavaScript(登録商標)を書き込む必要なしに、HTMLマークアップを用いて、UIコントロールをインラインで宣言的に作成できるようにするものである。特定の例示的実施形態において、UIコントロールフレームワークは、既存のWinJS(JavaScript(登録商標)用Windows(登録商標)ライブラリ)機能の上位に位置するように設計され、UIコントロールテンプレートの単一インスタンスを使用して複数のコントロールインスタンスをスタンプアウトできるように、多くのコントロール実施態様にわたって一般的な挙動をカプセル化している。UIコントロールフレームワークは、バッキングコントロール内の「コードビハインド」とはレイアウトを分離しているため、コントロール及びその子コントロールのいずれのレイアウトについての明確な知識も持たずにデータ結合を抽象的に実施することができる。マークアップは、コードが子コントロールに直接アクセスできるようにする「アンカーポイント」を提供する。名前付きプロパティをコントロールインスタンス上に配置するカスタムエクスパンドのHTML属性が使用される。
[0004] 有利なことに、レイアウトとバッキングコントロールとの間の疎結合は、HTML及びCSSのスペシャリストである傾向にあるが、プログラマー/開発者としてJavaScript(登録商標)コーディングには精通していない可能性のあるウェブアプリケーション設計者が、UIコントロールを容易に作成できるようにする。フレームワークは、設計者がバッキングコントロールコードに接触する必要なしに、UIコントロールの宣言的作成をサポートする。さらに、フレームワーク及びその宣言テンプレートは、本来は柔軟性があるため、結果として設計者はバッキングコートロール内のコードを更新する必要を生じさせることなく、アンカーポイントに同じ名前が付けられたままである限り、レイアウトをコントロールするために大規模な変更を行うことができる。このような柔軟性が、ユーザの豊かな経験を作り出すための強力なツールをアプリケーション設計者に提供すると共に、コードの保守管理に関連付けられた経費も削減する。
[0005] 「発明の概要」は、以下の「発明を実施するための形態」でさらに説明される簡略化された形での概念の選択を紹介するために提供されている。「発明の概要」は、請求する対象の重要な特徴又は不可欠な特徴を識別すること、或いは、請求する対象の範囲を決定する際の補助として使用されることも意図していない。
[0006]本UIコントロールフレームワークが実施することができる例示的コンピューティング環境を示す。 [0007]従来のUIコントロールモデルにおいて、基礎をなす「コードビハインド」にUIコントロールレイアウトがどのように密結合されるかを示す。 [0008]音楽トラックを表示し、それらの購入を可能にするUIコントロールを呼び出す例示的HTMLコードを示す。 [0009]図3に示されたUIコントロールを実施するために使用されるboilerplate JavaScript(登録商標)の例を示す。 [0010]UIコントロールレイアウトを指定するマークアップファイルが、本UIコントロールフレームワーク内でバッキングコントロールとどのように疎結合され分離されるかを示す。 [0011]宣言UIコントロールテンプレートを使用して、複数のコントロールインスタンスをどのように「スタンプアウト」するかの例を示す。 [0012]データがバッキングコントロールによって提供されるレイアウトにおいて、データとコントロールとを結合するための例示的配置構成を示す。 [0013]本UIコントロールフレームワークの実施のための例示的アーキテクチャを示す。 [0014]WinJSの下で、本UIコントロールフレームワークをサポートする名前空間及び関数の作成を示す。 [0015]本UIコントロールフレームワークの例示的使用例を示す。 [0015]本UIコントロールフレームワークの例示的使用例を示す。 [0015]本UIコントロールフレームワークの例示的使用例を示す。 [0016]例示的HTML DOM(文書オブジェクトモデル)ツリーの一部を示す。 [0017]HTML要素に関連付けられた様々なエクスパンド属性を含む例示的HTMLフラグメントを示す。 [0017]HTML要素に関連付けられた様々なエクスパンド属性を含む例示的HTMLフラグメントを示す。 [0017]HTML要素に関連付けられた様々なエクスパンド属性を含む例示的HTMLフラグメントを示す。 [0017]HTML要素に関連付けられた様々なエクスパンド属性を含む例示的HTMLフラグメントを示す。 [0018]本UIコントロールフレームワークが実施することができるパーソナルコンピュータ又はサーバなどの例示的コンピュータシステムを示す簡略ブロック図である。
[0019] 図面内で同様の参照番号は同様の要素を記述している。
[0020] 図1は、本UIコントロールフレームワークが実施することができる例示的コンピューティング環境100を示す。環境100において、何人かのウェブアプリケーションユーザ105は、それぞれのコンピューティングデバイス110を使用して、ウェブアプリケーションプロバイダ115を含むウェブベースのリソースにインターネット120を介してアクセスする。コンピューティングデバイス110は、例えば、携帯電話、スマートフォン、パーソナルコンピュータ(「PC」)、ウルトラモバイルPC、PDA(携帯情報端末)、電子メール機器、デジタルメディアプレーヤ、タブレットコンピュータ、ハンドヘルド型ゲームプラットフォーム及びゲームコンソール、ノートブック型及びラップトップ型コンピュータ、インターネット接続テレビジョン、セットトップボックス、GPS(全地球測位システム)及びナビゲーションデバイス、デジタルカメラ、並びに本明細書で提供される機能の様々な組み合わせを有するデバイスを含む様々な特徴及び機能を有する様々なプラットフォームを備えることができる(図1ではこのようなプラットフォームのすべてが示されているわけではない)。しかしながら、上述のリストは例示的であることが意図され、本配置構成は、HTML5の機能又はそれらのサブセットをサポートする様々なプラットフォームのいずれかで使用されることが期待されることを強調する。
[0021] 本UIコントロールフレームワークを実施するために必要な機能ではないが、コンピューティングデバイス110は、多くの場合、直接的又は中間デバイス(例えばインターネット接続パーソナルコンピュータ)を介した何らかの形のネットワーク接続機構、並びにデバイス上で動作し、タッチスクリーン、キーパッド、ポインティングディバイスなどの表示及び入力デバイスを介したユーザ対話性をサポートする同様の機能を提供するウェブブラウザ又はアプリケーション又は埋め込み型機構を有する場合がある。図1に示されるように、コンピューティングデバイス110は、モバイルネットワーク125を使用して、又はインターネットサービスプロバイダ(「ISP」)130を介して、或いは、場合によってはその両方を使用してインターネット120及びウェブアプリケーションプロバイダ115にアクセスすることができる。
[0022] ウェブアプリケーション設計者135は、プロバイダ115と協働で、HTML5の機能を利用するアプリケーション及びウェブサイトを含む次世代ウェブ技術を設計する。プログラマー140は、プロバイダとも協働する。この図示された例では、設計者は典型的にはHTML及びCSSに精通しており、これらを使用するが、コーディングにおいて必ずしもプログラマーと同様の高水準の専門知識を有するとは限らない。
[0023] 図2に示されるように、従来のUIコントロール開発モデルは、多くの場合、ユーザのためにディスプレイ上でコントロールを編成及び提示するUIコントロールレイアウト205と、ウェブアプリケーションのビジネス及び/又は提示論理を使用してコントロールを実施するために利用される基礎的コード210(多くの場合、「コードビハインド」と呼ばれる)との間に密結合を実施する。このような密結合は、コードが、各UIコントロール及び任意の子コントロールのレイアウトの明示的な知識を有する必要があることを意味する。また、子コントロールが所有するいずれの依存性も、親によって明示的に管理される必要がある。
[0024] 従来の開発モデルを使用する場合、設計者は、アプリケーション機構の作成又は修正時にコードに接触する必要が生じる場合があり、多くの場合、設計者のコードに関する専門知識がより限定的な場合問題となり得る。コードとレイアウトとの間の密結合は、各UIコントロールに関して、比較的大量のboilerplateコードを生成する必要を生じさせる場合もある。図3及び図4は、WinJSにおけるこのようなboilerplateコードの例示を提供する。WinJSは、設計者、プログラマー、及び開発者が、JavaScript(登録商標)を使用して、メトロスタイルアプリケーション(「apps」)用に設計された新しいコントロールを実施できるようにするための総合機能を提供する。現在、WinJSは、HTMLマークアップとJavaScript(登録商標)との間の簡単であるが強力なコントラクトを用いて、UIコントロールを定義している。それぞれのボタンを押すことによって購入できる様々な音楽トラックを表示したUIコントロール用のHTMLマークアップの例示的フラグメントが、図3の参照番号305によって示されている。対応するJavaScript(登録商標)コードは、図4の参照番号405によって示されている。
[0025] この例で示されるように、比較的簡単なコントロールであっても大量のboilerplateコードが存在し、このようなコードが典型的には事実上あらゆるUIコントロールに対して反復される必要がある。この状況は、プログラマー(例えば、図1及び図2のプログラマー140)にとって、コーディングのエラー及び不一致につながり得る同様の問題を複数回解決する必要が生じること、共通及び共有のコーディングパターンの普及を低下させること、及び最終的にアプリケーション保守コストをより高くすることにつながり得る。
[0026] 従来のUIコントロールモデルにおける密結合とは異なり、UIコントロールレイアウト505は、図5に示されるように、本UIコントロールフレームワークでは、コードビハインド510と疎に結合される。特に疎結合は、例えばHTML及びCSSを含むことができるマークアップファイル515をバッキングコントロール520から分離できるようにする。UIコントロールは、それらのレイアウトを任意の子コントロールへの参照を含むマークアップファイル515に記憶し、このファイルはその後、複数のコントロールに関するレイアウトを「スタンプアウト」するために宣言テンプレートとして使用される。図6に示されるように、マークアップファイル515(すなわち宣言テンプレート)自体は単一インスタンスであるが、コントロールインスタンスごとにスタンプアウトが実行される。各レイアウト605は、1:1ベースでバッキングコントロール610内にマッピングされる。したがって本UIコントロールフレームワークは、有利なことに、複数のUIコントロールを単一テンプレート内に定義することができ、これによってboilerplateコードを繰り返し生成する必要がなくなる一方、マークアップを介したコントロールの簡単な宣言レイアウトが可能となる。
[0027] プロパティ又は値などのUIコントロールに関するデータは、レイアウト内のコントロールによって直接管理されない。代わりに、データは、レイアウト内の宣言指定を介して、バッキングコントロールからデータを疎にソーシングするように要求される。図7はこのようなデータ結合の例を示し、コントロールレイアウト705は、参照番号715及び720で示されるような2つの子コントロールを含む。子コントロールに関するデータは、参照番号725及び730で示されるように、プロパティを提供するバッキングコントロール710からの結び付きがある。重要なことに、疎結合は、バッキングコントロールによって提供されるデータを子コントロールの明示的な知識なしに抽象的に達成できるようにするものである。
[0028] 図8は、既存のWinJSプラットフォーム上に構築された本UIコントロールフレームワークの特定の一実施のための例示的アーキテクチャを示す。WinJSに関する追加情報は、http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspxで見ることができる。この特定の例において、コントロールフレームワーク805は、UIコントロール810をサポートし、3つのWinJSコンポーネント上にコア構築ブロックとして構築される。コンポーネントは、タイプ定義を提供し、WinJS約束オブジェクトを使用して非同期延期呼び出しモデルをサポートするWinJSタイプライブラリであるBase.js(参照番号815で示される)を含む。Binding.jsコンポーネント820は、一方向の動的プロパティ結合のための宣言及び命令結合システムを提供するために使用される。UI.jsコンポーネント825は、基本コントロールモデル、HTMLフラグメントローダ、及び様々なUIユーティリティ機能を提供する。WinJSプラットフォーム及びその特定の構築ブロックコンポーネントの使用は例示的であることが意図され、本UIコントロールフレームワークはWinJSプラットフォーム実施に限定されないことを強調する。本明細書に提示された原理は、特定の実施の要件に応じて、様々なプログラミングパラダイム(そのうちの幾つかはCSS及びJavaScript(登録商標)オブジェクトを使用しない場合がある)と共に使用するように構成されてもよい。
[0029] 図9に示されるように、名前空間及びデフォルトのコントロールクラスが、コードセグメント905に示されるようなWinJS内に定義される。このクラスは、コントロール宣言を簡略化し、最適化、及びフラグメント、テンプレートなどの背景管理のうちの幾つかをカプセル化するように構成された関数セットを提供する。WinJSコントロール定義関数に代わって、新しいコントロールクラスが使用される。しかしながら、提供されたdefineUserControl関数は、同じWinJSコントロールコントラクトに準拠する。関数は、デフォルトコントロールクラスに値を渡すと共に、多くのパラメータをWinJSからWinJS.Class.define()内に渡す。
[0030] 関数パラメータを以下の表1に示す。
[0031] 既存のコントロールから導出可能であることに留意されたい。この場合の共通の使用法は、同じコントロール挙動に異なるテンプレートを採用することである。このような使用法は、Windows(登録商標) Presentation Foundation(「WPF」)でのコントロール実施と同様である。
[0032] コントロール基本クラスは、WinJSコントラクト(例えばsetOptions、setElement、及び関数(要素、オプション)コンストラクタ機能)を実施する一方、このクラスを拡張するオプションのカスタマイゼーションを設計者及びプログラマーに提供する。コントロール基本クラスは、以下の表2に示されるように様々な機能をサポートしている。
[0033] 例えばリソースを解放するか又は状態を持続させるために、作成者のコントロールがUIから除去されるときにコントロール作成者が作業を実行する必要がある場合があり得る。これを可能にするため、HTML DOM(文書オブジェクトモデル)からコントロールが除去される場合、コントロールインスタンス時に「アンロード」と呼ばれる方法が呼び出される。これによって作成者は、適切な時に作業を実行することができる。
[0034] テンプレートは、ロードされる場合、UIコントロールを実施するマークアップ及びCSSのローディングがコントロール消費者(例えば設計者135)に対して透過的であるようにカプセル化される。この透過性を可能にするために、コントロール定義は、ファイルと、そのファイル内のテンプレートに関する識別子との両方を表すURI(ユニフォームリソース識別子)を有することになる。説明する例は、以下の表3に示すように、「SimpleControls.html#EditBox」である。
[0035] HTML識別属性を使用して特定テンプレートを識別することが可能な場合があるが、親文書とマージされた場合、一意性に関する何らかの問題が存在する。これを解決するために、HTML文書内で一意の値に設定されたカスタムHTMLエクスパンド属性「data−ent−templateid」が使用される。ファイル経路と識別の組み合わせを使用して、テンプレートをグローバルに識別することができる。
[0036] コントロールレイアウトファイルとテンプレートとの1対多の関係が与えられた場合、テンプレートへのアクセスのために特定ファイル(フラグメント)をDOMにロードすることは、コントロール消費者に対して透過である必要がある。WinJSは、本UIコントロールフレームワークによって利用できるリッチ及びフル機能のフラグメントローディング機構を有する。これにより、フラグメントを文書内にロードすることが可能であり、フラグメントは明示的にアンロードされるまで文書内に常駐する。したがって、同じフラグメントをロードするための後続の呼び出しは、即時に完了されることになる。したがってこの暗黙のキャッシングは、フラグメントがロードされている場合それらを管理する。また、インスタンス化されたWinJS.Binding.Templateインスタンスは、コントロールがレンダリングされるたびにフェッチされる必要のないようにキャッシュに入れられる。
[0037] ソースHTMLファイルに含まれるCSS及びスクリプトは、親文書内への複写なしにマージされる。WinJSは、フラグメントを「アンロード」するための機能を提供し、これがコンテンツを除去及びアンロードすることになる。テンプレートは、WinJS内のWinJS.Binding.Template()関数(コントロールコントラクトに従う)を使用して、コントロールに関する実際のテンプレート水和及びデータ結合を実行する。したがって、フラグメントローディング及びテンプレート水和の両方が、コントロール作成者に対してシームレスに処理されることになる。
[0038] 図10〜図12は、本UIコントロールフレームワークの例示的使用例を示す。図10は、図3及び図4に示され、添付のテキストで説明される例と同様に、表示された音楽トラックをユーザがボタンを押すことで購入できるようにするためのUIを実施するUIコントロールテンプレートに関するHTMLコードのフラグメント1005を示す。対応するJavaScript(登録商標)コード1105が図11に示されている。コントロール消費者は、図12に示されたHTMLフラグメント1205を使用して、UIコントロールを単に宣言的にインスタンス化することができる。
[0039] 上述のUIコントロールフレームワークのコア機能に加えて、追加のコントロール挙動を提供する幾つかのカスタムHTMLエクスパンド属性を使用することができる。属性によって対処される特定の問題の1つは、所与のコントロールのDOMツリーについて、直接的又はその要素によって表されるコントロールを介した特定のHTML要素へのアクセスが必要となる場合があることである。アプリケーションのページを、キー1315に示されるようなHTML要素、テキスト要素、及び属性を含む接続されたノードのグループとして表す例示的DOMツリー1310が図13に示される。JavaScript(登録商標)は、そのコンテンツを修正又は削除し、新しい要素を作成するために、ツリーを介してノードにアクセスすることができる。DOMツリー内のノードは、互いに階層関係を有する。
[0040] このアクセス問題に対処するために、「data−ent−member」と命名されたエクスパンド属性がある要素に配置されるテンプレートが作成可能である。この属性は、メンバとして配置されている要素のインスタンスをコントロールインスタンス上に配置することと解釈される。要素がコントロールを表す場合、要素の代わりに、コントロールインスタンスがそのメンバ内に配置される。図14に示されたHTMLフラグメント1405内に例が示されている。この例において、このテンプレートを消費するコントロールは、それらの要素への容易なアクセスを可能にするmember1、member2という2つのプロパティセットを有することがわかる。以下の表4で、プロパティを説明する。
[0041] 典型的なDOMツリーの複雑さ、及び可能な限りコード実施からレイアウトを分離するというターゲットが与えられると、コードを使用すること及びイベントリスナーを実施することではなく、イベントが宣言的に付加される。「data−ent−member」属性は、テンプレートの構成部分を移動し、コードに与える影響を少なく維持することが可能であるが、依然としてイベントリスナーへの呼び出し、定義済み関数などが必要である。また、「this」ポインタは、コントロール自体ではなく、イベントを引き起こす要素を指し示す。これは典型的には、開発者が「var that」を使用しているか、又はそれらのコード全体を通じて.bind(this)を実行していることを意味する。開発者がこのような形式に関心を持ち、いずれの他の機能とも全く同様にイベントハンドラを作成する必要を回避するために、図15のHTMLフラグメント1505に示されるようにエクスパンド属性「data−ent−event」が使用される。図15に示された特定の例において、HTML要素に付加されることになるDOMイベントが、以下の表5に示される。
[0042] すべてのハンドラ方法はコントロールインスタンス上で見られ、それらの「this」ポインタは、コントロールインスタンスに設定される。それらは呼び出されると、任意のDOMイベントハンドラに渡される標準パラメータを渡す。
[0043] さらに必要なことは、コントローラ消費者から動作の複雑さを隠すために、アプリケーション内のある動作、例えばビデオの再生、トラックの購入などを抽象化することである。これを解決するために、「アクション」と呼ばれる概念が作成される。この概念は、呼び出し、有効(例えば有効な選択を有する)、及び使用可能(機械構成又は市場要件に基づいては発生し得ない)の状態に対して簡単なコントラクトを提供する。
[0044] 本UIコントロールフレームワークは機能自体の実際の呼び出しを処理しない(最良の対話を決定することはコントロール次第であるため)が、アクションの実行、可用性の処理、及びコントロールによる使用可能化のインフラストラクチャは、コントロールフレームワークの一部である。したがって、図16のHTMLフラグメント1605に示されるように、エクスパンド属性「data−ent−action」が使用される。この例において、「data−ent−action」属性の値は、内部サービスにおけるアクションを検索するため、及び実際のコントロール上にインスタンスを配置するために使用される。次に、コントロールは、truthyの場合、アクションプロパティは有効なアクション及びデータ結合であるものと想定することができ、それ以外の場合はそれを操作する。
[0045] ユーザに関する強制的な経験セットを生成するために、多くの場合、アニメーションが使用される。一貫した強制的な経験を有効にするために、単に要素が不快な視覚的フラッシュとしてスクリーン上に現れるのではなく、本UIコントロールフレームワークの目的はコントロール自体を明らかにさせることである。これをコントロールに個別に状況に応じて管理させるのではなく、「data−ent−showanimation」及び「data−ent−hideanimation」のエクスパンド属性を使用して、それぞれ表示及び/又は非表示にされる場合、所与の要素上で再生されるCSSアニメーションを宣言することができる。「表示」は、要素自体が可視であると考えられる可能性を考慮に入れるが、親要素の可視性により、実際には可視でない場合があることに留意されたい。これは、常駐しているツリーを考慮に入れる際、要素が実際に可視になった場合にのみ、これらのアニメーションが再生されるべきであることを意味する。また、表示又は非表示である場合、これらのアニメーションを自動的に再生させることに加えて、それらを明示的に開始する方法が必要である。これは主に、DOMからの既知の[remove|insert|append]Child関数の当座の代替として意図される関数を中心に展開することになる。関数の全セット及び対応する説明が、以下の表6に示される。
[0046] 図17のHTMLフラグメント1705内にアニメーション処理の例が示される。この例では、2つのHTML要素上に2つの表示アニメーションが存在する。これらの要素が可視になると、属性が設定された要素に適用されたアニメーションを呼び出すことになり、開発者がアニメーション自体の再生を管理する必要性を回避することができる。また、このアニメーション機能を用いる場合、可視性全体にわたるプログラムコントロールが存在する。具体的に言えば、表示/非表示にするため、すなわちプロパティとするために、適切なアニメーションを再生することになる「可視性」ブールプロパティが存在し、これによって、可視性をコントロールするための容易なデータ結合が可能になる。
[0047] 図18は、本UIコントロールフレームワークを実施することができるPC又はウェブサーバなどの例示的コンピュータシステム1800の簡略ブロック図である。コンピュータシステム1800は、プロセッサ1805、システムメモリ1811、及び、システムメモリ1811を含む様々なシステムコンポーネントをプロセッサ1805に結合するシステムバス1814を含む。システムバス1814は、メモリバス又はメモリコントローラ、周辺バス、或いは様々なバスアーキテクチャのいずれかを使用するローカルバスを含む幾つかのタイプのバス構造のいずれかとすることができる。
[0048] システムメモリ1811は、読み取り専用メモリ(「ROM」)1817及びランダムアクセスメモリ(「RAM」)1821を含む。起動中などに、コンピュータシステム1800内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力/出力システム(「BIOS」)1825が、ROM1817に記憶される。コンピュータシステム1800は、内部に配設されたハードディスク(図示せず)からの読み取り又はこれへの書き込みのためのハードディスクドライブ1828と、取り外し可能磁気ディスク1833(例えばフロッピィディスク)からの読み取り又はこれへの書き込みのための磁気ディスクドライブ1830と、CD(コンパクトディスク)、DVD(デジタル多用途ディスク)、又は他の光媒体などの取り外し可能光ディスク1843からの読み取り又はこれへの書き込みのための光ディスクドライブ1838とをさらに含むことができる。ハードディスクドライブ1828、磁気ディスクドライブ1830、及び光ディスクドライブ1838は、それぞれハードディスクドライブインターフェイス1846、磁気ディスクドライブインターフェイス1849、及び光ドライブインターフェイス1852によって、システムバス1814に接続される。
[0049] ドライブ及びそれらに関連付けられたコンピュータ読み取り可能記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、及びコンピュータシステム1800に関する他のデータの不揮発性ストレージを提供する。この例示的な例はハードディスク、取り外し可能磁気ディスク1833、及び取り外し可能光ディスク1843を示しているが、本UIコントロールフレームワークの幾つかの用途では、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、データカートリッジ、RAM、ROMなどの、コンピュータによるアクセスが可能なデータを記憶することができる他のタイプのコンピュータ読み取り可能記憶媒体も使用することができる。また、本明細書で使用される場合、コンピュータ読み取り可能媒体という用語は、媒体タイプのうちの1つ又は複数のインスタンス(例えば1つ又は複数の磁気ディスク、1つ又は複数のCDなど)を含む。
[0050] オペレーティングシステム1855、1つ又は複数のアプリケーションプログラム1857、他のプログラムモジュール1860、及びプログラムデータ1863を含む幾つかのプログラムモジュールをハードディスク、磁気ディスク1833、光ディスク1843、ROM1817、又はRAM1821上に記憶することができる。ユーザは、キーボード1866、及びマウスなどのポインティングディバイス1868などの入力デバイスを介して、又はナチュラルユーザインターフェイス(「NUI」)(図18には図示せず)を使用する音声を介して、コマンド及び情報をコンピュータシステム1800に入力することができる。
[0051] 他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用ディスク、スキャナなどを含むことができる。これら及び他の入力デバイスは、多くの場合、システムバス1814に結合されたシリアルポートインターフェイス1871を介してプロセッサ1805に接続されるが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(「USB」)などの他のインターフェイスによっても接続することができる。モニタ1873又は他のタイプのディスプレイデバイスも、ビデオアダプタ1875などのインターフェイスを介してシステムバス1814に接続される。
[0052] モニタ1873に加えて、パーソナルコンピュータは、典型的にはスピーカ及びプリンタなどの他の周辺出力デバイス(図示せず)を含む。図18に示された例は、ホストアダプタ1878、スモールコンピュータシステムインターフェイス(「SCSI」)バス1883、及びSCSIバス1883に接続された外部ストレージデバイス1876も含む。
[0053] コンピュータシステム1800は、リモートコンピュータ1888などの1つ又は複数のリモートコンピュータへの論理接続を使用するネットワーク化環境内で動作可能である。リモートコンピュータ1888は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、又は他の共通ネットワークノードとして選択することができ、典型的にはコンピュータシステム1800に関して上記で説明された要素のうちの多く又はすべてを含むが、図18には単一の代表的なリモートメモリ/ストレージデバイス1890のみが示されている。
[0054] 図18に示された論理接続は、ローカルエリアネットワーク(「LAN」)1893及びワイドエリアネットワーク(「WAN」)1895を含む。このようなネットワーキング環境は、多くの場合、事務所、企業規模コンピュータネットワーク、イントラネット、及びインターネット内に配設される。
[0055] LANネットワーキング環境で使用される場合、コンピュータシステム1800は、ネットワークインターフェイス又はアダプタ1896を介してローカルエリアネットワーク1893に接続される。WANネットワーキング環境で使用される場合、コンピュータシステム1800は、典型的には、ブロードバンドモデム1898、ネットワークゲートウェイ、又は、インターネットなどのワイドエリアネットワーク1895を介して通信を確立するための他の手段を含む。内蔵又は外付けであってもよいブロードバンドモデム1898は、シリアルポートインターフェイス1871を介してシステムバス1814に接続される。
[0056] ネットワーク化環境において、コンピュータシステム1800に関するプログラムモジュール又はその一部は、リモートメモリストレージデバイス1890に記憶することができる。図18に示されたネットワーク接続は例示的なものであり、特定の用途の特有の要件に応じて、コンピュータ間に通信リンクを確立する他の手段も使用することができることに留意されたい。
[0057] 以上、構造上の特徴及び/又は方法論的動作に特有の言い回しで対象を説明してきたが、添付の特許請求の範囲で定義される対象は、必ずしも上述の特定の特徴又は動作に限定されるものでないことを理解されたい。むしろ、上述の特定の特徴及び動作は、特許請求の範囲を実施する例示的な形として開示されている。

Claims (10)

  1. ユーザインターフェイス(「UI」)コントロールフレームワークを実施するための方法であって、
    カスケーディングスタイルシート(「CSS」)及びハイパーテキストマークアップ言語(「HTML」)コードを備えるマークアップ文書を生成するステップであって、前記文書はi)少なくとも1つのUIコントロール及びそのレイアウトのインライン宣言定義を含み、ii)単一のインスタンス化されたテンプレートとして使用される生成する、ステップと、
    前記テンプレートを使用して複数のUIコントロールインスタンスをスタンプアウトするステップと、
    各UIコントロールインスタンスについて1対1ベースでバッキングコントロールを生成するステップと、
    前記テンプレート内のHTML要素に関連付けられたエクスパンド属性を使用するステップであって、前記属性は、前記バッキングコントロールが前記レイアウト内の任意の子UIコントロールに直接アクセスできるように、名前付きプロパティをコントロールインスタンス上に配置する使用するステップと、
    を含む、方法。
  2. 前記HTMLはHTMLバージョン5(「HTML5」)であり、前記CSSはCSSレベル3(「CSS3」)である、請求項1に記載の方法。
  3. 前記HTML要素は、UIコントロールを表す、請求項1に記載の方法。
  4. 前記バッキングコントロールは、JavaScript(登録商標)を使用して実施される、請求項1に記載の方法。
  5. 前記属性は前記マークアップ文書内にアンカーポイントを定義できるようにする、請求項1に記載の方法。
  6. レイアウトが改訂され、前記改訂全体を通じて前記アンカーポイントの名前が維持される、請求項5に記載の方法。
  7. バッキングコントロールが、スタンプアウトされたレイアウトに1対1ベースでマッピングされる、請求項1に記載の方法。
  8. 前記レイアウトは、前記UIコントロールを実施するアプリケーションの基礎をなすビジネス論理に疎に結合される、請求項1に記載の方法。
  9. バッキングコントロールが、UIコントロール又は子コントロールに結合するためのデータを提供し、前記バッキングコントロールは、前記子コントロールの直接的な知識を持たずに前記データを抽象的に提供する、請求項1に記載の方法。
  10. 前記HTMLコードは、前記エクスパンド属性を使用して指定されたアンカーポイントを含む、請求項1に記載の方法。
JP2015527582A 2012-08-14 2013-08-14 宣言テンプレートを使用してコントロールをスタンプアウトするためのユーザインターフェイスコントロールフレームワーク Pending JP2015534145A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/584,936 US20140053063A1 (en) 2012-08-14 2012-08-14 User interface control framework for stamping out controls using a declarative template
US13/584,936 2012-08-14
PCT/US2013/055001 WO2014028655A1 (en) 2012-08-14 2013-08-14 User interface control framework for stamping out controls using a declarative template

Publications (2)

Publication Number Publication Date
JP2015534145A true JP2015534145A (ja) 2015-11-26
JP2015534145A5 JP2015534145A5 (ja) 2016-08-25

Family

ID=49083761

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015527582A Pending JP2015534145A (ja) 2012-08-14 2013-08-14 宣言テンプレートを使用してコントロールをスタンプアウトするためのユーザインターフェイスコントロールフレームワーク

Country Status (6)

Country Link
US (1) US20140053063A1 (ja)
EP (1) EP2885700A1 (ja)
JP (1) JP2015534145A (ja)
KR (1) KR20150043333A (ja)
CN (1) CN104798036A (ja)
WO (1) WO2014028655A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110554896A (zh) * 2019-08-02 2019-12-10 中电科仪器仪表(安徽)有限公司 一种基于预置图片像素锚点信息处理的界面设计方法

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9898445B2 (en) 2012-08-16 2018-02-20 Qualcomm Incorporated Resource prefetching via sandboxed execution
US20140053064A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Predicting the usage of document resources
US9348669B2 (en) * 2013-12-09 2016-05-24 Google Inc. User interface framework
CN103823682B (zh) * 2014-02-26 2017-08-08 广州视源电子科技股份有限公司 一种动态ui控件生成方法以及装置
CN106547419A (zh) * 2015-09-23 2017-03-29 阿里巴巴集团控股有限公司 一种对象呈现方法与设备
CN105468377A (zh) * 2015-12-10 2016-04-06 北京中科汇联科技股份有限公司 一种移动端页面生成方法及系统
EP3184399A1 (en) * 2015-12-22 2017-06-28 Televic Rail NV Display system and method for displaying messages in a passenger compartment of a vehicle
CN106936871B (zh) * 2015-12-30 2020-05-29 阿里巴巴集团控股有限公司 界面展示数据的方法及装置
CN105740145B (zh) * 2016-01-27 2018-09-18 广州酷狗计算机科技有限公司 定位控件中的元素的方法及装置
US10528647B2 (en) * 2016-06-10 2020-01-07 Ebay Inc. Optimization for browser rendering during navigation
US10521502B2 (en) * 2016-08-10 2019-12-31 International Business Machines Corporation Generating a user interface template by combining relevant components of the different user interface templates based on the action request by the user and the user context
CN107436927B (zh) * 2017-07-10 2019-12-17 长城计算机软件与系统有限公司 一种ui组件的应用方法和系统
CN108647076B (zh) * 2018-05-14 2020-07-24 阿里巴巴集团控股有限公司 一种页面处理方法、装置及设备
CN109739648B (zh) * 2018-12-28 2021-08-03 超级魔方(北京)科技有限公司 动画播放控制方法、装置、设备及存储介质
CN110389810B (zh) * 2019-07-31 2023-03-31 创新先进技术有限公司 一种在虚拟画布上快速摆放ui控件的方法、装置及设备
US11151770B2 (en) * 2019-09-23 2021-10-19 Facebook Technologies, Llc Rendering images using declarative graphics server
CN110995793B (zh) * 2019-11-19 2022-07-05 北京奇艺世纪科技有限公司 一种信息流控件更新系统、方法和装置
CN111443909B (zh) * 2020-03-23 2023-09-29 北京百度网讯科技有限公司 用于生成页面的方法及装置
CN112099792B (zh) * 2020-09-18 2024-02-02 上海逸动医学科技有限公司 一种可视化ui样式设计方法及系统
CN117389675A (zh) * 2021-01-04 2024-01-12 山西统信软件技术有限公司 一种布局控件的方法,计算设备及存储介质
CN113126992A (zh) * 2021-05-11 2021-07-16 南京炫佳网络科技有限公司 一种控件元素的控制方法、装置、设备及存储介质
US11687708B2 (en) * 2021-09-27 2023-06-27 Microsoft Technology Licensing, Llc Generator for synthesizing templates

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004003766A1 (en) * 2002-06-27 2004-01-08 Siebel Systems, Inc. Prototyping graphical user interfaces
JP2006163855A (ja) * 2004-12-08 2006-06-22 Hitachi Software Eng Co Ltd Webアプリケーション開発支援装置及び開発支援方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040125130A1 (en) * 2001-02-26 2004-07-01 Andrea Flamini Techniques for embedding custom user interface controls inside internet content
US7500223B2 (en) * 2004-01-02 2009-03-03 International Business Machines Corporation Automatically creating JavaScript objects to invoke methods on server-side Java beans
US20060015841A1 (en) * 2004-06-30 2006-01-19 International Business Machines Corporation Control on demand data center service configurations
CN101587437A (zh) * 2008-05-20 2009-11-25 鸿富锦精密工业(深圳)有限公司 树型控件设计及生成系统及方法
US8464318B1 (en) * 2008-11-24 2013-06-11 Renen Hallak System and method for protecting web clients and web-based applications
US20120102414A1 (en) * 2010-10-21 2012-04-26 Hilmar Demant Distributed controller of a user interface framework for web applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004003766A1 (en) * 2002-06-27 2004-01-08 Siebel Systems, Inc. Prototyping graphical user interfaces
JP2006163855A (ja) * 2004-12-08 2006-06-22 Hitachi Software Eng Co Ltd Webアプリケーション開発支援装置及び開発支援方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ADAM FREEMAN, METRO REVEALED: BUILDING WINDOWS 8 APPS WITH HTML5 AND JAVASCRIPT, JPN6016038938, 2 May 2012 (2012-05-02), US, pages 5 - 8, ISSN: 0003416280 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110554896A (zh) * 2019-08-02 2019-12-10 中电科仪器仪表(安徽)有限公司 一种基于预置图片像素锚点信息处理的界面设计方法
CN110554896B (zh) * 2019-08-02 2022-09-13 中电科思仪科技(安徽)有限公司 一种基于预置图片像素锚点信息处理的界面设计方法

Also Published As

Publication number Publication date
KR20150043333A (ko) 2015-04-22
EP2885700A1 (en) 2015-06-24
WO2014028655A1 (en) 2014-02-20
US20140053063A1 (en) 2014-02-20
CN104798036A (zh) 2015-07-22

Similar Documents

Publication Publication Date Title
JP2015534145A (ja) 宣言テンプレートを使用してコントロールをスタンプアウトするためのユーザインターフェイスコントロールフレームワーク
Taivalsaari et al. Web browser as an application platform
US8074167B2 (en) Cross domain presence of web user interface and logic
US8762936B2 (en) Dynamic design-time extensions support in an integrated development environment
US10331423B1 (en) Utilizing cross platform streamable user interfaces to reduce software deployment frequency caused by user interface improvements
US20070220035A1 (en) Generating user interface using metadata
US8561088B2 (en) Registering network applications with an API framework
JP2005346719A (ja) 完全な柔軟性を有する自動化に基づくユーザインターフェースを生成する方法および装置
JP2014525622A (ja) オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述
KR20120022831A (ko) 플랫폼 확장성 프레임워크
Anderson et al. Pro business applications with silverlight 4
Panigrahy Xamarin Mobile Application Development for Android
Dixit Android
Overson et al. Developing Web Components: UI from jQuery to Polymer
Morris et al. Introduction to bada: A Developer's Guide
Fujima Building a meme media platform with a JavaScript MVC framework and HTML5
JP2007538314A (ja) 汎用ユーザインターフェースコマンドアーキテクチャ
Roche et al. Beginning Java Google App Engine
Ruiz Mastering Android Application Development
Honkala Web user interaction: a declarative approach based on XForms
Snider Mastering Xamarin. Forms: App architecture techniques for building multi-platform, native mobile apps with Xamarin. Forms 4
Moemeka et al. Real world Windows 10 development
CN111367515B (zh) 页面卡片的开发方法、装置、计算设备和存储介质
Rischpater et al. Beginning Nokia Apps Development
Millas Microsoft. Net Framework 4. 5 Quickstart Cookbook

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160706

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161007

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171004