コントロールイベントの作成支援

著者らは特許

G06F8/33 -
G06F8/34 -

の所有者の特許 JP2016528568:

マイクロソフト テクノロジー ライセンシング,エルエルシー

 

挙動を行うようにコントロールをトリガすることになるイベントの選択促進。コントロールは、挙動をトリガするのに使用可能な複数のイベントを有する。恐らくは、ユーザ、特には、プログラマでない人が、任意の所与の挙動をトリガする適切なイベントを選択することは、難しい場合があり得る。システムは、ユーザが挙動を指定することに応答して、対象の挙動をコントロールが行う意図と一致している1つまたは複数のイベントのセットを自動的に識別することによって助けになる。自動的に識別されたイベントはまた、挙動を行う際のコントロールによる動作の対象としてユーザが識別する対象のデータに依存することも可能になる。システムは、自動的に識別されたイベントのうちの1つまたは複数を提案することが可能になり、選択されたイベントに応答して挙動を行うようにコントロールを自動的に構成することさえ可能になる。

 

 

「再計算文書」は、様々なデータソースおよびデータシンクを示す電子文書であり、データソースとデータシンクとの間の宣言変換を可能にする。様々なデータソースとデータシンクとを相互接続する任意の所与の変換セットの場合、データソースの出力は、データシンクによって消費される場合があり、またはデータソースの出力は、データシンクによって消費されることに先立って変換を受ける場合がある。これらの様々な変換は評価され、再計算文書全体を通じて表される1つまたは複数の出力をもたらす。
ユーザは、コーディングについての深い知識を持たずに宣言変換を追加および編集することができる。そのような自動的な編集は、再計算される変換をもたらし、それにより、1つまたは複数の出力の変更が生じる。
再計算文書の具体的な例が、セルの格子を含むスプレッドシート文書である。任意の所与のセルは、セル内に表示される特定の値を出力するために評価される式を含む場合があり得る。式は、1つまたは複数の他のセルもしくは値など、データソースを示す場合があり得る。
本明細書に記載の少なくともいくつかの実施形態は、挙動を行うようにコントロールをトリガすることになるイベントの選択促進に関する。コントロールは、挙動をトリガするのに使用可能な複数のイベントを有する。恐らくは、ユーザ、特には、プログラマでない人が、任意の所与の挙動をトリガする適切なイベントを選択することは、難しい場合があり得る。システムは、ユーザが挙動を指定することに応答して、対象の挙動をコントロールが行う意図と一致している1つまたは複数のイベントのセットを自動的に識別することによって助けになる。自動的に識別されたイベントはまた、挙動を行う際のコントロールによる動作の対象としてユーザが識別する対象のデータに依存することも可能になる。システムは、自動的に識別されたイベントのうちの1つまたは複数を提案することが可能になり、選択されたイベントに応答して挙動を行うようにコントロールを自動的に構成することさえ可能になる。
この「発明の概要」は、特許請求される主題の主要な特徴または基本的な特徴を識別するように意図するものでも、特許請求される主題の範囲を決定する際の助けとして使用すべきと意図するものでもない。
上述のならびに他の利点および特徴を得ることができる方式について記載するために、様々な実施形態のより特定の記載を添付の図面を参照することによって与えることにする。これらの図面がサンプル実施形態のみを描写し、そのため、本発明の範囲を限定していると見なすべきではないことを理解しながら、諸実施形態について、付随する図面の使用により、追加の特定性および詳細とともに記載し、説明することにする。
本明細書に記載のいくつかの実施形態がその中に採用され得るコンピューティングシステムを抽象的に示す図である。 複数の挙動を行うことができ、挙動をトリガする際に使用するためのいくつかのイベントが利用可能なコントロールを示す図である。 階層的構造の合成コントロールを示す図である。 挙動を行うようにコントロールを構成するための方法を示すフローチャートである。 変換を介在する場合のいくつかのデータソースとデータシンクとを示す、例示的な再計算ユーザインターフェースを抽象的に示す図である。 変換チェーンにアクセスするコンパイラを含み、コンパイルされたコードならびに依存関係チェーンを作り出す例示的なコンパイル環境を示す図である。 再計算ユーザインターフェースの変換チェーンをコンパイルするための方法を示すフローチャートである。 本発明の原理がその中に採用され得、入力データに依存するビュー構成を構築するデータ駆動の構成フレームワークを含んだ環境を示す図である。 図8の環境の1つの例を表すパイプライン環境を示す図である。 図9のパイプラインのデータ部分の実施形態を概略的に示す図である。 図9のパイプラインの分析部分の実施形態を概略的に示す図である。 図9のパイプラインのビュー部分の実施形態を概略的に示す図である。
本明細書に記載の少なくともいくつかの実施形態は、挙動を行うようにコントロールをトリガすることになるイベントの選択促進に関する。コントロールは、挙動をトリガするのに使用可能な複数のイベントを有する。恐らくは、ユーザ、特には、プログラマでない人が、任意の所与の挙動をトリガする適切なイベントを選択することは、難しい場合があり得る。システムは、ユーザが挙動を指定することに応答して、対象の挙動をコントロールが行う意図と一致している1つまたは複数のイベントのセットを自動的に識別することによって助けになる。自動的に識別されたイベントはまた、挙動を行う際のコントロールによる動作の対象としてユーザが識別する対象のデータに依存することも可能になる。システムは、自動的に識別されたイベントのうちの1つまたは複数を提案することが可能になり、選択されたイベントに応答して挙動を行うようにコントロールを自動的に構成することさえ可能になる。
コンピューティングシステムのいくつかの導入的な議論について、図1に関して記載することにする。次いで、挙動を行うようにコントロールをトリガするのに使用されるイベントの選択を促進するする方法について、後に続く図に関して記載することにする。
現在、コンピューティングシステムは、幅広い種々の形態をますます取るようになってきている。コンピューティングシステムは、例えば、ハンドヘルドデバイス、電化製品、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散コンピューティングシステム、または従来はコンピューティングシステムと見なされていなかったデバイスとさえすることができる。本明細書および特許請求の範囲では、用語「コンピューティングシステム」は、少なくとも1つの物理的および有形のプロセッサと、プロセッサによって実行可能なコンピュータ実行可能命令をその上に有することができる物理的および有形のメモリとを含む任意のデバイスまたはシステム(あるいはそれらの組合せ)を含むように広範に定義される。メモリは、任意の形態を取ることも、およびコンピューティングシステムの性質および形態に依存することもある。コンピューティングシステムは、ネットワーク環境を介して分散されることも、および複数の構成素コンピューティングシステムを含むこともある。
図1に示すように、その最も基本的な構成では、コンピューティングシステム100は、典型的には、少なくとも1つの処理装置102およびメモリ104を含む。メモリ104は、揮発性であっても、不揮発性であっても、またはその2つの何らかの組合せであってもよい物理システムメモリとすることができる。用語「メモリ」はまた、物理記憶媒体など、不揮発性の大容量記憶装置を示すように本明細書において使用され得る。コンピューティングシステムが分散される場合、処理、メモリおよび/または記憶装置の能力も同様に分散され得る。本明細書に使用される場合、用語「実行可能なモジュール」または「実行可能なコンポーネント」は、コンピューティングシステムにおいて実行され得るソフトウェアオブジェクト、ルーティング、または方法を示すことができる。本明細書に記載の異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステムにおいて実行するオブジェクトまたは方法として(例えば、個別スレッドとして)実施され得る。
後に続く記載では、諸実施形態が、1つまたは複数のコンピューティングシステムによって行われる行為を参照して記載される。そのような行為がソフトウェア内で実施される場合、行為を行う関連のコンピューティングシステムの1つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答して、コンピューティングシステムの動作を指示する。例えば、そのようなコンピュータ実行可能命令は、コンピュータプログラム製品を形成する1つまたは複数のコンピュータ可読媒体において実装され得る。そのような動作の例には、データの操作が含まれる。コンピュータ実行可能命令(および操作されたデータ)は、コンピューティングシステム100のメモリ104に記憶され得る。コンピューティングシステム100はまた、通信チャネル108を含んでいる場合があり、この通信チャネル108により、コンピューティングシステム100は、例えば、ネットワーク110を介して他のメッセージプロセッサと通信することが可能になる。コンピューティングシステム100はまた、ディスプレイ112を含み、このディスプレイ112は、ユーザに視覚的表現を表示するのに使用可能である。
本明細書に記載の諸実施形態は、より詳細に後述されるように、例えば、1つまたは複数のプロセッサおよびシステムメモリなど、コンピュータハードウェアを含んだ専用または汎用のコンピュータを備えること、あるいは利用することができる。本明細書に説明の諸実施形態はまた、コンピュータ実行可能命令および/またはデータ構造を搬送あるいは記憶するための物理的および他のコンピュータ可読媒体を含む。そのようなコンピュータ可読媒体は、汎用または専用のコンピュータシステムによってアクセス可能である任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理記憶媒体である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は、伝送媒体である。したがって、限定ではなく、例として、本発明の諸実施形態は、少なくとも2つの明らかに異なる種類のコンピュータ可読媒体、すなわち、コンピュータ記憶媒体と伝送媒体とを備えることができる。
コンピュータ記憶媒体には、RAM、ROM、EEPROM、CD−ROM、または他の光ディスク記憶装置、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、あるいはコンピュータ実行可能命令またはデータ構造の形態で所望のプログラムコード手段を記憶するのに使用可能であり、かつ汎用または専用のコンピュータによってアクセス可能である任意の他の有形媒体が含まれる。
「ネットワーク」は、コンピュータシステムおよび/またはモジュールならびに/あるいは他の電子デバイスの間の電子データの輸送を可能にする1つまたは複数のデータリンクと定義される。情報が、ネットワークあるいは別の通信接続(ハードワイヤードか、ワイヤレスか、またはハードワイヤードもしくはワイヤレスの組合せかのいずれか)を介してコンピュータに転送または提供されるとき、コンピュータは、その接続を伝送媒体として適正に見なす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形態で所望のプログラムコード手段を搬送するのに使用可能であり、かつ汎用または専用のコンピュータによってアクセス可能であるネットワークおよび/またはデータリンクを含むことができる。上記の組合せもまた、コンピュータ可読媒体の範囲の中に含めるべきである。
さらには、コンピュータ実行可能命令またはデータ構造の形態のプログラムコード手段は、様々なコンピュータシステムコンポーネントに達すると同時に伝送媒体からコンピュータ記憶媒体に自動的に転送され得る(または逆も同様)。例えば、ネットワークまたはデータリンクを介して受信したコンピュータ実行可能命令またはデータ構造は、ネットワークインターフェースモジュール(例えば、「NIC」)内のRAMにおいてバッファされ、次いで、最終的に、コンピュータシステムRAMに、および/またはコンピュータシステムにおいてより揮発性が低いコンピュータ記憶媒体に転送され得る。したがって、コンピュータ記憶媒体は、伝送媒体をやはり(または主としても)利用するコンピュータシステムコンポーネントに含められ得ることを理解すべきである。
コンピュータ実行可能命令は、例えば、命令およびデータを含み、この命令およびデータは、プロセッサにおいて実行されるとき、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに、特定の機能、または機能の群を行わせる。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間形式命令、またはソースコードとさえすることができる。主題は、構造的特徴および/または方法論的行為に固有の言語で記載されているが、添付の特許請求の範囲に定義される主題は、必ずしも記載された特徴または上記に記載の行為に限定されるものではないことを理解されたい。そうではなく、記載された特徴および行為は、特許請求の範囲を実施する例示的な形態として開示される。
本発明が、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な消費者向けエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、モバイル電話、PDA、ページャ、ルータ、およびスイッチなどを含めた多数のタイプのコンピュータシステム構成を備えたネットワークコンピューティング環境において実践可能であることを当業者は理解するであろう。本発明はまた、ネットワークを通じて(ハードワイヤードデータリンクか、ワイヤレスデータリンクか、またはハードワイヤードおよびワイヤレスのデータリンクの組合せかのいずれかによって)リンクされるローカルおよびリモートのコンピュータシステムが双方、タスクを行う分散型システム環境において実践可能である。分散型システム環境では、プログラムモジュールは、ローカルおよびリモートのメモリ記憶デバイス双方に置くことができる。
図2は、複数の挙動202を行うことができるコントロール200を示している。挙動は、コントロールによって行われ得る大まかなアクションであり、ユーザによって、たとえそのユーザがプログラマでない場合であっても、容易に認識され得る対応する名前を含む。挙動202は、コントロール200内の何らかの識別されたコードに必ずしも対応するとは限らず、コントロール200によって行われるほんの大まかなアクションである。
挙動202のうちのいくつかは、データに関するアクションを生成することを行うことができる。それに応じて、コントロール200は、データ203にアクセスできるように示されている。1つの例では、データ203は、コントロール200の属性を表すが、データ203は、代替として、または加えて、コントロール200の外部にあるデータであってもよい。コントロール200は、恐らく識別された項目データ(例えば、データ項目203のうちの1つまたは複数)に関する挙動(例えば、挙動202のうちの1つまたは複数)の性能をトリガする挙動に関連付け可能なイベント201のセットを有する。
コントロール200は、コンピューティングシステム100において維持される構成要素とすることができる。例として、コントロール200は、コンピュータ可読記憶媒体など、コンピュータ可読媒体において実施されるコンピュータ実行可能命令を実行する1つまたは複数のプロセッサ102に応答して、インスタンス化および/または動作可能である。
コントロール200は、視覚化コントロールまたは信号取込みコントロールとすることができる。視覚化コントロールは、そのパラメータのうちの1つまたは複数に応じてある方式で表示するコントロールである。一方、信号取込みコントロールは、環境信号を取り込むように構成されている。信号取込みコントロールによって取込み可能な環境信号の例には、イメージ、動画、音声、音響レベル、方位、場所、生体認証、気候、加速度、および圧力などが含まれる。
図3は、階層的構造の合成コントロール300を示している。本明細書または特許請求の範囲では、「合成コントロール」は、構成素コントロールを含む、かつ/またはピアコントロールを有するコントロールである。例として、合成コントロール300は、子のコントロール301、ならびに省略記号302によって表される潜在的に他の子のコントロールを含む。同様に、子のコントロール301は、それ自身の子のコントロール311と、省略記号312によって表される潜在的に他の子のコントロールとを含むとき、それ自体が合成コントロールである。コントロール200は、コントロール200がそれ自体を合成コントロールおよび/または合成コントロールの要素コントロールとすることができるとき、コントロール300、301、および311のうちのいずれであってもよい。
図4は、挙動を行うようにコントロールを構成するための方法400のフローチャートを示している。方法400が、コントロール200におけるコンピューティングシステム100によって行われ得るとき、次に、方法400について、図1および図2に関して記載することにする。本明細書に記載の方法のうちのいずれかと同様に、方法400は、1つまたは複数のプロセッサ102が、コンピュータ可読記憶媒体など、コンピュータ可読媒体において実施されるコンピュータ実行可能命令を実行することに応答して、コンピューティングシステム100によって行われ得る。
任意選択により、方法400は、ユーザに、対象の挙動の命令文(statement)をプロンプトで求めるステップを含む(行為411)。例として、図1および図2を参照すると、コンピューティングシステム100は、ディスプレイ112を使用して、コントロール200の挙動202のそれぞれについて名前(または別の識別子)を提示することが可能になる。それに応答して、ユーザは、対象の挙動の命令文を入力する(行為412)。例として、ユーザは、提示された挙動のうちの1つを選択することが可能になる。
代替として、ユーザは、ただ、対象の挙動の命令文を自由形態で(選択オプションに関してプロンプトでの求めなしに)入力することが可能になる。例として、ユーザは、対象の挙動の命令文を自然な言語でタイプすることが可能になる。コンピューティングシステムは、その自由形態の命令文を使用して、コントロール200に関連した挙動202のうちの1つをヒューリスティックに識別することが可能になる。次いで、方法400は、コントロールによって行われるべき対象の挙動を表すユーザ入力を検出する(行為413)。
任意選択により、方法400は、ユーザに、挙動の動作の対象とすべき、対象のデータの命令文をプロンプトで求めるステップを含む(行為411)。例として、図1および図2を参照すると、コンピューティングシステム100は、ディスプレイ112を使用して、コントロール200のデータ項目203のそれぞれの名前(または別の識別子)を提示することが可能になる。それに応答して、ユーザは、対象のデータの命令文を入力する(行為422)。例として、ユーザは、提示された挙動のうちの1つを選択することが可能になる。データ項目203は、具体的なデータ、データの集合、またはデータのカテゴリもしくは複数のカテゴリを識別することができる。
代替として、ユーザは、ただ、対象のデータの命令文を自由形態で(選択オプションに関してプロンプトでの求めなしに)入力することが可能になる。例として、ユーザは、対象のデータの命令文を自然な言語でタイプすることが可能になる。コンピューティングシステムは、その自由形態の命令文を使用して、識別された挙動の動作の対象とすべき、データ項目203のうちの1つをヒューリスティックに識別することが可能になる。次いで、方法400は、対象のデータを表すユーザ入力を検出する(行為423)。行為421から423は、データを対象に動作しない挙動について任意選択であり、特殊である。
次いで、方法400は、対象の識別された挙動(行為422および423が行われた場合、対象の識別されたデータに関して)を行う意図と一致している1つまたは複数のイベントのセットを自動的に識別する(行為431)。次いで、方法400は、ユーザに、1つまたは複数の識別されたイベントのセットのうちの少なくとも1つのイベントを提案するステップを含む(行為432)。
ユーザのオーサコントロールを助けるオーサリングプログラムは、コンピューティングシステム100において動作していることができる。オーサリングプログラムの機能のうちの1つは、挙動を行うようにコントロールをトリガするのに適切になるコントロールのイベントをユーザが識別することを助けることとすることができる。そのようなイベントは、経験のあるプログラマによって、オーサリングプログラムを送り出す前に識別され得る。例として、コントロールタイプごとに、プログラマは、可能な挙動を識別することが可能になる。可能な挙動ごとに、プログラマは、動作の対象であり得るデータの可能なカテゴリを識別することが可能になる。したがって、特定のコントロールタイプのコントロールのオーサリング中、プログラマでない人が、挙動(また、動作の対象とすべきデータもあり得る)を識別するとき、コンピューティングシステムは、プログラマによって以前に識別された1つまたは複数のイベントのセットを識別することが可能になる。代替として、コンピューティングシステムはそれ自体、適したイベントを識別する際、プログラマが適用したインテリジェンスの一部またはすべてを、コントロールを所与として、挙動を所与として、および特定のデータを所与として適用することができる。
ユーザは、提案されたイベントのうちの1つを選択することができる(決定ブロック433における「選択された」)。例として、選択されたイベントは、図2のコントロール200の1つまたは複数のイベント210とすることができる。次いで、コンピューティングシステムは、ユーザが、ある提案されたイベントを選択したことを検出する(行為441)。それに応答して、コンピューティングシステムは、選択されたイベントが生じたとき、挙動を行うようにコントロールを自動的に構成する(行為442)。例として、オーサリングプログラムをオーサリングしたプログラマはまた、この構成を生じさせる命令型コードをオーサリングすることができる。命令型コードは、選択されたイベントが検出されると同時に、実行され得る。
一方、ユーザは、提案されたイベントのうちの1つを編集することができる(決定ブロック433における「編集する」)。次いで、コンピューティングシステムは、ユーザが、ある提案されたイベントを選択したことを検出する(行為451)。例として、イベントは、イベントの範囲を狭くするように編集可能になる。一例として、スライダコントロールに関連するイベントは、スライダコントロールの動きとすることができる。しかしながら、ユーザは、スライダコントロールがスライダ範囲の中間点を越えながら移動する場合のみ、イベントがトリガするようにイベントをさらに編集することが可能になる。編集に応答して、コンピューティングシステムは、編集されたイベントが生じたとき、挙動を行うようにコントロールを自動的に構成する(行為452)。
本明細書に記載の原理は、コントロールがいかに複雑であるかに関わらず、プログラマでない人が、コントロールの挙動をトリガするイベントをより簡単に、およびより直観的に選択することができるとき、再計算ユーザインターフェースをオーサリングする文脈で特に役に立つ。例として、コントロール200は、再計算ユーザインターフェース内に含めることが可能である。
本明細書において、および特許請求の範囲において、「再計算ユーザインターフェース」は、ユーザが対話することができ、1つまたは複数のデータソースおよび1つまたは複数のデータシンクがその中に存在する環境に生じるインターフェースである。さらには、1つまたは複数のデータソースと、あるデータシンクとの間でそれぞれが宣言的に定義され得る変換のセットが存在する。例として、1つのデータソースの出力は、変換に送り込まれ、次いで、変換からの結果はデータシンクに供給され、その結果、ユーザに対して潜在的にある種の視覚化の変化がもたらされる。
変換は、特別なコーディング知識を持たないユーザが、変換を定義する宣言を書くことが可能であるという意味で「宣言型」である。変換が宣言的に定義されるとき、ユーザは、宣言型変換を変更することができる。それに応答して、再計算が行われ、その結果、恐らく異なるデータがデータシンクに供給されることになる。
再計算ユーザインターフェースの古典的な例は、スプレッドシート文書である。スプレッドシート文書は、セルの格子を含む。最初、セルは空であり、したがって、スプレッドシートプログラムのいずれのセルも、ユーザによって入力される宣言型式の意味および文脈に応じて、データソースまたはデータシンクである可能性を有する。例として、ユーザは、所与のセルを選択し、そのセルに式をタイプすることが可能になる。式は、そのセルに割り当てられるべき表現されたスカラ値と同じくらい単純であることが可能になる。そのセルは、後に、データソースとして使用され得る。代替として、所与のセルについての式は、入力値が1つまたは複数の他のセルから取り込まれる方程式の形態とすることが可能になる。その場合、所与のセルは、変換の結果を表示するデータシンクである。しかしながら、オーサリングの継続中、そのセルは、作成者によって宣言的になされるさらなる他の変換のためのデータシンクとして使用可能である。
スプレッドシート文書の作成者は、命令型コードに関しての専門家である必要はない。作成者は、単に、変換を定義する宣言を作成し、対応するデータシンクおよびデータソースを選択しているだけである。本明細書において後述される図8から図12は、より大まかな再計算ユーザインターフェースがその中に記載されている、より大まかな宣言型オーサリング環境を提供する。その後に記載される環境では、視覚化されたコントロールが、データソースおよびデータシンクの両方として働くことができる。さらには、宣言型変換は、それらのコントロールの単純な操作によって、より直観的にオーサリング可能である。
図5は、例示的な再計算ユーザインターフェース500を抽象的に示し、その再計算ユーザインターフェース500は、本明細書に記載のより広範な原理を説明するために提供される具体的な例である。再計算ユーザインターフェース500は、その原理が本明細書に記載されるとき、無数の種々のアプリケーション向けに無数の種々の再計算ユーザインターフェースを作り出すために、いずれの再計算ユーザインターフェースにも適用可能であるほんの一例である。
再計算ユーザインターフェース500は、いくつかの宣言型変換511から515を含む。変換511から516を表す矢印のそれぞれの周りの破線の円は、変換がそれぞれ宣言型形態であることを表している。
図5のこの具体的例では、変換511は、各データソース501およびデータシンク502を含む。1つの変換に対するデータシンクがまた、別の変換に対するデータソースであってもよいことに留意されたい。例として、変換511に対するデータシンク502はまた、変換512に対するデータソースとしても働く。さらには、変換は、複数のデータソースを有することができる。したがって、変換チェーンを階層的に、したがってかなり複雑にさせることができる。例として、変換512は、データソース502およびデータシンク503を含む。データシンク503は、2つのデータソース、すなわち、変換512に対するデータソース502と、変換514に対するデータソース505とを含む。とは言え、恐らく単一の変換が、2つのデータソース502および505をデータシンク503に導く。変換513は、データソース504およびデータシンク505を含む。
再計算ユーザインターフェースがスプレッドシート文書であった場合、例えば、様々なデータソース/シンク501から505は、スプレッドシートセルとすることが可能になり、その場合、変換は、それぞれのデータシンクに関連付けられることになる式を表す。それぞれの式の出力は、セル内に表示される。したがって、スプレッドシートの場合、データソース/シンクは、変換チェーンへの入力パラメータと、変換チェーンからの出力パラメータとの両方を有する複雑な視覚化されたコントロールとすることが可能になる。例として、図5では、データソース505からデータシンク501に導く追加の宣言型変換515が存在する。したがって、データソース/シンク501は、変換515からの出力を表す情報を視覚化することだけでなく、さらに、データを他のデータシンクに提供することも可能になる。
再計算ユーザインターフェースは、視覚化コントロールを有する必要はない。この1つの例は、通常の場合にユーザに表示されるコンピュータ計算についての情報がない場合、ソースデータを消費し、シンクデータを更新する、変換ベースのコンピュータ計算を行う再計算ユーザインターフェース手段である。例として、再計算ユーザインターフェースは、バックグランドのコンピュータ計算をサポートすることが可能になる。第2の例は、プロセス制御例における弁など、外部のアクチュエータを動作させる出力コントロールを有する再計算ユーザインターフェースである。そのようなコントロールは、それらの状態が、変換コンピュータ計算の結果によって、および信号入力に関して制御されるディスプレイコントロールに似ている。しかしながら、この場合、出力は、ディスプレイに対する視覚化ではなく、デバイスに対するコントロール信号である。例えば、ロボットを制御するための再計算ユーザインターフェースについて検討されたい。この再計算ユーザインターフェースは、サーボ位置および速度、ならびに超音波測距測定結果などのようなロボットセンサの入力に依存するロボットのアクションおよび挙動についての規則を有することが可能になる。さもなければ、弁位置、および流体流速などのような装置センサからの信号を取る再計算ユーザインターフェースに基づくプロセス制御適用例について検討されたい。
図6は、変換チェーン601にアクセスするコンパイラ610を含む例示的なコンパイル環境600を示している。変換チェーン601の例は、図5の変換チェーン500である。図7は、再計算ユーザインターフェースの変換チェーンをコンパイルするための方法700のフローチャートを示している。方法700は、図6のコンパイラ610によって行うことができる。1つの実施形態では、方法700は、1つまたは複数のコンピュータ可読記憶媒体において実施されるコンピュータ実行可能命令を実行するプロセッサ(複数可)102に応答して、コンピューティングシステム100によって行うことができる。
方法700は、依存関係について再計算ユーザインターフェースの変換チェーンを分析するステップを含む(行為701)。例として、図5を参照すると、コンパイラ600は、変換511から515のそれぞれを分析することが可能になる。変換は、宣言型であり、したがって、依存関係は、変換が命令型コンピュータ言語を使用して表現されていたならば可能であるよりももっと簡単に抽出可能である。
分析に基づいて、依存関係グラフが、変換において参照されるエンティティ間で作り出される(行為702)。基本的には、依存関係は、イベントを表すソースエンティティと、そのターゲットエンティティの評価がイベントに依存することを表すターゲットエンティティとを有する。イベントの例は、ユーザが、再計算ユーザインターフェースと特定のやり方で対話するユーザイベントとすることが可能になる。別の例として、イベントは、ソースエンティティが評価される場合には、依存関係のターゲットエンティティもまた評価されるべきであるというエンティティ間のイベントとすることが可能になる。
次いで、コンパイラは、依存関係グラフに基づいて、より低いレベルの実行工程を作り出す(行為703)。より低いレベルの実行工程は、例として、命令型言語コードとすることが可能になる。命令型言語コードは、イベントを検出し、イベントチャートを参照して実行する機能を決定し、その機能を実行することに応答するようになされている。それに応じて、依存関係グラフにおける依存関係のそれぞれは、ある機能に対して抑えられ得る。依存関係グラフはそれ自体、ランタイムに対して提供可能である(行為704)。命令型言語コードは、例えば、JAVASCRIPTなど、スクリプト言語とすることができる。しかしながら、本明細書に記載の原理は、何らかの特定の言語である命令型言語コードに限定されない。
一例として、図6は、コンパイラ610が、同様により低いレベルコード611を生成することを示している。そのようなより低いレベルのコード611は、変換チェーンに変換のそれぞれのコンパイルを含む。例として、より低いレベルのコード611は、変換チェーンに変換のそれぞれのコンパイルを表す要素621を含んでいるように示されている。図5の文脈では、要素621は、変換511から515のそれぞれのコンパイルを含むことになる。より低いレベルのコード611はまた、種々の機能622を含む。機能は、依存関係グラフにおける依存関係ごとに生成される。機能は、命令型言語機能とすることができる。
命令型言語ランタイムが、依存関係グラフにリストされるイベントを検出するとき、コンパイルされた機能622内の対応する機能もまた、実行される。それに応じて、すべての変換が適正にコンパイルされて、および特定のイベントにおける依存関係のそれぞれが専用の機能によって強化されて、宣言型再計算ユーザインターフェースは、命令型言語コードとして適正に表される。
それに応じて、宣言型再計算ユーザインターフェースをコンパイルするための効果的な機構について記載してきた。加えて、ランタイムには、より広範なインタープリタではなく、依存関係グラフが提供される。
次に、プログラマでない人が、再計算ユーザインターフェースを使用して、複雑な挙動を有するプログラムをオーサリングすることを可能にするためのオーサリングパイプラインの具体的な例について図8から図12に関して記載することにする。
図8は、再計算ユーザインターフェースの形態で、対話型視覚的構成を構築するのに使用可能な視覚的構成環境800を示している。再計算ユーザインターフェースの構築は、データ駆動の分析および分析的結果の視覚化を使用して行われる。環境800は、ビュー構成830の問題ドメインから独立して行われるロジックを行う構成フレームワーク810を含む。例として、同じ構成フレームワーク810は、都市計画、分子モデル、食料品店の棚レイアウト、機械の性能もしくは組立の分析、または他のドメイン固有のレンダリングのための対話型ビュー構成を構成するのに使用可能である。
しかしながら、構成フレームワーク810は、ドメイン固有のデータ820を使用して、ドメインに固有である実際の視覚的構成830を構築する。それに応じて、同じ構成フレームワーク810は、構成フレームワーク810自体を再コーディングする必要があるのではなくて、ドメイン固有のデータ820を変更することによって、任意の数の異なるドメインについての再計算ユーザインターフェースを構築するのに使用可能である。したがって、パイプライン800の構成フレームワーク810は、再コーディングおよび再コンパイルするのではなく、データを変えることによって、潜在的に数が無制限の問題ドメインに、または少なくとも幅広い種々の問題ドメインに適用することができる。次いで、ビュー構成830は、適切な2Dまたは3Dのレンダリングモジュールに命令として供給され得る。本明細書に記載のアーキテクチャはまた、新規ビュー構成モデルに対するブロックを築くとき、既存のビュー構成モデルの便利な組込みを可能にする。1つの実施形態では、複数のビュー構成は、統合されたビュー構成に含められて、あるモデルに対する2つの可能なソリューション間で簡単な比較を可能にすることができる。
図9は、パイプライン環境900の形態で構成フレームワーク510の例示的なアーキテクチャを示している。パイプライン環境900は、とりわけ、パイプライン901自体を含む。パイプライン901は、データ部分910、分析部分920、およびビュー部分630を含み、そのそれぞれは、後に続く図10から図12のそれぞれ、および付随する説明に関して詳細に記載することにする。この場合では、大まかなレベルにおいて、パイプライン901のデータ部分910は、種々の異なるタイプのデータを受け入れることができ、正規形態でそのデータをパイプライン901の分析部分920に提示する。分析部分920は、データを様々なモデルパラメータにバインドし、モデル分析を使用して、モデルパラメータにおける未知数について解く。次いで、様々なパラメータ値は、ビュー部分930に提供され、このビュー部分930は、モデルパラメータのそれらの値を使用して、構成ビューを構築する。例として、データ部分610は、データソースを再計算ユーザインターフェースへと提案することができる。
パイプライン環境900はまた、パイプライン901の作成者または他のユーザが、データを定式化し、および/または選択して、パイプライン901に提供することを可能にするオーサリングコンポーネント940を含む。例として、オーサリングコンポーネント940は、データ部分910(入力データ911によって表される)、分析部分920(分析データ921によって表される)、およびビュー部分930(ビューデータ931によって表される)のそれぞれにデータを供給するのに使用可能である。様々なデータ911、921、および931は、図8のドメイン固有のデータ820の例を表し、本明細書においてさらにもっと詳細に後述されることになる。オーサリングコンポーネント940は、例えば、データスキーマ、モデルによって使用される実際のデータ、外部ソースから持ち込まれるべきであるデータの場所またはデータの可能な場所の範囲、視覚的(グラフィカルまたはアニメーション)オブジェクト、視覚的モデリング命令文(例えば、ビュー、方程式、制約)において行われ得るユーザインターフェース対話、およびバインディングなどを含む幅広い種々のデータの提供をサポートする。1つの実施形態では、オーサリングコンポーネントは、(図9には示していないが、図8の構成フレームワーク810によって表される)全体的なマネージャコンポーネントによって提供される機能性の1つの部分にすぎない。マネージャは、(ユーザ対話イベント、外部データイベント、ならびにソルバおよびオペレーティングシステムなどの他のコンポーネントのいずれかからのイベントなどの)イベントに応答して、(データコネクタ、ソルバ、およびビューワなどの)他のコンポーネントすべての動作を制御し、順序付けする全体的なディレクタである。
図9のパイプライン環境900では、オーサリングコンポーネント940が、データを既存のパイプライン901に提供するのに使用され、ここで、入力データを定義することから、(「変換チェーン」と上記に称された)分析的モデルを定義することまで、変換チェーンの結果がいかにビュー構成で視覚化されるかを定義することまでの全プロセスを駆動するのは、そのデータである。それに応じて、パイプライン901を幅広い種々のドメインおよび問題のうちの任意のものに適合させるために、何らコーディングを行う必要はない。パイプライン901に提供されるデータは、単に、パイプライン901を適用して、異なる問題ドメイン全部からか、または恐らくは、既存のドメインについての問題解決を調整することまでかのいずれかで、異なるビュー構成を視覚化するためには何を変更すべきであるかということにすぎない。さらには、データは、使用時(すなわち、実行時)に、ならびにオーサ時に変更可能であるので、モデルは、ランタイムにおいて修正され、および/または拡張され得る。したがって、あるモデルをオーサリングすることと、そのモデルを実行することとの差異は、たとえあるとしても、より少ない。すべてのオーサリングがデータ項目を編集することに関わっているという理由で、およびソフトウェアがデータからのその挙動のすべてを動作するという理由で、データに対するすべての変更は、再コーディングおよび再コンパイルの必要なしに、すぐに挙動に影響を及ぼす。
パイプライン環境900はまた、ユーザが、表示されたビュー構成と対話したときを検出し、次いでそれに応答して何をすべきかを決定するユーザ対話応答モジュール950を含む。例えば、いくつかのタイプの対話には、パイプライン901に供給されるデータにおいて何ら変更を必要とせず、したがって、ビュー構成に対して何ら変更を必要としない場合がある。他のタイプの対話は、データ911、921、もしくは931のうちの1つまたは複数を変更する場合がある。その場合には、この新規の、すなわち修正されたデータは、新規入力データがデータ部分910に提供されるようにすることがあり、分析部分920による入力データの再分析を要求することがあり得、および/またはビュー部分930によるビュー構成の再視覚化を要求することがあり得る。
それに応じて、パイプライン901は、恐らく数が無制限の問題ドメインに、または少なくとも幅広い種々の問題ドメインに、データ駆動の分析的視覚化を拡張するのに使用され得る。さらには、幅広い種々の問題に対処するためにビュー構成を変えるためのプログラマである必要はない。次に、パイプラン901のデータ部分910、分析部分920、およびビュー部分930のそれぞれについて、図10のデータ部分1000、図11の分析部分1100、および図12のビュー部分1200のそれぞれに関してその順序で記載することにする。図10から図12より明らかになるように、パイプライン901は、一連の変換コンポーネントとして構築可能であり、ここで、これらの変換コンポーネントはそれぞれ、1)何らかの適切な入力データを受け取り、2)(入力データにおいて変換を行うなど)その入力データに応答して何らかのアクションを行い、3)次いで、次の変換コンポーネントへの入力データとして働くデータを出力する。
図10は、図9のパイプライン901のデータ部分1000の多数の可能な実施形態のうちのほんの1つを示している。データ部分1000の機能のうちの1つは、図11に関して論じられるパイプラインの分析部分1100によって理解されるスキームと一致している正規形式でデータを提供することである。データ部分は、異種データ1001にアクセスするデータアクセスコンポーネント1010を含む。入力データ1001は、データが正規形態でデータアクセスコンポーネント1010に提示され得る(そうである必要はないが)という意味で「異種」とすることができる。実際に、データ部分1000は、異種データが、幅広い種々の形式であることが可能になるように構造化される。モデルによってアクセスおよび操作可能な異なる種類のドメインの例には、テキストおよびXML文書、テーブル、リスト、階層(ツリー)、SQLデータベースクエリ結果、BI(ビジネスインテリジェンス)キューブクエリ結果、様々な形式での2D図面および3D視覚モデルなどのグラフィカル情報、およびそれらの組合せ(すなわち、複合物)が含まれる。さらには、アクセス可能なデータの種類は、アクセスすべきデータの定義(例えば、スキーマ)を提供することによって、宣言的に拡張可能である。それに応じて、データ部分1000は、モデルへの幅広い種々の異種入力を許容し、また、アクセスできるデータタイプのランタイムの宣言拡張をサポートする。
1つの実施形態では、データアクセス部分1000は、いくつかの異なるデータソースからデータを得るためのいくつかのコネクタを含む。コネクタの主要機能のうちの1つは、対応するデータを正規形態にすることなので、そのようなコネクタをしばしば、本明細書において以降および図面で、「カノニカライザ」と称すことになる。それぞれのカノニカライザは、その対応するデータソースの具体的なApplication Program Interfaces(API)について理解することが可能になる。カノニカライザはまた、その対応するAPIとインターフェースをとって、データソースから読み取り、および/またはデータソースに書き込むための対応するロジックを含むことが可能になる。したがって、カノニカライザは、外部データソースとデータのメモリイメージとの間で橋渡しをする。
データアクセスコンポーネント1010は、入力データ1001を評価する。入力データがすでに正規であり、したがって、分析部分1100によって処理できる場合には、入力データは、分析部分1100に入力すべき正規データ1040として直接に提供され得る。
しかしながら、入力データ1001が正規でない場合には、適切なデータ正規化コンポーネント1030は、入力データ1001を正規形式に置き換えることができる。データ正規化コンポーネント1030は、実際には、特定の特性を有する入力データを正規化形態にそれぞれが置き換えできるデータ正規化コンポーネント1030の集合である。正規化コンポーネント1030の集合は、4つの正規化コンポーネント1031、1032、1033、および1034を含んでいるように示されている。しかしながら、省略記号1035は、他の数の正規化コンポーネントが存在する場合もあり、恐らくは、図示の4つよりも少ない場合さえあることを表している。
入力データ1001は、カノニカライザ自体、ならびに相関されたデータ特性(複数可)の識別さえも含むことができる。次いで、データ部分1000は、相関されたデータ特性を登録し、正規化コンポーネントをデータ正規化コンポーネント集合1030に提供することができ、ここで、正規化コンポーネントは、利用できる正規化コンポーネントに追加され得る。それらの相関された特性を有する入力データが後に受け取られる場合には、データ部分1010は、その入力データを相関された正規化コンポーネントに割り当てることができる。正規化コンポーネントはまた、ウェブ上の定義されたコンポーネントライブラリからなど、外部ソースから動的に見つけることができる。例えば、所与のデータソースについてのスキーマは知られてはいるが、必要なカノニカライザが存在しない場合、カノニカライザは、外部コンポーネントライブラリから、ただし、そのようなライブラリは、見つけることができ、必要なコンポーネントを含んでいるという条件で、位置特定可能である。パイプラインはまた、そのスキーマがまだ知られていないデータを構文解析し、構文解析の結果と、知られているコンポーネントライブラリ内のスキーマ情報とを比較して、データのタイプの動的決定を試み、したがって、必要なカノニカライザコンポーネントを位置特定することが可能になる。
代替として、入力データが正規化コンポーネントのすべてを含むのではなく、代わりに、入力データは、正規化変換を定義する変換定義を提供することができる。次いで、集合1030は、その変換定義を、ゼロ個以上の標準デフォルト正規化変換と一緒に変換を実施する対応する正規化コンポーネントに置き換えるように構成可能である。これは、データ部分1000が、入力データを消費するが、対応する正規化されたデータをパイプラインのさらなる下方に提供しない場合の例を表している。しかしながら、恐らく大抵の場合、入力データ1001は、結果的に、対応する正規化されたデータ1040が生成されることをもたらす。
1つの実施形態では、データ部分1010は、入力データのファイルタイプおよび/または形式タイプを基礎にして、入力データをデータ正規化コンポーネントに割り当てるように構成可能である。他の特性には、例えば、入力データのソースを含めることが可能になる。デフォルト正規化コンポーネントは、指定された対応する正規化コンポーネントを有していない入力データに割当て可能である。デフォルト正規化コンポーネントは、規則のセットを適用して、入力データを正規化することを試みることができる。デフォルト正規化コンポーネントがデータを正規化できない場合、デフォルト正規化コンポーネントは、図8のオーサリングコンポーネント840をトリガして、ユーザに、入力データについてのスキーマ定義を提供するようにプロンプトで求めることが可能になる。スキーマ定義がまだ存在しない場合、オーサリングコンポーネント840は、入力データを正規形態に変換するのに使用可能な対応するスキーマ定義を作成者が生成するのを助けるためにスキーマ定義アシスタントを提示することが可能になる。ひとたび、データが正規化形態になると、そのデータに付随するスキーマは、パイプライン901の残りがそのデータを解釈するために新しいコードを必要としなくなる、そのデータの十分な記載を提供する。そうではなく、パイプライン901は、アクセスできるスキーマ宣言言語を表現可能な任意のスキーマに照らしてデータを解釈できるコードを含む。
とにもかくにも、正規データ1040は、データ部分1000からの出力データとして、および分析部分1100への入力データとして提供される。正規データは、種々のデータタイプを含むフィールドを含むことが可能になる。例として、フィールドには、整数、浮動小数点、文字列、ベクトル、配列、集合、階層構造、テキスト、XML文書、テーブル、リスト、SQLデータベースクエリ結果、BI(ビジネスインテリジェンス)キューブクエリ結果、様々な形式での2D図面および3D視覚モデルなどのグラフィカル情報などのデータタイプ、またはこれらの様々なデータタイプの複雑な組合せさえも含めることが可能になる。別の利点として、正規化プロセスは、幅広い種々の入力データを正規化できる。さらには、データ部分1000が受け入れできる種々の入力データは、拡張できる。これは、本明細書において後に論ずることになるように、複数のモデルが組み合わされる場合に有益である。
図11は、図9のパイプライン901の分析部分920の例を表す分析部分1100を示している。データ部分1000は、正規化されたデータ1101をデータモデルバインディングコンポーネント1110に提供した。正規化されたデータ1101は、任意の正規化された形態および任意の数のパラメータを有することが可能になり、ここで、この形態およびパラメータの数は、入力データのピースごとにさえ異なる場合があり得る。しかしながら、論ずることを目的として、正規データ1101は、フィールド1102Aから1102Hを有し、これらのフィールドを、本明細書において「フィールド1102」と集合的に称す場合がある。
一方、分析部分1100は、いくつかのモデルパラメータ1111を含む。モデルパラメータのタイプおよび数は、モデルに従って異なっていてよい。しかしながら、特定の例を論ずることを目的として、モデルパラメータ811は、モデルパラメータ1111A、1111B、1111C、および1111Dを含んでいるように論じることになる。1つの実施形態では、モデルパラメータの属性情報、およびモデルパラメータ間の分析的関係は、命令型コーディングを使用せずに宣言的に定義可能である。
データモデルバインディングコンポーネント1110は、正規化されたデータフィールド1102とモデルパラメータ1111との間に入って、それによって、フィールド間のバインディングを提供する。この場合、データフィールド1102Bは、矢印1103Aによって表されるように、モデルパラメータ1111Aにバインドされる。言い換えると、データフィールド1102Bからの値は、モデルパラメータ1111Aを設定するのに使用される。また、この例では、データフィールド1102Eは、(矢印1103Bによって表されるように)モデルパラメータ1111Bにバインドされ、データフィールド1102Hは、(矢印803Cによって表されるように)モデルパラメータ1111Cにバインドされる。
データフィールド1102A、1102C、1102D、1102F、および1102Gは、モデルパラメータのいずれにもバインドされずに示されている。これは、入力データからのデータフィールドのすべてが必ずしもモデルパラメータとして使用されることを要求されるのではないことを強調するためである。1つの実施形態では、これらのデータフィールドのうちの1つまたは複数を使用して、正規化されたデータからの(この正規化されたデータまたは恐らくは任意の将来の類似する正規化されたデータについて)どのフィールドが、どのモデルパラメータにバインドされるべきかに関する命令をデータモデルバインディングコンポーネント810に提供することができる。これは、図9の分析部分920に提供され得る分析データ921の種類の例を表している。正規化されたデータフィールドからのどのデータフィールドが、どのモデルパラメータにバインドされるかの定義は、いくつかのやり方で定式化され得る。例として、バインディングは、1)オーサリング時に作成者によって明示的に設定可能であり、2)使用時にユーザによって明示的に設定可能であり(作成者によって課せられるあらゆる制限を受けることになる)、3)アルゴリズム的ヒューリスティックに基づいて、オーサリングコンポーネント940によって自動的にバインドすること、ならびに/あるいは4)バインディングがアルゴリズム的に行われ得ないと決定されるとき、オーサリングコンポーネントによって、作成者および/またはユーザに、バインディングを指定するようにプロンプトで求めることとすることができる。したがって、バインディングはまた、モデルロジック自体の一部として解決され得る。
どのデータフィールドが、どのモデルパラメータにマッピングされるかを定義するという作成者の能力は、モデルパラメータを定義するためにその作成者が快適であるシンボルを使用できるという点で、作成者に大きい柔軟性を与える。例として、モデルパラメータのうちの1つが圧力を表す場合、作成者は、そのモデルパラメータに「Pressure」もしくは「P」、または作成者にとって意味をなす任意の他のシンボルを名付けることができる。作成者は、モデルパラメータを名前変更することさえでき、これは、1つの実施形態では、データモデルバインディングコンポーネント1110に、以前は古い名前のモデルパラメータに対してであったバインディングを、代わりに新しい名前のモデルパラメータにバインドすることを可能にするために自動的に更新させることが可能になり、それによって、所望のバインディングを保つ。バインディングに関するこの機構により、バインディングをランタイムにおいて宣言的に変更することも可能になる。
モデルパラメータ1111Dは、この例で、モデルパラメータ1111Dには、データモデルバインディングコンポーネント1110によって値が割り当てられなかったことを強調するために、アスタリスク付きで示されている。それに応じて、モデルパラメータ1111Dは、未知数のままである。言い換えると、モデルパラメータ1111Dには、値が割り当てられない。
モデリングコンポーネント1120は、いくつかの機能を行う。まず、モデリングコンポーネント1120は、モデルパラメータ1111間の分析的関係1121を定義する。分析的関係1121は、方程式1131、規則1132、および制約1133を含む3つの大まかなカテゴリに分類される。しかしながら、ソルバのリストは、拡張できる。1つの実施形態では、例えば、対応するシミュレーションエンジンがソルバとして提供され、登録されるという条件で、1つまたは複数のシミュレーションが、分析的関係の一部として組込み可能である。
本明細書において使用される用語「方程式」は、数学の分野で使用される場合のこの用語と一致する。
本明細書において使用される用語「規則」は、条件命令文を意味し、ここで、1つまたは複数の条件が満足される場合には(条件命令文の条件部分、すなわち「if」部分)、1つまたは複数のアクションが取られるべきである(条件命令文の結果部分、すなわち「then」部分)。規則は、1つまたは複数のモデルパラメータが条件命令文内で表現される場合、あるいは1つまたは複数のモデルパラメータが結果命令文内で表現される場合、モデルパラメータに適用される。
本明細書において使用される用語「制約」は、制限が1つまたは複数のモデルパラメータに適用されることを意味する。例として、都市計画モデルにおいて、特定の家屋要素が、可能な全区割り指定のサブセットを有する地図位置上の配置に制限される場合がある。橋梁要素が、ある最大長またはあるレーン数を下回るように制限される場合がある。
モデルに精通している作成者は、そのモデルに適用されるこれらの方程式、規則、および制約の表現を提供することができる。シミュレーションの場合、作成者は、モデルパラメータ間の適切なシミュレーション関係を提供する適切なシミュレーションエンジンを提供することが可能になる。モデリングコンポーネント1120は、作成者が、方程式、規則、および制約に自然なシンボリック表現を与えるための機構を提供することができる。例えば、熱力学関連モデルの作成者は、熱力学教科書から方程式を単純にコピーし、貼り付けることができる。モデルパラメータをデータフィールドにバインドする能力により、作成者は、(作成者が頼る教科書で使用される正確なシンボルなど)自分が精通しているシンボルなら何でも、または自分が使用したいと思う正確なシンボルを使用することが可能になる。
解くことに先立って、モデリングコンポーネント1120はまた、モデルパラメータのうちのどれについて解くべきか(すなわち、以降、単数の場合に「出力モデル変数」、または複数の場合に「複数の出力モデル変数」、または単一のもしくは複数の出力モデル変数が存在することが可能になる場合に「出力モデル変数(複数可)」)を識別する。複数の出力モデル変数は、複数の未知のパラメータとすることができ、または複数の既知のモデルパラメータとすることが可能になり、ここで、既知のモデルパラメータの値は、解く操作において変更を受けることになる。図11の例では、データモデルバインディング動作の後、モデルパラメータ1111A、1111B、および1111Cは既知であり、モデルパラメータ1111Dは未知である。それに応じて、未知のモデルパラメータ1111Dは、複数の出力モデル変数のうちの1つとすることができる。代替として、または加えて、既知のモデルパラメータ1111A、1111B、および1111Cのうちの1つまたは複数はまた、複数の出力モデル変数とすることもできる。次いで、ソルバ1140は、可能な場合に、出力モデル変数(複数可)について解く。本明細書において後述する1つの実施形態では、ソルバ1140は、解く操作が行われるのを可能にするのに十分な入力モデル変数が提供される限り、単一のモデルの中であっても種々の出力モデル変数について解くことができる。入力モデル変数は、例えば、その値が、解く操作中に変更を受けることにならない既知のモデルパラメータとすることが可能になる。例として、図11では、モデルパラメータ1111Aおよび1111Dが入力モデル変数であった場合、ソルバは、代わりに、出力モデル変数1111Bおよび1111Cについて解くことが可能になる。1つの実施形態では、ソルバは、単一のモデルパラメータについていくつかの異なるデータタイプのうちの任意のものを出力することが可能になる。例として、いくつかの方程式操作(加算、および減算など)は、オペランドが整数、浮動小数点、浮動小数点のベクトル、または浮動小数点の行列であるかどうかに関わりなく適用される。
1つの実施形態では、ソルバ1140が特定の出力モデル変数について解くことができないときでも、ソルバ1100は、実際の数値結果(または、それについて解いたデータタイプが何であれ)に対する完全な解決が可能ではない場合であっても、なおも、その出力モデル変数について部分的な解を提示することが可能になる。これにより、完全な解決に達するためにどんな情報が必要であるかに関して、作成者に、プロンプトで求めることによって、パイプラインは、インクリメンタル開発を容易にすることが可能になる。このことはまた、少なくとも部分的な解決が、様々なオーサリング段階全体を通じて利用可能であるので、オーサ時と使用時との間の区別をなくすことの助けにもなる。抽象的な例として、分析モデルが方程式a=b+c+dを含むと仮定する。このとき、a、c、およびdが出力モデル変数であり、bが、5という既知の値(この場合には整数)を有する入力モデル変数であると仮定する。解くプロセスでは、ソルバ1140は、出力モデル変数のうちの1つ「d」について解き、「d」と呼ばれるモデルパラメータに6という値(整数)を割り当てることだけができるが、ソルバ840は、「c」について解くことができない。「a」は「c」に依存するので、「a」と呼ばれるモデルパラメータも、未知数で、それについて解かれないままになる。この場合、整数値を「a」に割り当てるのではなく、ソルバは、部分的な解決をし、モデルパラメータ「a」に対して「c+11」という文字列値を出力することが可能になる。前に述べたように、これは、ドメイン専門家が分析モデルをオーサリングしているとき、特に有益である可能性があり得、本質的に、モデルパラメータ「a」の内容に関する部分的情報を提供するように働くことになり、また「c」モデルパラメータを解くことを可能にするいくつかのさらなるモデル分析が提供される必要があることのキューを作成者に出すように働くことになる。恐らく、この部分的な解決の結果は、ドメイン専門家が部分的結果を見ることを可能にするビュー構成において何らかの方式で出力可能である。
ソルバ1140は、図11では簡略化された形態で示されている。しかしながら、ソルバ1140は、図12に関して記載することになるように、複数の構成素ソルバの操作を指示することができる。その場合、図11では、モデリングコンポーネント1120は、(現在は既知の、それについて解いた出力モデル変数を含む)モデルパラメータを、図12のビュー部分1200に提供される出力として利用可能にする。
図12は、図9のビュー部分930の例を表し、かつ再計算ユーザインターフェース500における視覚化コントロールの例を表すビュー部分1200を示している。ビュー部分1200は、図11の分析部分1100からモデルパラメータ1111を受け取る。ビュー部分はまた、ビューコンポーネントの集合を含んだビューコンポーネントリポジトリ1220を含む。例えば、この例のビューコンポーネントリポジトリ1220は、ビューコンポーネント1221から1224を含んでいるように示されているが、ビューコンポーネントリポジトリ1220は、任意の数のビューコンポーネントを含んでいてよい。ビューコンポーネントはそれぞれ、ゼロ個以上の入力パラメータを含むことができる。例えば、ビューコンポーネント1221は、いずれの入力パラメータも含まない。しかしながら、ビューコンポーネント1222は、2つの入力パラメータ1242Aおよび1242Bを含む。ビューコンポーネント1223は、1つの入力パラメータ1243を含み、ビューコンポーネント1224は、1つの入力パラメータ1244を含む。とは言え、これはほんの一例である。入力パラメータは、必ずそうである必要はないが、視覚項目がどのようにレンダリングされるかに影響を与えることができる。ビューコンポーネント1221が、いずれの入力パラメータも含まないという事実は、いずれのモデルパラメータも参照せずに生成されるビューが存在し得ることを強調する。変化しない固定された(組込み)データだけを含むビューを検討されたい。そのようなビューは、例えば、ユーザの参照情報を構成することが可能になる。代替として、モデルにインポートするために項目がカタログから選択可能であるように、そのカタログをブラウズするやり方を提供するだけのビューを検討されたい。
それぞれのビューコンポーネント1221から1224は、対応するビューコンポーネント入力パラメータ(複数可)をもしあるならば使用して、ビュー構成コンポーネント1240によって実行されたとき、対応するビュー項目が仮想空間1250内に配置されるようにする対応するロジックを含む、またはそれに関連付けられる。その仮想項目は、静止イメージもしくは静止オブジェクトとすることができ、または動的アニメーションの仮想項目もしくは仮想オブジェクトとすることができる。例として、ビューコンポーネント1221から1224のそれぞれは、実行されたとき、対応する仮想項目1251から1254がそれぞれ、仮想空間1250においてレンダリングされるようにする対応するロジック1231から1234に関連付けられる。仮想項目は、単純な形状として示されている。しかしながら、仮想項目は、恐らく、アニメーションさえ含む形態で、非常に複雑にすることができる。本明細書では、ビュー項目が仮想空間においてレンダリングされるとき、それは、レンダリングエンジンに供給されたときに、レンダリングエンジンがビュー項目を指定された位置におよび指定された方式でディスプレイに表示できる十分な命令を、ビュー構成コンポーネントがオーサリングしたことを意味する。
ビューコンポーネント1221から1224は、恐らく、例えば、図9のオーサリングコンポーネント940を使用して、ビュー部分1200へのビューデータとしてさえも提供され得る。例として、オーサリングコンポーネント940は、作成者がいくつかの幾何的形態から選択する、または恐らく、他の幾何的形態を構成することを可能にするセレクタを提供することが可能になる。作成者はまた、ビューコンポーネントごとに入力パラメータのタイプを指定することが可能になる一方、入力パラメータの一部は、ビュー部分1200によって課せられるデフォルト入力パラメータとすることができる。それぞれのビューコンポーネント1221から1224に関連付けられるロジックにはまた、ビューデータが提供可能であり、および/またはビュー部分1200自体によって提供される何らかのデフォルト機能性を含めることもできる。
ビュー部分1200は、モデルパラメータのうちの少なくともいくつかをビューコンポーネント1221から1224の対応する入力パラメータにバインドするように構成されたモデルビューバインディングコンポーネント1210を含む。例として、モデルパラメータ1111Aは、矢印1211Aによって表されるように、ビューコンポーネント1222の入力パラメータ1242Aにバインドされる。モデルパラメータ1111Bは、矢印1211Bによって表されるように、ビューコンポーネント1222の入力パラメータ1242Bにバインドされる。また、モデルパラメータ1111Dは、矢印1211Cによって表されるように、ビューコンポーネント1223および1224の入力パラメータ1243および1244にそれぞれバインドされる。モデルパラメータ1111Cは、いずれの対応するビューコンポーネントパラメータにもバインドされずに示され、モデルパラメータは、たとえそれらのモデルパラメータが分析部分において必須であっても、パイプラインのビュー部分によってすべてが使用される必要はないことを強調している。また、モデルパラメータ1111Dは、ビューコンポーネントの2つの異なる入力パラメータにバインドされて示され、モデルパラメータが複数のビューコンポーネントパラメータにバインド可能であることを表している。1つの実施形態では、モデルパラメータとビューコンポーネントパラメータとの間のバインディングの定義は、1)オーサリング時に作成者によって明示的に設定されること、2)使用時にユーザによって明示的に設定されること(作成者によって課せられるあらゆる制限を受けることになる)、3)アルゴリズム的ヒューリスティックに基づいて、オーサリングコンポーネント940によって自動的にバインドすること、ならびに/あるいは4)バインディングがアルゴリズム的に行われ得ないことが決定されるとき、オーサリングコンポーネントによって、作成者および/またはユーザに、バインディングを指定するようにプロンプトで求めることによって定式化され得る。
本発明は、その趣旨または本質的特性から逸脱することなく、他の具体的な形態で実施され得る。記載された実施形態は、すべての点で、制限的ではなく、単に例示にすぎないと見なすべきである。そのため、本発明の範囲は、前述の明細書ではなく添付の特許請求の範囲によって示される。特許請求の範囲の等価性の意味および範囲の中に含まれるすべての変更は、それらの範囲の中に包含すべきである。



  1. コンピュータ実行可能命令を有する1つまたは複数のコンピュータ可読記憶媒体を備えたコンピュータプログラム製品であって、前記コンピュータ実行可能命令は、コンピューティングシステムの1つまたは複数のプロセッサによって実行されるとき、前記コンピューティングシステムに、コントロールを構成するための方法を、前記コントロールによって行われるべき対象の挙動の命令文を表すユーザ入力を検出することに応答して行わせるように構造化されており、前記コントロールは、挙動をトリガするために使用可能な複数のイベントを有し、前記方法は、
    対象の前記挙動を行う意図と一致している1つまたは複数のイベントのセットを自動的に識別する行為を
    含む、コンピュータプログラム製品。

  2. 前記方法は、ユーザに、対象の挙動の命令文をプロンプトで求める行為であって、前記ユーザに、対象の前記挙動の前記命令文を入力させる、プロンプトで求める行為をさらに含む、請求項1に記載のコンピュータプログラム製品。

  3. 対象の挙動の命令文に関する前記ユーザ入力は、自由形態のユーザ入力である、請求項1に記載のコンピュータプログラム製品。

  4. 前記方法は、前記挙動の動作の対象になる、対象のデータに関するユーザ入力を検出することに応答してさらに行われる、請求項1に記載のコンピュータプログラム製品。

  5. 前記方法は、前記ユーザに、対象のデータの命令文をプロンプトで求める行為であって、前記ユーザに、対象の前記データの前記命令文を入力させる、プロンプトで求める行為をさらに含む、請求項4に記載のコンピュータプログラム製品。

  6. 自動的に識別する前記行為は、
    対象の前記データに関して対象の前記挙動を行う意図と一致している1つまたは複数のイベントのセットを自動的に識別する行為を
    含む、請求項4に記載のコンピュータプログラム製品。

  7. 前記方法は、
    前記ユーザに1つまたは複数のイベントの前記セットのうちの少なくとも1つのイベントを提案する行為を
    さらに含む、請求項6に記載のコンピュータプログラム製品。

  8. 前記方法は、ユーザが、提案されるイベントを、元々、提起されたよりも狭くなるように編集したことを検出することに応答して、前記狭くされたイベントが生じるときに前記挙動を行うように前記コントロールを自動的に構成する行為を
    さらに含む、請求項7に記載のコンピュータプログラム製品。

  9. 前記方法は、提案されるイベントのユーザ選択を検出することに応答して、前記選択されたイベントが生じるときに前記挙動を行うように前記コントロールを自動的に構成する行為を
    さらに含む、請求項6に記載のコンピュータプログラム製品。

  10. 挙動を行うようにコントロールを構成するための方法であって、
    挙動をトリガするために使用可能な複数のイベントを有するコントロールを維持する行為と、
    前記コントロールによって行われるべき対象の挙動の命令文を表すユーザ入力を検出する行為と、
    対象の前記挙動を行う意図と一致している1つまたは複数のイベントのセットを自動的に識別する行為と
    を含む方法。

 

 

