(57)【要約】コンポーネントベースのユーザインターフェースを自動生成する１つ以上の機械学習エンジンをユーザフィードバックに基づいて精緻化する技術が開示されている。様々な実施形態で、コンピュータシステムは、１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ及び１つ以上の表示パラメータを定義するテンプレート情報を記憶する。コンピュータシステムは、ユーザインターフェースを生成するようリクエストを受け取り、リクエストは、表示されるべきデータを特定する。更に、コンピュータシステムは、ユーザインターフェースを自動的に生成し、生成は、テンプレート情報及びデータセットを入力として使用する１つ以上の機械学習エンジンによって実行される。コンピュータシステムは、次いで、ユーザインターフェースを１以上のユーザへ供給し、ユーザインターフェースに関連するユーザフィードバックを受け取り、ユーザフィードバックに基づいて１つ以上の機械学習エンジンの少なくとも１つを訓練する。
2021532490.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステムによって、１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ及び１つ以上の表示パラメータを定義するテンプレート情報を記憶することであり、コンポーネントタイプは、所与のコンポーネントに含まれている１つ以上のユーザインターフェース要素タイプの組を特定し、表示パラメータは、どのようにして１つ以上のコンポーネントが表示されるべきであるかを特定する、前記記憶することと、
前記コンピューティングシステムによって、ユーザインターフェースを自動的に生成するようリクエストを受け取ることであり、前記リクエストは、前記ユーザインターフェースを用いて表示されるべきデータセットを特定する、前記受け取ることと、
前記コンピューティングシステムによって、前記リクエストに応答して少なくとも１つのユーザインターフェースを自動的に生成することであり、該生成することは、前記テンプレート情報及び前記データセットを入力として使用する１つ以上の機械学習エンジンによって実行される、前記生成することと、
前記コンピューティングシステムによって、前記少なくとも１つのユーザインターフェースを１以上のユーザへ供給することと、
前記コンピューティングシステムによって、前記少なくとも１つのユーザインターフェースに関連するユーザフィードバックを受け取ることと、
前記ユーザフィードバックに基づいて前記１つ以上の機械学習エンジンの少なくとも１つを訓練することと
を有する方法。
【請求項２】
前記少なくとも１つのユーザインターフェースは、
前記データセットを表示するための１つ以上のコンポーネントタイプの選択と、
１つ以上のユーザインターフェース要素において前記データセットを表示する、前記１つ以上のコンポーネントタイプに対応している１つ以上のコンポーネントの配置と
を含む、
請求項１に記載の方法。
【請求項３】
前記少なくとも１つのユーザインターフェースを自動的に生成することは、
前記データセットのサブセットについて複数の提案されているコンポーネントタイプを自動的に選択することを有し、
前記ユーザフィードバックは、前記複数の提案されているコンポーネントタイプの１つを示す、
請求項１に記載の方法。
【請求項４】
前記複数の提案されているコンポーネントタイプについて、対応する複数の代表コンポーネントを自動的に生成することと、
前記対応する複数の代表コンポーネントを含む特定のユーザインターフェースの表示を引き起こすことであり、前記対応する複数の代表コンポーネントの夫々は、前記データセットの前記サブセットを表現する、前記引き起こすことと、
前記コンピューティングシステムによって、前記複数の提案されているコンポーネントタイプのうちの選択されたコンポーネントタイプを示す入力を受け取ることであり、前記１以上のユーザへ供給される前記少なくとも１つのユーザインターフェースは、前記選択されたコンポーネントタイプを用いて表現された前記データセットの少なくとも一部分を含む、前記入力を受け取ることと
を更に有する請求項３に記載の方法。
【請求項５】
前記ユーザフィードバックは、前記少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含む、
請求項１に記載の方法。
【請求項６】
前記ユーザインタラクションに対応する前記データは、前記少なくとも１つのユーザインターフェースに含まれている１つ以上のユーザインターフェース要素についてのクリックデータ、又は前記少なくとも１つのユーザインターフェースに含まれている１つ以上ユーザインターフェース要素についてのホバーデータ、のうちの少なくとも１つを含む、
請求項５に記載の方法。
【請求項７】
前記ユーザフィードバックは、特定のユーザの、前記少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含み、
当該方法は、
前記特定のユーザの前記ユーザインタラクションに対応する前記データに基づいて、前記特定のユーザについてのプロファイルを生成することを更に有し、
前記プロファイルは、前記１つ以上の機械学習エンジンの少なくとも１つのための入力として使用される、
請求項１に記載の方法。
【請求項８】
前記ユーザフィードバックは、１以上のユーザの特定の組の、前記少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含み、
当該方法は、
前記１以上のユーザの特定の組の前記ユーザインタラクションに対応する前記データに基づいて、前記１つ以上の機械学習エンジンの少なくとも１つを選択的に訓練することを更に有する、
請求項１に記載の方法。
【請求項９】
前記少なくとも１つのユーザインターフェースを前記１以上のユーザへ供給することは、
第１のインタラクティブフォーマットで前記少なくとも１つのユーザインターフェースを前記１以上のユーザへ供給することと、
第２の異なるインタラクティブフォーマットで前記少なくとも１つのユーザインターフェースを前記１以上のユーザへ供給することと
を有し、
前記ユーザフィードバックは、前記少なくとも１つのユーザインターフェースと相互作用するために前記１以上のユーザによって使用されるインタラクティブフォーマットを特定するデータを含む、
請求項１に記載の方法。
【請求項１０】
前記コンピューティングシステムによって、前記ユーザフィードバックに基づいて前記テンプレート情報を変更すること
を更に有する請求項１に記載の方法。
【請求項１１】
１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ及び１つ以上の表示パラメータを定義するテンプレート情報を記憶することであり、コンポーネントタイプは、所与のコンポーネントに含まれている１つ以上のユーザインターフェース要素タイプの組を特定し、表示パラメータは、どのようにして１つ以上のコンポーネントが表示されるべきであるかを特定する、前記記憶することと、
ユーザインターフェースを自動的に生成するようリクエストを受け取ることであり、前記リクエストは、前記ユーザインターフェースを用いて表示されるべきデータセットを特定する、前記受け取ることと、
前記リクエストに応答して少なくとも１つのユーザインターフェースを自動的に生成することであり、該生成することは、前記テンプレート情報及び前記データセットを入力として使用する１つ以上の機械学習エンジンによって実行される、前記生成することと、
前記少なくとも１つのユーザインターフェースを１以上のユーザへ供給することと、
前記少なくとも１つのユーザインターフェースに関連するユーザフィードバックを受け取ることと、
前記ユーザフィードバックに基づいて前記１つ以上の機械学習エンジンの少なくとも１つを訓練することと
を有する動作を実行するためにコンピューティングデバイスによって実行可能である命令を記憶している非一時的なコンピュータ可読媒体。
【請求項１２】
前記少なくとも１つのユーザインターフェースを自動的に生成することは、
前記データセットのサブセットについて複数の提案されているコンポーネントタイプを自動的に選択することを有し、
前記ユーザフィードバックは、前記複数の提案されているコンポーネントタイプの１つを示す、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記動作は、
前記複数の提案されているコンポーネントタイプについて、対応する複数の代表コンポーネントを自動的に生成することと、
前記対応する複数の代表コンポーネントを含む特定のユーザインターフェースの表示を引き起こすことであり、前記対応する複数の代表コンポーネントの夫々は、前記データセットの前記サブセットを表現する、前記引き起こすことと、
前記複数の提案されているコンポーネントタイプのうちの選択されたコンポーネントタイプを示す入力を受け取ることであり、前記１以上のユーザへ供給される前記少なくとも１つのユーザインターフェースは、前記選択されたコンポーネントタイプを用いて表現された前記データセットの少なくとも一部分を含む、前記入力を受け取ることと
を更に有する、
請求項１２に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記ユーザフィードバックは、前記少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含む、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
前記ユーザインタラクションに対応する前記データは、前記少なくとも１つのユーザインターフェースに含まれている１つ以上のユーザインターフェース要素についてのクリックデータ、又は前記少なくとも１つのユーザインターフェースに含まれている１つ以上ユーザインターフェース要素についてのホバーデータ、のうちの少なくとも１つを含む、
請求項１４に記載の非一時的なコンピュータ可読媒体。
【請求項１６】
前記ユーザフィードバックは、特定のユーザの、前記少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含み、
前記動作は、
前記特定のユーザの前記ユーザインタラクションに対応する前記データに基づいて、前記１つ以上の機械学習エンジンの少なくとも１つを選択的に訓練することを更に有する、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記ユーザフィードバックは、１以上のユーザの特定の組の、前記少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含み、
前記動作は、
前記１以上のユーザの特定の組の前記ユーザインタラクションに対応する前記データに基づいて、前記１以上のユーザの特定の組についてのプロファイルを生成することを更に有し、
前記プロファイルは、前記１つ以上の機械学習エンジンの少なくとも１つのための入力として使用される、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１８】
少なくとも１つのプロセッサ及び非一時的なコンピュータ可読媒体を有するシステムであって、
前記非一時的なコンピュータ可読媒体は、
１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ及び１つ以上の表示パラメータを定義するテンプレート情報を記憶することであり、コンポーネントタイプは、所与のコンポーネントに含まれている１つ以上のユーザインターフェース要素タイプの組を特定し、表示パラメータは、どのようにして１つ以上のコンポーネントが表示されるべきであるかを特定する、前記記憶することと、
ユーザインターフェースを自動的に生成するようリクエストを受け取ることであり、前記リクエストは、前記ユーザインターフェースを用いて表示されるべきデータセットを特定する、前記受け取ることと、
前記リクエストに応答して少なくとも１つのユーザインターフェースを自動的に生成することであり、該生成することは、前記テンプレート情報及び前記データセットを入力として使用する１つ以上の機械学習エンジンによって実行される、前記生成することと、
前記少なくとも１つのユーザインターフェースを１以上のユーザへ供給することと、
前記少なくとも１つのユーザインターフェースに関連するユーザフィードバックを受け取ることと、
前記ユーザフィードバックに基づいて前記１つ以上の機械学習エンジンの少なくとも１つを訓練することと
を有する動作を当該システムに実行させるよう前記少なくとも１つのプロセッサによって実行可能である命令を記憶している、
システム。
【請求項１９】
前記少なくとも１つのユーザインターフェースを自動的に生成することは、
前記データセットのサブセットについて複数の提案されているコンポーネントタイプを自動的に選択することを有し、
前記ユーザフィードバックは、前記複数の提案されているコンポーネントタイプの１つを示す、
請求項１８に記載のシステム。
【請求項２０】
前記ユーザフィードバックは、前記少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含む、
請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で記載されている実施形態は、ユーザインターフェース技術に、特に、ユーザインターフェースを自動的に生成するための、コンポーネントベースの技術に関係がある。
【背景技術】
【０００２】
ユーザインターフェースは、例えば、目を楽しませ、ブランディング目標を達成し、又は所望のユーザ行動を促しながら所望の機能性を実現するよう品質コーディング技術をグラフィカル設計と組み合わせるために、複数の熟練した設計者によってしばしば生成される。多くのエンティティは、汎用のテンプレートを使用することよりも、カスタマイズされたインターフェースを望む可能性がある。多くのエンティティは、しかしながら、有効なユーザ経験を発生させるために必要とされるコーディング又は設計専門知識を利用することができない。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態に従って、ユーザインターフェースを自動的に生成するシステムの例を表すブロック図である。
【図２Ａ】いくつかの実施形態に従って、ユーザインターフェースコードと、識別されたコンポーネントの結果として起こる表示との例を表す図である。
【図２Ｂ】いくつかの実施形態に従って、複数のコンポーネントタイプを有するユーザインターフェースの例を表すブロック図である。
【図３】いくつかの実施形態に従って、既存のユーザインターフェースに基づいてコンポーネントタイプの組を生成するグループ分けモジュールの例を表すブロック図である。
【図４Ａ】いくつかの実施形態に従って、既存のユーザインターフェースの隣接する要素をコンポーネントにグループ分けする技術の例を表す図である。
【図４Ｂ】いくつかの実施形態に従って、既存のユーザインターフェースの隣接する要素をコンポーネントにグループ分けする技術の例を表す図である。
【図５】いくつかの実施形態に従って、ユーザインターフェースと、階層的インターフェースコード内の表示されたユーザインターフェース要素の様々な対応する深さとを表す図である。
【図６Ａ】いくつかの実施形態に従って、座標及び深さに基づく教師なしｋ平均法の例を表す。
【図６Ｂ】いくつかの実施形態に従って、座標及び深さに基づく教師なしｋ平均法の例を表す。
【図７】いくつかの実施形態に従って、要素が異なるコンポーネントにグループ分けされている図５に対応するユーザインターフェースを表すブロック図である。
【図８】いくつかの実施形態に従って、ユーザインターフェースの隣接する要素をコンポーネントにグループ分けする方法の例を表すブロック図である。
【図９Ａ】いくつかの実施形態に従って、識別されたコンポーネント内の要素を分類する技術の例を表す図である。
【図９Ｂ】いくつかの実施形態に従って、識別されたコンポーネント内の要素を分類する技術の例を表す図である。
【図１０】いくつかの実施形態に従って、複数のメタデータフィールド値に基づく分類のための可視的なユーザインターフェース要素の点数付けの例を表す表である。
【図１１】いくつかの実施形態に従って、メタデータフィールドに基づいて可視的なユーザインターフェース要素を分類する方法の例を表すブロック図である。
【図１２Ａ】いくつかの実施形態に従って、識別されたインターフェースのタイプを識別する技術の例を表す図である。
【図１２Ｂ】いくつかの実施形態に従って、識別されたインターフェースのタイプを識別する技術の例を表す図である。
【図１３】いくつかの実施形態に従って、コンポーネント識別モジュール内の分類モジュールによる２つのユーザインターフェースコンポーネントの分類の例を表す。
【図１４Ａ】いくつかの実施形態に従って、ピクセル階調度を生成するピクセル特性の例を表す。
【図１４Ｂ】いくつかの実施形態に従って、ピクセル階調度を生成するピクセル特性の例を表す。
【図１５】いくつかの実施形態に従って、コンポーネント内のユーザインターフェース要素の境界ボックスについてピクセル階調度を生成する技術の例を表す。
【図１６】いくつかの実施形態に従って、階調度を表すピクセル行列に基づいて２つのコンポーネントについて類似性メトリックを決定する技術の例を表す。
【図１７】いくつかの実施形態に従って、ユーザインターフェースコンポーネントのタイプを識別する方法の例を表す。
【図１８】いくつかの実施形態に従って、重複したインターフェース領域を識別する方法の例を表すフロー図である。
【図１９】いくつかの実施形態に従って、図１に示されているインターフェース生成モジュールの更に詳細な例を表すブロック図である。
【図２０】いくつかの実施形態に従って、入力データの組について識別された２つの例となるコンポーネントタイプを表す図である。
【図２１】いくつかの実施形態に従って、ユーザインターフェースを自動的に生成するコンポーネントベースの方法の例を表すフロー図である。
【図２２】いくつかの実施形態に従って、予測された事象についてユーザインターフェース情報を自動的に生成するフロー図である。
【図２３】いくつかの実施形態に従って、例となるインターフェース生成モジュールを表すブロック図である。
【図２４】いくつかの実施形態に従って、自動的に生成されたユーザインターフェースコンポーネントを提案するために使用されるインターフェースの例を表すブロック図である。
【図２５】いくつかの実施形態に従って、コンポーネントベースのユーザインターフェースを自動的に生成するために使用される機械学習エンジンを精緻化する方法の例を表すフロー図である。
【図２６】いくつかの実施形態に従って、例となるコンピューティングデバイスを表すブロック図である。
【発明を実施するための形態】
【０００４】
本開示は、「１つの実施形態」、「特定の実施形態」、「いくつかの実施形態」、「様々な実施形態」、「実施形態」などへの言及を含む。それらの語句の出現は、必ずしも同じ実施形態に言及していない。特定の特徴、構造、又は特性は、本開示と一致する如何なる適切な様態でも組み合わされてよい
【０００５】
本開示内で、異なるエンティティ（「ユニット」、「回路」、他のコンポーネントなどと様々に呼ばれ得る）は、１つ以上のタスク又は動作を実行するよう“構成される”と記載又は請求されることがある。この形式（（１つ以上のタスクを実行する）よう構成される（エンティティ））は、構造（すなわち、電子回路などの何らかの物理的なもの）に言及するために本明細書では使用されている。より具体的には、この形式は、この構造が動作中に１つ以上のタスクを実行するよう配置されることを示すために使用される。構造は、たとえその構造が目下動作中でないとしても、何らかのタスクを実行する“よう構成される”と言うことができる。例えば、「コンポーネントタイプを選択するよう構成されるモジュール」は、例えば、たとえ問題となっている回路が目下使用中でない（例えば、電源がそれに接続されていない）としても、動作中にこの機能を実行するプログラムコード又は回路を備えている装置を対象とするよう意図される。よって、何らかのタスクを実行する“〜よう構成される”と記載又は列挙されているエンティティは、デバイス、回路、タスクを実施するよう実行可能なプログラム命令を記憶しているメモリ、などの何らかの物理的なものを指す。この語句は、何らかの無形なものに言及するために本明細書では使用されない。「〜よう構成される」（configured  to）との語は、「〜よう構成可能な」（configurable  to）を意味することを意図しない。例えば、プログラムされていないＦＰＧＡは、たとえそれがプログラミング後にその機能を実行する“よう構成可能”デあることができるとしても、何らかの特定の機能を実行する“よう構成される”と見なされない。
【０００６】
構造が１つ以上のタスクを実行する“よう構成される”ことを添付の特許請求の範囲で列挙することは、そのクレーム要素について米国特許法第１１２条（ｆ）を行使しないよう明示的に意図される。従って、出願される本願の請求項のどれも、means-plus-function要素を有していると解釈されることを意図していない。万一出願人が手続の過程で第１１２条（ｆ）を行使することを望むならば、出願人は、（機能を実行する）“手段”（for  means）との構成を用いてクレーム要素を列挙する。
【０００７】
本開示は、特定のデバイス又は方法に制限されないことが理解されるべきである。これは、当然に、変化し得る。また、本明細書で使用されている用語は、特定の実施形態を記載することのみを目的としており、制限する意図はないことも理解されるべきである。本明細書で使用されているように、単数形（不定冠詞a又はan及び定冠詞the）は、文脈が明らかに別なふうに指示しない限りは、単数及び複数の指示対象を含む。更に、「〜できる」（can）又は「〜してよい」（may）との語は、本願の全体にわたって、義務的な意味（すなわち、〜すべき（must））ではなく、寛容な意味（すなわち、可能性がある（having  the  potential  to）、〜し得る（be  able  to））で使用されている。「含む」（include）及び「有する」（comprise）との語及びそれらの派生語は、「含むが制限されない」を意味する。「結合される」（coupled）との語は、直接的又は間接的に接続されることを意味する。
【０００８】
本明細書で使用されているように、「〜に基づいて」（based  on）との語は、決定に影響を及ぼす１つ以上の因子について記載するために使用される。この語は、更なる因子が決定に影響を及ぼす可能性がある可能性を排除しない。すなわち、決定は、もっぱら特定の因子に基づく場合、又は特定の因子に加えて他の特定されていない因子に基づく場合がある。「Ｂに基づいてＡを決定する」との語句を考える。この語句は、ＢがＡを決定するために使用されるか又はＡの決定に影響を及ぼす因子であることを特定する。この語句は、Ａの決定がＣなどの何らかの他の因子に基づいてもよいことを排除しない。この語句はまた、ＡがもっぱらＢに基づいて決定される実施形態を対象とすることも意図される。本明細書で使用されているように、「〜に基づいて」との語句は、「少なくとも〜に基づいて」との語句と同義である。
【０００９】
本明細書で使用されているように、「〜に応答して」（in  response  to）との語句は、効果を誘引する１つ以上の因子について記載する。この語句は、更なる因子が効果に作用するか又は別なふうにそれを誘引する可能性がある可能性を排除しない。すなわち、効果は、もっぱらそれらの因子に応答してよく、あるいは、特定の因子に加えて他の特定されていない因子に応答してよい。「Ｂに応答してＡを実行する」との語句を考える。この語句は、ＢがＡの実行を誘引する因子であることを特定する。この語句は、Ａを実行するがＣなどの何らかの他の因子に応答してもよいことを排除しない。この語句は、ＡがもっぱらＢに応答して実行される実施形態を対象とすることも意図される。
【００１０】
本明細書で使用されているように、「第１」、「第２」などの語は、それらに続く名詞のラベルとして使用され、別なふうに述べられない限りは、如何なるタイプの順序付け（例えば、空間的、時間的、論理的など）も暗示しない。特許請求の範囲で使用される場合に、「又は」（or）との語は、包含的離接として使用され、排他的離接としては使用されない。例えば、「ｘ、ｙ、又はｚの少なくとも１つ」との語句は、ｘ、ｙ、及びｚのうちのいずれか１つに加えて、それらのあらゆる組み合わせ（例えば、ｚ以外のｘ及びｙ）を意味する。
【００１１】
開示されている様々な実施形態で、コンピューティングシステムは、入力データが表示されるためのユーザインターフェースコードを自動的に生成するよう構成される。例えば、入力データは、レイアウト又はフォーマッティングの完全な仕様なしで、アプリケーションプログラミングインターフェース（Application  Programming  Interface，ＡＰＩ）を介して特定されてよく、コンピューティングシステムは、入力データを自動的にグループ分け及びフォーマットしてよい。本明細書で論じられている様々な技術は、コンポーネントベースであり、ユーザ入力データを既知のコンポーネントタイプにマッピングし、コンポーネントを自動的にフォーマットする。コンポーネントは、複数の可視的なユーザインターフェース要素（例えば、画像、文字列、リンク、など）を含んでよい。いくつかの実施形態で、機械学習エンジンは、従前のユーザインターフェースからのコードに基づいてコンポーネントを識別及びフォーマットするよう訓練される。
【００１２】
いくつかの実施形態で、システムは、１つ以上の制約に従ってユーザインターフェースを生成してよい。例えば、制約は、利用可能な画面解像度、予測されている事象、他のインターフェースからのスタイル、などに基づいてよい。いくつかの実施形態で、既存のインターフェース上でコンポーネントを識別するために使用されるものに類似した技術も、重複設計を識別及び報告してよい（そして、インターフェースのそのような部分を自動的にマージしてよい）。
【００１３】
様々な実施形態で、開示されている技術は、エンティティが、設計又はコーディング技術の知識を必要とせずに、ユーザインターフェースを自動的に生成することを可能にし得る。更に、開示されている技術は、新しい方法で（例えば、コンポーネントベースの技術を用いて）、以前は手動で実行されていた設計タスクを自動化することを含め、既存のユーザインターフェース技術を有利に改善し得る。これらの技術は、様々な実施形態で、ユーザインターフェースの柔軟性及び機能性を改善し得る。
【００１４】
本開示は、最初に、図１〜２Ｂを参照して、コンポーネントベースの技術を用いてユーザインターフェースを自動的に生成するシステムと、インターフェース内のコンポーネントの例について記載する。例となるコード、要素、コンポーネント、及びユーザインターフェースは、図２Ａ及び図２Ｂを参照して論じられる。１つ以上の既存のインターフェースに基づいてコンポーネントタイプを生成する技術は、図３〜１７を参照して論じられる。重複したインターフェース設計を識別する技術の例は、図１８を参照して論じられる。
【００１５】
本開示は、次いで、図１９〜２１を参照して、既知のコンポーネントタイプ（先の図を参照して論じられた技術を用いて識別され得る）を用いてユーザインターフェースを自動的に生成する技術の例について記載する。予測された又は推測的な事象のためのインターフェースを自動的に生成する技術は、図２２を参照して論じられる。ユーザ活動に基づくフィードバックによる機械学習技術は、図２３〜２５を参照して論じられる。
【００１６】
［ユーザインターフェースを自動的に生成するシステムの概要］
図１は、いくつかの実施形態に従って、ユーザインターフェースデータを自動的に生成するシステムの例を表すブロック図である。表されている実施形態で、システム１００は、既存のユーザインターフェースデータ１０５を解析し、表示されるべきデータ１１５を受け取り、出力されるユーザインターフェースデータ１２５を自動的に生成する。表されている実施形態で、システム１００は、可視的要素抽出モジュール１１０、グループ分けモジュール１２０、及びインターフェース生成モジュール１３０を含む。いくつかの実施形態で、システム１００はまた、ユーザインターフェースオプションを提示し、アドミン（admin）入力及び／又はユーザインタラクション情報（例えば、モジュール１３０のコンピュータ学習実施を訓練するために使用されてよい）を受け取る。
【００１７】
可視的要素抽出モジュール１１０は、表されている実施形態では、既存のユーザインターフェースからデータ１０５を受け取る。このデータは、階層的木構造に従って（例えば、ドキュメントオブジェクトモデル（Document  Object  Model，ＤＯＭ）を用いて）特定されてよい。いくつかの実施形態で、モジュール１１０は、ユーザインターフェースデータ１０５から、ユーザインターフェースにおいて可視的であり得る要素を抽出する。例えば、そのような要素は、木構造のリーフノードであってよい。
【００１８】
グループ分けモジュール１２０は、いくつかの実施形態で、抽出された要素の組をコンポーネントにグループ分けするよう構成される。いくつかの実施形態で、このグループ分けは、要素の座標及び木内の要素の深さに基づく。表されている実施形態で、モジュール１２０は、検出されたコンポーネントタイプ及び表示パラメータ（例えば、フォーマッティング及び／又はレイアウトコンポーネント）をインターフェース生成モジュール１３０へ供給する。
【００１９】
インターフェース生成モジュール１３０は、表されている実施形態で、モジュール１２０からのデータと、入力された１つ以上の制約とに基づいて、ユーザインターフェースデータ１２５を生成するよう構成される。いくつかの実施形態で、モジュール１３０は、例えば、インターフェースでの実施のために管理者によって選択可能な１つ以上のオプションを供給する。いくつかの実施形態で、モジュール１３０は、インターフェースとのユーザインタラクションに基づく情報を受け取る。これは、例えば、訓練のために使用されてよい。
【００２０】
本明細書で開示されている様々な技術は、単独で又は組み合わせて使用されてよい。開示されているアーキテクチャは、例示のために含まれているが、本開示の範囲を制限することは意図されない。例えば、１つのモジュールを参照して記載される様々な機能は、他の実施形態では、他のモジュールによって実行されてもよい。
【００２１】
本明細書で使用されているように、「モジュール」との語は、特定の動作を実行するよう構成された回路、又は特定の動作を実行するよう他の回路（例えば、プロセッサ）に指示する情報（例えば、プログラム命令）を記憶している物理的な非一時的なコンピュータ可読媒体を指す。モジュールは、ハードワイヤードの回路として、又は動作を実行するよう１つ以上のプロセッサによって実行可能であるプログラム命令を記憶しているメモリとしてを含め、多数の方法で実施されてよい。ハードウェア回路は、例えば、カスタムの超大規模集積回路（Very-Large-Scale  Integration，ＶＬＳＩ）回路若しくはゲートアレイ、ロジックチップなどの既製の半導体、トランジスタ、又は他のディスクリート部品を含んでよい。モジュールはまた、フィールドプログラマブルゲートアレイ、プログラム可能なアレイロジック、プログラム可能なロジックデバイス、などのようなプログラム可能なハードウェアデバイスにおいて実施されてもよい。モジュールはまた、特定の動作を実行するよう実行可能なプログラム命令を記憶している如何なる適切な形態の非一時的なコンピュータ可読媒体でもあってよい
【００２２】
いくつかの実施形態で、図１のモジュールは、異なるコンピューティングシステムに含まれてよいことに留意されたい。例えば、いくつかの実施形態で、第１コンピューティングシステムは、コンポーネントタイプ及びフォーマッティング／レイアウト情報を生成し、このデータを、モジュール１３０を実施する第２コンピューティングシステムへ送信してよい。更に、本明細書で論じられている様々な動作は、時間的に近接して実行されてよく、あるいは、分離されてもよい。例えば、コンポーネントタイプ及びフォーマッティング／レイアウトデータの組が生成されると、このデータは、潜在的に無期限に他のインターフェースを自動的に生成するために使用されてよい。
【００２３】
［例となるコード、要素、コンポーネント、及びユーザインターフェース］
図２Ａは、いくつかの実施形態に従って、例となるユーザインターフェースコードと、識別されたコンポーネントの結果として起こる表示とを表す図である。表されている実施形態で、コード２１０内のリーフノード（要素）は、一点鎖線を用いて強調されている。これらの要素は、（たとえその要素が、例えば、入力変数、ユーザスクロール、ユーザインタラクション、などにより、常には表示されない可能性があるとしても）インターフェース２２０において表示され得る。図２Ａに示されているように、要素は、インターフェースコード階層における座標、分類、及び／又は深さに基づいてコンポーネントにグループ分けされてよい。
【００２４】
本明細書で使用されているように、「要素」との語は、例えば、可視的又は可聴的に、ユーザインターフェースで出力され得る情報を指す。要素は、通常は、ユーザインターフェースコードによって明示的に指示される。例えば、ハイパーテキストマークアップ言語（ＨＴＭＬ）などの階層的コードの場合に、要素は、通常は、リーフノードである。要素のタイプの制限されない例には、テキスト、リンク、画像、などがある。
【００２５】
本明細書で使用されているように、「コンポーネント」との語は、１つ以上の要素のグループを指す。通常は、コンポーネントは複数の要素を含む。コンポーネントは、通常は、従来のユーザインターフェースコードによって明示的に識別されない。むしろ、開示されている様々な技術は、ユーザインターフェースの自動生成における仕様のためにコンポーネントタイプを自動的に検出する。コンポーネントタイプは、コンポーネントのクラスを構成する要素の組を定義してよい。例えば、コンポーネントタイプは、画像、リンク、及びテキストの複数の行を含んでよい。コンポーネントタイプはまた、そのタイプのコンポーネント内の要素のレイアウト及びフォーマッティングを特定する対応する表示パラメータを有してもよい。いくつかの実施形態で、コンポーネントタイプは、ユーザインターフェース入力をユーザインターフェースに自動的に編成するために使用される。
【００２６】
図２Ａの例では、表示インターフェース２２０は、識別されたコンポーネント２３０を含み、識別されたコンポーネント２３０は、画像要素２３２、ラベル要素２３４、及びリンク要素２３６を含む。例えば、コード２１０について、画像要素２３２は、<img  src=“…”>行によって示されている画像であってよく、ラベル要素２３４は、テキスト「John  Doe」を表示してよく、リンク要素２３６は、www.jd.comを訪れるよう選択可能であってよい。
【００２７】
図２Ｂは、いくつかの実施形態に従って、複数の識別されたコンポーネントを含むユーザインターフェースの例を表すブロック図である。表されている実施形態で、インターフェースは、コンポーネントＡからＨを含む。表されている実施形態で、コンポーネントＢ、Ｃ及びＤは、同じコンポーネントタイプとして識別されてよく、コンポーネントＥ及びＦは、同じコンポーネントタイプとして識別されてよい。同じタイプのコンポーネントは、異なるコンテンツを表示するために使用されてよいが、そうするために同じ組の要素を使用してよいことに留意されたい。
【００２８】
コンポーネントＧは、表されている実施形態で、単一の要素、例えば、インターフェースのための背景画像を含んでよい。図示されるように、コンポーネントは、いくつかの実施形態で、表示空間において少なくとも部分的に重なり合ってよい。コンポーネントＡは、ウェブインターフェースの複数のページのための全体のツールバーであり、コンポーネントＨは、検索コンポーネントである。図２Ｂのコンポーネントは、既存のインターフェースにおいて、以下で更に論じられる技術を用いて識別されてよいことに留意されたい。他の実施形態では、表されている実施形態についてのコンポーネントは、ユーザインターフェース入力に対して自動的に決定されてよく、図２Ｂのインターフェースは、自動的に生成されてよい。
【００２９】
以下で更に詳細に論じられる図３〜７は、１つ以上の既存のインターフェースからコンポーネントタイプの組を決定する技術の例について論じている。他の技術と組み合わせて論じられる様々な技術はまた、別々に使用されてもよく、本明細書で開示されている様々な技術は、様々な異なる組み合わせで組み合わされてよいことに留意されたい。
【００３０】
［グループ分けモジュールの概要］
図３は、いくつかの実施形態に従って、既存のユーザインターフェースに基づいてコンポーネントタイプの組を生成するグループ分けモジュールの例を表すブロック図である。表されている実施形態で、グループ分けモジュール１２０は、クラスタリングモジュール３１０、分類モジュール３２０、及びコンポーネントタイプ識別モジュール３３０を含む。いくつかの実施形態で、クラスタリング及び分類に基づいて生成されたコンポーネントタイプ定義と、コンポーネントタイプ識別技術とは、機械学習システムのための訓練データとして使用され、システムは、１つ以上のユーザインターフェースを自動的に生成する。例えば、図１を参照して上述されたインターフェース生成モジュール１３０は、グループ分けモジュール１２０から受け取られたコンポーネントタイプ定義を使用してよい。
【００３１】
表されている実施形態で、クラスタリングモジュール３１０は、１つ以上の既存のグラフィカルユーザインターフェース（ＧＵＩ）のための階層的ユーザインターフェースコードを受け取る。ユーザインターフェースコードに基づいて、いくつかの実施形態で、モジュール３１０は、すぐ近くのユーザインターフェース要素のグループを識別する。いくつかの実施形態で、クラスタリングモジュール３１０は、図４〜８を参照して後述されるように、教師なしクラスタリングを用いて要素のグループを生成する。
【００３２】
いくつかの実施形態で、図１を参照して論じられたように、階層的ユーザインターフェースコードは、ＤＯＭ木のような木構造である。いくつかの実施形態で、ＤＯＭは、ウェブサイトページを表すＨＴＭＬ文書のためのプログラミングインターフェースであり、木構造の各リーフノード（子ノードを有さないコード）は、ユーザインターフェースの出力要素を表す。
【００３３】
表されている実施形態で、分類モジュール３２０は、クラスタリングモジュール３１０から識別されたコンポーネントを受け取る。表されている実施形態で、分類モジュール３２０は、モジュール３１０から受け取られた識別されたコンポーネントのグループにおいて１つ以上の要素を分類する。表されている実施形態で、分類モジュール３２０は、識別されたコンポーネント内の要素についての分類情報をコンポーネントタイプ識別モジュール３３０へ送る。
【００３４】
いくつかの実施形態で、コンポーネントタイプ識別モジュール３３０は、識別されたコンポーネントの境界ボックス及び分類に基づいてコンポーネント間の類似性メトリック（similarity  metric）を計算する。いくつかの実施形態で、モジュール３３０は、閾類似性メトリックを満足する類似したコンポーネントの組についてコンポーネントタイプ定義を生成する。表されている実施形態で、モジュール３３０は、コンポーネントタイプ定義を生成する。
【００３５】
いくつかの実施形態で、コンポーネントタイプ識別モジュール３３０によって生成されたコンポーネントタイプ定義は、データベースに格納される。いくつかの実施形態で、データベースは、ユーザインターフェースデータを自動的に生成する機械学習システムのための入力及び／又は訓練データ（例えば、コンポーネントタイプ定義、ユーザインタラクション情報、フォーマッティング情報、表示パラメータ、など）を記憶する。
【００３６】
［ユーザインターフェース要素をコンポーネントにグループ分けする技術の例］
図４Ａ及び４Ｂは、いくつかの実施形態に従って、既存のユーザインターフェースの隣接する要素をコンポーネントにグループ分けする技術の例を表す図である。図４Ａで、クラスタリングモジュール３１０は、既存のユーザインターフェースについての１つ以上のＤＯＭを受け取る。表されている実施形態で、ＤＯＭに基づいて、モジュール３１０は、隣接する要素をグループ分けすることによってコンポーネントを識別する。図２Ａを参照して上述されたように、いくつかの実施形態で、識別されたコンポーネント内の要素のタイプは、次の、ラベル、テキスト、画像、リンク、映像、ボタン、選択可能な形状、ドロップダウンリスト、検索入力、など、のうちの１つ以上を含む。特定の要素タイプ（例えば、テキスト）は、複数の他のサブタイプ（例えば、ラベル、リンク、など）を含んでもよく、あるいは、タイプは、いくつかの実施形態で、相互排他的であるよう識別されてよいことに留意されたい。
【００３７】
要素４１０で、クラスタリングモジュール３１０は、１つ以上の既存のユーザインターフェースのＤＯＭから可視的な要素（例えば、リーフノード）を得る。いくつかの実施形態で、モジュール３１０は、図１の可視的要素抽出モジュール１１０を参照して上述された機能を実施する。
【００３８】
要素４１２で、表されている実施形態において、クラスタリングモジュール３１０は、可視的な要素の境界ボックスに基づいて座標を決定する。境界ボックスの座標値の例は、図６Ａ及び６Ｂを参照して後述される。
【００３９】
要素４１４で、表されている実施形態において、モジュール３１０は、ＤＯＭ内の要素深さ（例えば、ＤＯＭの根レベルからの要素のレベルの数）に基づいてデプス値を決定する。
【００４０】
要素４１６で、表されている実施形態において、モジュール３１０は、教師なしクラスタリングプロセスを実行する。いくつかの実施形態で、プロセスは、ｋ平均法（k-means  clustering）プロセスである。デプス値及びｋ平均法の例は、図５を参照して以下で更に詳細に論じられる。
【００４１】
要素４１８で、表されている実施形態において、モジュール３１０は、教師なしクラスタリングからの出力に基づいて要素をグループ分けする。表されている実施形態で、クラスタリングモジュール３１０は、ユーザインターフェース要素のグループ分け情報を出力する。要素グループ分けの例は、図７を参照して後述される。いくつかの実施形態で、モジュール３１０によって生成されたグループ分け情報は、機械学習のための訓練データとして使用される。いくつかの実施形態で、グループ分け情報は、グループ（コンポーネント）内の要素の分類及び識別のためにモジュール３２０及び３３０へ送られる。
【００４２】
図５は、いくつかの実施形態に従って、ユーザインターフェースと、階層的インターフェースコード内の表示されているユーザインターフェース要素の様々な対応する深さとを表す図である。表されている実施形態で、ユーザインターフェース（ＵＩ）５１０は、画像、リンク、ラベル（「John  Doe」）、テキスト（「This  is  the  profile  of  John  Doe」）、及びリンクＡ〜Ｅを含む様々な可視的なインターフェース要素を含む。ＵＥ５１０で表示されている情報は、表されている実施形態で、クラスタリングモジュール３１０によって受け取られるインターフェースコードに含まれる。いくつかの実施形態で、クラスタリングモジュール３１０は、木における可視的な要素の夫々の深さを決定する。表されている例では、根からの木における深さが、ＵＩ５１０で表示されている様々な要素について示されている。
【００４３】
いくつかの実施形態で、表示されているデプス値は、クラスタリングモジュール３１０によって非線形関数を用いて変更される。例えば、表されている実施形態で、一番下の絵は、デプス値の２乗を表している。いくつかの実施形態で、デプス値は、２以外の他の値（例えば、１．５、３、４、５、など）によって指数関数的に変更される。いくつかの実施形態で、デプス値は、指数関数以外の他の数学関数を用いて変更される。いくつかの実施形態で、デプス値は、リーフ要素の境界ボックスの座標などの他のクラスタリング入力の効果に対してデプス値の差の効果を変えるよう（例えば、座標に対してデプス値を強調するよう）変更される。
【００４４】
いくつかの実施形態で、ＤＯＭにおける可視的なユーザインターフェース要素の深さを決定することに加えて、クラスタリングモジュール３１０は、ＵＩ５１０の画面空間における可視的な要素の１つ以上の次元での座標（例えば、通常はｘ及びｙ座標と呼ばれる水平及び垂直座標）を決定する。例示のために本明細書では２次元の境界ボックスが論じられているが、他の実施形態では、例えば、３次元表示におけるｚ次元などの更なる次元も、考えられてよい。いくつかの実施形態で、水平及び垂直座標値は、２乗されたデプス値に加えて、クラスタリングモジュール３１０によって記憶及び評価される。
【００４５】
図６Ａ及び６Ｂは、いくつかの実施形態に従って、座標及び深さに基づく教師なしｋ平均法の例を表す。図６Ａは、３次元空間内の点としての、例となるｘ座標値、ｙ座標値、及び２乗されたデプス値（クラスタリングモジュール３１０によって記憶されている）のプロットである。他の実施形態では、クラスタリングは、例えば、３次元インターフェースの場合に、他の次元数により実行されてもよい。表されているグラフでは、点は、異なる陰影を有している異なるグループによりｋ平均法を用いてグループ分けされている。
【００４６】
表されている実施形態では、５つの異なったｋ平均グループが示されている。様々な数のグループ分けが、教師なしクラスタリングから生成されてよい。いくつかの実施形態で、ｋ平均グループ分けの数は、ユーザインターフェース内の要素の総数（及び／又は位置）に基づく。例えば、ユーザインターフェース内に１００個の異なった要素がある場合に、そのユーザインターフェースについて３０個の異なったｋ平均グループ分けが存在し得る。いくつかの実施形態で、各グループは、コンポーネントに対応し、インターフェースのコンポーネントタイプの組を決定するよう更に解析されてよい。
【００４７】
図６Ｂで、表には、図５からのインターフェース要素のいくつかについて教師なしｋ平均法によって決定された、結果として起こるｋ平均グループ値６１０とともに、ｘ、ｙ及びデプス値が示されている。表されている実施形態で、ＵＩ５１０の画像、ラベル「John  Doe」、及びリンクは、ｋ平均グループ１にグループ分けされている。ＵＩ５１０のテキスト「This  is  the  profile  of  John  Doe」は、表されている実施形態で、ｋ平均グループ２にグループ分けされている。いくつかの実施形態で、要素は複数のグループ内でグループ分けされないことに留意されたい（要素は、グループ分けにおいて重なり合わなくてよい）。
【００４８】
教師なしｋ平均法プロセスは、ｋ平均グラフ内の互いからのそれらの相対距離（例えば、それらの相対的なｘ、ｙ、及びｚ座標）に基づいて値をグループ分けしてよい。いくつかの実施形態では、次の、混合ガウスモデル（Gaussian  mixture  mode）、ＥＭ（Expectation-Maximization）、ＤＢＳＣＡＮ（Density-Based  Spatial  Clustering  of  Applications  with  Noise）、ミーンシフト（mean-shift）、及び／又は親和性伝播（affinity  propagation）、のうちの１つ以上などの、１つ以上の他のクラスタリングプロセスが、ｋ平均法に加えて、又はそれに代えて使用される。
【００４９】
図７は、いくつかの実施形態に従って、要素がコンポーネントにグループ分けされている図５に対応するユーザインターフェースを表すブロック図である。表されている実施形態で、グループ分けは、ユーザインターフェース５１０の要素に対して実行されたｋ平均法に基づいて破線を用いて示されている。表されている実施形態で、画像７１２、ラベル７１４、及びリンク７１６は、教師なしｋ平均法がそれらの要素の夫々に１のｋ平均グループ値を割り当てることに基づいて、まとめられている。表されている実施形態で、テキスト７２２は、その各々のグループ分け（グループ２）における唯一の要素である。表されている実施形態で、リンクＡ〜Ｅ７３２は、第３のグループ分けにまとめられている。
【００５０】
図８は、いくつかの実施形態に従って、ユーザインターフェースの隣接する要素をコンポーネントにグループ分けする方法の例を表すブロック図である。図８に示されている方法は、数あるデバイスの中でも特に、本明細書で開示されているコンピュータ回路、システム、デバイス、要素、又はコンポーネントのいずれかとともに使用されてよい。様々な実施形態で、図示される方法要素のいくつかは、同時に又は図示されているのとは異なった順序で実行されてよく、あるいは、省略されてもよい。追加の方法要素も、望まれるように実行されてもよい。
【００５１】
８１０で、表されている実施形態において、コンピューティングデバイスは、階層的ユーザインターフェースコードに基づいて、グラフィカルユーザインターフェースの複数の可視的な要素を決定する。
【００５２】
８２０で、表されている実施形態において、コンピューティングデバイスは、複数の可視的な要素の１つずつについて境界ボックスの座標を決定する。いくつかの実施形態で、境界ボックスの座標は、グラフィカルユーザインターフェースの画面空間における水平及び垂直座標である。他の実施形態では、３次元の境界領域が決定されてよく、あるいは，非境界座標が利用されてもよい（例えば、左上角などの各要素上の特定の点）。
【００５３】
８３０で、表されている実施形態において、コンピューティングデバイスは、複数の可視的な要素について階層的ユーザインターフェースコード内の深さを決定する。
【００５４】
８４０で、表されている実施形態において、コンピューティングデバイスは、決定された座標及び深さの教師なしクラスタリングを用いて、複数の可視的な要素のグループ分けを生成する。以下で更に詳細に論じられるように、いくつかの実施形態で、グループ分けに基づいて、コンピューティングデバイスは、複数のメタデータフィールドの既知のメタデータ値と、既知のメタデータ値の１つずつと可視的なユーザインターフェース要素の複数のタイプとの間の関係を示す情報とに従って、複数の可視的な要素を分類する。いくつかの実施形態で、教師なしクラスタリングは、ｋ平均法プロセスを実行することを含む。
【００５５】
８５０で、表されている実施形態において、コンピューティングデバイスは、生成されたグループ分けを特定する情報を記憶する。
【００５６】
いくつかの実施形態で、コンピューティングデバイスは、教師なしクラスタリングにおいて、座標の差の効果に対してデプス値の差の効果を変えるよう複数の要素の１つずつについてデプス値を変更する。いくつかの実施形態で、デプス値を変更することは、指数関数をデプス値に適用することを含む。いくつかの実施形態で、コンピューティングデバイスは、グラフィカルユーザインターフェースの可視的な要素の第１及び第２グループについての類似性メトリックを決定する。
【００５７】
［例となる要素分類技術］
図９Ａ及び９Ｂは、いくつかの実施形態に従って、識別されたコンポーネント内の要素を分類する技術の例を表す図である。図９Ａで、分類モジュール３２０は、クラスタリングモジュール３１０から識別されたコンポーネントを受け取る。表されている実施形態で、分類モジュール３２０は、識別されたコンポーネント内の要素を分類し、分類情報を出力する。
【００５８】
要素９１２で、表されている実施形態において、分類モジュール３２０は、１つ以上の既存のユーザインターフェースのＤＯＭから要素メタデータを取り出す。
【００５９】
要素９１４で、表されている実施形態において、分類モジュール３２０は、メタデータの既知のメタデータ値と、既知のメタデータ値と可視的なユーザインターフェース要素のタイプとの間の関係の指示とにアクセスする。ユーザインターフェース要素についてのメタデータフィールド（メタデータフィールドの値）の例は、図１０を参照して後述される。
【００６０】
要素９１６で、表されている実施形態において、分類モジュール３２０は、メタデータフィールドの値と、メタデータ値と１つ以上の要素タイプとの間の関係とに基づいて、要素タイプに点数を付ける。様々なスコアリング値は、図１０を参照して後述される。
【００６１】
要素９１８で、表されている実施形態において、モジュール３２０は、点数付けに基づいて（例えば、要素についての特定のユーザインターフェースタイプの最高点数に基づいて）要素タイプを分類する。表されている実施形態で、モジュール３２０は、分類情報を出力する。モジュール３２０によって生成された分類情報は、機械学習システムのための訓練データとして使用されてよい。
【００６２】
図１０は、いくつかの実施形態に従って、複数のメタデータフィールド値に基づく分類のための可視的なユーザインターフェース要素の点数付けの例を表す表である。表されている実施形態で、分類モジュール３２０は、可視的なユーザインターフェース要素１０１０の各メタデータフィールド１０２０についてメタデータ値１０３０を決定する。例えば、表されている実施形態で、「span」は、タグメタデータフィールドのメタデータ値である。表されている実施形態で、各フィールド１０２０で得られた値１０３０に基づいて、モジュール３２０は、特定の要素タイプに得点を与える。
【００６３】
表されている実施形態では、３つの例となる要素タイプが示されている。ラベル１０４０、テキスト１０５０、及び画像１０６０である。表されている実施形態で、得点は、値１０３０と、値１０３０と様々な要素タイプとの間の関係の指示とに基づいて、それら３つの例となる要素タイプに与えられる。いくつかの実施形態で、分類モジュール３２０は、メタデータ値と様々な要素タイプとの間の関係の指示を記憶している。
【００６４】
表されている実施形態で、合計１０７０は、夫々の例となる要素タイプに与えられた特定の累計に基づいて決定される。いくつかの実施形態で、分類モジュール３２０は、最高得点の要素タイプを可視的なユーザインターフェース要素１０１０に割り当てる。表されている実施形態で、ラベル１０４０は、合計点が４で最高得点の要素タイプである。従って、要素１０１０は、この例ではラベル要素タイプとして分類される。
【００６５】
いくつかの実施形態で、信頼値は、割り当てられた要素タイプについて、所与の可視的なＵＩ要素についての様々な他の要素タイプの点数付けに基づいて決定される。例えば、表されている実施形態で、ラベル１０４０は、４の合計点を受け取っており、一方、テキスト１０５０及び画像１０６０は、夫々、２及び０の合計点を受け取っている。いくつかの実施形態で、ラベル１０４０の信頼値は、全ての要素タイプ（本例ではラベル、テキスト、及び画像）の点数の合計で除されたラベルの合計点である。従って、この例で、ラベル１０４０の信頼値は、０．６６６、すなわち６６．６％である（４÷６）。他の実施形態では、他の計算が、信頼値を生成するために実行されてよい。
【００６６】
いくつかの実施形態で、信頼値は、コンポーネントタイプを決定するときに入力として使用されてよい。例えば、多数のコンポーネントが特定のコンポーネントタイプに適合しており、新しいコンポーネントも、分類信頼度が低い１つの要素を除いて、特定のコンポーネントタイプに適合する場合に、これは、新しいコンポーネントタイプが新しいコンポーネントに加えられるべきでないことを示し得る。
【００６７】
メタデータフィールド１０２０は、ＨＴＭＬタグ及び属性を含んでよい。例えば、ＨＴＭＬ属性は、次の、class  A、class  B、dir、など、のうちの１つ以上であってよい（表されている実施形態で示されているものなど）。同様に、メタデータ値１０３０は、ＨＴＭＬ属性値であってよい。例えば、ＨＴＭＬ属性値は、次の、span、label  bBody、ltr、など、のうちの１つ以上であってよい（表されている実施形態で示されているものなど）。他の実施形態では、メタデータフィールドの他の非ＨＴＭＬタイプが解析されてよい。
【００６８】
図１１は、いくつかの実施形態に従って、複数のメタデータフィールドに基づいて可視的なユーザインターフェース要素を分類する方法の例を表すブロック図である。図１１に示される方法は、数あるデバイスの中でも特に、本明細書で開示されているコンピュータ回路、システム、デバイス、要素、又はコンポーネントのいずれかとともに使用されてよい。様々な実施形態で、図示されている方法要素のいくつかは、同時に又は図示されているのとは異なった順序で実行されてよく、あるいは、省略されてもよい。追加の方法要素も、望まれるように実行されてもよい。
【００６９】
１１１０で、表されている実施形態において、コンピューティングデバイスは、複数のメタデータフィールドの既知のメタデータ値と、既知のメタデータ値の１つずつと可視的なユーザインターフェース要素の複数のタイプとの間の関係の指示とを特定する情報を記憶する。
【００７０】
１１２０で、表されている実施形態において、コンピューティングデバイスは、グラフィカルユーザインターフェースの複数の可視的な要素について各々のメタデータ値を決定する。このとき、メタデータ値は、複数の可視的な要素を特定するユーザインターフェースコードに含まれている。
【００７１】
１１３０で、表されている実施形態において、コンピューティングデバイスは、可視的な要素の複数のタイプの夫々について点数値を生成するために、関係の記憶されている指示と、決定されたメタデータ値とに基づいて、複数の可視的な要素の１つずつを点数付けする。いくつかの実施形態で、点数付けは、例えば、図１０に示されるように、メタデータフィールドの異なる１つずつについて別々に実行される。そのような実施形態で、各メタデータフィールドは、それ自体の点数（例えば、各要素タイプの点数）を受け取ってよい。いくつかの実施形態で、点数付けは、例えば、図１０に示されるように、ユーザインターフェース要素の複数のタイプの異なる１つずつについて別々に実行される。そのような実施形態で、各タイプは、それ自体の点数の１つ以上（例えば、各メタデータ値の点数）を受け取ってよい。いくつかの実施形態で、可視的な要素のタイプには、次の、テキスト、画像、又はリンク、のうちの１つ以上がある。いくつかの実施形態で、メタデータフィールドは、ユーザインターフェース内の１つ以上の要素の配置を特定するフィールド、要素の１つ以上の分類名を特定するフィールド、要素のテキストコンテンツの方向を特定するフィールド、要素の内容が編集可能であるかどうかを示すフィールド、要素がドラッグ可能であるかどうかを示すフィールド、ドラッグされたデータがドロップされたときにどのように動くかを特定するフィールド、又は要素の中身の言語を特定するフィールドを含む１つ以上のメタデータフィールドタイプについて特定される。
【００７２】
１１４０で、表されている実施形態において、コンピューティングデバイスは、点数付けに基づいて、可視的な要素の複数のタイプに従って複数の可視的な要素を分類する。
【００７３】
１１５０で、表されている実施形態において、コンピューティングデバイスは、分類された要素を特定する情報を記憶する。いくつかの実施形態で、コンピューティングデバイスは、１つ以上のインターフェースを自動的に生成するよう構成された１つ以上の機械学習モジュールのための訓練データとして、記憶されている情報を使用する。いくつかの実施形態で、コンピューティングデバイスは、分類に基づいてコンポーネントタイプを生成するモジュールへの入力として分類を使用する。
【００７４】
いくつかの実施形態で、コンピューティングデバイスは、要素の第１グループについての要素タイプの組が、要素の第２グループについての要素タイプの組と同じであるかどうかを決定する。いくつかの実施形態で、コンピューティングデバイスは、各要素タイプの要素の数が、要素の第１グループ及び要素の第２グループについて同じであるかどうかを決定する。これは、例えば、要素の第１及び第２グループが同じコンポーネントタイプに対応する場合に、コンポーネントタイプ識別を容易にし得る。
【００７５】
いくつかの実施形態で、コンピューティングデバイスは、要素の第１グループ内のある位置で表示されている要素が、要素の第２グループ内の同様の位置で表示されている要素と同じ要素タイプであるかどうかを決定する。いくつかの実施形態で、コンピューティングデバイスは、要素の第１グループについての要素タイプの組が、要素の第２グループについての要素タイプの組と同じであるかどうかとの決定と、各要素のタイプの数が、要素の第１グループ及び要素の第２グループについて同じであるかどうかとの決定とに基づいて、要素の第１グループ及び要素の第２グループが少なくとも閾類似度を有しているかどうかを決定する。
【００７６】
いくつかの実施形態で、コンピューティングデバイスは、分類された要素の１つの分類に関連した信頼値を決定及び記憶する。このときの決定は、分類された要素の１つについて生成された多種多様なタイプの要素についての点数に基づく。いくつかの実施形態で、信頼値は、分類された要素についての全ての点数付けされたタイプの点数の和に対する、分類された要素についての分類されたタイプの点数の比に基づいて、決定される。
【００７７】
［例となるコンポーネントタイプ識別技術］
図１２Ａ及び１２Ｂは、いくつかの実施形態に従って、識別されたインターフェースコンポーネントのタイプを識別する技術の例を表す図である。図１２Ａで、コンポーネントタイプ識別モジュール３３０は、クラスタリングモジュール３１０から、識別されたコンポーネント（例えば、隣接する要素のグループ）を受け取る。表されている実施形態で、コンポーネントタイプ識別モジュール３３０は、２つのコンポーネントが類似しているかどうかを決定するために分類モジュール３２０からの分類情報を使用する。図１２Ｂを参照して後述される技術は、コンポーネントタイプに対する地理空間解析の１つの非限定的な例である。
【００７８】
いくつかの実施形態で、分類モジュール３２０は、コンポーネントタイプ識別モジュール３３０から分離している。表されている実施形態で、モジュール３３０は、処理されたコンポーネント間の類似度の決定に基づいて、コンポーネントタイプ定義を出力する。
【００７９】
要素１２１０で、表されている実施形態において、モジュール３３０は、可視的なノードに対応するリーフ要素について、１つ以上の既存のユーザインターフェースのＤＯＭから、要素境界情報（例えば、要素境界ボックス）を取り出す。
【００８０】
要素１２２０で、表されている実施形態において、モジュール３３０は、モジュール３２０からの分類情報と、モジュール３１０からのグループ分け情報とに基づいて、要素のグループ分け内の要素のタイプを決定する。コンポーネント内の要素タイプを決定することは、図１３を参照して後述される。
【００８１】
要素１２２２で、表されている実施形態において、モジュール３３０は、要素境界ボックスのピクセルに基づいて階調度（gradients）を生成する。いくつかの実施形態で、階調度は、要素がグループにまとめられているコンポーネント内のピクセルの総数に基づく（例えば、要素ごとの階調度におけるピクセルの数は、コンポーネント内のピクセルの総数と相対的である。）。いくつかの実施形態で、ピクセル階調度は、要素が属しているコンポーネントの解像度に基づいて生成される。例となる境界ボクセルピクセル階調度は、図１５を参照して後述される。
【００８２】
要素１２２４で、表されている実施形態において、モジュール３３０は、コンポーネント内の要素のピクセル階調度に基づいてユーザインターフェースコンポーネントごとに行列を生成する。要素１２２６で、表されている実施形態において、モジュール３３０は、類似性メトリック（例えば、類似度）を決定するよう転置行列を用いて相似関数を実施する。ピクセル階調度の行列データ構造及び相似関数の実施は、図１６を参照して後述される。
【００８３】
要素１２２８で、表されている実施形態において、モジュール３３０は、決定された類似性メトリックが所定の閾値以上であるかどうかに基づいて、２つのコンポーネントが類似していることを決定する。表されている実施形態において、要素１２２８で、モジュール３３０は、ユーザインターフェースコンポーネントのコンポーネントタイプ定義を出力する。
【００８４】
図１３は、いくつかの実施形態に従って、コンポーネントタイプ識別モジュール内の分類モジュールによる２つのユーザインターフェースコンポーネントの分類の例を表す。表されている実施形態で、コンポーネントタイプ識別モジュール３３０は、２つのインターフェースコンポーネントＡ及びＢ１３３２の組み立て（composition）を決定するために分類モジュール３２０の助けを借りて２つのユーザインターフェースコンポーネントＡ及びＢ１３３２を比較する。
【００８５】
いくつかの実施形態で、２つの異なるコンポーネント内の要素のタイプ間の一致（例えば、２つのコンポーネント間の一致）は、分類モジュール３２０によって決定される。いくつかの実施形態で、一致は、２つのコンポーネントについて同じである各要素タイプの要素の数によって決定される。更には、２つのコンポーネント内の要素の位置は、２つのコンポーネント間の一致を決定することにおける因子であってよい。例えば、コンポーネントＡは、コンポーネントＢの画像、リンク、及びラベルと類似した位置に位置付けられている画像、リンク、及びラベルを有している。この例で、分類モジュール３２０は、コンポーネントＡ及びコンポーネントＢの組み立てが類似していると、従って、２つのコンポーネントが一致すると決定し得る。
【００８６】
いくつかの実施形態で、モジュール３２０によって出力された組み立てに基づいて、コンポーネントタイプ識別モジュール３３０は、２つのコンポーネントについて類似性メトリックを計算すべきかどうかを決定する。モジュール３３０は、コンポーネント１３３２の組み立て間に若干の相違を許してもよい。例えば、所与のコンポーネントタイプは、画像と、１乃至３つのテキスト要素とを有してよい（それにより、同じタイプの異なるコンポーネントは、異なる数のテキスト要素を有することができる。）。同様に、コンポーネントの決定されたタイプは、同じタイプの他のコンポーネントに含まれている１つ以上の要素タイプの省略を許されてもよい。
【００８７】
表されている例では、２つのコンポーネントにおけるリンク１３３６及びラベル１３３８のサイズは、幅が異なっている（例えば、２つの要素の境界ボックスは、異なるサイズである。）。これは、類似性メトリックの値に影響を及ぼす可能性があるが、各コンポーネントにおけるようその組み立てには影響を与えない。いくつかの実施形態で、分類はフィルタとして使用される。例えば、更なる解析は、１つのコンポーネントにおける要素の各タイプが他のコンポーネントでも表現されている場合にのみ、コンポーネントタイプを決定するよう進んでよい。いくつかの実施形態で、解析は、各コンポーネントが各タイプの厳密に同数の要素を含む場合にのみ進んでよい。他の実施形態では、分類は、フィルタとして使用されなくてよく、類似性メトリックの決定への他の入力であってもよい。
【００８８】
図１４Ａ及び１４Ｂは、いくつかの実施形態に従って、ピクセル階調度を生成するピクセル特性の例を表す。表されている実施形態で示されているピクセル特性は、２つのコンポーネントＡ及びＢ１３３２の組み立てが一致するとモジュール３３０が（例えば、モジュール３２０の出力に基づいて）決定すると、コンポーネントＡ及びＢ１３３２について類似性メトリック（例えば、類似度）を決定するためにコンポーネントタイプ識別モジュール３３０によって使用される。
【００８９】
図１４Ａで、表は、ピクセル色１４１０及びピクセル値１４２０を表す２つの列を有して示されている。左の列で、ピクセル色１４１０は、４つのオプション、白／空き、薄灰色、濃灰色、又は黒ブラック、のうちの１つであってよい。右の列で、表されている実施形態において、ピクセル値は、４つのピクセル色の夫々について、夫々０、０．３３、０．６６、及び１として示されている。
【００９０】
ピクセル色は、白と黒との間のスペクトルの粒度の様々なレベルを含んでよい。例えば、ピクセル値０．１６５及び０．８５を夫々有している極薄灰色及び極濃灰色などの、白から黒までの階調度において２つの追加色が存在してもよい。
【００９１】
図１４Ｂには、隣接ピクセルからのそれらの距離に関するピクセル階調度の値のプロットが示されている。表されている実施形態で、グラフのｙ軸は、ピクセル値１４２０を表し、ｘ軸は、隣接ピクセル間の距離１４３０を表す。表されている例では、原ピクセルは、ピクセル値が１である黒ピクセル色１４１０である。更に、表されている例では、原ピクセルに隣接するピクセルは、原ピクセルと隣接ピクセルとの間の距離１４３０が広がるにつれて、値が小さくなる。例えば、ｘ軸上で２に位置しているピクセルは、０．２２のピクセル値（例えば、薄灰色ピクセル色）を有する。
【００９２】
ピクセル階調度以外の様々な技術が、２つのコンポーネントについての類似性メトリックを処理するために使用されてよい。例えば、いくつかの実施形態で、幾何学的プロセスは、２つのコンポーネントに含まれている要素の境界ボックスの周囲長さ、全幅、又は長さに基づいて２つのコンポーネントについて類似性メトリックを決定するために使用される。他の地理空間解析の例では、要素境界ボックス内の総面積が、２つのコンポーネントについて類似性メトリックを決定するために使用されてよい。
【００９３】
図１５は、いくつかの実施形態に従って、コンポーネント内のユーザインターフェース要素の境界ボックスについてピクセル階調度を生成する技術の例を表す。表されている実施形態で、コンポーネントタイプ識別モジュール３３０は、要素境界ボックスのピクセル値をピクセル階調度に変換することを開始する。表されている実施形態で、要素境界ボックスのピクセルラインの視覚表現は、境界ボックス部分１５２０によって表される。表されている実施形態で、境界ボックスの原ピクセルは、ピクセル値が１である黒である（部分１５２０の中心にある黒ピクセルラインとして示されている。）。表されている実施形態で、境界ボックスは、表＃１に表示されているピクセル値表現に変換される。
【００９４】
コンポーネント内にグループ分けされた要素の境界ボックスがピクセル値表現に変換されると、表されている実施形態で、階調度が、次いで、ピクセル表現に適用される。表＃２は、表されている実施形態では、階調度のピクセル表現を表示している。
【００９５】
いくつかの実施形態で、階調度に含まれているピクセルの数（例えば、表＃１及び＃２における原要素境界ボックスピクセルの左及び右にあるピクセル値）は、コンポーネントの全体サイズ及び／又は解像度に基づいて決定される。例えば、コンポーネントのサイズ及び解像度がより大きい場合には、階調度は、原要素境界ボックスピクセルの左及び右により多数のピクセルを含んでよく、境界ボックスを相対的により薄く見せる。
【００９６】
図１６は、いくつかの実施形態に従って、境界ボックスのピクセル表現に基づいて２つのコンポーネントについて類似性メトリックを決定する技術の例を表す。表されている実施形態で、第１コンポーネントＡのピクセル階調度は、幅ｍ及び高さｎを有する行列Ａ（ｇ）１６４０に置かれている。表されている実施形態で、行列Ａ（ｇ）１６４０は、幅１及び高さｎを有する行列（行列Ａ（ｇ，ｆｌａｔ）１６１０）を生成するように平坦化される。第２コンポーネントＢの行列も生成され、そして、一列の平坦化された行列１６２０を生成するように平坦化される。
【００９７】
本明細書で使用されているように、「平坦化する」（flatten）との語は、行列をベクトルに変換する１つ以上の行列演算を指す。例えば、開示されている実施形態で、行列を平坦化することは、複数の行を有する単一列を形成するように行列の１つ以上の列をお互いの上に積み重ねる動作を指す。よって、この積み重ね技術では、平坦化された行列の上からｎ個のエントリは、元の行列の最初の列に対応し、次のｎ個のエントリは、元の行列の２番目の列に対応し、以降同様である。Ｍ×Ｎの行列の場合に、対応する平坦化された行列は、Ｎ×１をＭ倍にしたサイズを有している。平坦化は、複数の列を有する単一行を形成するように行を主体として順序でも実行されてよい。
【００９８】
いくつかの実施形態で、２つのコンポーネントについての境界ボックスの部分の行列表現は、同じサイズでない（例えば、行列の高さ及び／又は幅は異なる）。例えば、行列の一方は、他方よりも小さくてよい。いくつかの実施形態で、小さい方の行列は、他方の行列の寸法に合うようにゼロを詰められる。
【００９９】
表されている実施形態で、２つのコンポーネントについて類似性メトリックを決定するために数学公式が実施される。表されている実施形態で、行列Ａ（ｇ，ｆｌａｔ）及び転置行列Ｂ（ｇ，ｆｌａｔ）のドット積が計算され、コンポーネントＡ及びＢ１３３２の間の一致値が求められる。いくつかの実施形態で、一致値は、コンポーネントＡ及びＢの間の類似性を表す。表されている実施形態で、行列Ａ（ｇ，ｆｌａｔ）及び転置行列Ａ（ｇ，ｆｌａｔ）のドット積は、完全な一致に関連した値を求めるために計算される。最初のドット積は次いで、表されている実施形態では、コンポーネント１３３２の類似度を生成するために、２番目のドット積で除される。
【０１００】
いくつかの実施形態で、類似度が所定の閾値以上である場合には、２つのコンポーネントは類似していると見なされる。多種多様な類似度の値が所定の閾値に対して使用されてよいことに留意されたい。例えば、所定の閾値が８０％である場合に、類似度は、２つのコンポーネントが類似していると見なされるために、８０％以上でなければならない。
【０１０１】
いくつかの実施形態で、類似度が所定の閾値を満足することに基づいて、モジュール３３０は、同じコンポーネントタイプを２つの比較されたコンポーネントに割り当てる。いくつかの実施形態で、この割り当ては、コンポーネントタイプ定義と呼ばれる。いくつかの実施形態で、複数のコンポーネントへの同じコンポーネントタイプの割り当ては、有利なことに、異なるコードを使用する重複したコンポーネントの生成を防ぎ得る。更には、１つ以上のコンポーネントへのタイプの割り当ては、有利なことに、他の既存のユーザインターフェースにおける識別されたコンポーネントの検索時間を減らし、それによって、機械学習システムを訓練するために使用される訓練データを改善し得る。識別されたコンポーネントの組について、様々な技術が、コンポーネントタイプの対応する組を生成するようコンポーネント内の一致を検索するために使用されてよいことに留意されたい。例えば、各コンポーネントは、あらゆる他のコンポーネントと比較されてよく、あるいは、コンポーネントタイプが識別されると、他のコンポーネントは、その識別されたコンポーネントタイプの単一の代表コンポーネントと比較されてよい。
【０１０２】
図１７は、いくつかの実施形態に従って、ユーザインターフェースコンポーネントのタイプを識別する方法の例を表す。図１７に示される方法は、数あるデバイスの中でも特に、本明細書で開示されているコンピュータ回路、システム、デバイス、要素、又はコンポーネントのいずれかとともに使用されてよい。様々な実施形態で、示されている方法要素のいくつかは、同時に又は図示されているのとは異なった順序で実行されてよく、あるいは、省略されてもよい。追加の方法要素も、望まれるように実行されてもよい。
【０１０３】
１７１０で、表されている実施形態において、コンピューティングデバイスは、ユーザインターフェースコードに基づいて、グラフィカルユーザインターフェースの複数の可視的な要素を決定する。
【０１０４】
１７２０で、表されている実施形態において、コンピューティングデバイスは、ユーザインターフェースコードに基づいて、複数の可視的な要素の１つずつについて境界ボックスの座標を決定する。
【０１０５】
１７３０で、表されている実施形態において、コンピューティングデバイスは、可視的な要素を第１及び第２グループにグループ分けする。
【０１０６】
１７４０で、表されている実施形態において、コンピューティングデバイスは、第１及び第２グループ内の要素のタイプを決定する。
【０１０７】
１７５０で、表されている実施形態において、第１及び第２グループ内の要素のタイプ間の一致を検出することに応答して、コンピューティングデバイスは、第１及び第２グループ内の決定された境界ボックスの座標に基づいて、第１及び第２グループについて類似性メトリックを決定する。いくつかの実施形態で、コンピューティングデバイスは、各要素タイプの要素の数が要素の第１グループ及び要素の第２グループについて同じであるかどうかを決定することによって、一致を検出する。いくつかの実施形態で、コンピューティングデバイスは、要素の第１グループ内のある位置に表示されている要素が、要素の第２グループ内の同様の位置に表示されている要素と同じ要素タイプであるかどうかを決定することによって、一致を検出する。
【０１０８】
いくつかの実施形態で、類似性メトリックは、第１及び第２グループの各々のピクセル表現に基づいて決定される。いくつかの実施形態で、ピクセル表現は、複数の可視的な要素の１つずつについての決定された境界ボックスに基づく。いくつかの実施形態で、ピクセル表現は、グラフィカルユーザインターフェースの複数の視覚的な要素の１つずつに基づく。
【０１０９】
いくつかの実施形態で、第１及び第２グループのピクセル表現は、各々の行列データ構造を用いて表現される。いくつかの実施形態で、コンピューティングデバイスは、第１及び第２グループの行列データ構造を平坦化する。いくつかの実施形態で、コンピューティングデバイスは、第１及び第２グループの平坦化された行列データ構造を転置する。
【０１１０】
いくつかの実施形態で、コンピューティングデバイスは、第１グループの平坦化された行列データ構造と、第２グループの転置された行列データ構造との第１ドット積を決定する。いくつかの実施形態で、コンピューティングデバイスは、第１グループの平坦化された行列データ構造と、第１グループの転置された行列データ構造との第２ドット積を決定する。いくつかの実施形態で、コンピューティングデバイスは、第１ドット積と第２ドット積との間の比に基づいて類似性メトリックの結果を計算する。いくつかの実施形態で、第１ドット積は、要素の第１及び第２グループの間の類似性に対応し、第２ドット積は、完全な一致に関連した値に対応する。
【０１１１】
１７６０で、表されている実施形態において、コンピューティングデバイスは、類似性メトリックが閾値を満足することに応答して、第１及び第２グループに対応するコンポーネントタイプを定義する情報を記憶する。
【０１１２】
以下で詳細に論じられるように、識別されたコンポーネントタイプは、いくつかの実施形態で、他のユーザインターフェースを自動的に生成するためにビルディングブロックとして使用されてよい。
【０１１３】
［重複したインターフェース設計の識別］
いくつかの実施形態で、コンポーネントタイプを決定する上記技術に類似した技術が、インターフェースの異なる部分で少なくとも部分的に複製されているインターフェース設計を識別するために使用されてよい。いくつかの実施形態で、これは、要素をコンポーネントにグループ分けすることと、１つ以上の比較技術に基づいてコンポーネントの類似性を識別することとを含んでよい。比較技術は、境界ボックスを比較すること、実際の視覚表現を比較すること、コンポーネント内の分類された要素を比較すること、などを含んでよい。
【０１１４】
例えば、画像と、ユーザ名を含むリンクと、タイトルと、チームメンバーのラベルとを有する第１コンポーネント、並びに画像と、ユーザ名及び記録名のテキストを含むリンクと、イベントと、イベントのラベルとを含む第２コンポーネントを考える。第１コンポーネントは、マネージャと標記されている戦略イベントのＶＰであるJane  Doeに関するものであってよい。第２コンポーネントは、特定の日にJohn  Smithによって実行された記録の更新に関するものであってよい。これら２つのコンポーネントは、たとえそれらが異なるタイプの情報を表示するために使用されるとしても、略同じ視覚及び／又はコーディング設計を有する可能性があり、この重複設計は、いくつかの実施形態で、自動的に識別及び報告されてよい。
【０１１５】
いくつかの実施形態で、そのような技術は、有利なことに、重複設計を識別することができ、これは、自動のコードマージを可能にするか、あるいは、検出された重複に基づいてコーディング決定を行うことを管理者に可能にし得る。いくつかの実施形態で、管理者は、コンポーネントを設計し、それを重複検出エンジンに提出してよい。重複検出エンジンは、類似性閾値を満足するインターフェース内の既存のコンポーネントを識別してよい。
【０１１６】
いくつかの実施形態で、境界ボックス及び／又は視覚表現を比較するために、地理空間データベースが使用されてよい。例えば、データベースは、既存のコンポーネントを記憶してよく、記憶されているコンポーネントと供給されたコンポーネントとの間の類似性を検出するようクエリされてよい。そのような地理空間データベースの１つの非限定的な例には、postgres/postgisデータベースがある。他の実施形態では、非データベース技術、例えば、図１５〜１６を参照して論じられている技術などが、地理空間解析のために使用されてもよい。いくつかの実施形態で、重複報告を生成するよう重複したコンポーネントを探すことは、双方向の長短期記憶（Long  Short-Term  Memory，ＬＳＴＭ）回帰型ニューラルネットワーク（Recurrent  Neural  Network，ＲＮＮ）を用いて実行される。
【０１１７】
いくつかの実施形態で、分類モジュール３２０は、類似性値を生成するよう比較されているコンポーネント内の要素タイプを識別してよい。重複設計識別モジュールによって識別されたコード領域は、同じコンポーネントタイプと見なされるほど十分に類似していてもいなくてもよいことに留意されたい。例えば、７５％の一致であれば、設計重複にフラグを立てるのに十分に見なされ得るが、同じコンポーネントタイプとして２つのコンポーネントを分類には不十分であり得る。
【０１１８】
いくつかの実施形態では、要素分類及び地理空間解析の両方が、重複設計を検出するために組み合わせて使用されてよい。
【０１１９】
重複設計識別モジュールへの入力は、例えば、クロールされたウェブアプリケーション、次いでＤＯＭ又はスケッチファイルを含んでよく、モジュールは、クロールされたウェブアプリケーションにおいて類似したパターンを識別する情報を出力してよい。開示されている技術は、既存のコードブロックを検索するために開発者によって、及び／又は既存のコンポーネント設計を検索するために設計者によって使用されてよく、冗長なコンポーネントのカスタマイズを低減し得る。
【０１２０】
いくつかの実施形態で、既存のコンポーネントについての重複報告に基づいて、報告からの１つ以上のコンポーネントは、データベースフィールドにマッピングされる。いくつかの実施形態で、１つ以上のマッピングされたコンポーネントは、有利なことに、新しいユーザインターフェースを生成するためにデータベースから１つ以上のコンポーネントを自動的に選択することをインターフェース生成モジュールに可能にし得る。いくつかの実施形態で、類似した既存のユーザインターフェースコンポーネントについて重複報告を生成することは、有利なことに、１つ以上の将来のインターフェースのための開発時間を減らし得る（例えば、開発者は、どのコンポーネント／コードブロックが既に存在しているかに気付く。）。
【０１２１】
図１８は、いくつかの実施形態に従って、重複したインターフェース設計を識別する方法の例を表すフロー図である。図１８に示されている方法は、数ある中でも特に、本明細書で開示されているコンピュータ回路、システム、デバイス、要素、又はコンポーネントのいずれかとともに使用されてよい。様々な実施形態で、示されている方法要素のいくつかは、同時又は図示されているのとは異なった順序で実行されてよく、あるいは、省略されてもよい。追加の方法要素も、望まれるように実行されてもよい。
【０１２２】
１８１０で、表されている実施形態において、コンピューティングシステムは、階層的なユーザインターフェースコードに基づいて、グラフィカルユーザインターフェースの複数の可視的な要素を決定する。それらは、例えば、ＤＯＭ表現におけるリーフノードであってよい。
【０１２３】
１８２０で、表されている実施形態において、コンピューティングシステムは、複数の可視的な要素の１つずつについてインターフェース内の座標を決定する。座標は、所与の要素に関連した点（例えば、要素の中心又は角）又は要素の視覚表現の境界ボックス若しくはそのような視覚表現に関連した点などの他の形状に対応してよい。
【０１２４】
１８３０で、表されている実施形態において、コンピューティングシステムは、複数の視覚的な要素について階層的なユーザインターフェースコード内の深さレベルを決定する。一般的に言えば、類似した深さにある要素は、いくつかの実施形態で、グループ分けされる可能性が高くなる。
【０１２５】
１８４０で、表されている実施形態において、コンピューティングシステムは、決定された座標及び深さレベルに基づいて、複数の視覚的な要素の組をグループ分けする。いくつかの実施形態で、システムは、要素のグループについて１つ以上のコンポーネントタイプを決定する。同じコンポーネントタイプに対応するグループは、閾類似性基準を満足するとして識別されてよい（たとえ異なるとしても、例えば、より高い閾値が、他の実施形態では、類似性及びコンポーネントタイプを識別するために使用されてもよい。）。
【０１２６】
１８５０で、表されている実施形態において、コンピューティングシステムは、閾類似性基準を満足する２つ以上のグループを識別する。コンピューティングシステムは、グループを識別する報告を生成してよい。いくつかの実施形態で、コンピューティングシステムは、閾基準を満足するグループのコードを自動的にマージする。例えば、システムは、開発者が、複数の対応するコードセグメントを調整するようクラス又はコンポーネントタイプを一度変更することができるように、グループのクラス又はコンポーネントタイプを生成してよい。
【０１２７】
識別は、要素の分類及び／又は地理空間解析に基づいてよい。
【０１２８】
［例となるインターフェース生成技術］
図１９は、いくつかの実施形態に従って、インターフェース生成モジュールを表すブロック図である。表されている実施形態で、モジュール１３０は、コンポーネントタイプ１９１０及び表示パラメータ１９２０を記憶している。この情報は、既存のインターフェースに基づいて自動的に生成されてよく、かつ／あるいは、ユーザ指定されてもよい。例えば、グループ分けモジュール１２０がこの情報を生成してよく、かつ／あるいは、ユーザが情報を生成又は変更してよい。コンポーネントタイプは、先に詳細に論じられている。表示パラメータ１９２０は、いくつかの実施形態で、コンポーネント内及び／又はコンポーネント間のフォーマッティングを示し、フォント、色などの追加情報を示してよい。
【０１２９】
表されている実施形態で、モジュール１３０は、コンポーネント選択モジュール１９３０及びフォーマッティングモジュール１９４０を含む。
【０１３０】
コンポーネント選択モジュール１９３０は、いくつかの実施形態で、ユーザインターフェースに対する入力データを受け取り、ユーザ入力データを表すために１つ以上のコンポーネントタイプを自動的に選択するよう構成される。入力データは、例えば、ＪＳＯＮ（Javascript  Object  Notation）フォーマット又はその他の編成にあってよい。なお、入力データは、それがどのように表示されるべきかを特定しなくてもよい。いくつかの実施形態で、コンポーネント選択モジュール１９３０は、入力データにおいて要素タイプを決定し、それらのタイプを既知のコンポーネントタイプ１９１０の中の要素タイプと照合するよう構成される。この照合に基づいて、コンポーネント選択モジュール１９３０は、１つ以上のコンポーネントタイプを選択し得る。
【０１３１】
入力データの所与の組について、コンポーネント選択モジュール１９３０は、図２０を参照して後述されるように複数のコンポーネントタイプを選択してよいことに留意されたい。いくつかの実施形態で、コンポーネント選択モジュール１９３０は、たとえ要素のタイプが完全な一致でないとしても、入力データに最良の一致をもたらす１つ以上のコンポーネントタイプを選択してよい。
【０１３２】
フォーマッティングモジュール１９４０は、表されている実施形態で、選択されたコンポーネントタイプ及び表示パラメータ１９２０に従ってコンポーネントをフォーマットするよう構成される。いくつかの実施形態で、フォーマッティングは、画面解像度、画面サイズ、表示技術、指定フォントなどの追加の制約に基づく。モジュール１９４０は、選択されたコンポーネントをレイアウトし、複数のコンポーネントをフォーマットし、選択されたコンポーネント内の要素をレイアウトし、かつ／あるいは、選択されたコンポーネント内をフォーマットしてよい。いくつかの実施形態で、フォーマッティングモジュール１９４０は、ユーザインターフェースデータを出力するよう構成され、ユーザインターフェースデータに基づいてインターフェースの表示を引き起こしてよい。フォーマッティングは、コンポーネント内及び／又はコンポーネント間のポジショニング、色、フォント、間隔、レイアウト、サイズ、回転、透過性、境界、などを含んでよい。いくつかの実施形態で、表示パラメータ１９２０は、前のインターフェースにおける特定のコンポーネントタイプのポジショニングを示す情報を含んでよく、これは、自動生成されたインターフェースにおける対応するコンポーネントを位置付けるために使用されてよい。
【０１３３】
以下で更に詳細に論じられるように、コンポーネントタイプ１９１０、表示パラメータ１９２０、モジュール１９３０、及び／又はモジュール１９４０は、ユーザ入力及び／又はインターフェースインタラクションに基づいて変更されてよい。例えば、モジュール１３０は、コンポーネントタイプ及び／又はフォーマッティングオプションを管理者に提示してよく、管理者は、所望のオプションを選択してよい。いくつかの実施形態で、モジュール１９３０及び／又は１９４０は、管理者入力に基づいてより望ましい出力を供給するよう訓練され得る１つ以上の機械学習エンジンを実施する。同様に、インタラクションの部分に費やされた時間、選択行動（例えば、クリック）、などのような、インターフェースとのユーザインタラクションに関する情報は、それらのモジュール（及び／又は本明細書で論じられている他のモジュール）を訓練するために使用されてよい。
【０１３４】
図２０は、いくつかの実施形態に従って、入力データの組２０１０について選択された２つの例となるコンポーネントタイプを表す。表されている実施形態で、記事についての入力データの組２０２０は、記事へのリンク、２つの分離したテキスト要素（記事について記述する要素及び記事の日付を提供する要素）、及び記事からの画像を含む。例えば、このデータに基づくコンポーネントは、ウェブインターフェースのフロントページに表示され、記事を読むために選択可能であってよい。表されている実施形態で、モジュール１３０は、この入力データについて２つのコンポーネントタイプＡ  ２０２０及びＢ  ２０３０を選択してよい。図示されているように、２つのコンポーネントタイプは、要素のタイプの同じ組を有しているが、全く異なるようにフォーマットされている。モジュール１３０は、例えば、ユーザ入力に基づいて又はフォーマッティングモジュール１９４０による制御に基づいて最終的なコンポーネントを選択してよい。いくつかの実施形態で、ユーザは、表示されるべきデータの組を入力し、一致するコンポーネントタイプを探してよい。システムは、複数の可能性があるコンポーネントタイプを表示し、ユーザが好ましいタイプを選択することを可能にしてよい。
【０１３５】
いくつかの実施形態で、自動技術を用いてユーザインターフェースを生成することは、有利なことに、ユーザインターフェースのメンテナンス及び／又はマイグレーションを減らすことができ、それによって、従前に存在しているユーザインターフェースからユーザインターフェースコードの蓄積を防ぐ。更には、インターフェースを自動的に生成することは、同じインターフェースモジュールによって生成されたインターフェースの違いを許すことによって有利であり得る。例えば、平均ワード長さが異なっている異なった言語について、モジュール１３０は、異なる言語で情報をより良く表示するために、同じ基礎をなす情報について異なったインターフェースを生成してよい。
【０１３６】
いくつかの実施形態で、インターフェース生成モジュール１３０は、音声対話に基づいてユーザインターフェースデータを生成してよい。例えば、音声対話を通じてユーザから命令を受け取った後、モジュール１３０は、対話を要約するユーザインターフェースを生成してよく、それによって、ユーザが対話を確認又は修正することを可能にする。いくつかの実施形態で、音声対話のユーザインターフェース要約は、有利なことに、ユーザが、タッチ（例えば、画面クリック）を通じて必要とされる少量の相互作用で運転中や歩行中などに正確な命令を与えることを可能にし得る。いくつかの実施形態で、インターフェース生成モジュール１３０は、次の表示技術、グラフィカルユーザインターフェース、音声ユーザインターフェース（Voice  User  Interface，ＶＵＩ）、仮想及び／又は拡張現実（Virtual  Reality/Augmented  Reality，ＶＲ／ＡＲ）、ヘッドアップディスプレイ（Head-Up  Display，ＨＵＤ）、など、のうちの１つ以上のためのユーザインターフェースを生成する。いくつかの実施形態で、目標出力プラットフォームは、コンポーネントタイプを選択することにおいて使用される入力制約であってよい。例えば、いくつかのコンポーネントタイプは、従来のディスプレイに対してよりも拡張現実に対してより望ましいと決定されてよい。
【０１３７】
いくつかの実施形態で、インターフェース生成モジュール１３０は、複数のタイプの出力デバイスにわたってシームレスな経験を提供してよく、特定のコンポーネントを自動的に表示するために１つ以上の出力タイプを自動的に選択してよい。例えば、コンテキストパラメータに基づいて、モジュール１３０は、モニタを介して及び可聴に第１コンポーネントを出力するが、第２コンポーネントを拡張現実のみにより出力すると決定してよい。
【０１３８】
いくつかの実施形態で、開示されている技術は、既存のインターフェースへの外部サービスの統合を容易にし得る。例えば、開示されている技術は、既存のデータベースのルック・アンド・フィール（look  and  feel）を維持するよう外部データベースからのデータによりインターフェースを自動的にフォーマットするために使用されてよい。
【０１３９】
図２１は、いくつかの実施形態に従って、ユーザインターフェースを自動的に生成するコンポーネントベースの方法の例を表すフロー図である。図２１に示されている方法は、とりわけ、本明細書で開示されているコンピュータ回路、システム、デバイス、要素、又はコンポーネントのいずれかとともに使用されてよい。様々な実施形態で、示されている方法要素のいくつかは、同時に又は図示されているのとは異なった順序で実行されてよく、あるいは、省略されてもよい。追加の方法要素も、望まれるように実行されてもよい。
【０１４０】
２１１０で、表されている実施形態において、コンピューティングシステムは、１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ及び１つ以上の表示パラメータを定義するテンプレート情報を記憶する。表されている実施形態で、コンポーネントタイプは、コンポーネントに含まれている１つ以上のユーザインターフェース要素タイプの組を特定し、表示パラメータは、どのようにして１つ以上のコンポーネントが表示されるべきであるかを特定する。いくつかの実施形態で、複数のコンポーネントタイプは、上述された技術に従って、１つ以上の既存のユーザインターフェースから決定される。いくつかの実施形態で、コンピューティングシステムは、既存のインターフェースの１つのスタイルを、自動的に生成されたインターフェースに移すよう及び／又は２つ以上のスタイルをマージするようスタイル変換機能を実施する。スタイルは、対応するコンポーネントタイプ、表示パラメータ、フォント、などを選択することによって実施されてよい。
【０１４１】
２１２０で、表されている実施形態において、コンピューティングシステムは、テンプレート情報に従ってユーザインターフェースを自動的に生成するようリクエストを受け取る。このとき、リクエストは、要素の組がユーザインターフェースにおいて表示されるためのデータを特定する。
【０１４２】
２１３０で、表されている実施形態において、コンピューティングシステムは、コンポーネントタイプの複数のものに従って、要素の組の１つずつを複数のコンポーネントにグループ分けする。いくつかの実施形態で、機械学習モジュールは、要素をコンポーネントにグループ分けし、そして、自動的に生成されたインターフェースによる過去のユーザ入力及び／又はユーザインタラクションに基づいて訓練されてよい。
【０１４３】
２１４０で、表されている実施形態において、コンピューティングシステムは、表示パラメータに従ってコンポーネントをフォーマットする。表示パラメータは、１つ以上のコンポーネントタイプ内及び／又は複数のコンポーネント間のフォーマッティングを特定してよい。フォーマッティングは、表示デバイスの１つ以上の表示特性に基づいてよい。非視覚的インターフェースの実施形態では、フォーマッティングは、１つ以上の出力デバイス特性（例えば、オーディオデバイスタイプ、対象環境、など）に基づいてよい。
【０１４４】
２１５０で、表されている実施形態において、コンピューティングシステムは、フォーマッティングに基づいてコンポーネントを表示するユーザインターフェースの表示を引き起こす。これは、例えば、１つ以上の通信チャネルを介してインターフェースを送信すること、又は表示デバイスを制御することを含んでよい。
【０１４５】
［例となるスタイル変換技術］
簡単に上述されたように、開示されている技術は、スタイルコピープロシージャを実行するために使用されてよい。例えば、既存のインターフェースは、複数のコンポーネントタイプ及び／又は表示パラメータを決定するためにクロール及び解析されてよい。表示パラメータの例には、制限なしに、レイアウトパラメータ、フォーマッティングパラメータ、フォント、などがある。
【０１４６】
このコンポーネントタイプ及び表示情報は、次いで、クロールされたインターフェースと同じスタイルを示すインターフェースを生成するために使用されてよい。新しいインターフェースは、フォーマッティングを特定しない入力情報を用いて、又はクロールされたインターフェースからのコンポーネントタイプに基づいて変更されるＤＯＭなどのコードを用いて、特定されてよい。いくつかの実施形態で、コンポーネントタイプは、（例えば、どちらか一方のインターフェースに存在していない新しいコンポーネントタイプを生成するために）両方のインターフェースからの要素に基づいて決定されてよい。いくつかの実施形態で、インターフェースは、出力インターフェースにおいて両方のインターフェースからのコンポーネントタイプを維持するようマージされてよい。
【０１４７】
これは、エンティティが直ぐに使用できるテンプレートを使用して最初にそれらのウェブアプリケーションをセットアップするが、次いで、正確なスタイルを実現するためにマーケティングサイトなどの他のインターフェースからスタイルをコピーすることを可能にし得る。
【０１４８】
いくつかの実施形態で、解析モジュールはまた、目標インターフェースの慣習性及び／又は設計ヒューリスティックに関する情報を提供してもよい。このモジュールは、例えば、対象が既知のコンポーネントどの程度類似しているかに関する洞察を提供し得る。モジュールは、手動のインターフェース設計を容易にするよう、クローム拡張機能、スケッチプラグイン、又はアプリビルダーとして実施され得るトポロジスコアを提供してよい。いくつかの実施形態で、このモジュールは、それらのコンポーネントの品質、使用されている異なるコンポーネントの数、などに基づいて設計を客観的に点数付けしてよい。
【０１４９】
［例となる表示デバイス制約］
簡単に上述されたように、インターフェース生成モジュール１３０は、１つ以上の入力制約に基づいてインターフェースを生成してよい。例えば、特定のレイアウト技術は、より小さい若しくはより大きいディスプレイ又は特定の解像度にとって好ましいことがある。更に、特定のコンポーネントタイプは、様々なデバイス制約にとって好ましいことがある。いくつかの実施形態で、インターフェース生成モジュール１３０は、解像度、表示タイプ、又は表示サイズなどの１つ以上のデバイス制約に基づいて、入力データの組について複数の一致するコンポーネントタイプの中から選択してよい。いくつかの実施形態で、インターフェース生成モジュール１３０は、異なる値の制約に基づいて異なるフォーマッティング及び／又はレイアウト技術を使用してよい。従って、同じ基礎をなすインターフェースコードは、いくつかの実施形態で、異なるシナリオのためのテンプレートのハードコーディングを必要とせずに、異なるシナリオで顕著国異なったインターフェースを自動的に生成する。制約の更なる例には、ユーザプロファイル情報、位置、記録タイプ、ドメイン、コミュニティ、などがある。いくつかの実施形態で、機械学習モデルは、異なる制約値について別々訓練されてよい。
【０１５０】
［予測された事象のためのインターフェースの自動生成］
いくつかの実施形態で、コンピューティングシステム（インターフェース生成モジュール１３０を実施する同じコンピューティングシステムであっても又なくてもよい）は、例えば、１つ以上の自動化パラメータに基づいて、ユーザ入力が必要になることを予測し、ユーザ入力を要求するプロシージャを自動的に開始するよう構成される。一例として、ユーザがジオフェンスをまたぐことに基づいて、コンピューティングシステムは、ホテルを予約するようユーザ入力を要求するためのプロシージャを開始してよい。他の例として、顧客関係管理データベースの変更に基づいて、コンピューティングシステムは、イベントのフォローアップ日を更新するためのプロシージャを開始してよい。いくつかの実施形態で、開始されたプロシージャのための予め決定されたインターフェーステンプレートは存在しない。むしろ、そのような実施形態で、インターフェース生成モジュール１３０は、ユーザ入力の入力を要求するインターフェースのために１つ以上のコンポーネントタイプを自動的に選択するよう構成される。モジュール１３０はまた、選択されたコンポーネント内及び／又は選択されたコンポーネント間でフォーマットしてもよい。予測は、本質的に推測的であってよく、例えば、ユーザは、入力を与えないと決定する可能性があることに留意されたい。
【０１５１】
自動化パラメータは、例えば、閾速度、位置、カレンダー情報、アカウント情報、位置情報、時間情報、通信に関する情報、などを含んでよい。様々な実施形態で、それらのパラメータは、プロシージャを推論的にいつ開始すべきかを決定するために使用されてよい。いくつかの実施形態で、それらのパラメータのいくつかはまた、自動的に生成されるインターフェースを制約するためにコンテキストパラメータとして使用されてもよい。
【０１５２】
インターフェース生成モジュール１３０はまた、推論的に生成されたインターフェースを出力するよう複数のタイプのインターフェースの中から選択してもよい。例えば、ユーザの現在の速度に基づいて、システムは、ユーザが運転中であると予測し、音声インターフェースが最も有効であり得ると決定してよい。このシナリオで、コンピューティングデバイスは、電話機によりユーザを呼び出してよい（あるいは、デバイスがモバイル機器又は車両コンピュータシステムである場合には直接に音声を出力する）。他の状況では、コンピューティングシステムは、インターフェースを視覚的に表示すると決定してよい。コンピューティングシステムは、例えば、ＳＭＳメッセージを送信すべきかどうか、電話呼び出しを開始すべきかどうか、Ｂｌｕｅｔｏｏｔｈ（登録商標）接続を使用すべきかどうか、インターネット接続を使用すべきかどうか、などを決定することのように、コンテキスト情報に基づいて、生成されたユーザインターフェースを配信するチャネルを選択してもよい。様々なタイプのインターフェースについて、選択されたコンポーネントタイプは、インターフェース情報の出力を制御しかつユーザ入力を受け取るために使用されてよい。例えば、音声出力は、選択されたコンポーネントタイプに基づいて順序づけられてよく、あるいは、視覚出力は、選択されたコンポーネントタイプに基づいてフォーマットされてよい。
【０１５３】
いくつかの実施形態で、予測モジュールは、入力データの組を（例えば、ＪＳＯＮフォーマットで）生成し、それをインターフェース生成モジュール１３０へ、入力データのフォーマッティング又は編成を示さずに供給するよう構成される。モジュール１３０は、上述された様々な技術に基づいて、予測されたタスクのためのインターフェースを自動的に生成してよい。インターフェース生成モジュール１３０は、予測されたタスクのための生成されたインターフェースとのユーザインタラクション及び／又は管理者フィードバックに基づいてコンポーネントタイプ選択及びフォーマッティングを改善するよう人工知能エンジンを含んでよい。
【０１５４】
いくつかの実施形態で、モジュール１３０は、予測された事象のためのインターフェースを自動的に生成するときに既存のインターフェースのルック・アンド・フィールに適合するために、本明細書で開示されている様々な技術のいずれかを用いて既存のユーザインターフェースからコンポーネントタイプ及び／又は表示パラメータを自動的に生成してよい。これは、コンピューティングシステムが、例えば、既存のインターフェースを制御しないときでさえそのようなインターフェースを推論的に生成することを可能にし得る。
【０１５５】
いくつかの実施形態で、挙動、パターン、コンテキスト、及び／又は信号の形をとるユーザ情報は、ユーザが彼らのデバイスにおいて将来何を行う可能性があるか（例えば、ユーザのデバイスの画面に表示されるべき変更）を予測するために使用される。いくつかの実施形態で、ユーザ情報には、次の、カレンダー、電子メール、位置、時間、速度、などが含まれる。いくつかの実施形態で、クリック及び／又は利用パターンなどのユーザ行動は、ユーザ意図（例えば、所与の時点でユーザが何をしたいか）を予測するために使用される。
【０１５６】
いくつかの実施形態で、ユーザのための１つ以上のユーザインターフェースを予測及び生成するために使用されるユーザ情報は、有利なことに、ユーザインターフェース内のナビゲーションを改善し得る（例えば、ユーザは、即時に、彼らが探しているものを見つけることができる。）。
【０１５７】
図２２は、いくつかの実施形態に従って、予測インターフェースのためにコンポーネントタイプを自動的に選択する方法を表すフロー図である。図２２に示されている方法は、とりわけ、本明細書で開示されているコンピュータ回路、システム、デバイス、要素、又はコンポーネントのいずれかとともに使用されてよい。様々な実施形態で、示されている方法要素のいくつかは、同時に又は図示されているのとは異なった順序で実行されてよく、あるいは、省略されてもよい。追加の方法要素も、望まれるように実行されてもよい。
【０１５８】
２２１０で、表されている実施形態において、コンピューティングシステムは、１つ以上の自動化パラメータに基づいて、ユーザ入力を要求するプロシージャを自動的に開始する。
【０１５９】
２２２０で、表されている実施形態において、コンピューティングシステムは、ユーザ入力の入力を要求するインターフェースのためにユーザインターフェース要素の組を決定する。これは、表示されるべき情報及び受け取られるべき情報を特定する入力データに基づいてよい。
【０１６０】
２２３０で、表されている実施形態において、コンピューティングシステムは、ユーザインターフェース要素の決定された組のためのユーザインターフェース要素のタイプを含む１つ以上のコンポーネントタイプを選択する。要素タイプの直接的な一致は必要とされなくてもよく、例えば、モジュール１３０は、全ての入力データのためのフィールドを含むコンポーネントを選択しようと試みてよいことに留意されたい。いくつかの実施形態で、コンポーネントタイプは、１つ以上のコンテキストパラメータに基づいて選択されてよい。いくつかの実施形態で、コンポーネントタイプは、目標インターフェースタイプに基づいて（例えば、表示解像度、表示のタイプ、表示が音声及び／又は資格出力を含むかどうか、などに基づいて）選択されてよい。
【０１６１】
２２４０で、表されている実施形態において、コンピューティングシステムは、選択された１つ以上のコンポーネントタイプに従ってユーザインターフェース要素を含む１つ以上のコンポーネントの出力を引き起こす。いくつかの実施形態で、これは、１つ以上の通信チャネルを介してユーザインターフェースを特定する情報を送ることを含んでよい。上述された様々な要素は、コンポーネントを出力するデバイスによってローカルで又は他のデバイスによって（例えば、遠隔のサーバによって）実行されてよいことに留意されたい。
【０１６２】
［例となる機械学習技術］
上述されたように、インターフェース生成モジュール１３０は、様々な実施形態で、ユーザインターフェースデータを自動的に生成するために１つ以上の機械学習モジュールを使用してよい。更に、上述されたように、コンポーネントタイプ定義、フォーマッティング情報、表示パラメータ、グループ分け情報、分類情報、などのような様々な情報が、それらの機械学習モジュールのための訓練又は入力データとして使用されてよい。図２３〜２５を参照して以下で更に詳細に論じられるように、様々な実施形態は、ユーザインターフェースを自動的に生成するために使用される１つ以上の機械学習モジュールを更に精緻化するために訓練データとしてユーザフィードバックを利用してよい。
【０１６３】
これより図２３を参照すると、いくつかの実施形態に従って、インターフェース生成モジュール１３０の例となる実施形態のブロック図が表されている。図２３で、インターフェース生成モジュール１３０は、コンポーネント選択モジュール１９３０、フォーマッティングモジュール１９４０、及び機械学習モジュール２３０４を含む。図２３では別々に示されているが、１つ以上の機械学習モジュール２３０４は、いくつかの実施形態では、コンポーネント選択モジュール１９３０又はフォーマッティングモジュール１９４０の部分として含まれてもよいことに留意されたい。機械学習モジュール２３０４は、本明細書では機械学習エンジンとも呼ばれており、様々な適切な機械学習アルゴリズムのいずれかを使用してよい。例えば、いくつかの実施形態で、機械学習エンジンは、ニューラルネットワーク、ベクトルマシン、勾配ブースティング（gradient  boosting）、単純ベイズ（Naive  Bayes）、線形回帰、ロジスティック回帰、削減（reduction）、ランダムフォレスト、などを使用してよい。
【０１６４】
図２３は、テンプレート情報２３０２を更に含む。様々な実施形態で、テンプレート情報２３０２は、１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ１９１０及び１つ以上の表示パラメータ１９２０を定義する。先に更に詳細に論じられたように、様々な実施形態で、コンポーネントタイプは、所与のコンポーネントに含まれている１つ以上のユーザインターフェース要素タイプの組を特定し、表示パラメータは、どのように１つ以上のコンポーネントが（例えば、より大きいユーザインターフェース内で）表示されるべきかを特定する。様々な実施形態で、テンプレート情報２３０２（コンポーネントタイプ１９１０及び表示パラメータ１９２０を含む）は、モジュール１３０によって、又はモジュール１３０にアクセス可能な１つ以上の記憶媒体に、記憶されてよい。
【０１６５】
本明細書で記載されているように、インターフェース生成モジュール１３０は、様々な実施形態に従って、ユーザインターフェースデータを自動的に生成するよう動作可能である。例えば、表されている実施形態では、インターフェース生成モジュール１３０は、ユーザインターフェースを生成するようリクエストを受け取る。このとき、リクエストは、入力データセット２３１０を含む。図１９を参照して上述されたように、インターフェース生成モジュール１３０は、入力データセット２３１０を表示するために使用される１つ以上のコンポーネントタイプ、要素タイプ、及び表示パラメータを選択することによって、ユーザインターフェースデータ２３１２を生成してよい。様々な実施形態で、ユーザインターフェースデータ２３１２は、エンドユーザへ供給され得る１つ以上のユーザインターフェースを特定してよい。更に、いくつかの実施形態で、ユーザインターフェースデータ２３１２は、図２４を参照して記載されるように、最終的にエンドユーザに公開されるユーザインターフェースの１つ以上の態様を選択し得るユーザ（例えば、管理者又はＵＸ設計者）へ供給されることになる複数の提案されたコンポーネント、コンポーネントタイプ、又はユーザインターフェースを特定してよい。
【０１６６】
インターフェース生成モジュール１３０は、ユーザインターフェースデータ２３１２に基づいて１以上のユーザからユーザフィードバック２３１４を受け取ってよい。いくつかの実施形態で、ユーザフィードバック２３１４は、選択行動（例えば、クリック）、コンポーネント又はインターフェースの異なる部分を見るに費やされた時間、ユーザがカーソルをホバリングしたユーザインターフェース要素、などのようなインタラクションを含め、ユーザインターフェースとのユーザインタラクションに対応してよい。いくつかの実施形態で、ユーザフィードバック２３１４は、個々のユーザのユーザインタラクションに、又はユーザの１つ以上のグループのユーザインタラクションに対応してよい。
【０１６７】
複数の提案されたユーザインターフェース又はユーザインターフェースコンポーネントがユーザに提供される実施形態で、ユーザフィードバック２３１４は、ユーザによって選択された提案されたインターフェース又はコンポーネントに関する情報を含んでよい。例えば、ユーザフィードバック２３１４は、提案されたユーザインターフェース又はユーザインターフェースコンポーネントのうちのどれが選択されたかを示し、選択されたコンポーネントタイプを特定し、選択されたユーザインターフェース又はコンポーネントに関連した様々な表示パラメータ又はフォーマッティング特性（例えば、サイズ、回転、レイアウト、フォント色、フォントサイズ、など）を特定する、などしてよい。
【０１６８】
様々な実施形態で、ユーザフィードバック２３１４は、機械学習モジュール２３０４の１つ以上を訓練するために使用されてよい。例えば、いくつかの実施形態で、機械学習モジュール２３０４の１つ以上は、リンク要素が選択される回数を増やすこと、インターフェースの様々な部分を見るのに費やされる時間の量を増やすこと、などのような、特定のユーザ行動を最大化又は促進しようとして、所与のユーザインターフェース又はコンポーネントとのユーザインタラクションに対応するデータを訓練データとして使用してよい。更に、様々な実施形態で、機械学習モジュール２３０４は、入力データセット２３１０に対する複数の提案されたユーザインターフェース又はコンポーネントのうちの選択された１つに関連したユーザフィードバック２３１４に基づいて訓練されてよい。例えば、１つ以上の機械学習モジュール２３０４は、ユーザ（例えば、設計者）によって選択されたコンポーネント又はユーザインターフェースに関連した情報（例えば、表示パラメータ、コンポーネントタイプ、など）を訓練データとして使用してよい。このデータに基づいて、機械学習モジュールは、いくつかの実施形態で、提案されたユーザインターフェース又はコンポーネントが選択される様態を修正してよい。例えば、いくつかの実施形態で、このフィードバックデータに基づいて訓練を受けた後に、インターフェース生成モジュール１３０は、ユーザ若しくは類似したユーザによって、又は類似した入力データセット２３１０について以前に選択されたものと類似しているユーザインターフェース又はコンポーネントを提案してよい。同様に、インターフェース生成モジュール１３０は、フィードバックデータに基づいてコンポーネント内又はコンポーネント間でフォーマットしてよい。機械学習モジュール２３０４は、様々な実施形態に従って、教師あり又は教師なし方式でユーザフィードバック２３１４に基づいて訓練されてよいことに留意されたい。
【０１６９】
いくつかの実施形態で、複数のタイプの機械学習モジュールが、ユーザインターフェースを自動的に生成するために使用されてよい。例えば、１つの機械学習エンジンは、コンポーネントタイプを選択してよく、他のエンジンは、選択されたコンポーネントをレイアウト及びフォーマットしてよい。いくつかの実施形態で、ユーザフィードバックに基づく機械学習モジュールの精緻化によれば、実施されるタイプの機械学習モジュールの全て又は一部が精緻化されてよい。
【０１７０】
図２３は、プロファイルデータ２３０６を更に表す。上述されたように、いくつかの実施形態で、ユーザフィードバック２３１４は、個々のユーザのユーザインタラクションに、又はユーザの１つ以上のグループのユーザインタラクションに対応してよい。いくつかのそのような実施形態で、個々のユーザ又はユーザのグループに対応するデータは、それらの個々のユーザ又はグループについて、プロファイルデータ２３０６において特定されるプロファイルを生成するために使用されてよい。次いで、プロファイルは、機械学習モジュール２３０４の１つ以上への入力として使用されてよい。様々な実施形態で、これは、インターフェース生成モジュール１３０が、個人又はグループの各々のユーザ行動に基づいて所与の個人又はグループについてカスタマイズされているユーザインターフェース又はユーザインターフェースコンポーネントを自動的に生成することを可能にし得る。
【０１７１】
図２４は、いくつかの実施形態に従って、様々な自動的に生成されたユーザインターフェースコンポーネントを提示するために使用されるインターフェースの例を表す。図２４で、インターフェース２４００は、コンポーネント２４０２〜２４０６を表し、各コンポーネントは、入力データセット２３１０の一部を表示するために使用される提案されたユーザインターフェースコンポーネントであってよい。例えば、図２３を参照して論じられたように、インターフェース生成モジュール１３０は、ユーザインターフェースを生成するようリクエストを受け取ってよい。このとき、リクエストは、入力データセット２３１０を特定する。インターフェース生成モジュール１３０は、次いで、入力データセット２３１０を表示するために使用すべき様々な提案されたコンポーネントタイプを（例えば、コンポーネント選択モジュール１９３０を用いて）自動的に選択してよい。更に、様々な実施形態で、モジュール１３０は、提案されたコンポーネントタイプに対応する代表コンポーネント（例えば、コンポーネント２４０２〜２４０６）を自動的に生成してよく、代表コンポーネント２４０２〜２４０６を含むインターフェース２４００の表示をユーザに引き起こしてよい。ユーザは、次いで、入力データセット２３１０を表示するために使用すべき提案されたコンポーネント２４０２〜２４０６から１つ以上を選択してよい。この選択は、入力データセット２３１０について、１以上のエンドユーザに公開すべきユーザインターフェースを自動的に生成するために使用されてよい。更に、上述されたように、ユーザの選択は、１つ以上の機械学習モジュール２３０４のための訓練データとして使用されるように、ユーザフィードバック２３１４としてインターフェース生成モジュール１３０へ供給されてよい。
【０１７２】
様々な実施形態で、ユーザに提案されたコンポーネント２４０２〜２４０６の正確さは、モジュール１３０がユーザフィードバック２３１４に基づいて更に精緻化される繰り返し強化学習プロセスを通じて改善され得ることに留意されたい。すなわち、様々な開示されている技術を適用すると、インターフェース生成モジュール１３０は、機械学習モデルを通じて得られた最良の実施（best  practices）に従って、所与の入力データセット２３１０を表すために正確なコンポーネントを選択し、提案されたコンポーネントをユーザインターフェース内でレイアウトするよう最適化され得る。よって、様々な実施形態で、インターフェース生成モジュール１３０は、機械学習モジュール２３０４を精緻化し、改善されたユーザインターフェースをユーザに提示するために、ユーザ選択を使用してよい。
【０１７３】
更に、明りょうさのために、３つのコンポーネントしかインターフェース２４００には示されていないことに留意されたい。この実施形態は、単に一例として与えられており、本開示の範囲を制限するよう意図されない。他の実施形態では、如何なる適切な数のコンポーネントも、インターフェース２４００において設けられてよい。
【０１７４】
これより図２５を参照すると、いくつかの実施形態に従って、コンポーネントベースのユーザインターフェースを自動的に生成するために使用される機械学習エンジンをユーザフィードバックに基づいて精緻化する方法２５００の例を表すフロー図が示されている。図２５に示されている方法は、とりわけ、本明細書で開示されているコンピュータ回路、システム、デバイス、要素、又はコンポーネントのいずれかとともに使用されてよい。様々な実施形態で、方法２５００は、図２３のインターフェース生成モジュール１３０に含まれている１つ以上の機械学習モジュール２３０４を精緻化するために実行されてよい。様々な実施形態で、方法２５００は、図２５を参照して記載されている動作を引き起こすようコンピュータシステムによって実行可能であるプログラム命令を記憶している非一時的なコンピュータ可読媒体を含む（又はそれへのアクセスを有する）コンピュータシステムによって実行されてよい。図２５で、方法２５００は、要素２５０２〜２５１２を含む。これらの要素は、理解を簡単にするために特定の順序で示されているが、他の順序が使用されてもよい。様々な実施形態で、方法要素のいくつかは、同時に又は図示されているのとは異なった順序で実行されてよく、あるいは、省略されてもよい。追加の方法要素も、望まれるように実行されてもよい。
【０１７５】
２５０２で、表されている実施形態において、コンピュータシステムは、１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ及び１つ以上の表示パラメータを定義するテンプレート情報を記憶する。表されている実施形態で、コンポーネントタイプは、所与のコンポーネントに含まれている１つ以上のユーザインターフェース要素タイプの組を特定し、表示パラメータは、どのように１つ以上のコンポーネントが表示されるべきかを特定する。
【０１７６】
２５０４で、表されている実施形態において、コンピュータシステムは、ユーザインターフェースを自動的に生成するようリクエストを受け取る。このとき、リクエストは、ユーザインターフェースを用いて表示されるべきデータセットを特定する。
【０１７７】
２５０６で、表されている実施形態において、コンピュータシステムは、リクエストに応答して少なくとも１つのユーザインターフェースを自動的に生成する。このときの生成は、テンプレート情報及びデータセットを入力として使用する１つ以上の機械学習モジュールによって実行される。例えば、リクエストに応答して、１つ以上の機械学習モジュール２３０４は、ユーザインターフェースデータ２３１２を生成するために入力データセット２３１０及びテンプレート情報２３０２を使用してよい。上述されたように、ユーザインターフェースデータ２３１２は、１つ以上の自動的に生成されたユーザインターフェースを特定してよい。
【０１７８】
２５０８で、表されている実施形態において、コンピュータシステムは、少なくとも１つのユーザインターフェースを１以上のユーザへ供給する。いくつかの実施形態で、供給されるインターフェースは、入力データセット２３１０を表示するための１つ以上のコンポーネントタイプの選択と、１つ以上のユーザインターフェース要素において入力データセット２３１０を表示する、１つ以上のコンポーネントタイプに対応している１つ以上のコンポーネントの配置とを含んでよい。
【０１７９】
２５１０で、表されている実施形態において、コンピュータシステムは、少なくとも１つのユーザインターフェースに関連したユーザフィードバックを受け取る。上述されたように、ユーザフィードバック２３１４は、様々な形態をとってよい。例えば、いくつかの実施形態で、ユーザフィードバックは、少なくとも１つのユーザインターフェースとのユーザインタラクションに対応するデータを含む。いくつかの実施形態で、例えば、ユーザインタラクションに対応するデータは、少なくとも１つのユーザインターフェースに含まれている１つ以上のユーザインターフェース要素についてのクリックデータ、又は少なくとも１つのユーザインターフェースに含まれている１つ以上のユーザインターフェース要素についてのホバーデータ、のうちの少なくとも１つを含む。他の実施形態で、ユーザフィードバック２３１４は、特定のユーザ又は１以上のユーザの特定の組（例えば、マルチテナントシステム内の特定のテナントに関連したユーザの全て又は一部）のユーザインタラクションに対応するデータを含んでよい。
【０１８０】
２５１２で、表されている実施形態において、方法２５００は、ユーザフィードバックに基づいて１つ以上の機械学習モジュールの少なくとも１つを訓練することを含む。いくつかの実施形態で、要素２５１２は、特定のユーザ又は１以上のユーザの特定の組のユーザインタラクションに対応するデータに基づいて１つ以上の機械学習モジュールの少なくとも１つを選択的に訓練することを含んでよい。
【０１８１】
いくつかの実施形態で、少なくとも１つのユーザインターフェースを自動的に生成することは、入力データセット２３１０のサブセットについて複数の提案されたコンポーネントタイプを自動的に選択することを含んでよいことに留意されたい。例えば、いくつかのそのような実施形態で、方法２５００は、複数の提案されたコンポーネントタイプについて、対応する複数の代表コンポーネントを自動的に生成し、対応する複数の代表コンポーネントを含む特定のユーザインターフェースの表示を引き起こすことを更に含んでよく、このとき、対応する複数の代表コンポーネントの夫々は、データセットのサブセットを表す。更に、いくつかのそのような実施形態で、コンピュータシステムは、複数の提案されたコンポーネントタイプの選択されたコンポーネントタイプを示す入力を受け取ってよく、このとき、１以上のユーザに供給された少なくとも１つのユーザインターフェースは、選択されたコンポーネントタイプを用いて表されたデータセットの少なくとも一部を含む。
【０１８２】
更に、いくつかの実施形態で、少なくとも１つのユーザインターフェースを１以上のユーザへ供給することは、第１のインタラクティブフォーマットで（例えば、コンピュータモニタ上の表示により）及び第２の異なるインタラクティブフォーマットで（例えば、ＡＲ／ＶＲデバイス、ＨＵＤデバイス、モバイルデバイス上のディスプレイ、オーディオフォーマット、又はあらゆる他の適切なインタラクティブフォーマットにより）少なくとも１つのユーザインターフェースを供給することを含み、ユーザフィードバック２３１４は、少なくとも１つのユーザインターフェースと相互作用するために１以上のユーザによって使用されるインタラクティブフォーマットを特定するデータを含んでよいことに留意されたい。
【０１８３】
いくつかの実施形態で、方法２５００は、ユーザフィードバック２３１４に基づいてテンプレート情報２３０２を変更することを更に含んでよい。例えば、いくつかの実施形態で、コンピュータシステムは、ユーザ（例えば、管理者）によって選択される選択されたコンポーネントに関連した特定のコンポーネントタイプ又は表示パラメータに基づいてコンポーネントタイプ１９１０又は表示パラメータ１９２０に関連したデータを変更してよい。更には、ユーザフィードバック２１４が特定のユーザ又は１以上のユーザの特定の組のユーザインタラクションに対応するデータを含む実施形態では、方法２５００は、特定のユーザ又は１以上のユーザの特定の組についてのプロファイルを生成することを含んでよく、プロファイルは、次いで、１つ以上の機械学習モジュール２３０４の少なくとも１つのための入力として使用されてよい。
【０１８４】
［例となるコンピューティングデバイス］
これより図２６を参照すると、コンピューティングデバイス（コンピューティングシステムとも呼ばれ得る）２６１０のブロック図が、いくつかの実施形態に従って表されている。コンピューティングデバイス２６１０は、本開示の様々な部分を実施するために使用されてよい。コンピューティングデバイス２６１０は、モバイルデバイス、サーバコンピュータシステム、クライアントコンピュータシステム、又は本開示の部分を含むあらゆる他のコンピューティングシステムとして使用され得るデバイスの一例である。
【０１８５】
コンピューティングデバイス２６１０は、制限なしに、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、携帯電話機、メインフレームコンピュータシステム、ウェブサーバ、ワークステーション、又はネットワークコンピュータを含む如何なる適切なタイプのデバイスでもあってよい。図示されるように、コンピューティングデバイス２６１０は、インターコネクト２６６０（例えば、システムバス）を介して接続されているプロセッシングユニット２６５０、記憶サブシステム２６１２、及び入出力（Ｉ／Ｏ）インターフェース２６３０を含む。Ｉ／Ｏインターフェース２６３０は、１つ以上のＩ／Ｏデバイス２６４０へ結合されてよい。コンピューティングデバイス２６１０ｈが、ネットワークインターフェース２６３２を更に含む。ネットワークインターフェース２６３２は、例えば、他のコンピューティングデバイスとの通信のために、ネットワーク２６２０へ結合されてよい。
【０１８６】
プロセッシングユニット２６５０は、１つ以上のプロセッサを含み、いくつかの実施形態で、１つ以上のコプロセッサユニットを含む。いくつかの実施形態で、プロセッシングユニット２６５０の複数のインスタンスは、インターコネクト２６６０へ結合されてよい。プロセッシングユニット２６５０（又はプロセッシングユニット２６５０内の各プロセッサ）は、キャッシュ又は他の形態のオンボードメモリを含んでよい。いくつかの実施形態で、プロセッシングユニット２６５０は、汎用のプロセッシングユニットとして実施されてよく、他の実施形態では、特別の目的のプロセッシングユニット（例えば、ＡＳＩＣ）として実施されてよい。一般に、コンピューティングデバイス２６１０は、如何なる特定のタイプのプロセッシングユニット又はプロセッササブシステムに制限されない。
【０１８７】
本明細書で使用されるように、「プロセッシングユニット」又は「プロセッシング要素」との語は、動作を実行するよう構成された回路を、又は動作を実行するよう１つ以上のプロセッサによって実行可能であるプログラム命令を記憶しているメモリを指す。従って、プロセッシングユニットは、様々な方法で実施されたハードウェア回路として実施されてよい。ハードウェア回路は、例えば、カスタムの超大規模集積回路（ＶＬＳＩ）回路若しくはゲートアレイ、ロジックチップなどの既製の半導体、トランジスタ、又は他のディスクリート部品を含んでよい。プロセッシングユニットはまた、フィールドプログラマブルゲートアレイ、プログラム可能なアレイロジック、プログラム可能なロジックデバイス、などのようなプログラム可能なハードウェアデバイスにおいて実施されてもよい。プロセッシングユニットはまた、特定の動作を実行するよう如何なる適切な形態の非一時的なコンピュータ可読媒体からもプログラム命令又はコンピュータ命令を実行するよう構成されてよい。
【０１８８】
記憶サブシステム２６１２は、プロセッシングユニット２６５０によって（例えば、プロセッシングユニット２６５０によって実行可能な命令及びプロセッシングユニット２６５０によって使用されるデータを記憶するために）使用可能である。記憶サブシステム２６１２は、ハードディスクストレージ、フロッピー（登録商標）ディスクストレージ、リムーバブルディスクストレージ、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ−ＳＲＡＭ、ＥＤＯ  ＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、など）、ＲＯＭ（ＰＲＯＭ、ＥＥＰＲＯＭ、など）、などを含む如何なる適切なタイプの物理メモリ媒体によっても実施されてよい。記憶サブシステム２６１２は、いくつかの実施形態で、もっぱら揮発性メモリから成ってよい。記憶サブシステム２６１２は、コンピューティングデバイス２６１０に本明細書で開示されている様々な技術を実施させるよう実行可能なプログラム命令を含め、プロセッシングユニット２６５０を用いてコンピューティングデバイス２６１０によって実行可能なプログラム命令を記憶してよい。
【０１８９】
Ｉ／Ｏインターフェース２６３０は、１つ以上のインターフェースを表してよく、様々な実施形態に従って、他のデバイスへ結合し、それと通信するよう構成された様々なタイプのインターフェースのいずれであってもよい。いくつかの実施形態で、Ｉ／Ｏインターフェース２６３０は、フロントサイドを１つ以上のバックサイドバスへのブリッジチップであってよい。Ｉ／Ｏインターフェース２６３０は、１つ以上の対応するバス又は他のインターフェースを介して１つ以上のＩ／Ｏデバイス２６４０へ結合されてよい。Ｉ／Ｏデバイスの例には、記憶デバイス（ハードディスク、光学ドライブ、リムーバブルフラッシュドライブ、ストレージアレイ、ＳＡＭ、若しくは関連するコントローラ）、ネットワークインターフェースデバイス、ユーザインターフェースデバイス又は他のデバイス（例えば、グラフィクス、音響、など）が含まれる。
【０１９０】
図２６のコンピューティングデバイスは、開示されている概念を明らかにするための１つの実施形態であることが留意される。他の実施形態では、コンピューティングデバイスの様々な態様は異なってよい。例えば、いくつかの実施形態で、追加のコンポーネント、又は表されているコンポーネントの複数のインスタンスが、含まれてもよい。
【０１９１】
具体的な実施形態が先に記載されてきたが、これらの実施形態は、ただ１つの実施形態が特定の特徴に関して記載されている場合でさえ、本開示の範囲を制限するよう意図されない。本開示で提供される特徴の例は、別なふうに述べられない限りは、制限よりむしろ例示であるよう意図される。上記の説明は、本開示の利益を有する当業者に明らかであるような代替、変更、及び均等を網羅するよう意図されている。
【０１９２】
本開示の範囲は、本明細書で扱われる問題のいずれか又は全てを軽減するかどうかにかかわらず、本明細書で（明示的に又は暗黙的に）開示されている如何なる特徴若しくは特徴の組み合わせも、又はそれらの如何なる一般化も含む。従って、新しい請求項は、そのような特徴の任意の組み合わせに対して本出願（又はそれに優先権を主張する出願）の審査中に作成されてよい。特に、添付の特許請求の範囲を参照して、従属請求項からの特徴は、独立請求項のそれらと組み合わされてよく、各々の独立請求項からの特徴は、添付の特許請求で列挙されている具体的な組み合わせでだけでなく、如何なる適切な様態でも組み合わされてよい。
【０１９３】
［例となる実施形態］
以下は、例となる実施形態の番号付けされたリストである。それらは請求項のような形式で書かれているが、これらの実施形態は、（別の項目で続く）本願の特許請求の範囲ではなく、具体的に本明細書で企図及び開示されている多数の実施形態にすぎない。リストアップされている実施形態は、非限定的な非排他的例として与えられている。
【０１９４】
１．ユーザインターフェースを自動的に生成する方法であって、
コンピューティングシステムによって、１つ以上のユーザインターフェースについて識別された複数のコンポーネントタイプ及び１つ以上の表示パラメータを定義するテンプレート情報を記憶することであり、コンポーネントタイプは、コンポーネントに含まれている１つ以上のユーザインターフェース要素タイプの組を特定し、表示パラメータは、どのようにして１つ以上のコンポーネントが表示されるべきであるかを特定する、前記記憶することと、
前記コンピューティングシステムによって、前記テンプレート情報に従ってユーザインターフェースを自動的に生成するようリクエストを受け取ることであり、前記リクエストは、前記ユーザインターフェースにおいて表示されるべき要素の組についてのデータを特定する、前記受け取ることと、
前記コンピューティングシステムによって、前記要素の組の中の要素を、前記コンポーネントタイプの複数のものに従って、複数のコンポーネントにグループ分けすることと、
前記表示パラメータに従って前記コンポーネントをフォーマットすることと、
前記フォーマットすることに基づいて前記コンポーネントを表示するユーザインターフェースの表示を引き起こすことと
を有する方法。
【０１９５】
２．コンピューティングデバイスによって、１つ以上の自動化パラメータに基づいてユーザ入力を要求するプロシージャを自動的に開始することと、
前記コンピューティングデバイスによって、前記ユーザ入力の入力を要求するインターフェースのためのユーザインターフェース要素の組を決定することと、
前記コンピューティングデバイスによって、前記決定されたユーザインターフェース要素の組についてのユーザインターフェース要素のタイプを含む１つ以上のコンポーネントタイプを選択することと、
前記選択された１つ以上のコンポーネントタイプに従って前記ユーザインターフェース要素を含む出力又は１つ以上のコンポーネントを引き起こすことと
を有する方法。
【０１９６】
３．コンピューティングシステムによって、階層的なユーザインターフェースコードに基づいて、グラフィカルユーザインターフェースの複数の視覚的な要素を決定することと、
前記コンピューティングシステムによって、前記複数の視覚的な要素の１つずつについて前記インターフェース内の座標を決定することと、
前記コンピューティングシステムによって、前記複数の視覚的な要素についての前記階層的なユーザインターフェースコード内の深さレベルを決定することと、
前記コンピューティングシステムによって、前記決定された座標及び深さレベルに基づいて前記複数の視覚的な要素の組をグループ分けすることと、前記コンピューティングシステムによって、閾類似性基準を満足する２つ以上のグループを識別することと
を有する方法。
【０１９７】
４．ユーザインターフェースコードに基づいて、グラフィカルユーザインターフェースの複数の視覚的な要素を決定することと、
前記ユーザインターフェースコードに基づいて、前記複数の視覚的な要素の１つずつについて境界ボックスの座標を決定することと、
前記視覚的な要素を少なくとも第１及び第２のグループにグループ分けすることと、
前記第１及び第２のグループ内の要素のタイプを決定することと、
前記第１及び第２のグループ内の要素のタイプの間の一致を検出することに応答して、前記第１及び第２のグループ内の決定された境界ボックスの座標に基づいて、前記第１及び第２のグループについて類似性メトリックを決定することと、
前記類似性メトリックが閾値を満足することに応答して、前記第１及び第２のグループに対応するコンポーネントタイプを定義する情報を記憶することと
を有する方法。
【０１９８】
５．複数のメタデータフィールドの既知のメタデータ値と、該既知のメタデータ値の１つずつと視覚的なユーザインターフェース要素の複数のタイプとの間の関係の指示とを特定する情報を記憶することと、
グラフィカルユーザインターフェースの複数の視覚的要素について各々のメタデータ値を決定することであり、該メタデータ値は、前記複数の視覚的な要素を特定するユーザインターフェースコードに含まれている、前記決定することと、
前記記憶されている関係の指示と前記決定されたメタデータ値とに基づいて、前記複数の視覚的な要素の１つずつを点数付けして、前記視覚的な要素の複数のタイプの夫々について点数値を生成することと、
前記点数付けに基づいて、前記視覚的な要素の複数のタイプに従って前記複数の視覚的な要素を分類することと、
前記分類された要素を特定する情報を記憶することと
を有する方法。
【０１９９】
６．階層的なユーザインターフェースコードに基づいて、グラフィカルユーザインターフェースの複数の視覚的な要素を決定することと、
前記複数の視覚的な要素の１つずつについて境界ボックスの座標を決定することと、
前記複数の可視的な要素について前記階層的なユーザインターフェースコード内の深さを決定することと、
前記決定された座標及び深さの教師なしクラスタリングを用いて前記複数の視覚的な要素についてグループ分けを生成することと、
前記生成されたグループ分けを特定する情報を記憶することと
を有する方法。
【図１】
2021532490.tif 000003
【図２Ａ】
2021532490.tif 000004
【図２Ｂ】
2021532490.tif 000005
【図３】
2021532490.tif 000006
【図４Ａ】
2021532490.tif 000007
【図４Ｂ】
2021532490.tif 000008
【図５】
2021532490.tif 000009
【図６Ａ】
2021532490.tif 000010
【図６Ｂ】
2021532490.tif 000011
【図７】
2021532490.tif 000012
【図８】
2021532490.tif 000013
【図９Ａ】
2021532490.tif 000014
【図９Ｂ】
2021532490.tif 000015
【図１０】
2021532490.tif 000016
【図１１】
2021532490.tif 000017
【図１２Ａ】
2021532490.tif 000018
【図１２Ｂ】
2021532490.tif 000019
【図１３】
2021532490.tif 000020
【図１４Ａ】
2021532490.tif 000021
【図１４Ｂ】
2021532490.tif 000022
【図１５】
2021532490.tif 000023
【図１６】
2021532490.tif 000024
【図１７】
2021532490.tif 000025
【図１８】
2021532490.tif 000026
【図１９】
2021532490.tif 000027
【図２０】
2021532490.tif 000028
【図２１】
2021532490.tif 000029
【図２２】
2021532490.tif 000030
【図２３】
2021532490.tif 000031
【図２４】
2021532490.tif 000032
【図２５】
2021532490.tif 000033
【図２６】
2021532490.tif 000034
【国際調査報告】
2021532490.tif 000035
2021532490.tif 000036