(57)【要約】  受信したデータに応答して表示する視覚化制御と、対応するイベントの検出時に対応する環境信号を捕捉する信号捕捉制御とを含む、再計算ユーザインターフェース。宣言的変換チェーンが、様々な制御間に位置決めされる。信号捕捉制御によって捕捉される環境信号の例は、イメージ、ビデオ、オーディオ、配向、バイオメトリクス、位置、天候、または環境に関する任意の他の情報を含む。こうした信号捕捉制御を再計算ユーザインターフェースに組み込むことによって、補足された環境信号を変換チェーンの論理および他のデータに組み込むことができる。また、こうした再計算ユーザインターフェースのオーサリングを許可するオーサリングツールが説明される。
2016519825.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステムのうちの１つまたは複数のプロセッサによって実行された場合、
イベントの検出時に環境信号を捕捉するように構成された信号捕捉制御と、
出力データに応答して表示するように構成された視覚化制御と、
前記信号捕捉制御と前記視覚化制御との間の１つまたは複数の宣言的変換の変換チェーンと、
を備える再計算ユーザインターフェースを、前記コンピューティングシステムに動作させるように構造化されたコンピュータ実行可能命令を有する、１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品。
【請求項２】
前記信号捕捉制御が捕捉するように構成された前記環境信号がイメージである、請求項１に記載のコンピュータプログラム製品。
【請求項３】
前記信号捕捉制御が捕捉するように構成された前記環境信号がビデオである、請求項１に記載のコンピュータプログラム製品。
【請求項４】
前記信号捕捉制御が捕捉するように構成された前記環境信号が配向である、請求項１に記載のコンピュータプログラム製品。
【請求項５】
前記信号捕捉制御が捕捉するように構成された前記環境信号が位置である、請求項１に記載のコンピュータプログラム製品。
【請求項６】
前記信号捕捉制御が捕捉するように構成された前記環境信号がオーディオである、請求項１に記載のコンピュータプログラム製品。
【請求項７】
前記信号捕捉制御が捕捉するように構成された前記環境信号が天候データである、請求項１に記載のコンピュータプログラム製品。
【請求項８】
前記イベントが変換からのデータの受信である、請求項１に記載のコンピュータプログラム製品。
【請求項９】
前記変換チェーンが追加のデータを使用する論理を組み込む、請求項１に記載のコンピュータプログラム製品。
【請求項１０】
信号捕捉制御のライブラリであって、前記ライブラリ捕捉制御のインスタンスは、対応するイベントに応答して環境信号を捕捉するように構成される、信号捕捉制御のライブラリと、
視覚化制御のライブラリと、
前記信号捕捉制御のうちの１つまたは複数および前記視覚化制御のうちの１つまたは複数を選択するため、および、前記選択された制御をモデル内に配置するための、制御選択機構と、
変換を宣言的に表現するため、および変換と前記モデル内の選択された制御とを結合するための、変換機構と、
を備える、ユーザインターフェースを提供するように構成された、再計算ユーザインターフェースオーサリングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
「再計算文書」は、様々なデータソースおよびデータシンクを示し、データソースとデータシンクとの間の宣言的変換を可能にする、電子文書である。様々なデータソースとデータシンクとを相互に接続する変換の任意の所与のセットの場合、データソースの出力はデータシンクによって消費され得るか、またはデータソースの出力はデータシンクによって消費される以前に変換の対象となり得る。これらの様々な変換が評価され、結果として、再計算文書全体にわたって表される１つまたは複数の出力が生じる。ユーザは、コーディングの深い知識を持たずに、宣言的変換を追加、除去、および編集することができる。こうした編集は、自動的に変換を再計算させ、１つまたは複数の出力に変化を生じさせる。
【０００２】
再計算文書の具体的な例が、セルのグリッドを含むスプレッドシート文書である。任意の所与のセルは、セル内に表示される特定の値を出力するために評価される式を含む可能性がある。式は、１つまたは複数の他のセルまたは値などのデータソースを言い表す可能性がある。
【０００３】
従来、再計算文書は、動作する環境に対して機能的に依存していない。再計算文書は、文書が東西南北のいずれに向かっているか、再計算文書の周辺で観察可能な画像および音声、位置および高度、天候、その他にかかわらず、同じことを実行する。再計算文書は、単に環境に依存する機能性能を有するものとはみなされていない。結局のところ、再計算文書はコンピュータ、一種の仮想世界内の単なる計算であるが、環境は実世界である。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書で説明される少なくともいくつかの実施形態は、受信したデータに応答して表示するように再構成される、１つまたは複数の視覚化制御を含む再計算ユーザインターフェースに関する。再計算ユーザインターフェースは、対応するイベントの検出時に対応する環境信号を捕捉するように各々構成された、１つまたは複数の信号捕捉制御も含む。１つまたは複数の宣言的変換の変換チェーンが、様々な制御間に位置決めされる。信号捕捉制御によって捕捉される環境信号の例は、イメージ、ビデオ、オーディオ、配向、バイオメトリクス、位置、天候、または環境に関する任意の他の情報を含む。こうした信号捕捉制御を再計算ユーザインターフェースに組み込むことによって、補足された環境信号を変換チェーンの論理および他のデータに組み込むことができる。本明細書で説明される少なくともいくつかの実施形態は、こうした再計算ユーザインターフェースのオーサリングを許可するオーサリングツールにも関する。
【０００５】
本概要は、請求する主題の主要な特徴または不可欠な特徴を識別することは意図されておらず、また、請求する主題の範囲を決定する際の補助として使用されることも意図されていない。
【０００６】
前述および他の利点および特徴が取得可能な様式を説明するために、添付の図面を参照することによって様々な実施形態のより特定の説明が示される。これらの図面が単なる例示的な実施形態を示しているため、本発明の範囲を限定するものとはみなされないことを理解し、実施形態は、添付の図面を使用することにより、追加の特異性および詳細を用いて記述および説明されることになる。
【図面の簡単な説明】
【０００７】
【図１】本明細書で説明されるいくつかの実施形態が採用可能なコンピューティングシステムを抽象的に示す図である。
【図２】介在する変換を伴ういくつかのデータソースおよびデータシンクを示し、本明細書で説明されるより広義の原理を説明するために提供される具体的な例として使用される、例示的な再計算ユーザインターフェースを抽象的に示す図である。
【図３】図２の再計算ユーザインターフェースなどの再計算ユーザインターフェースをオーサリングするための、オーサリングユーザインターフェースを示す図である。
【図４】変換チェーンにアクセスし、コンパイル済みコードおよび依存関係チェーンを作成するコンパイラを含む、例示的なコンパイル環境を示す図である。
【図５】再計算ユーザインターフェースの変換チェーンをコンパイルするための方法を示すフローチャートである。
【図６】入力データに依存するビュー構造を構築するデータ駆動構造フレームワークを含む、本発明の原理が採用可能な環境を示す図である。
【図７】図６の環境の一例を表す、パイプライン環境を示す図である。
【図８】図７の原理のデータ部分の実施形態を概略的に示す図である。
【図９】図７のパイプラインの分析部分の実施形態を概略的に示す図である。
【図１０】図７のパイプラインのビュー部分の実施形態を概略的に示す図である。
【発明を実施するための形態】
【０００８】
本明細書で説明される実施形態は、受信したデータに応答して表示するように再構成される、１つまたは複数の視覚化制御を含む再計算ユーザインターフェースに関する。再計算ユーザインターフェースは、対応するイベントの検出時に対応する環境信号を捕捉するように各々構成された、１つまたは複数の信号捕捉制御も含む。１つまたは複数の宣言的変換の変換チェーンが、様々な制御間に位置決めされる。信号捕捉制御によって捕捉される環境信号の例は、イメージ、ビデオ、オーディオ、配向、バイオメトリクス、位置、天候、または環境に関する任意の他の情報を含む。こうした信号捕捉制御を再計算ユーザインターフェースに組み込むことによって、補足された環境信号を変換チェーンの論理および他のデータに組み込むことができる。本明細書で説明される少なくともいくつかの実施形態は、こうした再計算ユーザインターフェースのオーサリングを許可するオーサリングツールにも関する。図１に関して、コンピューティングシステムのいくつかの導入的考察が説明される。その後、後続の図面に関して、信号捕捉制御を含む再計算ユーザインターフェースが説明される。
【０００９】
今やコンピューティングシステムは、ますます多種多様な形を取りつつある。たとえばコンピューティングシステムは、ハンドヘルドデバイス、電化製品、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散型コンピューティングシステム、あるいは従来はコンピューティングシステムとみなされていなかったデバイスとすることが可能である。本明細書または特許請求の範囲において、「コンピューティングシステム」という用語は、少なくとも１つの物理および有形のプロセッサ、ならびに、プロセッサによって実行可能なコンピュータ実行可能命令を有することができる物理および有形のメモリを含む、任意のデバイスまたはシステム（あるいはそれらの組み合わせ）として、広義に定義される。メモリは任意の形を取ることが可能であり、コンピューティングシステムの性質および形に依存することができる。コンピューティングシステムはネットワーク環境を介して分散可能であり、複数の構成コンピューティングシステムを含むことができる。
【００１０】
図１に示されるように、その最も基本的な構成において、コンピューティングシステム１００は、典型的には少なくとも１つの処理ユニット１０２およびメモリ１０４を含む。メモリ１０４は、揮発性、不揮発性、またはこの２つの何らかの組み合わせとすることが可能な、物理システムメモリとすることができる。「メモリ」という用語は、本明細書では、物理記憶媒体などの不揮発性大容量ストレージを言い表すために使用することができる。コンピューティングシステムが分散される場合、処理、メモリ、および／または記憶の機能も同様に分散され得る。本明細書で使用される場合、「実行可能モジュール」または「実行可能構成要素」という用語は、コンピューティングシステム上で実行可能なソフトウェアオブジェクト、ルーティング、または方法を言い表すことができる。本明細書で説明される異なる構成要素、モジュール、エンジン、およびサービスは、コンピューティングシステム上で（たとえば別々のスレッドとして）実行するオブジェクトまたはプロセスとして実装可能である。
【００１１】
以下の説明では、１つまたは複数のコンピューティングシステムによって実行される行為を参照しながら実施形態について説明する。こうした行為がソフトウェア内に実装される場合、行為を実行する関連付けられたコンピューティングシステムの１つまたは複数のプロセッサは、コンピュータ実行可能命令が実行されるのに応答して、コンピューティングシステムの動作を命じる。たとえば、こうしたコンピュータ実行可能命令は、コンピュータプログラム製品を形成する１つまたは複数のコンピュータ可読媒体上で具体化され得る。こうした動作の例は、データの操作を含む。コンピュータ実行可能命令（および操作されるデータ）は、コンピューティングシステム１００のメモリ１０４内に記憶可能である。コンピューティングシステム１００は、コンピューティングシステム１００がたとえばネットワーク１１０を介して他のメッセージプロセッサと通信できるようにする、通信チャネル１０８を含むこともできる。コンピューティングシステム１００は、視覚表現をユーザに表示するために使用され得るディスプレイ１１２も含む。
【００１２】
本明細書で説明される実施形態は、以下でより詳細に考察されるような、たとえば１つまたは複数のプロセッサおよびシステムメモリなどのコンピュータハードウェアを含む、特定用途向けまたは汎用のコンピュータを含むかまたは使用することができる。
本明細書で説明される実施形態は、コンピュータ実行可能命令および／またはデータ構造を担持または記憶するための、物理および他のコンピュータ可読媒体も含む。こうしたコンピュータ可読媒体は、汎用または特定用途向けのコンピュータシステムによるアクセスが可能な任意の使用可能媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理記憶媒体である。コンピュータ実行可能命令を担持するコンピュータ可読媒体は、伝送媒体である。したがって、限定ではなくたとえば、本発明の実施形態は、コンピュータ記憶媒体および伝送媒体という少なくとも２つの明確に異なる種類のコンピュータ可読媒体を含むことができる。
【００１３】
コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、あるいは、所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形で記憶するために使用可能であり、汎用または特定用途向けのコンピュータによるアクセスが可能な、任意の他の有形媒体を含む。
【００１４】
「ネットワーク」は、コンピュータシステムおよび／またはモジュールおよび／または他の電子デバイスの間での電子データの移送を可能にする、１つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続（ハードワイヤード、ワイヤレス、あるいはハードワイヤードまたはワイヤレスの組み合わせの、いずれか）を介してコンピュータに転送または提供される場合、コンピュータは接続を伝送媒体として適切に見る。伝送媒体は、所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形で担持するために使用可能であり、汎用または特定用途向けのコンピュータによるアクセスが可能な、ネットワークおよび／またはデータリンクを含むことができる。上記の組み合わせは、コンピュータ可読媒体の範囲内にも含まれるべきである。
【００１５】
さらに、様々なコンピュータシステム構成要素に到達すると、コンピュータ実行可能命令またはデータ構造の形のプログラムコード手段は、自動的に伝送媒体からコンピュータ記憶媒体へ（またはその逆に）転送され得る。たとえばネットワークまたはデータリンクを介して受信されたコンピュータ実行可能命令またはデータ構造は、ネットワークインターフェースモジュール（たとえば「NIC」）内のＲＡＭにバッファリングされた後、最終的に、コンピュータシステムＲＡＭおよび／またはコンピュータシステムのより揮発性でないコンピュータ記憶媒体へと転送され得る。したがって、コンピュータ記憶媒体は、伝送媒体も（さらには主に）使用するコンピュータシステム構成要素に含めることが可能であることを理解されたい。
【００１６】
コンピュータ実行可能命令は、たとえばプロセッサで実行された場合、汎用コンピュータ、特定用途向けコンピュータ、または特定用途向け処理デバイスにある機能または機能グループを実行させる、命令およびデータを含む。コンピュータ実行可能命令は、たとえば２進数、アセンブリ言語などの中間フォーマット命令、さらにはソースコードとすることができる。以上、構造的特徴および／または方法論的行為に特有の言語で主題について説明してきたが、添付の特許請求の範囲で定義される主題は、必ずしも上記で説明した特徴または行為に限定されるものでないことを理解されよう。むしろ、説明した特徴および行為は、特許請求の範囲を実装する例示的な形として開示されている。
【００１７】
当業者であれば、本発明が、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ページャ、ルータ、スイッチなどを含む、多くのタイプのコンピュータシステム構成を備えるネットワークコンピューティング環境で実施され得ることを理解されよう。本発明は、ネットワークを介して（ハードワイヤードデータリンク、ワイヤレスデータリンク、または、ハードワイヤードおよびワイヤレスのデータリンクの組み合わせによって）リンクされた、ローカルおよびリモートのコンピュータシステムの双方がタスクを実行する、分散型システム環境でも実施され得る。分散型システム環境では、プログラムモジュールはローカルおよびリモートの両方のメモリ記憶デバイス内に配置され得る。
【００１８】
本説明および特許請求の範囲では、「再計算ユーザインターフェース」は、ユーザが対話可能であり、１つまたは複数のデータソースおよび１つまたは複数のデータシンクが存在する環境内で発生する、インターフェースである。さらに、１つまたは複数のデータソースとデータシンクとの間で各々が宣言的に定義され得る、変換のセットが存在する。たとえば、１つのデータソースの出力が変換に送り込まれ、変換の結果がデータシンクに提供され、結果として、ユーザに対する視覚化において潜在的に何らかの種類の変化が生じることになる。
【００１９】
変換は、特定のコーディング知識を持たないユーザが変換を定義する宣言を作成できるという意味で、「宣言的」である。変換が宣言的に定義されるため、ユーザは宣言的変換を変更することができる。これに応答して、再計算が実行され、結果としておそらく異なるデータがデータシンクに提供されることになる。
【００２０】
再計算ユーザインターフェースの典型的な例がスプレッドシート文書である。スプレッドシート文書はセルのグリッドを含む。初期にセルは空であるため、スプレッドシートプログラムの任意のセルは、ユーザによって入力される宣言式の意味および文脈に応じて、データソースまたはデータシンクとなる可能性を有する。たとえばユーザは所与のセルを選択し、そのセルに式を入力することができる。式は、そのセルに割り当てられることになる表されたスカラ値と同様に単純であり得る。そのセルは、後にデータソースとして使用され得る。代替として、所与のセルに関する式は、入力値が１つまたは複数の他のセルから取られる等式の形であり得る。その場合、所与のセルは、変換の結果を表示するデータシンクである。しかしながら、続くオーサリングの間、そのセルは著者によって宣言的に行われるさらに他の変換に関するデータシンクとして使用され得る。
【００２１】
スプレッドシート文書の著者は、実行型コードの専門家である必要はない。著者は単に、変換を定義する宣言を作成し、対応するデータシンクおよびデータソースを選択するだけである。以下で説明する図６から図１０は、より一般化された再計算ユーザインターフェースが説明される、より一般化された宣言的オーサリング環境を提供する。引き続き説明される環境では、視覚化された制御はデータソースおよびデータシンクの両方として働くことができる。さらに宣言的変換は、それらの制御の単純な操作によってより直感的にオーサリングされ得る。
【００２２】
図２は、本明細書で説明されるより広義の原理を説明するために提供される特定の例である、例示的な再計算ユーザインターフェース２００を抽象的に示す。再計算ユーザインターフェース２００は、無数の多様な適用例に関して無数の多様な再計算ユーザインターフェースを作成するために、本明細書で説明される原理が任意の再計算ユーザインターフェースに適用可能である場合の、単なる例である。
【００２３】
再計算ユーザインターフェース２００は、いくつかの宣言的変換２１１から２１５を含む。変換２１１から２１５を表す各々の矢印を囲む破線の円は、変換が各々宣言的形式であることを記号化している。
【００２４】
図２のこの特定の例では、変換２１１はそれぞれデータソース２０１およびデータシンク２０２を含む。１つの変換のためのデータシンクは別の変換のためのデータソースでもあり得ることに留意されたい。たとえば、変換２１１のためのデータシンク２０２は、変換２１２のためのデータソースとしても働く。さらに変換は、複数のデータソースを有することができる。したがって、変換チェーンは階層的に、したがってかなり複雑に作成され得る。たとえば変換２１２はデータソース２０２およびデータシンク２０３を含む。データシンク２０３は２つのデータソース、すなわち、変換２１２のためのデータソース２０２および変換２１４のためのデータソース２０５を含む。とは言え、おそらく単一の変換が、２つのデータソース２０２および２０５をデータシンク２０３内に導く。変換２１３はデータソース２０４およびデータシンク２０５を含む。
【００２５】
再計算ユーザインターフェースは、視覚化制御を有する必要がない。この一例が、通常のケースでの計算に関してユーザにいかなる情報も表示せずに、変換ベースの計算を実行し、ソースデータを消費して、シンクデータを更新するように意図された、再計算ユーザインターフェースである。たとえば再計算ユーザインターフェースは、背景計算をサポートすることができる。第２の例は、処理制御例におけるバルブなどの、外部アクチュエータを動作させる出力制御を有する再計算ユーザインターフェースである。こうした制御は、状態が変換計算の結果によって信号入力状で制御される表示制御と同様である。しかしながらここでは、出力は、ディスプレイに対する視覚化というよりむしろ、デバイスに対する制御信号である。たとえば、ロボットを制御するための再計算ユーザインターフェースについて考えてみる。この再計算ユーザインターフェースは、サーボの位置および速度、超音波領域発見測定などの、入力ロボットセンサに依存する、ロボットのアクションおよび挙動に関する規則を有することができる。あるいは、バルブ位置、流体流速などの機器センサからの信号を取る再計算ユーザインターフェースに基づく処理制御アプリケーションについて考えてみる。
【００２６】
本明細書で説明される原理によれば、データソース／シンク２０１から２０５のうちの１つまたは複数は、信号捕捉制御とすることができる。加えて、データソース／シンク２０１から２０５のうちの１つまたは複数は、視覚化制御とすることができる。視覚化制御は、そのパラメータのうちの１つまたは複数に依存して、ある様式で表示する制御である。そのパラメータは、たとえば、変換２１１から２１５によって表される変換チェーンなどの変換チェーンから出力データを受信することによって設定され得る。
【００２７】
再計算ユーザインターフェースは、視覚化制御を有する必要がない。この一例が、通常のケースでの計算に関してユーザにいかなる情報も表示せずに、変換ベースの計算を実行し、ソースデータを消費して、シンクデータを更新するように意図された、再計算ユーザインターフェースである。たとえば再計算ユーザインターフェースは、背景計算をサポートすることができる。第２の例は、処理制御例におけるバルブなどの、外部アクチュエータを動作させる出力制御を有する再計算ユーザインターフェースである。こうした制御は、状態が変換計算の結果によって信号入力状で制御される表示制御と同様である。しかしながらここでは、出力は、ディスプレイに対する視覚化というよりむしろ、デバイスに対する制御信号である。
【００２８】
他方で、信号捕捉制御は、イベントの検出時に環境信号を捕捉するように構成される。捕捉された環境信号は、ユーザに表示されるか、または入力として変換チェーンに提供され、それによって変換チェーンによって生成される出力データに影響を与えることができる。信号捕捉制御によって捕捉され得る環境信号の例は、イメージ、ビデオ、オーディオ、サウンドレベル、配向、位置、バイオメトリクス、天候（たとえば気温、太陽光レベル、降水量、湿度、気圧、風）、加速度、圧力、引力、太陽の位置、月の配向、スピーカの識別、人物または物体の識別あるいはイメージまたはビデオにおけるそれらの集合、および任意の他の可能な環境信号を含む。いくつかの実施形態において、制御は、イベントの検出時に環境信号を捕捉するように構成された信号捕捉制御、および、制御のパラメータのうちの１つまたは複数に依存する視覚化された特徴を有するオブジェクトをレンダリングするように構成された視覚化制御の、両方とすることができる。
【００２９】
信号捕捉制御は、あるイベントの検出時にセンサに信号を捕捉させる目的で、適切な環境センサと通信することができる。たとえば、信号捕捉制御がイメージを捕捉するためのものである場合、信号捕捉制御はイベントが検出された時に写真を撮るためにカメラを起動させることができる。同様に、ビデオカメラ、レコーダ、サウンドメータ、コンパス、加速度計、または任意の他の適切なセンサなどの、他のセンサを、信号捕捉制御に結合されたセンサとして使用することができる。
【００３０】
検出されるイベントは任意の所定のイベントとすることができる。例にはユーザイベントが含まれる。たとえばユーザは、環境信号を対応するセンサによって捕捉させるために、ある方法で信号捕捉制御の視覚化された表現と実際にインターフェースすることができる。イベントは、別の信号捕捉制御からの出力に依存することもできる。たとえばイベントは、ユーザがある方法で特定の制御とインターフェースする一方で、別の信号捕捉制御によって捕捉される環境信号はある領域内にあること、とすることができる。イベントは、信号捕捉制御による変換チェーンからのあるデータの受信とすることもできる。イベントは、環境信号を捕捉するために信号捕捉制御をトリガする。
【００３１】
残りの変換チェーンによって組み合わされた論理を用いるこうした信号捕捉制御のアクションは、多種多様なシナリオを実行することができる。特に、こうした環境信号をさらなるデータと組み合わせることができる。これによって、環境信号をデータ（たとえばビジネスデータ）および論理（たとえばビジネス論理）と組み合わせ、スプレッドシートなどの従来の再計算ユーザインターフェースの使用ではこれまで決して許可されることのなかったシナリオを、実行することができる。次に、これらの原理が現代社会にもたらすことのできる効用を論証するために、無数の多様なこうしたシナリオのうちのいくつかのシナリオについて説明する。
【００３２】
セキュリティサービスシナリオでは、サービスプロバイダのタスクは、顧客の家の中を歩き回り、必要なセキュリティデバイスを識別することである。プロバイダは、写真を撮影できるモバイルデバイスと共に家の中を歩き回る。１つの部屋では引き戸の写真を撮り、戸の画像上でセキュリティデバイスをドラッグアンドドロップするが、このセキュリティデバイスは、画像内に示された家のその部分の安全を守るために必要となるデバイスを表す。さらに、各写真にコンパス出力およびＧＰＳ位置を関連付け、その出力も各写真に関連付けられる。サービスプロバイダは引き続き家の中を歩き回り、家のセキュリティに敏感な区域の写真を引き続き撮影し、それらの写真（各写真は配向および位置の情報を有する）上でセキュリティデバイスを引き続きドラッグアンドドロップする。背景で実行しているビジネス論理は、デバイスの各カテゴリの数をカウントしている。デバイスの数が現行のサービスレベルの所定の限界を超えると、ポップアップ視覚化が現れ、より多くのデバイスを許可するためにセキュリティサービスをアップグレードすべきかどうかを尋ねる。サービスプロバイダは顧客に実行したい内容を尋ね、顧客はサービスをアップグレードすることを選択する。次にサービスプロバイダはアップグレードすることを選択し、家に対するセキュリティデバイスの割り当てを完了する。
【００３３】
次に、結果がインストーラに提供される。１週間後、インストーラの配向および全地球測位情報が、インストーラを各セキュリティに敏感な位置へと誘導する。インストーラは、インストーラが写真の位置および配向に誘導された後で見ている内容とイメージとを比較することによって、正しい位置を確認する。インストーラがその位置に来ると、ポップアップ視覚化が現れ、そのセキュリティに敏感な位置に必要なデバイスのリストを提供する。これは、すべてのセキュリティに敏感な位置について続行され、予測された位置で必要かつ予測されるすべてのセキュリティデバイスが消費者に提供されるため、消費者および契約を満足させることになる。
【００３４】
この例では、撮影された画像ならびに各画像に関する配向および位置は、捕捉される環境信号の例を表す。セキュリティデバイスの識別およびカウントはビジネスデータの例を表し、セキュリティデバイスの現在の在庫がいずれのサービスレベルに属するかの決定は、ビジネス論理の例である。
【００３５】
別の面接シナリオでは、監督者が従業員の四半期レビューを実行している。企業ポリシーによれば、従業員に質問される予定のいくつかの特定の設問がある。面接は記録される。面接の開始時にレコーダが起動されると、質問される予定のいくつかのシステムのそれぞれについてポップアップが現れる。面接官が設問の１つを質問し始めると、面接官は「開始」制御を起動し、記録内の位置にタグ付けする。従業員が設問への回答を完了すると、監督者は、従業員の回答への等級付けを後に延期したい場合、「完了」制御を押すか、または従業員の回答への監督者の印象を示すある等級（1から10まで）を押す。いずれの場合も、記録はその回答の終わりにタグ付けされ、そのポップアップはディスプレイから除去される。これは、質問する設問がなくなるまで続行される。
【００３６】
３週間後、人事への評価提出期限が近づき、監督者は記録に戻る。ポップアップ視覚化が現れ、監督者が面接プロセス中に１０の設問のうちの６つに等級付けし、１０の設問のうちの４つは等級付けを延期したことを、監督者に示す。ユーザは残りの４つについて１回に１つ視覚化を選択し、これによって記録（その設問に対する開始タグで始まり、その設問に対する終了タグで終了し、両方のタグは面接プロセス中に作成されている）の一部が、監督者に提示される。監督者は再度記録を聞き、面接のその部分に対して等級を与える。
【００３７】
ここで、捕捉された信号はオーディオ記録であった。ビジネスデータは、面接プロセス中に提示された各設問の開始および終了、ならびに監督者によって割り当てられた等級であった。ビジネス論理は、面接中に質問される予定のいくつかの設問が存在したことであった。
【００３８】
第３のシナリオは、遺言書の起草を含む。遺言書が完了すると、起草者が健全な精神であるか否かを評価できるようにするために、ユーザにいくつかの設問が質問される。設問は、健全な精神のある人物がある方法で回答できるような、著者の子供の識別などの設問を含むことができる。質問の開始時に、著者のビデオを撮影することができる。プログラム自体が著者の挙動を評価し、著者の精神の健全さおよび不利な決定の理由に関する意見を提供することができる。その後ビデオは、後に遺言書を処分するために、遺言書と一体的に入手できるようにすることができる。したがって裁判所は、遺言書が有効であるか否かを判別するためにビデオを評価することができる。
【００３９】
いずれにしても、遺言書を証言する時が来た場合、プログラムは第１の証人の画像を撮影することができる。第２の証人が遺言書を証言する時が来た場合、プログラムは第２の証人の画像を撮影することができる。証人が同一人物であること、または遺言書自体の著者であることが分かった場合、ビジネス論理は遺言書起草プロセスを無効にするか、または訂正を要求することができる。
【００４０】
この例では、捕捉される信号は、ある設問に回答している遺言書の著者のビデオおよびオーディオ、ならびに証人の画像である。ビジネス論理は、著者が健全な精神でなければならないこと、または、少なくともある設問に対する著者の回答のビデオが記録されなければならないことである。また、ビジネス論理は、遺言書に対する２人の証人が異なる個人でなければならないこと、および遺言書の著者とは異なることである。
【００４１】
第４の例では、携帯電話を携帯しているユーザが、その日にエクササイズのためにランニングに行くことを決定する。スマートフォン内の再計算ユーザインターフェースソフトウェアは、ユーザの心拍数がエアロビックエクササイズゾーンに移動した旨、およびユーザが車道以外（すなわち歩道）をランニング速度（たとえば４〜６マイル（６．４〜９．６キロメートル））で移動している旨の、信号を理解する。このことから、再計算ユーザインターフェース内の規則により、ユーザがエクササイズしていることが推論され、エクササイズに適した再計算文書がロードされる。これにより、含まれる制御を介して、たとえばユーザエクササイズ統計（燃焼カロリー、現在のペース、心拍数グラフによる心拍数、地形標高図など）を表示することができる。他の規則に基づき、文書は、ユーザの心拍数が年齢に対して危険な高値ゾーンに入ったことが検出された場合、可聴警告を鳴らすこと、ならびに、ユーザが胸痛を体験し始めた場合、ヘルプを取得するためのリンクが含まれた警告ページおよび救急車を呼ぶためのボタンを表示することの、両方を実行するように更新することができる。したがって信号を検出することによって、文書ソフトウェアは、表示される情報およびアクションがユーザの現在のアクティビティに適切であるように、表示される内容およびユーザが利用できるアクションの両方を変更している。
【００４２】
したがって、環境信号の捕捉、ならびに、環境信号と論理（たとえばビジネス論理）およびデータ（たとえばビジネスデータ）との組み合わせによって、以前は不可能であった有用な様々の豊富なシナリオが再計算ユーザインターフェースを使用して可能になる。
【００４３】
コンピューティングシステム（図１のコンピューティングシステム１００など）は、オーサリングを容易にするオーサリングユーザインターフェースが提供される様式で再計算ユーザインターフェースオーサリングシステムを動作させるために、１つまたは複数のコンピュータ可読媒体上に提供される、コンピュータ実行可能命令も実行することができる。
【００４４】
たとえば図３は、信号捕捉制御のライブラリ３１０を含むユーザインターフェース３００を示す。図３のライブラリ３１０には、３つの異なるタイプ３１１、３１２、および３１３の信号捕捉制御が示されている。しかしながら、省略記号３１４は、ライブラリ３１０内に任意数の信号捕捉制御タイプが存在し得ることを示す。ユーザインターフェース３００は、可視化制御のライブラリ３２０も含む。ライブラリ３２０には、４つの異なるタイプ３２１、３２２、３２３、および３２４の可視化制御が示されている。しかしながら、省略記号３２５は、ライブラリ３２０内に任意数の可視化制御タイプが存在し得ることを示す。とは言え、前述のように、信号捕捉制御は視覚化制御として働くことも可能であり、この場合、信号捕捉制御と視覚化制御とを必ずしも区別する必要がない。
【００４５】
ユーザインターフェース３００は、再計算ユーザインターフェースがオーサリングされるモデルオーサリング領域３３０も含む。信号捕捉制御のうちの１つまたは複数および可視化制御のうちの１つまたは複数を選択するため、ならびに選択された制御をモデル内に配置するために、制御選択機構３４０が提供される。こうした機構の１つの例は、制御をモデルオーサリング領域３３０内にドラッグアンドドロップすることである。このように実行することによって、対応する制御のインスタンスがモデル内に作成される。
【００４６】
ユーザインターフェース３００は、モデル内の制御間に情報が作成されることを可能にする、変換作成機構３５０も含む。変換は、著者によって直接宣言的に定義され得、制御のうちの１つまたは複数を操作することによって間接的に宣言的に定義され得る。
【００４７】
以上、結果的に、再計算ユーザインターフェース、および同様にオーサリングするためのオーサリングシステムについて説明してきた。本明細書で説明される原理は挙動が検証される様式に限定されず、次に、その挙動がいかにして検証され得るかの例について、図４および図５に関して説明する。
【００４８】
図４は、変換チェーン４０１にアクセスするコンパイラ４１０を含む、例示的なコンパイル環境４００を示す。変換チェーン４０１の例が、図２の変換チェーンである。コンパイラ４００は、変換２１１から２１５の各々を分析することができる。変換は宣言的であるため、依存関係は、変換が実行型コンピュータ言語を使用して表された場合よりも容易に抽出することができる。
【００４９】
分析に基づき、依存関係グラフ４１２が作成される。本質的に依存関係は、イベントを表すソースエンティティと、そのターゲットエンティティの評価がイベントに依存することを表すターゲットエンティティとを有する。イベントの例は、ユーザがある方法で再計算ユーザインターフェースと対話するユーザイベントとすることができる。別の例として、イベントは、ソースエンティティが評価された場合、依存関係のターゲットエンティティも評価されるべきであるという、エンティティ間イベントとすることができる。
【００５０】
次にコンパイラ４１０は、依存関係グラフ４１２に基づいて下位レベル実行ステップを作成する。下位レベル実行ステップは、たとえば実行型言語コードとすることができる。こうした下位レベルコード４１１は、変換チェーン内の変換の各々のコンパイルを含む。たとえば下位レベルコード４１１は、変換チェーン内の変換の各々のコンパイルを表す要素４２１を含むものとして示される。図２との関連において、要素４２１は変換２１１から２１５の各々のコンパイルを含む。下位レベルコード４１１は、様々な機能４２２も含む。機能は、依存関係グラフ内の各依存関係について生成される。機能は実行型言語機能とすることができる。
【００５１】
実行型言語ランタイムが依存関係グラフに列挙されたイベントを検出した場合、コンパイル済み機能４２２内の対応する機能も実行される。したがって、すべての変換が適切にコンパイルされ、特定イベントに関する依存関係の各々が専用の機能によって強化された場合、宣言的再計算ユーザインターフェースは実行型言語コードとして適切に表される。
【００５２】
それに応じて、宣言的再計算ユーザインターフェースをコンパイルするための有効な機構について説明してきた。加えて、ランタイムには、より広範なインタプリタではなく依存関係グラフが提供される。
【００５３】
図４および図５に関して説明される環境は、再計算ユーザインターフェースのコンパイルが可能なだけでなく、再計算ユーザインターフェースが漸進的にコンパイルされるという漸進的変化も可能である。これにより、ユーザが、最終製品にインタプリタを展開する必要なしに、また漸進的変化の間に再計算ユーザインターフェースを完全に再コンパイルする必要なしに、再計算ユーザインターフェースの挙動を即時に検証することが可能な、漸進的オーサリング体験が容易になる。
【００５４】
図４を参照すると、コンパイル環境４００は、ユーザが変換チェーン２００または４０１を含む再計算ユーザインターフェースをオーサリングするのを支援するための、オーサリング構成要素４３１も含む。たとえばオーサリング構成要素４３１は、図３のオーサリングユーザインターフェース３００とすることができる。コンパイル環境４００は、変換チェーン４０１の分析を介して依存関係グラフ４１２を生成するように構成された、分析モジュール４３２も含む。分析モジュール４３２は、追加、除去、または修正された宣言的変換の形で、オーサリング構成要素４３１を介して変換チェーン４０１に変更が実行されたことを検出する、変更検出機構４４１を含む。変更に応答して、分析モジュール４３２は、変換チェーン４０１の変更部分を再分析し、依存関係グラフの１つまたは複数の影響を受けた依存関係を識別するように構成される。
【００５５】
次にコンパイラ４１０は、再計算ユーザインターフェース全体をコンパイルすることなく、１つまたは複数の影響を受けた依存関係を含む再計算ユーザインターフェースの一部を漸進的にコンパイルすることによって、変更に応答することができる。コンパイラは、再計算されたインターフェースの一部を実行型言語の機能の細分性でコンパイルすることができる。たとえば前述のように、依存関係グラフ内の各依存関係について、実行型言語機能が存在し得る。再コンパイルが必要なのは、１つまたは複数の影響を受けた依存関係に関するそれらの１つまたは複数の機能のみである。
【００５６】
分析モジュール４３２は、依存関係グラフ内に誤りが存在することを検出する、誤り検出モジュール４４２をさらに含む。コンパイラ４１０は、依存関係グラフ内に誤りが検出されない場合、漸進的コンパイルが制限され得る。さらにユーザは、依存関係グラフ内に誤りが存在する場合、誤りを訂正するように促されることが可能であり、オーサリング構成要素４３１からの後続の変更が結果として誤りを訂正し、それによって漸進的コンパイルを可能にする確率を上げることになる。
【００５７】
漸進的なコンパイルに必要な時間は、プログラム全体のコンパイルに必要な時間に比べてごくわずかである。したがって、長期にわたるコンパイルプロセスによってオーサリング体験が妨げられることはない。代わりに、著者は変更を行い、結果として生じる挙動が意図された通りであることを即時に検証すること（または、挙動が評価される前に訂正される必要のある誤りを見つけること）ができる。したがって、最終製品に実質的なインタプリタを展開する必要さえなしに、有効な漸進的オーサリング体験が提供される。
【００５８】
次に、再計算ユーザインターフェースを使用して複雑な挙動を有するプログラムを非プログラマがオーサリングできるようにするための、オーサリングパイプラインの特定の例を、図６から図１０に関して説明する。
【００５９】
図６は、再計算ユーザインターフェースの形で対話型視覚構造を構成するために使用され得る、視覚構造環境６００を示す。再計算ユーザインターフェースの構成は、データ駆動分析および分析結果の視覚化を使用して実行される。環境６００は、ビュー構造６３０の問題ドメインとは無関係に実行される論理を実行する、構造フレームワーク６１０を含む。たとえば、同じ構造フレームワーク６１０を使用して、都市計画、分子モデル、雑貨店の棚のレイアウト、機械の性能または組み立て分析、あるいは他のドメイン固有のレンダリングについて、対話型ビュー構造を構成することができる。
【００６０】
しかしながら、構造フレームワーク６１０は、ドメイン固有データ６２０を使用して、ドメインに固有の実際の視覚構造６３０を構成する。したがって、同じ構造フレームワーク６１０を使用して、構造フレームワーク６１０自体を再コーディングしなければならないのではなく、ドメイン固有データ６２０を変更することによって、任意数の異なるドメインに対してユーザインターフェースを再計算することができる。したがって、パイプライン６００の構造フレームワーク６１０は、再コーディングおよび再コンパイルではなく、データを変更することによって、潜在的に無制限数の問題ドメインに対して、または少なくとも多種多様な問題ドメインに対して、適用可能である。そこでビュー構造６３０は、適切な２次元または３次元のレンダリングモジュールに命令として供給することができる。本明細書で説明されるアーキテクチャは、新しいビュー構造モデルにブロックを構築する際の、既存のビュー構造モデルの便利な組み合わせも可能にする。一実施形態において、モデルに対する２つの可能なソリューション間での平易な比較を可能にするために、複数のビュー構造を統合ビュー構造に含めることができる。
【００６１】
図７は、パイプライン環境７００の形の構造フレームワーク６１０の例示的アーキテクチャを示す。パイプライン環境７００は、とりわけパイプライン７０１自体を含む。パイプライン７０１は、データ部７１０、分析部７２０、およびビュー部７３０を含み、各々がそれぞれ後続の図８から図１０および添付の記述に関して詳細に説明される。次に、一般的なレベルで、パイプライン７０１のデータ部７１０は様々な異なるタイプのデータを受け入れることが可能であり、パイプライン７０１の分析部７２０に対してそのデータを正規の形で提示する。分析部７２０は、データを様々なモデルパラメータと結合し、モデル分析を使用してモデルパラメータ内の未知のものを解決する。次いで、モデルパラメータ内のそれらの値を使用して構造ビューを構成するビュー部７３０に、様々なパラメータ値が提供される。
【００６２】
パイプライン環境７００は、パイプライン７０１の著者または他のユーザがパイプライン７０１に提供するためのデータを定式化および／または選択できるようにする、オーサリング構成要素７４０も含む。たとえば、オーサリング構成要素７４０を使用して、（入力データ７１１によって表される）データ部７１０、（分析データ７２１によって表される）分析部７２０、および（ビューデータ７３１によって表される）ビュー部７３０の各々に、データを供給することができる。様々なデータ７１１、７２１、および７３１は、図６のドメイン固有データ６２０の例を表し、以下でより詳細に説明される。オーサリング構成要素７４０は、たとえば、データスキーマ、モデルによって使用されることになる実際のデータ、外部ソースからもたらされることになるデータの位置または可能な位置の範囲、視覚（グラフィカルまたはアニメーション）オブジェクト、視覚的モデリングステートメント（たとえばビュー、等式、制約）上で実行され得るユーザインターフェース対話、結合などを含む、多種多様なデータの提供をサポートする。しかし一実施形態において、オーサリング構成要素は、（図７には示されていないが、図６の構造フレームワーク６１０によって表される）全体のマネージャ構成要素によって提供される機能の一部である。マネージャは、（ユーザ対話イベント、外部データイベント、および、ソルバ、オペレーティングシステムなどの任意の他の構成要素からのイベントなどの）イベントに応答して、（データコネクタ、ソルバ、ビューワなどの）すべての他の構成要素の動作を制御および順序付けする、全体のディレクタである。
【００６３】
図７のパイプライン環境７００において、オーサリング構成要素７４０は既存のパイプライン７０１にデータを提供するために使用され、これはプロセス全体を、入力データを定義することから、分析モデルを定義すること（上記では「変換チェーン」と呼ばれる）、変換チェーンの結果がビュー構造においてどのように視覚化されるかを定義することに進めるデータである。したがって、多種多様なドメインおよび問題のうちのいずれか１つにパイプライン７０１を適合させるために、いずれかのコーディングを実行する必要はない。パイプライン７０１に提供されるデータは、異なる問題領域全部のいずれかから異なるビュー構造を視覚化するために、またはおそらく既存のドメインについて解決する問題を調整するために、パイプライン７０１を適用するように変更する内容のみである。さらに、データは使用時に（すなわちランタイムで）、ならびにオーサリング時に、変更可能であるため、モデルはランタイムで修正および／または拡張可能である。したがって、モデルのオーサリングとモデルの実行との区別は、存在してもわずかである。すべてのオーサリングがデータ項目の編集を含むため、およびソフトウェアがその挙動のすべてをデータから実行するため、データに対するあらゆる変更は、再コーディングおよび再コンパイルの必要なしに、挙動に即時に影響を与える。
【００６４】
パイプライン環境７００は、ユーザが表示されたビュー構造と対話したことを検出した後、これに応答して何を実行するかを決定する、ユーザ対話応答モジュール７５０も含む。たとえばいくつかのタイプの対話は、パイプライン７０１に提供されるデータ内での変更を必要としないため、ビュー構造に対する変更を必要としない可能性がある。他のタイプの対話は、データ７１１、７２１、または７３１のうちの１つまたは複数を変更することができる。この場合、この新しいかまたは修正されたデータは、新しい入力データをデータ部７１０に提供させること、分析部７２０による入力データの再分析を必要とすること、および／または、ビュー部７３０によるビュー構造の再視覚化を必要とすることがあり得る。
【００６５】
したがって、パイプライン７０１を使用して、データ駆動の分析視覚化を、おそらくは無制限数の問題ドメイン、または少なくとも多種多様な問題ドメインまで、拡張することができる。さらに、多種多様な問題に対処するようにビュー構造を変更するには、プログラマである必要はない。次に、パイプライン７０１のデータ部７１０、分析部７２０、およびビュー部７３０の各々について、図８のデータ部８００、図９の分析部９００、および図１０のビュー部１０００のそれぞれに関して、この順序で説明する。図８から図１０を見れば明らかなように、パイプライン７０１は一連の変換構成要素として構成可能であり、それぞれが１）何らかの適切な入力データを受信し、２）その入力データに応答して（入力データ上での変換の実行などの）何らかのアクションを実行し、３）その後、次の変換構成要素への入力データとして働くデータを出力する。
【００６６】
図８は、図７のパイプライン７０１のデータ部８００の多くの可能な実施形態のうちの１つのみを示している。データ部８００の機能の１つは、図９に関して論じるパイプラインの分析部９００によって理解されるスキーマに合致する、正規フォーマットでデータを提供することである。データ部は、異種データ８０１にアクセスするデータアクセス構成要素８１０を含む。入力データ８０１は、データが正規の形でデータアクセス構成要素８１０に提示され得る（が、必ずしもその必要はない）という意味で、「異種」とすることができる。実際には、データ部８００は、異種データが多種多様なフォーマットであり得るように構成される。モデルによってアクセスおよび動作され得る異なる種類のドメインデータの例は、テキストおよびＸＭＬ文書、テーブル、リスト、階層（ツリー）、ＳＱＬデータベース照会結果、ＢＩ（ビジネスインテリジェンス）キューブ照会結果、様々なフォーマットの２次元図面および３次元視覚モデルなどのグラフィカル情報、ならびにそれらの組み合わせ（すなわち合成物）を含む。さらに、アクセス可能なデータの種類は、アクセスされることになるデータに定義（たとえばスキーマ）を提供することによって、宣言的に拡張することができる。したがってデータ部８００は、モデル内への多種多様な異種入力を許可し、アクセス可能データタイプのランタイムでの宣言的拡張もサポートする。
【００６７】
一実施形態において、データアクセス部８００は、多数の異なるデータソースからデータを取得するための多数のコネクタを含む。コネクタの主要な機能のうちの１つは、対応するデータを正規の形に配置することであるため、こうしたコネクタは、下記および図面においてしばしば「正規化器」と呼ばれることになる。各正規化器は、その対応するデータソースの固有のアプリケーションプログラムインターフェース（API）を理解することができる。正規化器は、データソースとの間でのデータの読み取りおよび／または書き込みのために、その対応するＡＰＩとインターフェースするための対応する論理も含むことができる。したがって正規化器は、外部データソースとデータのメモリイメージとの間をブリッジする。
【００６８】
データアクセス構成要素８１０は、入力データ８０１を評価する。入力データがすでに正規であるため、分析部９００によって処理可能である場合、入力データは、分析部９００に入力される正規データ８４０として直接提供することができる。
【００６９】
しかしながら、入力データ８０１が正規でない場合、適切なデータ正規化構成要素８３０は入力データ８０１を正規フォーマットに変換することができる。データ正規化構成要素８３０は、実際には、それぞれが特定の特徴を有する入力データを正規の形に変換することが可能なデータ正規化構成要素８３０の集合体である。正規化構成要素８３０の集合体は、４つの正規化構成要素８３１、８３２、８３３、および８３４を含むものとして示されている。しかしながら、省略記号８３５は、他の数の正規化構成要素も存在可能であることを表しており、図示された４つよりも少ない場合もあり得る。
【００７０】
入力データ８０１は、正規化器自体、ならびに相関されたデータ特徴の識別を含むこともできる。その後、データ部８００は、相関されたデータ特徴を登録し、正規化構成要素をデータ正規化構成要素集合体８３０に提供することが可能であり、ここで使用可能な正規化構成要素に追加することができる。その後、それらの相関された特徴を有する入力データが受信された場合、データ部８１０は、相関された正規化構成要素に入力データを割り当てることができる。正規化構成要素は、ウェブ上の定義済み構成要素ライブラリからなど、外部ソースから直接見つけることもできる。たとえば、所与のデータソースに関するスキーマは知られているが、必要な正規化器が存在しない場合、こうしたライブラリを見つけることが可能であり、必要な構成要素を含んでいるという条件で、正規化器の位置を外部構成要素ライブラリから特定することができる。パイプラインは、まだスキーマが知られていないデータを解析すること、および、データタイプの動的決定を試行し、必要な正規化器構成要素の位置を特定するために、解析結果と知られた構成要素ライブラリ内のスキーマ情報とを比較することも可能である。
【００７１】
代替として、入力データがすべての正規化構成要素を含む代わりに、入力データは正規化変換を定義する変換定義を提供することができる。その後、集合体８３０は、その変換定義を、ゼロを伴う変換、またはより標準的なデフォルトの正規化変換を強化する、対応する正規化構成要素に変換するように構成され得る。これは、データ部８００が入力データを消費し、対応する正規化されたデータをパイプラインの下方まで提供しない場合の例を表す。しかしながらおそらくほとんどの場合、入力データ８０１の結果として、対応する正規化されたデータ８４０が生成されることになる。
【００７２】
一実施形態において、データ部８１０は、入力データのファイルタイプおよび／またはフォーマットタイプに基づいてデータ正規化構成要素に入力データを割り当てるように構成され得る。他の特徴は、たとえば入力データのソースを含むことができる。デフォルトの正規化構成要素は、指定された対応する正規化構成要素を有さない入力データに割り当てることができる。デフォルトの正規化構成要素は、入力データを正規化するように試行するために、規則のセットを適用することができる。デフォルトの正規化構成要素がデータを正規化できない場合、デフォルトの正規化構成要素は、入力データにスキーマ定義を提供するようユーザに促すために、図６のオーサリング構成要素６４０をトリガすることができる。スキーマ定義が既存でない場合、オーサリング構成要素６４０は、著者が入力データを正規の形に変換するために使用可能な対応するスキーマ定義を生成するのを助けるために、スキーマ定義アシスタントを提示することができる。データが正規の形になると、データに付随するスキーマは、パイプライン７０１の残りの部分がデータを解釈するための新しいコードを必要としない、データの十分な記述を提供する。代わりに、パイプライン７０１は、アクセス可能なスキーマ宣言言語を表すことが可能な任意のスキーマを考慮してデータを解釈することが可能なコードを含む。
【００７３】
いずれにせよ、正規化データ８４０は、データ部８００からの出力データとして、および分析部９００への入力データとして、提供される。正規のデータは、様々なデータタイプを含むフィールドを含むことができる。たとえばフィールドは、整数、浮動小数点数、文字列、ベクトル、アレイ、集合体、階層構造、テキスト、ＸＭＬ文書、テーブル、リスト、ＳＱＬデータベース照会結果、ＢＩ（ビジネスインテリジェンス）キューブ照会結果、様々なフォーマットの２次元図面および３次元視覚モデルなどのグラフィカル情報、ならびにこれらの様々なデータタイプの複雑な組み合わせを含むことができる。別の利点として、正規化プロセスは、多種多様な入力データを正規化することができる。さらに、データ部８００が受け入れることのできる多様な入力データは拡張可能である。これは、本説明で後に考察されるように、複数のモデルが結合される場合に役立つ。
【００７４】
図９は、図７のパイプライン７０１の分析部７２０の例を表す分析部９００を示す。データ部８００は、正規化済みデータ９０１をデータ−モデル結合構成要素９１０に提供した。正規化済みデータ９０１は任意の正規化済み形式および任意数のパラメータを有することが可能である一方で、パラメータの形式および数は入力データによって異なる場合さえある。しかしながら、考察のために、正規化データ９０１は９０２Ａから９０２Ｈまでのフィールドを有し、これらは本明細書では集合的に「フィールド９０２」と呼ばれる場合がある。
【００７５】
他方で、分析部９００はいくつかのモデルパラメータ９１１を含む。モデルパラメータのタイプおよび数は、モデルによって異なる場合がある。しかしながら、特定の例の考察のために、モデルパラメータ９１１はモデルパラメータ９１１Ａ、９１１Ｂ、９１１Ｃ、および９１１Ｄを含むものとして考察される。一実施形態において、モデルパラメータの識別、およびモデルパラメータ間の分析関係は、実行型コーディングを使用せずに宣言的に定義することができる。
【００７６】
データ−モデル結合構成要素９１０は、正規化済みデータフィールド９０２とモデルパラメータ９１１との間を仲介し、それによってフィールド間に結合を提供する。この場合、矢印９０３Ａによって表されるように、データフィールド９０２Ｂはモデルパラメータ９１１Ａに結合される。言い換えれば、データフィールド９０２Ｂからの値が、モデルパラメータ９１１Ａをポピュレートするために使用される。また、この例では、データフィールド９０２Ｅは（矢印９０３Ｂによって表されるように）モデルパラメータ９１１Ｂに結合され、データフィールド９０２Ｈは（矢印９０３Ｃによって表されるように）モデルパラメータ９１１Ｃに結合される。
【００７７】
データフィールド９０２Ａ、９０２Ｃ、９０２Ｄ、９０２Ｆ、および９０２Ｇは、いずれのモデルパラメータにも結合されるように示されていない。これは、入力データからのすべてのデータフィールドが常にモデルパラメータとして使用される必要のないことを強調している。一実施形態において、これらのデータフィールドのうちの１つまたは複数を使用して、（この正規化済みデータあるいは任意の今後の同様の正規化済みデータに関する）正規化済みデータからのいずれのフィールドがいずれのモデルパラメータに結合されることになるかに関する命令を、データ−モデル結合構成要素９１０に提供することができる。これは、図７の分析部７２０に提供され得る分析データ７２１の種類の例を表す。正規化済みデータからのいずれのデータフィールドがいずれのモデルパラメータに結合されるかの定義は、いくつかの方法で定式化することができる。たとえば結合は、１）オーサリング時に著者によって明示的に設定されること、２）（著者によって課された任意の制約を受ける）使用時にユーザによって明示的に設定されること、３）アルゴリズム的ヒューリスティクスに基づくオーサリング構成要素７４０による自動結合、および／または４）結合がアルゴリズム的に実行できない旨が決定された場合、著者および／またはユーザのオーサリング構成要素によって結合を指定するよう促すこと、とすることができる。こうした結合は、モデル論理自体の一部として解決することもできる。
【００７８】
いずれのデータフィールドがいずれのモデルパラメータにマッピングされるかを著者が定義できることによって、著者がモデルパラメータの定義を容易に行える記号を使用できるという点で著者に柔軟性を与える。たとえば、モデルパラメータのうちの１つが圧力を表す場合、著者はそのモデルパラメータに「Ｐｒｅｓｓｕｒｅ」または「Ｐ」あるいは著者が理解できる任意の他の記号を命名することができる。著者は、一実施形態では、以前は古い名前のモデルパラメータとの結合であったものを、新しい名前のモデルパラメータに結合させることができるように、データ−モデル結合構成要素９１０を自動的に更新させることができる、モデルパラメータを改名することも可能であり、それによって望ましい結合を保持することができる。この結合に関する機構により、結合をランタイム時に宣言的に変更させることも可能である。
【００７９】
この例において、モデルパラメータ９１１Ｄにはデータ−モデル結合構成要素９１０によって値が割り当てられなかったことを強調するために、モデルパラメータ９１１Ｄにアスタリスクが示されている。したがって、モデルパラメータ９１１Ｄは依然として未知である。言い換えれば、モデルパラメータ９１１Ｄには値が割り当てられていない。
【００８０】
モデリング構成要素９２０はいくつかの機能を実行する。第１に、モデリング構成要素９２０はモデルパラメータ９１１間の分析関係９２１を定義する。分析関係９２１は、等式９３１、規則９３２、および制約９３３を含む３つの一般カテゴリにカテゴリ分類される。しかしながら、ソルバのリストは拡張可能である。一実施形態において、たとえば対応するシミュレーションエンジンが提供され、ソルバとして登録された場合に、１つまたは複数のシミュレーションを分析関係の一部として組み込むことができる。
【００８１】
本明細書で使用される場合の「等式」という用語は、数学の分野で使用される場合の用語と一致する。
【００８２】
本明細書で使用される場合の「規則」という用語は、１つまたは複数の条件を満たす（条件文の条件または「if」部）場合に、１つまたは複数のアクションが実行されることになる（条件文の結果または「then」部）、条件文を意味する。１つまたは複数のモデルパラメータが条件文で表される場合、あるいは１つまたは複数のモデルパラメータが結果文で表される場合、モデルパラメータに規則が適用される。
【００８３】
本明細書で使用される場合の「制約」という用語は、１つまたは複数のモデルパラメータに制限が適用されることを意味する。たとえば都市計画モデルにおいて、特定の住宅要素は、全可能区割り指定のサブセットを有する地図位置上での配置が制限される可能性がある。橋脚要素は、ある最大長さまたはある車線数未満となるように制限される可能性がある。
【００８４】
モデルに精通している著者は、そのモデルに適用するこれらの等式、規則、および制約の表現を提供することができる。シミュレーションの場合、著者は、モデルパラメータ間に適切なシミュレーション関係を提供する適切なシミュレーションエンジンを提供することができる。モデリング構成要素９２０は、等式、規則、および制約に自然な記号的表現を提供するために、著者に機構を提供することができる。たとえば熱力学関係モデルの著者は、熱力学のテキストから等式をコピーアンドペーストするだけでよい。モデルパラメータとデータフィールドを結合する機能によって、著者は、（著者の信頼しているテキストで使用される正確な記号などの）著者が精通しているどのような記号も、または著者が使用したい正確な記号を、使用することができる。
【００８５】
モデリング構成要素９２０は、解決に先立ち、モデルパラメータのうちのいずれが解決されることになるか（すなわち、以下で、単数の場合は「出力モデル変数（単数）」、複数の場合は「出力モデル変数（複数）」、あるいは、単数または複数の出力モデル変数が存在し得る場合は「出力モデル変数（単数または複数）」）も識別する。出力モデル変数（複数）は、未知のパラメータとするか、または既知のモデルパラメータの値が解決演算で変更の対象である場合は既知のモデルパラメータとすることができる。図９の例では、データ−モデル結合動作の後、モデルパラメータ９１１Ａ、９１１Ｂ、および９１１Ｃは既知であり、モデルパラメータ９１１Ｄは未知である。したがって、未知のモデルパラメータ９１１Ｄは出力モデル変数（複数）のうちの１つとすることができる。代替または追加として、基地のモデルパラメータ９１１Ａ、９１１Ｂ、および９１１Ｃのうちの１つまたは複数も、出力モデル変数（複数）とすることができる。次にソルバ９４０は、可能であれば出力モデル変数（単数または複数）を解決する。以下で説明する一実施形態において、ソルバ９４０は、解決演算を実行できるだけの十分な入力モデル変数が提供されている限り、たとえ単一のモデル内であっても、多様な出力モデル変数（複数）について解決することができる。入力モデル変数は、たとえばその値が解決演算中に変更の対象でない既知のモデルパラメータとすることができる。たとえば図９では、モデルパラメータ９１１Ａおよび９１１Ｄが入力モデル変数である場合、ソルバは代わりに出力モデル変数（複数）９１１Ｂおよび９１１Ｃを解決することができる。一実施形態において、ソルバは単一のモデルパラメータについていくつかの異なるデータタイプのうちのいずれか１つを出力することができる。たとえば、いくつかの等式演算（加算、減算など）はオペランドが整数、浮動小数点、同一物のベクトル、または同一物のマトリクスであるかどうかにかかわらず適用する。
【００８６】
一実施形態において、ソルバ９４０が特定の出力モデル変数（複数）を解決できない場合であっても、ソルバ９００は、実際の数値結果（またはすべての解決されるデータタイプ）に対する完全解決が不可能であっても、依然としてその出力モデル変数（単数）に関する部分解決を提示することができる。これによってパイプラインは、完全解決に到達するために必要な情報に関して著書に促すことにより、漸進的転回を容易にすることができる。これは、様々なオーサリング段階全体を通じて少なくとも部分解決が使用可能であるため、オーサリング時間と使用時間との区別をなくすことにも役立つ。要約例として、分析モデルが等式ａ＝ｂ＋ｃ＋ｄを含むものと想定してみる。次に、ａ、ｃ、およびｄは出力モデル変数（複数）であり、ｂは既知の値５（この場合は整数）を有する入力モデル変数であるものと想定する。解決プロセスで、ソルバ９４０は、出力モデル変数（複数）のうちの１つ「ｄ」を解決し、「ｄ」と呼ばれるモデルパラメータに値７（整数）を割り当てることのみ可能であるが、ソルバ９４０は「ｃ」を解決することはできない。「ａ」は「ｃ」に従属しているため、「ａ」と呼ばれるモデルパラメータも依然として未知であり未解決である。この場合、「ａ」に整数値を割り当てる代わりに、ソルバは部分解決を実行し、モデルパラメータ「ａ」に文字列値「ｃ＋１１」を出力することができる。前述のように、これは、ドメインの専門家が分析モデルをオーサリングする場合に特に有用であり、モデルパラメータ「ａ」のコンテンツに関する部分情報を提供するのに重要な働きをすることになり、さらに、「ｃ」モデルパラメータを解決することが可能な何らかの他のモデル分析が提供される必要があるというヒントを著者に与える働きもすることになる。おそらくこの部分解決の結果は、ドメインの専門家が部分結果を見ることができるようにするために、ビュー構造内に何らかの方法で出力することができる。
【００８７】
ソルバ９４０は、図９では簡略化された形で示されている。しかしながら、ソルバ９４０は、図１０に関して説明されるように、複数の構成ソルバの動作を指示することができる。図９において、モデリング構成要素９２０は次に、モデルパラメータ（ここでは既知であり解決された出力モデル変数（複数））を図１０のビュー部１０００に提供されることになる出力として使用できるようにする。
【００８８】
図１０は、図７のビュー部７３０の例を表し、再計算ユーザインターフェース２００における視覚化された制御の例を表す、ビュー部１０００を示す。ビュー部１０００は、図９の分析部９００からモデルパラメータ９１１を受信する。ビュー部は、ビュー構成要素の集合体を含むビュー構成要素リポジトリ１０２０も含む。たとえば、この例のビュー構成要素リポジトリ１０２０は、ビュー構成要素１０２１から１０２４を含むものとして示されているが、ビュー構成要素リポジトリ１０２０は任意数のビュー構成要素を含むことができる。ビュー構成要素は各々、ゼロまたはそれ以上の入力パラメータを含むことができる。たとえばビュー構成要素１０２１は、いずれの入力パラメータも含まない。しかしながらビュー構成要素１０２２は、２つの入力パラメータ１０４２Ａおよび１０４２Ｂを含む。ビュー構成要素１０２３は１つの入力パラメータ１０４３を含み、ビュー構成要素１０２４は１つの入力パラメータ１０４４を含む。とは言え、これは単なる例である。入力パラメータは視覚アイテムがどのようにレンダリングされるかに影響を与えることができるが、必ずしもその必要はない。ビュー構成要素１０２１がいずれの入力パラメータも含まないという事実は、いずれのモデルパラメータも参照せずに生成されたビューが存在し得ることを強調するものである。変化しない固定（組み込み）データのみを含むビューを考えてみる。こうしたビューは、たとえばユーザに対して参照情報を構成することができる。代替として、モデルにインポートするためのアイテムが選択できるような、カタログをブラウズする方法のみを提供するビューを考えてみる。
【００８９】
各ビュー構成要素１０２１から１０２４は、存在する場合は対応するビュー構成要素入力パラメータを使用してビュー構造構成要素１０４０によって実行された場合、対応するビューアイテムを仮想空間１０５０内に配置させる、対応する論理を含むか、またはこれに関連付けられる。その仮想アイテムは、静的イメージまたはオブジェクトとするか、あるいは動的に活動する仮想アイテムまたはオブジェクトとすることができる。たとえば、ビュー構成要素１０２１から１０２４の各々は、実行された場合、対応する仮想アイテム１０５１から１０５４をそれぞれ仮想空間１０５０内にレンダリングさせる、対応する論理１０３１から１０３４に関連付けられる。仮想アイテムは、単純な形状として示されている。しかしながら仮想アイテムは、おそらくアニメーションを含むこともあり得る、非常に複雑な形とすることができる。この説明では、ビューアイテムが仮想空間内でレンダリングされた場合、ビュー構造構成要素はオーサリングされた十分な命令を有することを意味し、この命令がレンダリングエンジンに提供された場合、レンダリングエンジンは、指定された位置および指定された方法でディスプレイ上にビューアイテムを表示することが可能である。
【００９０】
ビュー構成要素１０２１から１０２４は、たとえば図７のオーサリング構成要素７４０を使用して、場合によってはビューデータとしてビュー部１０００に提供することができる。たとえばオーサリング構成要素７４０は、著者がいくつかの幾何学的形式から選択すること、あるいは他の幾何学的形式を構成することを可能にする、セレクタを提供することができる。著者は、各ビュー構成要素に対して入力パラメータのタイプを指定することも可能であるが、入力パラメータのうちのいくつかはビュー部１０００によって課せられるデフォルトの入力パラメータの可能性がある。各ビュー構成要素１０２１から１０２４に関連付けられる論理には、ビューデータも提供可能である、および／または、ビュー部１０００自体によって提供されるいくつかのデフォルト機能も含むことが可能である。
【００９１】
ビュー部１０００は、モデルパラメータのうちの少なくともいくつかを、ビュー構成要素１０２１から１０２４の対応する入力パラメータと結合させるように構成された、モデル−ビュー結合構成要素１０１０を含む。たとえばモデルパラメータ９１１Ａは、矢印１０１１Ａによって表されるように、ビュー構成要素１０２２の入力パラメータ１０４２Ａに結合される。モデルパラメータ９１１Ｂは、矢印１０１１Ｂによって表されるように、ビュー構成要素１０２２の入力パラメータ１０４２Ｂに結合される。また、モデルパラメータ９１１Ｄは、矢印１０１１Ｃによって表されるように、それぞれ、ビュー構成要素１０２３および１０２４の入力パラメータ１０４３および１０４４に結合される。モデルパラメータ９１１Ｃはいずれの対応するビュー構成要素パラメータにも結合されるように示されておらず、たとえそれらのモデルパラメータが分析部において不可欠であっても、すべてのモデルパラメータがパイプラインのビュー部によって使用される必要はないことを強調している。また、モデルパラメータ９１１Ｄは、ビュー構成要素の２つの異なる入力パラメータに結合されるように示されており、モデルパラメータが複数のビュー構成要素パラメータに結合され得ることを示している。一実施形態において、モデルパラメータとビュー構成要素パラメータとの間の結合の定義は、１）オーサリング時に著者によって明示的に設定されること、２）（著者によって課された任意の制約を受ける）使用時にユーザによって明示的に設定されること、３）アルゴリズム的ヒューリスティクスに基づくオーサリング構成要素７４０による自動結合、および／または４）結合がアルゴリズム的に実行できない旨が決定された場合、著者および／またはユーザのオーサリング構成要素によって結合を指定するよう促すことによって、定式化され得る。
【００９２】
本発明は、その趣旨または不可欠な特徴を逸脱することなく、他の特定の形で具体化することができる。説明された実施形態は、すべての点において単に例示的であり、限定的でないとみなされるものとする。したがって本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の均等の意味および範囲内にあるすべての変更は、それらの範囲内に包含されるものとする。
【図１】
2016519825.tif 000003
【図２】
2016519825.tif 000004
【図３】
2016519825.tif 000005
【図４】
2016519825.tif 000006
【図５】
2016519825.tif 000007
【図６】
2016519825.tif 000008
【図７】
2016519825.tif 000009
【図８】
2016519825.tif 000010
【図９】
2016519825.tif 000011
【図１０】
2016519825.tif 000012
【手続補正書】
【提出日】平成27年2月10日(2015.2.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータ実行可能命令は、コンピューティングシステムのうちの１つまたは複数のプロセッサによって実行された場合、再計算ユーザインターフェースを、前記コンピューティングシステムに動作させるように構造化されており、前記再計算ユーザインターフェースは、
イベントの検出時に環境信号を捕捉するように構成された信号捕捉制御と、
出力データに応答して表示するように構成された視覚化制御と、
前記信号捕捉制御と前記視覚化制御との間の１つまたは複数の宣言的変換の変換チェーンであって、前記変換チェーンは追加のデータを使用する論理を組み込み、前記信号捕捉制御を組み込むことは、前記論理および前記変換チェーンの前記追加のデータへの捕捉された環境信号の組み込みを可能にする、変換チェーンと、
を備える、コンピュータプログラム製品。
【請求項２】
前記信号捕捉制御が捕捉するように構成された前記環境信号がイメージである、請求項１に記載のコンピュータプログラム製品。
【請求項３】
前記信号捕捉制御が捕捉するように構成された前記環境信号がビデオである、請求項１に記載のコンピュータプログラム製品。
【請求項４】
前記信号捕捉制御が捕捉するように構成された前記環境信号が配向である、請求項１に記載のコンピュータプログラム製品。
【請求項５】
前記信号捕捉制御が捕捉するように構成された前記環境信号が位置である、請求項１に記載のコンピュータプログラム製品。
【請求項６】
前記信号捕捉制御が捕捉するように構成された前記環境信号がオーディオである、請求項１に記載のコンピュータプログラム製品。
【請求項７】
前記信号捕捉制御が捕捉するように構成された前記環境信号が天候データである、請求項１に記載のコンピュータプログラム製品。
【請求項８】
前記イベントが変換からのデータの受信である、請求項１に記載のコンピュータプログラム製品。
【国際調査報告】
2016519825.tif 000013
2016519825.tif 000014
2016519825.tif 000015
2016519825.tif 000016
2016519825.tif 000017