Patent trol of patentswamp
類似の特許
コードの仮想化およびリモートプロセスコールコード生成のためのシステムおよび方法。ユーザデバイスにソフトウェア開発キットをインストールするステップと、リモートサーバ上のリモートプロセスを選択するステップであって、リモートプロセスは、少なくとも1つのリモートサービスと相関される、ステップとを含む方法。また、リモートプロセスに対して事前定義されたフィールドからパラメータを解析し、リモートサーバ上で少なくとも1つの仮想コードプロバイダによってリモートプロセスを呼び出すためのコードスニペットを生成する方法。挿入されたコードスニペットは、インストールされたsdkを用いてリモートプロセスを呼び出すように、ローカルユーザデバイスのローカルコードベースにコードスニペットを挿入する方法。
受信したデータに応答して表示する視覚化制御と、対応するイベントの検出時に対応する環境信号を捕捉する信号捕捉制御とを含む、再計算ユーザインターフェース。宣言的変換チェーンが、様々な制御間に位置決めされる。信号捕捉制御によって捕捉される環境信号の例は、イメージ、ビデオ、オーディオ、配向、バイオメトリクス、位置、天候、または環境に関する任意の他の情報を含む。こうした信号捕捉制御を再計算ユーザインターフェースに組み込むことによって、補足された環境信号を変換チェーンの論理および他のデータに組み込むことができる。また、こうした再計算ユーザインターフェースのオーサリングを許可するオーサリングツールが説明される。
コンピュータに実装される方法は、ビジネスプロセスワークフローに関連付けられた記述を、グラフィカルユーザインタフェースを介して受信するステップであって、記述は、プロセスフロー図を備える、ステップと、この記述に基づいてビジネスプロセスワークフローのソフトウェアアプリケーションまたは自然言語記述の少なくとも1つをプロセッサに生成させるステップとを含む。
【選択図】図1
データモデリングスタジオは、プロセスプラント内の関係の診断、予知、分析、識別等を行うように構成され得るモデルをグラフィカルに作成し、実行するための構造化環境を提供する。データモデリングスタジオは、モデルのグラフィカルな構築を容易にするために、ユーザインターフェース要素を生成するための構成エンジンと、例えばオフラインまたはオンライン環境で、データモデルを実行するためのランタイムエンジンとを含む。構成エンジンは、ユーザインターフェース要素を生成するインターフェースルーチンと、モデルのビルディングブロックとしての役割を果たす、メモリに記憶した複数のテンプレートと、グラフィカルモデルをランタイムエンジンによって実行可能なデータフォーマットに変換するモデルコンパイラとを含む。ランタイムエンジンは、モデルを実行して、所望の出力を生成し、また、メモリからテンプレートに対応するデータを取り出すための取り出しルーチンと、実行可能なモデルを実行するためのモデリングルーチンとを含み得る。
方法は特に、1つ以上のコンピュータプログラムが実行しているコンピュータシステムにおいて、状態情報の種類を定義する仕様書を受信すること、コンピュータプログラムのうち少なくとも1つと関連したイベントであってコンピュータプログラムの関数の実行と関連付けられたイベントが発生したという表示を受信すること、イベントが発生したときのコンピュータプログラムの実行の状態を記述する状態情報を収集すること、イベントに対応する、仕様書に従ってフォーマットされた収集された状態情報の要素を含むエントリを生成すること、及びエントリを記憶することを備える。コンピュータプログラム実行の可視化を生成するためにログが解析され得る。
【課題】 ユーザインタフェースを規定するためのコンピュータ記憶媒体上で符号化されたコンピュータプログラムを含む方法、システム、及び装置。
【解決手段】 方法の1つは、少なくとも1つの構成可能アプリケーションの識別を受信することを含み、各構成可能アプリケーションが1つ以上のパラメータによって構成可能である。方法は、少なくとも1つの構成可能アプリケーションに関連付けられたパラメータセットを識別することを含む。方法は、第2のユーザインタフェースにグラフィック表示要素を表示することを含み、グラフィック表示要素は、複数のプロパティを有すると共に、第1のユーザインタフェースに対する位置に関連付けられている。方法は、第2のユーザインタフェースにパラメータセットの1つ以上のグラフィック表現を表示することを含む。方法は、グラフィック表示要素の1つのプロパティとパラメータセットの1つのパラメータとのマッピングを受信することを含む。また、方法は、マッピング及び位置の表現を記憶することを含む。
【選択図】 図3
【課題】制御機器プログラムコードを作成するコンピュータ実装方法において、作成過程中にソフトウエアツールから出力されるメッセージの評価がより効率的に実施できるように改善を施すこと。
【解決手段】前記メッセージ管理環境により、認識されたメッセージに対して少なくとも“オープン”又は“承認”としての資格が認識され、“承認”としての資格が与えられたメッセージに対して、前記メッセージ管理環境により、資格条件が認識されるように構成する。
【選択図】図1
【課題】
【解決手段】 情報を表すためのコンピューティング・システムであって、コンピューティング・システムは、情報を処理するように構成された少なくとも1つのプロセッサを含む。処理は、アプリケーションを開発するための少なくとも1つのプログラミング属性の階層を表すデータ構造を定義することを含む。データ構造は、このデータ構造を他のファイルに記憶された他のデータ構造が使用できるようにするために、ファイル内に記憶される。処理は、データ構造のグラフィカル表現及びデータ構造を記憶するファイルのグラフィカル表現を含む、視覚図を生成することも含む。視覚図は、データ構造と別のデータ構造との間の関係のグラフィカル表現、及び、データ構造を記憶するファイルと他のデータ構造を記憶する別のファイルとの間の関係のグラフィカル表現も含む。コンピューティング・システムは、データ構造及びファイルのグラフィカル表現、並びにデータ構造の関係及びファイルの関係のグラフィカル表現を含む、視覚図を提示するための出力デバイスも含む。
【選択図】 図9
入力のためのプロンプトを含んでいる、アルゴリズムの初期の可視化をユーザに表示する、ユーザ入力及び自動入力の一方である入力を受信する、並びに前記入力に応答して前記可視化の更新したバージョンを決定するためのシステム、方法並びに非一時的なコンピュータ読取可能な記憶媒体であり、前記更新したバージョンは、前記初期の可視化の少なくとも1つの要素を含む、並びに前記初期の可視化の少なくとも1つのさらなる要素を削除する及び少なくとも1つのさらなる要素を前記初期の可視化に追加することの一方を行っている。
To top