以下の詳細な説明では、本発明の完全な理解のために、多くの具体的な詳細事項を記載している。しかしながら、当業者であれば、これらの具体的な詳細事項なしでも本発明を実施し得ることが分かるであろう。その他の場合、本発明を不明瞭にしないために、周知の方法、手順及び構成要素は、詳細には説明していない。
本願出願人は、従来技術のシステムが、内的な(即ち、ウェブサイトデザイナによって又は明示的に設計される)及び外的なファクタに基づいて常に更新を必要とするウェブサイトのルックアンドフィール(look and feel)を維持するためにしばしば必要とされる複雑な挙動及び複雑なコンポーネントインタラクションを考慮していないことに気付いた。これらの(コンポーネントレベルで固有な場合もある)更新は、これらを効率的に定義して簡単かつ効率的に実施するために、ウェブサイト構築システム自体の使用に関する詳細な知識を必要とすることが多い。更に、ウェブサイトコンポーネント(外部のサードパーティアプリケーションコンポーネントを含む)には、ウェブサイト構築システム環境内の複数の階層レベルに亘る同じ階層構成内の他のコンポーネントに影響することもある挙動が適用されることがある。
一般的なウェブサイト構築システムには、3つのタイプのユーザ、即ち、ウェブサイト構築システムベンダスタッフ又は(例えば、コンポーネントストア又はサードパーティアプリケーションストアを介する)別個のコンポーネントプロバイダの一部であり得るコンポーネントプロバイダ自身と、コンポーネントを使用してサイトを構築するウェブサイトデザイナ自身と、完成したサイトを使用するビューア又はエンドユーザと、があり得ることが理解されるであろう。また、クラス相互間に何らかの混合が存在する場合があることも理解されるであろう。特に、ウェブサイト構築システムは、デザイナ(又はその一部)が既存のコンポーネントを編集でき、あるいは、自分自身の新しいコンポーネントを追加することさえもでき、例えば、サイトデザイナが定義したコンポーネントコレクションを1つのコンポーネントとして保存して、特許文献2と、参照により本明細書に組み込まれており、本発明の共通譲受人に譲渡され、2017年2月16日に公開された「METHOD AND SYSTEM FOR SECTION-BASED EDITING OF A WEBSITE PAGE」という名称の特許文献3と、に記載されたものと類似する他のサイトデザイナに利用可能となり得るようにしてもよい。
本願出願人は、(例えば)コンポーネントの動作的及び/又は視覚的挙動を定義してもよい被パラメータ化挙動要素を自己の中に有するウェブサイトコンポーネントを処理するシステムによってウェブサイト構築体験が改善され得ることを認識している。コンポーネントは、自己の被パラメータ化挙動要素を使用して他のコンポーネントとの一形態の通信を呼び出して、本明細書において更に詳細に後述する如く、パラメータを送受信できる場合がある。例えば、コンポーネントAは、コンポーネントBに通知してコンポーネントBの被パラメータ化挙動要素Xを被パラメータ化挙動要素Yに置き換えさせてもよい。所与の被パラメータ化挙動要素は、所与のコンポーネントタイプ又はコンポーネントインスタンスのコンテキストにおいて、オーバーライド可能である又はオーバーライド可能ではない(その他においてはオーバーライド可能ではない)ように事前定義されてもよいことが理解されるであろう。従って、(例えば)(図1に示された)ウェブページの階層的性質によって、単一の現在のコンポーネントに加えられた動作上の変更が、全ての収容レベルの他のコンポーネントにも影響を及ぼす可能性がある(ことによると、この影響を及ぼす方のコンポーネントの同じサブ階層においてはその可能性はないかもしれない)、そして、その逆の場合も同様である。例えば、コンテナは、それらの中に在る複数のレベルの被収容コンポーネントとインタラクトしてもよく、その際、このインタラクションは、コンテナと被収容コンポーネントとの両方が、被収容コンポーネントのどの属性がどのような態様で(コンテナによって)影響を受けてもよいかを決定できるようにする事前定義済みルールのプロトコルに基づいて、行われる。このプロトコルについてのロジックには、例えばジオメトリ、セマンティクス、コンテンツ、編集履歴などのような他のコンポーネント/コンテナとのコンポーネント関係のアウェアネス(awareness)と共に、被パラメータ化挙動要素についての「交渉可能な(negotiable)」オーバーライドについてのルールが含まれていてもよい。被収容コンポーネントも、同様に、そのコンテナに影響を及ぼす可能性がある。オーバーライドは、被パラメータ化挙動要素の属性又はパラメータを変更することを意味し得るか、あるいは、本明細書において更に詳細に後述する如く、1つ又は複数の被パラメータ化挙動要素の完全な置き換えを意味し得ることが理解されるであろう。
本願出願人は、更に、上述の原理を拡張して、被収容コンポーネントのレイアウト構成について人工知能(AI)及び機械学習(ML)ベースの修正を提供し得るコンテナをサポートしてもよいことを認識している。そのような修正には、レイアウトのみ(例えば、位置とサイズとを選択すること)、被制限属性セット(例えば、コンテナは、その中に在るサブコンテナに、特定の背景イメージ/ビデオを提供してもよく、あるいは、単に色の選択などに影響を与えてもよい)、挙動、あるいは、例えば被収容コンポーネントの追加、除去、並べ替えなどのような任意の特定の被収容コンポーネントの挙動が含まれていてもよい。一部の実施形態において、これは、非コンテナコンポーネントにも適用されてもよい。
また、本願出願人は、上述の被パラメータ化挙動要素の使用によって、カスケードスタイルシート(Cascading Style Sheet)(CSS)のような従来技術の方法よりも、ウェブページフォーマッティングが定義される態様を改善し得ることも認識している。既存のCSSベースのシステムは、(ブラウザ、ユーザ及びサイト自体によって提供される)複数のスタイルシートからルールを収集して、これらのルールをサイト内の要素にマッチングすることによって、要素のスタイル又は挙動に影響を与える。このマッチングは、各々のルールが提供されるセレクタに基づいており、これらは、一般的に、HTML要素タイプ(例えば、DIVなど)、クラス、ID、あるいは、それらの組み合わせに基づいている。従来技術のシステムは、デフォルトの挙動を有するコンポーネントと、それらをオーバーライドするオプションと、を更に備えている場合があるが、それは、被パラメータ化挙動要素の使用によってではない。要素は、暗示的な(デフォルトの)スタイル又は挙動を有している場合がある。例えば、DIVは、暗示的に、親要素の使用可能なスペースの100%にまで拡張されるボックスである。
本願出願人は、更に、被パラメータ化挙動要素の使用が、コンポーネントが、誰が自分に影響を与えてもよいか、あるいは、否か(例えば、「ギャラリのみが自分のサイズを修正してもよい」)を規定できるようにする追加機能によって、ウェブページ全体に亘るスタイルを構築することを可能にすることを認識している。特に、この規定は、(例えば)コンポーネントのコンテンツ、ジオメトリ、タイプ、セマンティックタイプ、編集履歴、ビジネス情報(BI)、及び、コンポーネント間の関係、に関するコンポーネント分析に基づいていてもよい。このような分析は、追加のコンポーネント分類と(デザイナによって明示的には提供されなかった)関連情報とを提供してもよく、この情報を使用して、分析済みコンポーネントに対するスタイル(又はその他の属性)の適用可能性を判定してもよい。例えば、「コンテナ内の検出された全ての画像と表題とのペアに赤色のベベルを適用する」の場合には、表題と画像とのペアが、特許文献2に記載されているように、コンポーネント分析を通じて(事前定義されているのではなく)検出される。
次に、この検出及び分類を例示した図2を参照する。行1には、6つの無関係なオブジェクト、即ち、3つの笑顔と3つの表題とが示されている。行2には、本システムが、どのように、命令に従って、笑顔と表題のペアを(セマンティックコンポジットとして)認識して、各々の顔/表題ペアの周りにフレームを適用するか、が示されている。行3には、ユーザが右端の「ペア」の表題を移動した場合でも、どのように、それらの間の距離が依然として顔/表題ペアの定義内にあり、従って、フレームが依然として適用されているか、が示されている。次に、行4を参照すると、これには、表題をセマンティックコンポジット定義の要件の範囲外に移動した時に(従って、顔/表題ペアのセマンティックコンポジットとして認識されなくなった時に)、どのように、このペアの周囲からフレームが無くなったか、が示されている。行5では、右端の画像が変更されており、本システムはそれを笑顔として認識せず、従って、フレームを描画していない。この機能は、顔イメージと表題とのペアを識別できないので、通常のCSSには適用できないことが理解されるであろう。
本願出願人は、この使用によって、収容しているコンポーネントが複数のレベル(コンポーネントコンテナ内にネストされた収容しているコンポーネント)に影響を与えることができるようになり、その結果、適用されるコンポーネント修正が「深く」なり得ることも認識している。例えば、「全ての収容レベルにおいて、全ての被収容ビデオプレーヤを、巻き戻しボタンなしで、現れるようにする」、あるいは、「ビデオXを有するビデオ背景を全ての被収容サブコンテナに適用する」などである。
一般に、ウェブサイトのコンポーネントは、高度に設定可能であり、それらの属性と操作は、内部及び外部の両方のソース(例えば、通常のサイト階層の外側に在り、サイト内では見えないこともあるコンポーネント)から、それらが関連付けられているウェブサイト構築システムまで、影響を受け得ることが理解されるであろう。例えば、特定のサイトコンポーネントを時刻や季節に適合させるサービスなどである。(ページの所与のコンテナ内の)被収容コンポーネントのリストは、事前定義されてもよく、あるいは、動的に特定されてもよく、多数の様々なシナリオにおいて、例えば、コンポーネントがアクセス可能な属性で事前規定されているウェブサイト構築システムシナリオにおいて、あるいは、所与のウェブサイトページについて分析を実施して、そのページの、コンポーネント及びコンテナ並びにそれらの属性への区分を特定する非ウェブサイト構築システムシナリオにおいて、使用されてもよい。
ウェブサイトコンポーネントの定義には、一般的に、3つの主要なサブエンティティ、即ち、スタイル、ボディ及びロジックの要素(並びに本明細書において更に詳細に後述する如くの追加の要素)が含まれていることが理解されるであろう。コンポーネントのスタイルは、任意のスタイル定義言語又はその拡張バージョンによって定義されてもよい。コンポーネントのボディは、任意の標準的なコンテンツ定義言語(例えば、HTML、XML又はJSONなど)によって、あるいは、独自開発の又は非標準的な言語(例えば、JSXなど)によって、定義されてもよい。
コンポーネントのロジックは、任意の手続き型言語、例えばJavaScript又はTypeScriptによって、あるいは、ウェブサイトにおいてネイティブコード要素の使用を可能にする任意の通常のプログラミング言語によって、定義されてもよい。あるいは、それは、もしランタイムにおける関係するウェブサイト構築システムがネイティブクライアントを使用して実施されるならば、専用ブラウザ、ブラウザアドオン(browser add-on)又はモバイルアプリを通じて、定義されてもよい。それには、コンポーネントのビジネス/運用ロジックが収容されている。ロジック定義言語には、基礎となる言語に対する様々な言語拡張(例えば、通常のJavaScript言語を拡張するE-JS言語など)も含まれていてもよい。
(コンポーネント定義の一部分である)これらの要素は、コンポーネントのSBL(スタイル/ボディ/ロジック)要素として(一緒に)参照されてもよいことが理解されるであろう。このようなコンポーネント定義は、開発者(例えばエディタなど)に利用可能な通常のツールを使用してシステムの外部で作成されてもよい。その代わりに、システムは、(エディタと統合されても、あるいは、されなくてもよい)コンポーネント編集環境を提供してもよい。このようなコンポーネント編集環境は、ウェブサイト構築システムベンダのスタッフにのみ利用可能であってもよい。あるいは、このコンポーネント編集環境は、外部のコンポーネント開発者に、又はサイトデザイナに、利用可能であるようにして(それらが自分自身のコンポーネントを定義できるようにして)もよい。
コンポーネント定義には、追加情報も含まれていてもよく、例えば、相異なる条件下で使用される複数の構成及びバリアントと、システムエディタが、ウェブページ内の特定のコンポーネントのインスタンスの編集をサポートするために、使用し得る編集ドライバ及び追加の編集関連情報(例えば、動的レイアウトヒント)と、が含まれていてもよい。この追加情報には、本明細書において更に詳細に後述する如く、現在のビューについての編集プレビュー及びランタイムの両方の期間中に使用するコンポーネントレンダリング機能も含まれていてもよい。
ウェブサイトのページは、コンポーネント定義リファレンスの他に追加情報(例えば、コンテンツ、階層位置、画面位置、サイズ、様々なレイアウト、コンポーネントのメタデータ、及び、その他の属性)を含み得るコンポーネントインスタンスの階層を使用して、構築されてもよいことが理解されるであろう。
次に、図3を参照すると、これには、本発明の一実施形態に従って、代表的な拡張コンポーネント10の定義が例示されている。拡張コンポーネント10は、それに含まれている被パラメータ化挙動要素を介してスタイル、挙動及び動作の変更を通信することによって、関連コンポーネント相互間のスマートインタラクションを可能にし得ることが理解されるであろう。拡張コンポーネント10は、従来技術の通常のウェブサイトコンポーネントの構造を超える拡張又は追加構造を備えていてもよい。拡張コンポーネントの定義には、本明細書に上述したようなスタイル、ボディ及びロジックの要素が含まれていてもよく、しかしながら、以下更に詳しく述べるような定義済みのルール及びプロトコルレゾリューションに従ってオーバーライドを許可する場合と許可しない場合とがある被パラメータ化挙動要素も含まれていてもよいことが理解されるであろう。
拡張コンポーネント10は、また、エディタ挙動ドライバ15A、ランタイム挙動ドライバ15B、コンポーネントレンダリング機能15C、オーバーライドデータハンドラ16、メタデータ17及び固定領域18も備えていてもよい。
エディタ挙動ドライバ15Aは、コンポーネント及びそれに収容されるコンポーネントが、使用中のエディタによって(例えば、動的レイアウトヒントを提供することによって)、処理される態様に影響を与え得る。
ランタイム挙動ドライバ15Bは、コンポーネント及びそれに収容されるコンポーネントがランタイム期間中に処理される態様に影響を与え得る。コンポーネントレンダリング機能15Cは、編集プレビューとランタイムの両方の期間中にレンダリング命令を与え得る。例えば、入力コンポーネントは、ウェブサイト構築システムのユーザに役立つフィードバックを提供するために、クイック応答レンダラを使用してもよい。
コンポーネントレンダリング機能15Cは、通常、ウェブサイト構築システムのメインレンダリングプロセスと連携させてもよく、ウェブサイト構築システムの表示プロセスの任意の部分に(ウェブサイト構築システムの実施に応じて)影響を与え得る。例えば、ブラウザを通じてページを表示するウェブサイト構築システムについて、コンポーネントレンダリング機能15Cは、保存済みページのHTML/CSS/JSへの変換と、ブラウザにおける生成済みHTML/CSS/JSのレンダリングと、の両方に影響を与え得る。
オーバーライドデータハンドラ16は、コンポーネントについての上述の事前定義されたルール及びプロトコルレゾリューションに関する情報、即ち、オーバーライド条件が何であるかを通知し得る。メタデータ17には、コンポーネントのメタデータ(例えば、作成者情報及び内部参照IDなど)も含まれていてもよい。固定領域18には、オーバーライドできないコンポーネントの要素、例えば、コンテンツが各々のコンポーネントインスタンスに格納されるコンポーネント内の領域など、が収容されている。
被パラメータ化挙動要素が通常のプログラミング言語における機能パラメータと同等にみなされ得ることが理解されるであろう。従って、単一の拡張コンポーネント10は複数の被パラメータ化挙動要素を収容していてもよく、それらの各々が、相異なるタイプを有しており、拡張コンポーネント10の相異なる部分に(許可されている場合)影響を与える。例えば、スタイルの被パラメータ化挙動要素タイプがスタイルを処理してもよく、レイアウトの被パラメータ化挙動要素タイプがレイアウトなどを処理してもよい。また、被パラメータ化挙動要素は、標準のSBL分類に必ずしも準拠しているわけではなく、複数のSBL要素及び他の要素をオーバーライドしてもよいことも理解されるであろう。
以下、説明の便宜上、ウェブサイトコンポーネントへの言及は、本明細書で上述した拡張コンポーネント10を意味していることが理解されるであろう。
レイアウトの被パラメータ化挙動要素は、コンポーネントの内部(サブ)コンポーネント、例えば、スライダギャラリ対グリッドギャラリ対Vboxが配置される態様を定義してもよい。スタイルの被パラメータ化挙動要素は、コンポーネント又はそのサブ要素によって使用されるビジュアルパラメータを定義してもよい。
従って、例えば、ページデザイナは、所望のグリッドギャラリコンポーネントを埋め込んでもよいが、その内部挙動をオーバーライドして、スライダ配置を使用して(スライダレイアウトの被パラメータ化挙動要素をグリッドベースのギャラリの一部分として提供することによって)ギャラリのコンテンツを配置してもよい。
また、一部の被パラメータ化挙動要素タイプ(例えば、レイアウトの被パラメータ化挙動要素など)は、スタンドアロンのコンポーネントとして、即ち、別のコンポーネントに適用されることなく、機能し得ることも理解されるであろう。従って、グリッドレイアウトの被パラメータ化挙動要素は、単純なグリッドコンポーネントとして(単独で)機能してもよい。
また、コンポーネントは、コンポーネント定義と共に完全なコンポーネントを形成する複数の被パラメータ化挙動要素を含むことをサポートしてもよい。例えば、ボタンのコンポーネントは、背景の被パラメータ化挙動要素とレイアウトの被パラメータ化挙動要素とを含むことをサポートしてもよい。ボタンのコンポーネントは、単独でボタンについての基本的なフレームワークを提供してもよい(例えば、「押された」及び「押されていない」の構成とそれらに関連する「私は押された(I was pressed)」のイベントトリガとを有する被表示オブジェクトを提供してもよい)。これらの2つの含まれた被パラメータ化挙動要素は、ボタンについての背景と、ボタン上に記述される要素についての表示レイアウトと、を提供してもよい。
これらの2つの被パラメータ化挙動要素は、例えば、ビデオ背景被パラメータ化挙動要素(これはボタンについてのビデオ背景を表示する)と、Hbox(水平ボックス)タイプのレイアウト被パラメータ化挙動要素(これは例えばラベルと小さなアイコンとのようなボタン表面要素を水平方向に並べて表示する)と、であってもよい。
(上述の例について)被パラメータ化挙動要素はボタンのコンポーネントに固有ではないことが理解されるであろう。同じビデオ背景被パラメータ化挙動要素とHboxタイプのレイアウト被パラメータ化挙動要素とを、他のコンポーネントタイプ(例えばフォーム又はコンテナなど)について、別々に又は一緒に使用してもよい。更に、被パラメータ化挙動要素の呼び出しは、コンポーネントインスタンスの一部分であってもよく(その定義ではない)、その結果、あるボタンが(例えば)ビデオ背景の被パラメータ化挙動要素を使用してもよく、別のボタンがイメージ背景の被パラメータ化挙動要素を使用してもよい。
コンポーネント内で使用される被パラメータ化挙動要素は、コンポーネント自体のプロパティとパラメータとを使用してもよく、また、被パラメータ化挙動要素の特定の呼び出しについて、ホスト又は親コンポーネントのインスタンス定義の一部分として、提供される特定のプロパティとパラメータとを使用してもよいことも理解されるであろう。コンポーネントは、そのコンポーネントの相異なる部分について同じタイプの複数の被パラメータ化挙動要素を使用してもよい。例えば、2列コンポーネントは、第1の列について1つのレイアウト被パラメータ化挙動要素(例えばVboxなど)を使用して、第2の列について別のレイアウト被パラメータ化挙動要素(例えばHboxなど)を使用してもよい。
子コンポーネントインスタンスを含む親コンポーネントインスタンスは、本明細書で以下により詳細に説明するように被パラメータ化挙動要素の適用を通じて子コンポーネントインスタンスを修正してもよい(及び、その逆も同様である)ことが理解されるであろう。単一のコンポーネントが、コンポーネントの表示及び機能の様々な要素に影響を与える複数の被パラメータ化挙動要素タイプによって、修正されてもよい。そのような被パラメータ化挙動要素タイプは、コンポーネントのSBLサブエンティティ、即ち、そのスタイル、ボディ及びロジックのいずれにも影響を与えてもよい。相異なる被パラメータ化挙動要素は、通常(常にではないが)、コンポーネントの相異なる様相(aspect)に影響を与え、従って、複数の被パラメータ化挙動要素がコンポーネントに「適用」される順序は、状況に応じて関係ある場合と関係ない場合とがある。単一の被パラメータ化挙動要素が、コンポーネントの複数のSBLサブエンティティ、例えば、コンポーネントのスタイルとボディの両方に影響を与えてもよい。実際の被パラメータ化挙動要素の適用は、レンダリングプロセス中に実施してもよい。被パラメータ化挙動要素を実施するシステムは、(フォローアップ処理を節約するために)コンポーネント又はページ公開を呼び出している間に前処理を行ってもよい。
本明細書において上述した如く、被パラメータ化挙動要素タイプの1つのタイプはレイアウトであり、これは、例えば、内部要素を水平線に沿って表示する上述のHbox(水平ボックス)レイアウト被パラメータ化挙動要素のようなコンポーネントのサブ要素について使用されるレイアウト(位置及び場合によりサイズ)を制御する。
別の一例は、マトリックスギャラリレイアウトの被パラメータ化挙動要素を汎用ギャラリコンポーネントに適用することである。作成済みマトリックスギャラリコンポーネントは、その内部要素を行と列とのマトリックスで表示し、場合によっては、スクロールによって、基本的なマトリックスサイズで許容されるよりも多くの要素を示すこともある。
更に別の一例はユーザ移動可能レイアウトの被パラメータ化挙動要素であり、これは、内部要素を所定の初期位置の順序に配置しているが、アプリケーションのエンドユーザが(コンテナランタイム挙動ドライバ15Bによって規定される)ランタイム中にコンテナ内でこれらの要素を移動することを可能にする。
本明細書において上述した如く、被パラメータ化挙動要素タイプの別のタイプはスタイルであり、これは、コンポーネントのビジュアル(視覚的)表現の要素(例えば、コンポーネントの色、余白など)を制御する。
スタイルの被パラメータ化挙動要素タイプは、例えば、背景の置換用に使用されてもよい。高度なビデオプレーヤコンポーネントには、カスタマイズ可能な複数のボタンと制御領域とが含まれていてもよい。スタイルの被パラメータ化挙動要素タイプは、ビデオプレーヤコンポーネントの個性化バージョンを作成するために、ボタンと制御領域の背景の色及びパターンを置き換えるのに使用されてもよい。
また、スタイルの被パラメータ化挙動要素タイプは、被収容コンポーネントの他の(非レイアウトの)パラメータにも影響を与えてもよい。これは、(コンポーネントに収容されているコンポーネントではなく)そのコンポーネント自体の表現に影響を与える被パラメータ化挙動要素とは異なる場合がある。
本明細書において上述した如く、コンポーネント定義は、(スタイル、ボディ及びロジックと追加の要素とを表す)複数のサブ要素で構成されていてもよい。アプリケーション内のコンポーネントインスタンス定義の一部分として、これらの要素の幾つかのものは、(適切なルールネゴシエーションに従う)被パラメータ化挙動要素によって、オーバーライドされてもよい。これらの置換の被パラメータ化挙動要素は、それら自体、自己の挙動又は機能を規定するパラメータを有していてもよい。そのようなパラメータが必要である(即ち、これらが提供されなければ、被パラメータ化挙動要素が機能しない)場合がある、あるいは、その代わりに、被パラメータ化挙動要素がそれらの値についてのデフォルトを提供してもよい。
例えば、ボタンコンポーネントは、ボタンの形状を制御するスタイルの被パラメータ化挙動要素の規定を可能にしてもよい。特定のスタイルの被パラメータ化挙動要素は、楕円のような形状を提供してもよく、その楕円の垂直方向及び水平方向の直径を規定するパラメータを受け入れてもよい。ボタンインスタンスは、この楕円の被パラメータ化挙動要素を呼び出してもよく、そして、特定のパラメータ値(例えば、垂直方向の直径について100ピクセル、水平方向の直径について200ピクセルなど)を提供してもよい。
次に、図4を参照すると、これにはアプリケーション内の2つのコンポーネント相互間の関係が例示されている。見て分かるように、アプリケーション内のCOMP2のインスタンスには、そのコンポーネント定義用に、他のコンポーネント(このシナリオではCOMP1)から得られる被パラメータ化挙動要素(Parameterized-Behavior Elements)と、これらの被パラメータ化挙動要素についての特定のパラメータと、が必要である。そして次に、これらの被パラメータ化挙動要素とパラメータは、コンポーネントのスタイル、ボディ、ロジック及びその他の要素に影響を与え得る。
図4に例示されているように、単一のコンポーネントが、他のコンポーネントから複数のパラメータ化挙動要素を受け入れてもよい。これは、(本明細書において以下により詳細に説明するように)ネゴシエーション要素を介してもよい。このような複数の被パラメータ化挙動要素は、相異なる又は累積的な効果を有していてもよい。例えば、ギャラリコンポーネントは、2つのスタイル被パラメータ化挙動要素、即ち、ギャラリフレームの背景領域に影響を与えるものと、ギャラリが管理するサブコンポーネントに影響を与えるものと、の使用を可能にしてもよい。
コンポーネントは、別のコンポーネントから、その他の(非被パラメータ化挙動要素の)複合の又は混成のパラメータ、例えば、アグレゲート(aggregate)タイプ(例えば、リスト、構造及びユニオン(union)など)に基づくパラメータも受け入れてもよいことが理解されるであろう。
また、ウェブライク(web-like)言語(即ち、E-HTML/CSS/JS)を使用してページ又はコンポーネントを定義する実施形態において、被パラメータ化挙動要素も、コンポーネントについて(本明細書において以下により詳細に説明する)呼び出しパラメータ/属性を使用して、あるいは、特定の被パラメータ化挙動要素タイプについての追加ルールを有するスタイルシート、例えば、
を通じて、規定されてもよいことも理解されるであろう。
被パラメータ化挙動要素タイプ(例えば、レイアウトの被パラメータ化挙動要素など)は、一般的に、限られた/特定の機能を有していることが理解されるであろう。これは、ギャラリ内における被収容コンポーネントの物理的なレイアウトのみを処理するだけ(例えば、マトリックス/スライダカルーセル配置を提供するなど)の場合があり、従って、通常、完全なSBL仕様を含んでいない。しかしながら、被パラメータ化挙動要素には特定の追加の属性が含まれている場合がある。例えば、特定のマトリックスレイアウトの被パラメータ化挙動要素タイプは、一部の視覚的属性も含んでいてもよく(例えば、ホストコンポーネントの一部のサブコンポーネントに黄色の背景を適用する)。しかしながら、レイアウトの被パラメータ化挙動要素タイプの通常の定義は、サブコンポーネントの配置に焦点を当てており、通常、追加の属性及びプロパティを含んでいない。
また、被パラメータ化挙動要素は、通常、ウェブサイト構築システムの(本明細書において以下により詳細に説明する)コンポーネント編集機能を通じて、あるいは、場合によっては、専用の被パラメータ化挙動要素固有のエディタによって、作成されることも理解されるであろう。
従って、拡張コンポーネントは、その標準のスタイル、ボディ及びロジックに加えて、コンポーネントのレイアウトと、構成と、エディタ駆動と、レンダリングプロセスと、ランタイム挙動とに関する情報を含む被パラメータ化挙動要素を備えていてもよい。拡張コンポーネントは、他の関連コンポーネントから(被パラメータ化挙動要素を介して)、SBL要素又はそれらの一部分のいずれかを規定する、追加する、あるいは、修正することが可能なパラメータを受け入れてもよい。
次に、図5を参照すると、これには、本発明の一実施形態に従う、ウェブサイトコンポーネントとコンテナとの間のスマートインタラクションのためのシステム200が例示されている。
システム200には、ウェブサイト構築システム、被拡張要素ハンドラ210、WBS(website building system:ウェブサイト構築システム)ランタイムサーバ220、WBS(ウェブサイト構築システム)エディタ230、サイト生成システム240、コンテンツ管理システム250及びページアナライザ260が含まれていてもよい。ウェブサイト構築システム205は、ウェブサイト構築システムのベンダスタッフ261によって操作されるクライアントシステムと、サイトデザイナ262と、サイトビューア263と、及び、外部システム270と通信してもよい。
システム200とその要素の機能とは、特許文献2に記載されたシステム100のものと同様であってもよいことが理解されるであろう。
システム200のワークフローは、3つのステージを有していてもよいことが更に理解されるであろう。第1ステージはコンポーネント定義であってもよく、第2ステージはページ定義であってもよく、第3ステージは、WBSエディタ230を使用したプレビュープロセスを介する、特許文献2に記載されたようにWBSランタイムサーバ220によって実施されるランタイムプロセスの一部分としての、ページレゾリューションであってもよい。
被拡張要素ハンドラ210は、被パラメータ化挙動要素に関する関連ウェブサイトコンポーネント相互間の通信を処理してもよい。次に、図6を参照すると、これには被拡張要素ハンドラ210の要素が例示されている。被拡張要素ハンドラ210には、リクエストレシーバ211と、リゾルバ212と、ネゴシエータ213と、本明細書において以下により詳細に説明するAI及び機械学習原理を組み込んでいてもよいAI/機械学習器214と、が含まれていてもよい。
次に、図7を参照すると、これに例示されている如く、CMS(content management system:コンテンツ管理システム)250は、ウェブサイト構築システム205に関係する全ての形態のコンテンツ及びレイアウトを保持していてもよい。コンテンツ管理システム250には、ウェブサイトコンポーネントタイプリポジトリ2501、ウェブサイト被パラメータ化挙動要素リポジトリ(website Parameterized-Behavior Elements repository)2502、WBS(ウェブサイト構築システム)コンポーネントリポジトリ2503、WBSサイトリポジトリ2505、ビジネスインテリジェンスリポジトリ2506、編集履歴リポジトリ(Editing History repository)2507、ユーザ情報リポジトリ2508、ルールリポジトリ2509、ML/AI(機械学習/人工知能)リポジトリ2510、レイアウトリポジトリ2511、及び、コンテンツ管理システム250とシステム200との間でデータを調整するコンテンツ管理システムコーディネータ(Content Management System COORDinator)2512が含まれていてもよい。CMS250のセットアップ及び機能は特許文献2におけるCMS50のものと同様であってもよいことが理解されるであろう。
ページアナライザ260は、2017年8月29日に発行されており、本発明の共通譲受人に譲渡されている「SYSTEM AND METHOD FOR THE CREATION AND USE OF VISUALLY-DIVERSE HIGH-QUALITY DYNAMIC LAYOUTS」という名称の米国特許の明細書である特許文献4においてページアナライザ44に関して記載されている如く、入来ウェブページを前処理及び分析して、データ構造とそれらの相互間の関係とを特定してもよい。このようにして、ページアナライザ260は、セマンティックコンポジット、リピータコンポーネント、及び、一般的なコンポーネント階層を識別してもよいことが理解されるであろう。
WBSエディタ230は、被パラメータ化挙動要素の処理の仕方と、特殊な編集挙動を提供する拡張コンポーネントについての能力と、を認識している通常のウェブサイト構築システムのビジュアルエディタであってもよい。WBSエディタ230は、編集中のページのデータ構造についても十分に認識していてもよい。WBSエディタ230は、ベンダスタッフ261及び/又はデザイナ262が、本明細書において以下により詳細に説明する如く、ウェブサイトページをインタラクティブに編集/作成できるようにしてもよい。次に、図8を参照すると、これにはWBSエディタ230の要素が例示されている。WBSエディタ230は、コンポーネントセレクタ231、編集挙動アプライヤ232、及び、コンポーネント/コンテナエディタ233を備えていてもよい。
WBSエディタ230には、ビジュアル(視覚的)編集ステージと、1組のコンポーネント選択パネルと、各々のコンポーネント又はコンテナについて複数の(レイアウト関連又は非レイアウト関連の)プロパティを含むビジュアルプロパティエディタと、が含まれていてもよい。これらのビジュアルプロパティエディタは、プロパティシートプレゼンタを通じて表示されてもよい。WBSエディタ230は、((CMS250から)ウェブサイト構築システムのベンダによって、及び、サードパーティのコンポーネントプロバイダによって提供される)1組の利用可能なコンポーネントにアクセスして、ページ編集環境において、これらのコンポーネントから得られる情報を使用してもよい。
そのような使用の1つは、コンポーネントのメタデータ17(例えば、コンポーネントの名称、記述、タイプ及びオリジン(origin)など)と、SBL情報と、ページに含めるコンポーネントの選択を可能にするインタフェースを作成するSBLインタフェース定義との使用である。コンポーネントセレクタ231は、更に、選択されたコンポーネントのSBL要素の各々についてインタフェースを構築してもよく、例えば、ページの1組のコンポーネント又はそれの選択済みサブセットに関係するスタイルを表示するスタイル選択UIを提供してもよいことが理解されるであろう。
そのような使用の別の1つは、コンポーネントが、それらの対応するカスタマイズ/構成/プロパティ編集UIを提供することであり、これは、WBSエディタ230に含まれており、ウェブサイトデザイナ262が特定のコンポーネントインスタンスをカスタマイズできるようにしてもよい。これは、幾つかの態様で実施できる。
コンポーネントは、完全な構成UI(ユーザインタフェース)を提供してもよく、即ち、コンポーネント定義は、コンポーネントを構成するためにWBSエディタ230において使用される構成UIを含んでいてもよい。これは、完全なUIコード(例えば、個別のiFrameを使用して表示可能なUI)であってもよく、あるいは、実際の構成UIを生成して呈示するWBSエディタ230に提供される1組のパラメータであってもよい。
そのような構成UIは、コンポーネントのアスペクト及び属性をインプレース(in-place)で編集するために使用される代替コンポーネントバージョンの形態を取り、コンポーネントによって占められる同じ場所において編集機能及びUIを提供してもよい。また、コンポーネントは、コンポーネントの相異なるアスペクト又は属性を編集するために使用される複数のそのようなバージョンを提供してもよい。
コンポーネントは、1組のカスタマイズプロパティと(カスタマイズレコードとして知られている)関連情報とを提供してもよいことが理解されるであろう。次に、WBSエディタ230は、これらのカスタマイズレコードを収集し、必要に応じて複数のコンポーネントから得られるレコードを統合し、カスタマイズUIを生成することによって、カスタマイズダイアログを作成してもよい。このような機能は、参照により本明細書に組み込まれており、本発明の共通譲受人に譲渡されている2017年9月5日に発行された「SYSTEM AND METHOD FOR DIALOG CUSTOMIZATION」という名称の米国特許の明細書である特許文献5に更に詳しく説明されている。オーバーライドの被パラメータ化挙動要素が、これらのカスタマイズレコードをオーバーライドして、代替カスタマイズインタフェースを提供してもよいことが理解されるであろう。
コンポーネントには、WBSエディタ230にとって有用であり得る追加の非構成情報が含まれていてもよいことも理解されるであろう。そのような情報は、コンポーネントの内部に在ってもよく、コンポーネントのコンテンツに影響を与え得る、あるいは、(例えば、本明細書においてスマートコンテナに関連して以下により詳細に説明する)コンポーネント内に配置された影響を受けるコンポーネントに影響を与え得る。また、この情報は、コンポーネントの外部に在ってもよく、WBSエディタ230と収容しているコンポーネントとが所定のコンポーネントとインタラクトする態様(例えば、如何にしてコンポーネントをドラッグ又はサイズ変更し得るかについての特定のガイドライン)に影響を与え得る。
別の一例として、コンポーネントは、代替のコンポーネントバージョン又は構成を提供してもよい。一例は、コンポーネントの単純化された又は重みの軽いバージョンを提供することであり、このシナリオにおいては、システム200は、(コンポーネントが静的な場合のコンポーネント表示とは対照的に)コンポーネントをドラッグ又はズームしながら(部分的に)「ライブ」のコンポーネントを表示してもよい。例えば、ビデオプレーヤコンポーネントは、コンポーネントをドラッグしながら及びサイズ変更しながら、使用すべき代替の重みの軽いバージョンを提供してもよい。そのようなバージョンでは、ドラッグ及びサイズ変更中の表示をより簡単にするために、(例えば)より低いレゾリューション、より低いフレームレート、あるいは、小さなビデオセクションの繰り返し表示を使用してもよい。
コンポーネントは、また、コンポーネントのレイアウトと編成とに関連する情報も提供してもよい。そのような情報には、(例えば)最小又は最大コンポーネントサイズ、許容レイアウト被パラメータ化挙動要素のホワイトリストなどが含まれていてもよい。
コンポーネント定義には、(参照により本明細書に組み込まれており、本発明の共通譲受人に譲渡され、2013年8月22日に公開された「WEB SITE DESIGN SYSTEM INTEGRATING DYNAMIC LAYOUT AND DYNAMIC CONTENT」という名称の特許文献6に記載されているように)このコンポーネントが関与する動的レイアウトプロセスを指揮する特定のヒントも含まれていてもよく、あるいは、(参照により本明細書に組み込まれており、本発明の共通譲受人に譲渡され、2013年9月5日に公開された「METHOD AND SYSTEM FOR THE USE OF ADJUSTMENT HANDLES TO FACILITATE DYNAMIC LAYOUT EDITING」という名称の特許文献7に記載されているように)コンポーネントが編集される際に任意の動的レイアウト挙動と動的レイアウトルールの動作とに影響を与える所定のコンポーネントについての特別な編集ハンドルを作成するために使用される特定のガイドラインも含まれていてもよい。
本明細書において上述した如く、システム200のプロセスには相異なる段階がある。コンポーネント定義ステージにおいて、WBSベンダスタッフ261(及び、多くの場合、デザイナ262)は、コンポーネント/コンテナエディタ233を使用して、どの被パラメータ化挙動要素タイプをオーバーライドしてもよいかと、どの条件下かと、を規定することを含めて、一部の標準的な被パラメータ化挙動要素を定義及び作成してもよい。コンポーネントを定義する人(ベンダ261/デザイナ262)は、関連する条件下で、(収容されているコンポーネント内でオーバーライドしたい被パラメータ化挙動要素を含む)コンテナコンポーネントと、場合によっては、特定のパラメータ値と、を定義してもよいことが理解されるであろう。
サイトデザイナ262は、これらのコンポーネント及びコンテナを使用して、ページ定義段階において自分のウェブサイトを設計してもよい。サイトデザイナは、また、任意の事前規定済みオーバーライドを修正してもよく、あるいは、場合によっては、編集挙動アプライヤ232を使用して自分自身のパラメータを規定してもよい。システム200は、サイトデザイナが、コンテナ内のコンポーネントについて自分自身のオーバーライド要求を規定することなどを追加的にできるようにしてもよく、あるいは、コンポーネントとコンテナとの全ての部分を完全に編集できるようにしてもよいことが理解されるであろう。
編集挙動アプライヤ232は、マウス、キーボード又はその両方(及びその他の任意のユーザインタフェース入力手段)を使用して、通常、影響を受ける種々のオブジェクト編集操作を適用してもよいことが理解されるであろう。これらには、特許文献2に記載されている如く、選択、ドラッグ、ドロップ、サイズ変更、コピー、貼り付けなどが含まれていてもよい。
サイトデザイナ262は、WYSIWYG(what you see is what you get:「あなたが見るものは、あなたが得るものである」)を使用して、作業してもよいことが理解されるであろう。従って、編集中にページをインタラクティブに解決して表示してもよい。しかしながら、関連するウェブサイトページも、ランタイムにおいて、CMS250内のデータベース(基礎となるデータベース)への変更によって、あるいは、(これらのデータベースの変更を反映する、例えば、追加又は削除されたレコードを示す)リピータコンテナを介して表示される外部ソース内のデータベースへの変更によって、修正されてもよい。
本明細書において上述した如く、コンポーネントは、SBL要素の任意のもの、例えば上述の被パラメータ化挙動要素などの任意のもの、を規定、追加又は修正できるパラメータを受け入れてもよい。更に、被パラメータ化挙動要素は、例えば「全ての収容されているコンポーネントを、X%だけ色を弱めるカラーモディファイヤ(color modifier)で、修正する」などの自己自身のパラメータを受け入れてもよい。
被拡張要素ハンドラ210は、被パラメータ化挙動要素に関する全ての機能を処理してもよい。例えば、サイトデザイナ262は、(ランタイムにおいて)コンポーネントセレクタ231を使用して(ユーザ選択コンポーネントとしても知られる)コンポーネントを選択して、編集挙動アプライヤ232を使用して必要な挙動を適用してもよい。この編集挙動アプライヤ232による適用は、選択されたコンポーネントの被パラメータ化挙動要素の1つ又は多数のパラメータを変更し得ることが理解されるであろう。
要素ハンドラ210は、(ページがロード又はリフレッシュされ得る前に)WBSランタイムサーバ220によって、あるいは、編集セッション中に現在のコンポーネントに編集変更が行われる際にWBSエディタ230によって、トリガされ得る(それによって、完全な又は部分的なリフレッシュを生じさせる、あるいは、オーバーライド要求を直接生じさせる)ことが理解されるであろう。
リクエストレシーバ211は、(ページのロード/リフレッシュ/レンダリング中に、外部ソース270/CMS250からの変更の結果として、ユーザ編集要求から又は自動システム要求から)オーバーライド要求を受信してもよい。リゾルバ212は、(要求コンポーネントによって規定された条件と選択ルールとに基づいて)関連収容レベル内でどのコンポーネントが影響を受けるかと、ページアナライザ260の結果と、を識別してもよく、データハンドラ16から(各々のコンポーネントから)どの被パラメータ化挙動要素がオーバーライド可能であるかを受信してもよい。本明細書において上述した如く、ページアナライザ260は、完全なコンポーネント階層を特定してもよい。これには、オーバーライドの対象となる要素を有しており、且つ、階層の一部分であり得る(本明細書において上述した)セマンティックコンポジットの検出が含まれ得る。従って、完全な階層は、事前定義されたコンテナと、(データソースに基づいて定義された)リピータコンテナと、(ページ分析に基づいて定義された)セマンティックコンポジットと、に基づいていてもよい。
ネゴシエータ213は、リゾルバ212の出力に基づいて識別されたコンポーネントの各々について、ネゴシエーションプロトコルに基づいて、通信要求を満たし(変数及び決定ロジックを使用するなどの手続き型ネゴシエーションを含む)、選択されたコンポーネントの関係する被パラメータ化挙動要素と通信して、収容されているコンポーネントのオーバーライドを特定してもよい。このプロトコルは、(例えば)コンポーネントAから得られるパラメータXをコンポーネントB1に適用できるか否かを判定するために、2つのコンポーネントAとB1との間の一通信形態と見なしてもよい。
レゾルバ212は、また、競合レゾリューション(conflict resolution)も処理してもよい。例えば、フォーマットを処理する被収容コンポーネントは、自己に提示されたデータに基づいて、自己のコンテナの要素をオーバーライドしてもよい。一方、そのコンテナは、その被収容コンポーネントの要素をオーバーライドしようとしている場合がある。従って、ループ又は競合が生じることがあり、これは、リゾルバ212によって(どのオーバーライド要求を無視するかを決定して、それによって、ループをブレークすることを通じて)解決され得る。
本明細書において上述した如く、被パラメータ化挙動要素は、オーバーライド可能として事前定義されているものもあれば、そのように事前定義されていないものもあり得る。プロトコルに従ってオーバーライドが許可され得る場合には、リゾルバ212は、そのオーバーライドを実施してもよい。
従って、コンポーネントの変更が結果的に階層の境界を越えるかもしれないが、レゾルバ212は、おおむねコンテナの階層に沿って流れるルールに基づいて、コンポーネントの変更を適用してもよい。リゾルバ212は、通常、ウェブサイト構築システムのデータベース構造をHTMLに変換している間に(そうでなければ、それを表示用に準備している間に)実施される完全なラン(run)の一部分であるが、トリガによって再ラン(re-run)してもよいことが理解されるであろう。これは、スタンドアロン段階であってもよいし、あるいは、完全な変換段階に統合されていてもよい。
この分析及び特定されたコンポーネント階層に基づいて、リゾルバ212は、ページ階層を横断して、様々なオーバーライドコンポーネントによって為された全てのオーバーライド要求を特定してもよい。オーバーライド要求には、被パラメータ化挙動要素の適用が含まれていてもよいが、被パラメータ化挙動要素を含まない単純な属性オーバーライド(「色を緑に設定する」)であってもよい。
リゾルバ212は、全てのオーバーライド要求と、あらゆる対応コンポーネント、即ち、それらのオーバーライド要求が適用されるべきコンポーネントと、のリストを特定してもよいことが理解されるであろう。また、リゾルバ212は、対応コンポーネント自身のホワイトリスト/ブラックリストによって、あるいは、オーバーライド要求を規定するその他の対応コンポーネント固有ルールによって、特定される、各対応コンポーネントに適用可能なそれぞれのオーバーライド要求に対する各対応コンポーネントの応答を受信してもよい。次に、図9を参照すると、これには、コンポーネントの階層内で生じ得るオーバーライドのフロー例が例示されている。例えば、コンポーネント(comp1)は、comp1と同じコンテナ内の、あるいは、その中に収容されている一連のコンポーネントの関連する被パラメータ化挙動要素(例えば、リピータ1を除く、コンポーネント2と3及びセマンティックコンポジット1など)をオーバーライドしてもよい。また、コンポーネント(comp1)は、comp4を、これは異なる収容レベル(即ち、comp3内に)在るが、オーバーライドしてもよい。
また、リゾルバ212は、オーバーライド要求が適用されるべき順序を決定してもよい。これは、ユーザ規定の順序(例えば、複数のオーバーライド要求を提供し、それらの順序又は優先度を規定するオーバーライドコンポーネント)に基づく、あるいは、(CSSルールが適用される順序を規定する特定性ルールに類似する)システムルールに基づくことができる。
次に、リゾルバ212は、決定された順序に従って、オーバーライド要求を、全ての対応コンポーネントに適用してもよい。オーバーライド要求を特定の対応コンポーネントに適用することは、(条件評価が相異なる結果を生じさせるので)影響を受けるコンポーネントが他のコンポーネントとインタラクトする態様に影響を与える場合があることが理解されるであろう。例えば、コンポーネントAがコンポーネントBに影響を与える場合、このコンポーネントBに対する変更に起因して、コンポーネントBがコンポーネントCに影響を与える状況、あるいは、コンポーネントDから影響を受ける状況が相異なる態様で解決されることになり得る。これは、例えば、コンポーネントBに対する一部の又は全ての変更によって、コンポーネントBによる他のコンポーネントのオーバーライドが更に開始されることになり得る、コンポーネントBについての(オーバーライドデータハンドラ16の一部分としての)、特別なルールのためであり得る。このようなオーバーライドのルールは、コンポーネント間で「連鎖反応」の現象を引き起こすことがあり、また、「オーバーライドサークル(overriding circle)」も引き起こすことがあり、これは、リゾルバ212によって検出されて解決され得ることが理解されるであろう。
一拡張実施形態において、オーバーライドコンポーネントと対応コンポーネントの両方が、互いに、インタラクトし、ネゴシエートして、オーバーライドが生じるべきか否かを判定できるコードスニペットを提供してもよい。これらのスニペットは、通常のプログラミング言語(例えば、JavaScriptなど)又はそのようなネゴシエーションに適合した制限されたスクリプト言語を使用して作成できる。どちらにしても、ネゴシエータ213は、サンドボックス又は他の閉鎖実行環境において、そのようなコードスニペットを実行してもよい。
一般的に、(解決及びネゴシエーションを含む)被パラメータ化挙動要素のオーバーライドは、通常、ページのレンダリングステージ中に、即ち、ページが編集又はリフレッシュされる時に(編集時に及びランタイムにおいて)生じることが理解されるであろう。
被拡張要素ハンドラ210は、ウェブサイト構築システムCMS250の定義を処理してユーザへの出力を生成するシステム200の一部分と統合されてもよいことが理解されるであろう。これは、(例えば、専用のクライアントアプリケーションを使用する)画面への物理的なレンダリングであってもよく、あるいは、サイトのHTMLバージョンの作成であってもよい。最終的なレゾリューションとレンダリングは、(編集目的用)WBSエディタ230とランタイムサーバ220とによって、あるいは、ユーザのブラウザによって、あるいは、それらの組み合わせによって、実施されてもよいことが理解されるであろう。
別の一実施形態において、ブラウザは、(場合によっては、ユーザインタラクションを含む)トリガの発生によって、ウェブサイト構築システムからHTMLへのプロセスを再アクティブ化して、レンダリングされるページの一部又は全体を再作成してもよい。これは、また、様々なトリガに基づいて動作するページ内の操作コード(JS)に基づいて実施されてもよい。
トリガには、動的レイアウトトリガ(データ変更、別のユーザからのサイト編集、サーバ通知)及びページ自体の操作トリガ(ユーザインタラクション、JS操作)として説明されるような様々なイベントが含まれ得る。
ネゴシエータ213を介するネゴシエーションプロトコルは、(例えば、相異なるiFrame、相異なるブラウザウィンドウ、サーバレンダリングされるサードパーティアプリケーション用の相異なるマシンのように)レンダリング境界を越えて実施されてもよいことが理解されるであろう。
また、コンポーネントに対する更新は、動的ページレゾリューションの一部分であるので、即ち、プレビューステージ(編集中)又はランタイムにおいて実施されるので、CMS250内に保存されないことも理解されるであろう。更に、レゾリューションは、ランタイムにおいて/プレビュー時に実施される必要があり、その理由は、コンポーネント自体が(例えば)動的レイアウトトリガ及びコンポーネントロジックによりランタイム中に更に変化し得るためであることも理解されるであろう。更に、このような変化は、ジオメトリ/コンテンツ分析の結果を変えるなど、オーバーライドプロセスに更に影響を与え得ることも理解されるであろう。例えば、コンポーネントAが(被パラメータ化挙動要素を介して)コンポーネントBの属性Xを変更する(これによって、属性Xの値が更新されて、コンポーネントBのバージョン2が作成される)場合、コンポーネントBは、属性Xの新しい値ではCMS250に保存されず、その理由は、この変更が、次の使用時のコンポーネントBに影響を与え得るからである。(例えば)次回コンポーネントBが使用される場合、コンポーネントAはコンポーネントBをオーバーライドしない可能性があり、属性Xの元の値は失われる。1つの例外は、迅速なレンダリングのための、属性Xの新しい値を有するコンポーネントBを備えたページのキャッシュバージョンの保存であってもよい。
本明細書において上述した如く、親コンポーネント又はページは、呼び出しラインパラメータによって、あるいは、特定のプロパティを設定するルールを含む関連スタイルシートによって、親コンポーネント内に収容されている事前定義済みコンポーネントのプロパティを設定(又は規定)してもよい。そのような規定には、一部のオーバーライドも含まれていてもよい。例えば、コンポーネントは事前定義済みデフォルト色を有していることがあり、この規定は、デフォルト色をオーバーライドしてもよい。これは、システム固有の属性にも適用されてもよい。例えば、コンポーネントはデフォルト又は組み込みのレイアウトの被パラメータ化挙動要素を備えていてもよく、呼び出しコンポーネントが代替レイアウトの被パラメータ化挙動要素を規定してもよい。
また、コンポーネントは、例えば、下記の如く、自己の親によって自己に提供される被管理コンポーネントの属性を明示的にオーバーライドしてもよい。
上記の例において、ギャラリコンポーネント(gallery1)は、コンテナコンポーネントであり、3つの子(grid1、image1、image2)を被管理コンポーネントとして受信する。div2内では、ギャラリコンポーネントは、受信子コンポーネントについてCSS‘color’ 属性をオーバーライドして、それを緑(green)に設定する。これは、grid1の子(これは、多分、背景色を有している)に関係するであろうが、imageの子(即ち、image1、image2、これらは背景色の定義を全く有していないであろう)には関係ないであろう。このようなオーバーライドは、事前定義済みボタンコンポーネントnav1及びnav2には適用されないことが理解されるであろう。
本明細書において上述した如く、要素ハンドラ210は、被パラメータ化挙動要素タイプ(例えば、レイアウトなど)を被管理要素(被収容コンポーネント)に適用してもよい。これは、例えば、コンポーネントの定義時に「child.toVdom({--display: Carousel})」のような呼び出し(call)を行うことによって実施されてもよい。上記の例において、このようなオーバーライドは、グリッドコンポーネント被管理要素(grid1)に関係するであろうが、イメージコンポーネント被管理要素には関係しないであろうことが理解されるであろう。
別の一例では、「child.toVdom({display: ‘block’})」のようなフォーマットを使用して、特定のレイアウトの被パラメータ化挙動要素パラメータ(即ち、イメージ表示方法)を、これが関係する場合、オーバーライドしてもよい。
E-HTML/CSSページ仕様に基づくシステムにおいて、このようなオーバーライドは、また、例えば下記の如く、インラインクラスリファレンス又はクラス追加機能を通じて参照できる特定のスタイルを通じて、実現してもよい。
本明細書において上述した如く、WBSベンダ261/ウェブサイトデザイナ262は、WBSエディタ230を使用して、自己が事前定義した要素(即ち、サブコンポーネント)、自己が管理する要素(即ち、被収容子)、あるいは、それらの両方、の特定の属性を設定又はオーバーライドするコンポーネントの機能に制限を設定してもよい。その代表的な実施形態は、プロパティの設定又はオーバーライドを外側のレイアウト及びスタイルのプロパティに限定してもよく、(特に要素のコンテンツを含む)他の要素のプロパティの設定、オーバーライド又は修正を不許可にしてもよい。
本明細書において上述した如く、システム200の機能には、被管理要素(即ち、コンテナ内のコンポーネント)の特別な処理が含まれていてもよい。
例えば、コンテナコンポーネントXに包含/表示用の被管理要素のリスト(A1..An)が渡されると、コンテナコンポーネントXは、(例えば)Xのタイプ、特定のXのインスタンスのパラメータ、あるいは、それらの被管理要素のパラメータ及び属性に基づいて、それらの被管理要素を表示する前に、いくつかの態様で、それらの被管理要素を変換してもよい。そのような変換には、表示の順序の変更と、特定の場所又は位置の設定とが含まれていてもよく、例えば、要素を垂直に配置して、あらゆる奇数番目のアイテムを右に、あらゆる偶数番目のアイテムを左に位置揃えて表示してもよい(これは、ジグザグ表示としても知られている)。これは、被管理要素の属性、コンテンツ又は構造に基づいていてもよく、例えば、被管理要素を、それらの明るさが所定値よりも高いか又は低いかに基づいて、上から右側又は左側に位置揃してもよい。
その他の変換には、被管理要素の属性を変更(オーバーライド)すること、例えば、それらの色及び境界線設定などをオーバーライドすることと、要素を省略すること、例えば、提供された被管理要素のサブセットのみを表示する、あるいは、完全で遥かにより大きなリストの特定の10要素「ウィンドウ」のみを示すことと、要素を拡張すること、例えば、それら自体が特定の又は追加の被管理要素を備えたコンテナである被管理要素を提供することと、要素を複製する又は繰り返すこと、例えば、被管理要素を2回表示する、場合によっては、特定の被管理要素の相異なる複製を区別するために、それらの表示される被管理要素内の一部の属性をオーバーライドすることと、が含まれていてもよい。これは、例えば、選択用に複数のバリアントを表示するために、使用できる。
システム200のE-HTML/CSSベースの実施形態は、拡張可能スタイルシートの定義も可能にし、これによって、コンポーネントの要素をコンポーネントの外部から修正できる経路又はAPIが提供され得ることが理解されるであろう。これは、例えば、被パラメータ化挙動要素又は通常の属性のオーバーライドに使用でき、(上乗せ分の被パラメータ化挙動要素をコンポーネントに追加することによって)CSSに拡張することもできる。
代表的な定義は、(例えば、ギャラリコンポーネントの定義内で使用される)次の形態を有している。
上記のレイアウトの被パラメータ化挙動要素タイプのE-CSS定義及び使用によって、このコンポーネントのインスタンス(即ち、ギャラリ定義内のgrid1 )に適用され得る1組の拡張可能及びオーバーライド可能なレイアウトプロパティを定義し得ること、更に、これにはgrid1のガター(gutter)、列及び色のプロパティの設定が含まれていることが理解されるであろう。
また、これは、上記の「レイアウトの被パラメータ化挙動要素タイプ」を、このギャラリコンポーネントを使用する外部コンポーネントからカスタマイズ又はオーバーライドできるカスタム擬似要素と、定義してもよい。
上記の「@extend」ステートメントは、このスタイルシートが親コンポーネントによって拡張又はオーバーライドされてもよいことをシステム200に通知する。この「@extend」を収容するスタイルシート内に定義されたプロパティのリストは、オーバーライドされてもよいプロパティのホワイトリストとして機能する。更に、このスタイルシート自体は、その他のプロパティを追加することによって、拡張されてもよい。スタイルシート内において相異なる属性について規定される値(例えば、上記のgutter=3)は、親コンポーネントが特定の属性について値を規定しない場合には、デフォルト値として機能することが理解されるであろう。
一代替実施形態において、システム200は、「@extend」ディレクティブ(directive)の代わりに、他のシステム固有のCSS属性に類似したディレクティブフォーマット(例えば、「-public: true」)を使用してもよい。
このシナリオにおいて、grid1の他のプロパティ、あるいは、grid2のプロパティは、「オープン(open)」ではなく、ギャラリコンポーネントの公開インタフェースの一部分でもない。本明細書において上述した如く、@extendベースのAPIを通じたプロパティの潜在的な明示的なオーバーライドを除き、ギャラリコンポーネントの他のプロパティは、カスタムであろうと、あるいは、事前定義済みであろうと、コンポーネントの整合性を保持するために、収容するコンポーネントからは継承されない。
上記のワイルドカードプロパティ仕様の使用は、プレフィックスの「prop-gallery-*」で始まる全てのプロパティを表している。システム200は、(色関連、背景関連などのプロパティグループに従うCSSプロパティの仕様を含む)他のワイルドカード仕様もサポートしてもよい。仕様は、上記の‘color’ に対する参照の如く、通常のCSSプロパティ(非拡張プロパティ)も表してもよいことが理解されるであろう。
本明細書において上述した如く、リゾルバ212は、「何がオーバーライドされ得るか」ではなく、「誰がオーバーライドできるか」(即ち、どの「親」コンポーネントが公開プロパティをオーバーライドしてもよいか)に従って、ホワイト/ブラックリスティングを更に実施してもよい。本明細書において上述した如く、この情報は、データハンドラ16によって提供されてもよく、また、例えばコンポーネントのタイプ、名称、画面領域又は他の属性のような親コンポーネントの様々なパラメータ及びプロパティに(例えば、どのようなレイアウトの被パラメータ化挙動要素タイプを使用するかに)基づいていてもよい。このような仕様についてのシンタックス(syntax)は、例えば、次の通りであってもよい。
呼び出しに関しては、上述のギャラリコンポーネントを(オーナ(owner)として)含むコンポーネント又はページは、例えば、次の通りの公開プロパティをパラメータとして使用してもよい。
これは、上述の方法のうちの任意のものを使用して実施できる。呼び出しパラメータにおいて規定された列の数(4)は、5であるデフォルト値をオーバーライドする。このようなオーバーライド又は規定は、直接所有されるコンポーネント(例えば、上記の例におけるギャラリ)にのみ適用できる。オーバーライドは、共有ルートコンポーネントが関係する場合、間接的に所有されるコンポーネントに適用されてもよい。
本明細書において上述した如く、システム200は、スマートコンテナをサポートしてもよく、即ち、コンテナ定義には、エディタインタラクションと、特別なハンドルと、編集及びランタイム挙動とが含まれていてもよい。
また、コンポーネント/コンテナエディタ233は、スマートコンテナの作成を可能にしてもよく、更に、スマートコンテナタイプに関連付けられ得る特定の編集ドライバ15Aとインタフェースを取ってもよい。
スマートコンテナは、自己が収容するコンポーネントを管理してもよく、レゾルバ212を介してそれらとインタラクトして、通常のコンテナには見られない1組の挙動を提供してもよいことが理解されるであろう。
特に、このコンテナは、コンポーネントタイプ又は他のパラメータに関する特定の制限又はルールを定義してもよい。例えば、アルバムコンテナは、イメージのコンポーネントのみ、あるいは、イメージ及びビデオのコンポーネントのみ、あるいは、所定サイズ未満のイメージのみ、を収容してもよく、また、特殊化されたコンテナは、それに収容された多様なコンポーネントを変換してもよく、例えば、全ての被収容ギャラリをスライダータイプのギャラリに変換してもよい。
このコンテナは、自己に収容されるコンポーネントのスタイルを規定してもよい。これは、例えば、それらのコンポーネントに適用できる1組の設定及び属性を介して実施してもよい。これらには、プレゼンテーション要素(例えば、色、ベベルなど)とWBSエディタ230を作動させる機能要素(例えば、特定の操作を可能にする追加ハンドルなど)とが含まれていてもよい。
更に、このコンテナは、被収容コンポーネントタイプごとに異なる設定を定義してもよい(例えば、全ての被収容ギャラリを黄色に、全ての被収容テキストボックスを幅広に及び緑色になどしてもよい)ことが理解されるであろう。
このコンテナは、被収容コンポーネントがその中で配置される態様(例えば、ギャラリ、アコーディオン、ブックフォーマットなど)を決定してもよく、また、その中でサブコンポーネントレイアウトに特定の挙動を課してもよく、例えば、その中でドラッグとサイズ変更に影響を与えてもよい(例えば、グリッド又は特定の配置に対するスナップを要求してもよい)。このコンテナは、その中での動的レイアウトの処理も決定してもよく、これは、通常のコンテナに使用されるデフォルトの動的レイアウト処理方法とは異なっていてもよい。動的レイアウト処理は、本明細書において上述した如くの動的レイアウトのヒントに基づいていてもよいことが理解されるであろう。本明細書において上述した如くの機能は、エディタ挙動ドライバ15A及びランタイム挙動ドライバ15Bを通じて定義されてもよいことが理解されるであろう。
上述の機能は、被収容コンポーネントタイプ、コンポーネントコンテンツ、コンポーネント有効期間(component age)、コンポーネント編集履歴、コンポーネント継承履歴、コンポーネントサイズ、コンポーネント形状、コンポーネントZオーダ(component z-order)、アプリケーション内でのコンポーネント用途、コンポーネントフォーマット情報、コンポーネントのネイティブの読み取り順序、ページ相互間のコンポーネントの関連付け、ユーザ定義のヒント、及び、それらの任意の組み合わせ、に依存し得ることも理解されるであろう。これらのコンポーネント属性の一部は、参照により本明細書に組み込まれており、本発明の共通譲受人に譲渡され、2013年4月4日に公開された「Adaptive User Interface Creation in Multimedia Creative Design System」という名称の特許文献8に更に詳しく記載されている。
スマートコンテナは、また、WBSエディタ230とインタラクトして、WBSエディタ230にコンテナ固有のドライバ及びロジックを(エディタ挙動ドライバ15Aを介して)提供してもよい。そのようなドライバは、編集挙動のアスペクトを制御してもよい。そのようなアスペクトは、如何なるコンテナランタイム挙動とも別個のものであるが、最終的なコンテナ及びコンポーネントのプレゼンテーションに影響を与えてもよい。
そのようなアスペクトの1つは、編集中のエディタ内でのコンポーネントのドラッグ挙動である。実行可能な挙動にはVBox(垂直ボックス)挙動が含まれていてもよく、全てのドラッグが垂直線にスナップされる。コンポーネントは、この線上で、例えば、中央揃え又は左揃えに、自動整列されてもよい。そのようなアスペクトのもう1つは、ドラッグが、不連続になり、離散スライダ位置相互間を移動する場合のスライダ挙動であり、「見えない」位置にドラッグされたコンポーネントを適切に配置できるようにスライダがコンテンツをスライドさせる/スクロールするようにしてもよい。
そのようなアスペクトの更にもう1つは、ドラッグアンドドロップ挙動である。例えば、テキスト編集ボックスは、正確なドロップ位置を使用する代わりに、被ドロップコンポーネントが、このテキスト編集ボックス内に既にタイプされているテキストのフロー内に統合されるように、これらの被ドロップコンポーネントを適切な位置に配置するスマートコンテナとして実施されてもよい。
更に別の一例として、3Dコンテナタイプが、3D操作ハンドルと3D挙動とを被収容コンポーネントに追加してもよい。このコンテナは、関連するロジック及びUI要素をWBSエディタ230に提供して、そのような3D挙動をサポートしてもよい。WBSエディタ230は、新しいハンドルタイプと新しいハンドルとを追加し、被収容コンポーネントのサイズ変更及び移動を制御し、様々な編集アクションが実行される順序を制御してもよい。
このコンテナは、デザイナ262が、このコンテナの編集及びランタイム挙動を制御する一部のパラメータを定義できるようにしてもよく、場合によっては、一部の既存のコンポーネント属性をオーバーライドできるようにしてもよい。例えば、次に参照する図10に例示されているように、VboxコンテナAは、被収容コンポーネントC1~C4が整列する(垂直)線Lがコンテナの中心にあるデフォルトの挙動を定義していてもよい。このコンテナは、ユーザが、このパラメータをオーバーライドして、線Lについて絶対的な又はパーセントベースの(percentage-based)位置Rを規定することによって、垂直線Lについて別の位置を規定できるようにしてもよい。
上述の例とは別の一例として、ランタイム修正可能スマートコンテナが、その中に在るコンポーネントを(ランタイム挙動ドライバ15Bによって規定されるように)ランタイム中に移動又はサイズ変更できるようにしてもよい。このようなスマートコンテナのVboxバージョンは、移動された被収容コンポーネントを上述の如くコンテナ内の垂直線に整列させることを強化してもよい。
更に別の一例において、Vboxコンテナは、自己が収容するコンポーネントを垂直線に沿って配置する時に、ビジュアルエディタの「コンポーネントを適所に追加」機能を呼び出すコントロール(control)を、これらの子コンポーネント相互間に、置く。
更に別の一例において(次に、参照する図11に示されているように)、スマートコンテナコンポーネントAは、(例えば、この特別なコンテナをX×Y個の等しい矩形に分割することによって)内部レイアウトを定義する機能を備えていてもよい。この特定の例では、Aは4×5個の矩形に分割されている。
このスマートコンテナA内に配置されるコンポーネント(例えば、例示のイメージコンポーネントB)は、各縁端に在る複数のサイズ変更ハンドル、例えば上側縁端に在るハンドルc及びd(同様のハンドルペアがコンポーネントBの4つの縁端の各々に在る)を「成長」させる。
スマートコンテナAは、ハンドルcを介するサイズ変更をAの内部グリッドにスナップさせ、且つ、ハンドルdを介するサイズ変更をAの内部グリッドにはスナップしないようにさせる(ウェブサイト構築システムの視覚ステージ領域Eと共に機能する)追加コードを更に実施してもよい。このような様々な挙動とハンドルのタイプの追加例が、動的レイアウトのパラメータとルールに影響を与える挙動も含めて、特許文献7に詳しく記載されている。
WBSエディタ230は、実際のビジュアルハンドルの代わりに、「見えない(invisible)」ハンドル領域を実施してもよく、これらは、マウスがこれらとインタラクトする際に、特定の機能を提供することが理解されるであろう。WBSエディタ230は、ユーザがそのような目に見えないハンドルを使用している時を、例えばマウスポインタの形状を変更することによって、ユーザに知らせてもよい。
システム200は、事前定義された位置に基づいてではなく、要素の配置の視覚的最適化に従って(例えば、コンポーネント配置ルールを使用して)、内部に要素を配置するコンテナをサポートしてもよい。
ドラッグの実施は、(例えば)WBSエディタ230とインタフェースを取るエディタ挙動ドライバ15Aと、コンテナYによって提供されるスマートコンテナドライバと、に基づいていてもよい。例えば:
WBSエディタ230は、コンポーネントXについてのマウスの移動を取得する。
WBSエディタ230は、コンポーネントXを収容するコンテナYのエディタ挙動ドライバ15Aにイベント記述(マウスの移動)を送ってもよい。
エディタ挙動ドライバ15Aは、マウス移動情報と既存のXのレイアウト情報オブジェクトとを処理して、修正済みレイアウト情報オブジェクトを生成してもよい。
エディタ挙動ドライバ15Aは、WBSエディタ230とコンテナYとを、この新しい情報で、更新する。
従って、エディタ挙動ドライバ15Aは、WBSエディタ230内で動作して、ユーザインタラクションをプロパティの更新に変換してもよい。これらのインタラクションには、ドラッグ、クリックなどが含まれていてもよい。これらは、より高いレベルのアクション(例えば「コンポーネントのドロップ」など)又はより低いレベルのアクション(各々のマウス位置更新の追跡)であってもよい。このドライバは、モノリシックであってもよく、あるいは、コンポーネント固有ドライバが汎用部分に組み込まれた汎用ドライバで構成されていてもよい。一部の実施形態において、エディタ挙動ドライバ15AとWBSエディタ230との間のインタラクションの一部はリゾルバ212を介して実施されてもよいことが理解されるであろう。例えば、新しいコンポーネントがコンテナに追加されてもよく、その新しいコンポーネントがそれ自身の被パラメータ化挙動要素のパラメータを送ってもよい。
その他の(非コンテナの)コンポーネントもエディタ挙動ドライバ15Aを備えていてもよいことが理解されるであろう。例えば、ラベルコンポーネントが、インプレース編集(in-place editing)の特定のバリアントをサポートするエディタ挙動ドライバ15Aを備えていてもよい。
別の一例として、画像表示コンポーネントが、表示イメージの編集中に関心領域ベースの処理を提供してもよい。そのようなスキームの下で、システム200は、表示イメージ内の関心領域(例えば、イメージ内の所定のオブジェクトなど)を定義してもよい。このような定義は、ユーザ入力、他のファクタ(factor)のイメージコンテンツ分析に基づいていてもよい。関心領域が定義されると、システム200は、イメージの関心領域の可視領域に焦点を合わせるために、イメージのサイズ変更の時(編集中)にイメージのポジショニング(positioning)とクロッピング(cropping)を修正してもよい。従って、ポジティング(positing)とクロッピングとの新しい組み合わせによって、新しいズームファクタについて関心領域に最適な焦点を合わせてもよい。
システム200は、AI/機械学習器214を通じて、AI/機械学習ベースの修正を提供するコンテナに対して修正を推奨することか、あるいは、それらに収容されるコンポーネントについてのレイアウトの推奨か、を実施してもよいことも理解されるであろう。AI/機械学習器214の機能は、特許文献9に記載されているものと同様であってもよく、この特許文献9は、デザインの選択肢の推奨について記載しており、完全なレイアウトに加えてオーバーライド及びパラメータを推奨するAIベースの推奨について同じ原理を適用していることが理解されるであろう。
そのような推奨される修正には、レイアウトのみ(例えば、位置とサイズの選択など)、制限された属性セット(例えば、内部のサブコンテナに特定の背景イメージ/ビデオを提供するコンテナ、あるいは、単に色の選択などに影響を与えるコンテナなど)、挙動、あるいは、任意の特定の被収容コンポーネントのサブ要素が含まれていてもよい。
これは、(ページセクション、ページ及びページセットが「より高いコンテナレベル」である)単一のコンテナ内の被収容コンポーネントについて、あるいは、1組のコンテナ(例えば、相互間のカラーマッチングを提供するために一緒に処理される一定数の別個のページセクション)について、実施されてもよい。
本明細書において上述した如く、WBSベンダ261とデザイナ262は、コンポーネント/コンテナエディタ233を使用して、属性がどのように修正されてもよいかに関しての指示によって、コンポーネントを定義してもよい。
AI/機械学習器214は、何が良好なデザイン、カラーマッチングなどを構成するかに関して、WBSベンダ261/デザイナ262及び他のユーザについて収集されたこの情報(これには、CMS250に保存された編集履歴、BI、他のウェブサイトなどが含まれている)を使用してもよい。AI/機械学習器214は、関係のあるユーザ及びサイトを、それらの属性(ビジネスタイプ、サブタイプ、地理的な所在、ユーザ体験、使用されるシステム機能など)に従って、分類してもよい。
AI/機械学習器214は、(編集履歴から得られる)大量の編集変更と被パラメータ化挙動要素のアプリケーションとが含まれていてもよい入力資料と、分析済みのサイト、ページ及びコンポーネントの人気及びランキングに関する情報と、を分析してもよい。この入力資料は、機械学習エンジン(例えば、ニューラルネットワークベースのエンジンなど)のトレーニングに使用されてもよく、この機械学習エンジンは、次に、修正の推奨を提供してもよい。この機械学習エンジンの現在の状態は、ML/AIリポジトリ2510に保管されてもよい。
そのような推奨コンテナは、関係のあるプライバシー及び知的財産の法律(例えば、著作権法及び商標法など)、即ち、そのような情報の使用を規定し、他のユーザに属するデータのプライバシーが損なわれないことを保証する法律、の規制を受ける他の(通常の)コンテナと混在させてもよい。
特許文献2に記載されているように、ウェブサイトのコンポーネントの構造に対する変更は、検索エンジンのスパイダによるウェブサイトのインデックス付けに影響を与えることがあり、従って、検索エンジンの最適化に影響を与えることがある。システム200は、参照により本明細書に組み込まれており、本発明の共通譲受人に譲渡されている2016年9月6日に発行された「SYSTEM FOR DEEP LINKING AND SEARCH ENGINE SUPPORT FOR WEB SITES INTEGRATING THIRD PARTY APPLICATION AND COMPONENTS」という名称の米国特許の明細書である特許文献10に記載されている如く、インデックス付けされるべき更新済みコンテナ及びコンポーネントに関する情報を検索エンジンのスパイダに送信する検索エンジンにフレンドリなレンダラも備えていてもよいことが理解されるであろう。
従って、被パラメータ化挙動要素を使用して、オーバーライドプロトコルに基づいて、全ての収容レベル内のコンポーネントとコンテナとの視覚的及び動作的パラメータを自動的に変換してもよい。
特に別に明記しない限り、上述の記載から明らかなように、本明細書全体を通して、「処理」、「計算」、「算定」、「判定」などの用語を使用する記載は、例えばサーバ、クライアント、モバイルコンピューティングデバイス、スマートアプライヤンス又は同様の電子計算装置のような任意のタイプの汎用コンピュータ(即ち、コンピューティングシステムのレジスタ及び/又はメモリ内における例えば電子量のような物理量として表されるデータを操作し、及び/又は、このデータを、コンピューティングシステムのメモリ、レジスタ又は他のそのような情報記憶用、伝送用又は表示用装置内における物理量として同様に表される他のデータに、変換する汎用コンピュータ)のアクション及び/又はプロセスを意味している。
本発明の実施形態には、本明細書に記載されたオペレーションを実施する装置が含まれていてもよい。この装置は、所望の目的のために特別に構築されていてもよいし、汎用コンピュータ、あるいは、そのコンピュータに格納されたコンピュータプログラムによって選択的に起動又は再構成されるクライアント/サーバ構成を備えていてもよい。その結果として得られる装置は、ソフトウェアによって命令されると、その汎用コンピュータを本明細書に記載された発明の要素に変えてもよい。これらの命令は、必要な場合、コンピュータプラットフォームと共に動作する本発明のデバイスを規定してもよい。そのようなコンピュータプログラムは、コンピュータ可読記憶媒体、例えば、限定はしないが、光ディスクと光磁気ディスクとを含む任意のタイプのディスク、読み取り専用メモリ(ROM)、揮発性及び不揮発性メモリ、ランダムアクセスメモリ(RAM)、電気的にプログラム可能な読み取り専用メモリ(EPROM)、電気的に消去可能及びプログラム可能な読み取り専用メモリ(EEPROM)、磁気又は光カード、フラッシュメモリ、ディスクオンキー(disk-on-key)、あるいは、電子的命令の記憶に適しており、コンピュータシステムバスに結合可能なその他の任意のタイプの媒体、に記憶されてもよい。
本明細書に提示されたプロセス及び表示は、如何なる特定のコンピュータ又は他の装置にも本質的に関係するものではない。様々な汎用システムを、本明細書の教示に従うプログラムと共に、使用してもよく、あるいは、より専用の装置を構築してこの所望の方法を実施することが便利な場合もある。これらの様々なシステムについて望ましい構造は上述の説明から明らかになるであろう。更に、本発明の実施形態は、如何なる特定のプログラミング言語に関しても説明されていない。様々なプログラミング言語を使用して本明細書に記載された本発明の教示事項を実施してもよいことが理解されるであろう。
本明細書において本発明の特定の特徴を例示及び説明してきたが、多くの修正、置換、変更、及び、等価物が当業者に思い浮かぶであろう。従って、最後に記載された特許請求の範囲は、本発明の真の精神の範囲内に在るそのような全ての修正及び変更を網羅することを意図していることを理解されたい。