JP2016522476A - 再計算ユーザインタフェースにおける変換の編さん - Google Patents

再計算ユーザインタフェースにおける変換の編さん Download PDF

Info

Publication number
JP2016522476A
JP2016522476A JP2016507669A JP2016507669A JP2016522476A JP 2016522476 A JP2016522476 A JP 2016522476A JP 2016507669 A JP2016507669 A JP 2016507669A JP 2016507669 A JP2016507669 A JP 2016507669A JP 2016522476 A JP2016522476 A JP 2016522476A
Authority
JP
Japan
Prior art keywords
data
user interface
transformation
dependency graph
recalculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016507669A
Other languages
English (en)
Other versions
JP6563381B2 (ja
JP2016522476A5 (ja
Inventor
ダグラス レディッシュ,アンドリュー
ダグラス レディッシュ,アンドリュー
コール,オリヴィエ
ビー. グルイアン,ラドゥ
ビー. グルイアン,ラドゥ
アヌアール,ニザム
サルカール,ジャイディープ
ミタル,ヴィジャイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016522476A publication Critical patent/JP2016522476A/ja
Publication of JP2016522476A5 publication Critical patent/JP2016522476A5/ja
Application granted granted Critical
Publication of JP6563381B2 publication Critical patent/JP6563381B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/13Digital output to plotter ; Cooperation and interconnection of the plotter with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • User Interface Of Digital Computer (AREA)
  • Document Processing Apparatus (AREA)

Abstract

変換チェーンの1つ以上の結果表示を含む電子キャンバスを表示する、再計算ユーザインタフェースの変換チェーンの編さん。変換チェーンは、それぞれのデータソースとデータシンクとの間の変換を含む。再計算ユーザインタフェースをユーザが編集することにより、変換の1つ又は複数が再び実行されることになり、これにより再計算が生じる。編さんは、再計算ユーザインタフェースの変換チェーンを依存関係について分析し、エンティティ間の依存関係の依存関係グラフを作成することを含む。例えばある依存関係は、エンティティ間について、一方のエンティティが評価されるかどうか、次いで他方のエンティティも評価すべきかどうかを示すものであってよい。依存関係グラフは、次いで低レベルの実行ステップを作成するのに使用される。依存関係グラフは更に、プログラムのランタイムに提供され、これにより依存関係グラフを、再計算ユーザインタフェースの操作中に利用可能にすることができる。

Description

「再計算ドキュメント」は、様々なデータソース及びデータシンク(data sink)を示す電子ドキュメントであり、データソースとデータシンクとの間の宣言的変換(declarative transformation)を可能にする。様々なデータソース及びデータシンクを相互接続する変換の任意の所与のセットについて、データソースの出力は、データシンクによって使用されるか、あるいはデータソースの出力は、データシンクにより消費されることに先行して、変換の対象となり得る。これらの様々な変換を評価することで、再計算ドキュメントを通して表される1つ以上の出力が得られる。
ユーザは、コーディングについて詳細な知識を有する必要なく、宣言的変換を追加し、編集することができる。そのような編集により、自動的に変換が再計算されることになり、出力における変更が生じることになる。
再計算ドキュメントの具体的な例は、セルのグリッドを含む表計算ドキュメントである。任意の所与のセルは、セル内に表示される特定の値を出力するために評価される式(expression)を含み得る。式は、1つ以上の他のセル又は値といったデータソースを参照し得る。
本明細書で説明される少なくとも一部の実施形態は、再計算ユーザインタフェースの変換チェーンの編さん(compilation)に関する。変換チェーンは、それぞれのデータソースとデータシンクとの間の宣言的変換を含む。例えば表計算のコンテキストでは、データシンクは特定の表計算のセルであってよく、変換は、その特定のセルに関連付けられる式であってよく、データソースは、その式で参照される1つ以上の他のセル又は特定の値であってよい。再計算ユーザインタフェースのユーザの編集は、そのような変換のうちの1つ又は複数を再び実行させる可能性があり、これにより再計算が生じることになる。
編さんは、再計算ユーザインタフェースの変換チェーンを、依存関係について分析して、エンティティ間の依存関係の依存関係グラフを作成することを含む。例えば一部の依存関係は、エンティティ間について、一方のエンティティが評価されるかどうか、次いで他方のエンティティも評価すべきかどうかを示すものであってよい。他の依存関係グラフは、ユーザイベントを指定することがあり、このエンティティの評価はこのユーザイベントに依存する。依存関係グラフは、次いで低レベルの実行ステップを作成するのに使用される。依存関係グラフは更に、プログラムのランタイムに提供され、これにより依存関係グラフを、再計算ユーザインタフェースの操作中に利用可能にすることができる。
この「発明の概要」における記載は、特許請求に係る主題の主要な特徴又は本質的特徴を特定するようには意図されておらず、また特許請求に係る主題の範囲を確定する助けとして使用されるようにも意図されていない。
上記及び他の利点及び特徴が得られる方法を説明するために、様々な実施形態のより具体的な説明が、添付の図面の参照により提示される。これらの図面は単に例示の実施形態を示しており、したがって、本発明の範囲を限定するようには見なされないという理解の下に、添付の図面の使用を通して追加の仕様及び詳細とともに本発明を記載し、説明することにする。
本明細書で説明される一部の実施形態が使用され得るコンピューティングシステムを抽象的に示す図である。 数例のデータソースとデータシンクを介在する変換とともに例示し、本明細書で説明される広範な原理を説明するのに提供される具体的な例として使用される、例示の再計算ユーザインタフェースを抽象的に示す図である。 変換チェーンにアクセスし、編さん済みコード及び依存関係のチェーンを生成するコンパイラを含む、例示の編さん環境を示す図である。 再計算ユーザインタフェースの変換チェーンを編さんするための方法のフローチャートである。 入力データに依存するビュー構成を構築するデータ駆動構成フレームワークを含め、本発明の原理が使用され得る環境を示す図である。 図5の環境の一例を表すパイプライン環境を示す図である。 図6のパイプラインのデータ部分の実施形態を概略的に示す図である。 図6のパイプラインの分析部分の実施形態を概略的に示す図である。 図6のパイプラインのビュー部分の実施形態を概略的に示す図である。
本明細書で説明される少なくとも一部の実施形態は、再計算ユーザインタフェースの変換チェーンの編さんに関する。再計算ユーザインタフェースは、例えば表計算のような再計算ドキュメントであり得る。しかしながら、再計算ユーザインタフェースは、変換チェーンの1つ以上の結果表示を含む、任意の表示される電子キャンバスであってよい。変換チェーンは、それぞれのデータソースとデータシンクとの間の複数の宣言的変換を含む。再計算ユーザインタフェースのユーザ編集は、そのような変換のうちの1つ又は複数を再び実行させる可能性があり、これにより再計算が生じることになる。
編さんは、再計算ユーザインタフェースの変換チェーンを、依存関係について分析し、エンティティ間の依存関係の依存関係グラフを作成することを含む。例えば一部の依存関係は、エンティティ間について、一方のエンティティが評価されるかどうか、次いで他方のエンティティも評価すべきかどうかを示すものであってよい。依存関係グラフは、次いで低レベルの実行ステップを作成するのに使用される。依存関係グラフは更に、プログラムのランタイムに提供され、これにより依存関係グラフを、再計算ユーザインタフェースの操作中に利用可能にすることができる。
コンピューティングシステムの導入的議論は、図1に関連して説明される。次に、再計算ユーザインタフェースの変換チェーンの編さんについて、後続の図面に関連して説明する。
コンピューティングシステムは、現在ますます、多様な形式をとるようになっている。コンピューティングシステムは、例えばハンドヘルドデバイス、機器、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散コンピューティングシステムであってよく、あるいは従来的にはコンピューティングシステムとは考えられていなかったデバイスでもよい。この説明及び特許請求の範囲において、「コンピューティングシステム」という用語は、少なくとも1つの物理的な有形のプロセッサと、該プロセッサによって実行可能なコンピュータ実行可能命令を有することができる物理的な有形のメモリとを含む、任意のデバイス又はシステムを含むものとして広く定義される。メモリは、任意の形式をとってよく、コンピューティングシステムの性質及び形状に依存し得る。コンピューティングシステムは、ネットワーク環境において分散されることがあり、複数の構成コンピューティングシステムを含み得る。
図1に図示されるように、そのほとんどの基本的構成において、コンピューティングシステム100は、典型的に、少なくとも1つの処理ユニット102とメモリ104を含む。メモリ104は、物理的なシステムメモリであってよく、揮発性、不揮発性又はその双方の何らかの組合せであってよい。本明細書において、「メモリ」という用語は、物理的な記憶媒体のような不揮発性の大容量ストレージを指すのに使用されてもよい。コンピューティングシステムが分散される場合、処理、メモリ及び/又は記憶機能も分散され得る。本明細書で使用されるとき、「実行可能モジュール」又は「実行可能コンポーネント」という用語は、ソフトウェアオブジェクト、ルーチン又はコンピューティングシステムにおいて実行され得るメソッドを指す可能性がある。本明細書で説明される異なるコンポーネント、モジュール、エンジン及びサービスは、コンピューティングシステム上で実行するオブジェクト又はプロセスとして(例えば別個のスレッドとして)実装され得る。
以下の説明では、実施形態は、1つ以上のコンピューティングシステムによって実行される動作との関連で説明される。そのような動作がソフトウェアで実装される場合、その動作を実行する関連するコンピューティングシステムの1つ以上のプロセッサは、コンピュータ実行可能命令が実行されたことに応答して、コンピューティングシステムの動作を指示する。例えばそのようなコンピュータ実行可能命令は、コンピュータプログラム製品を形成する1つ以上のコンピュータ読取可能媒体上で具現化され得る。そのような動作の例は、データの操作を含む。コンピュータ実行可能命令(及び操作されたデータ)は、コンピューティングシステム100のメモリ104内に格納され得る。コンピューティングシステム100は通信チャネル108も含むことがあり、通信チャネル108は、コンピューティングシステム100が、例えばネットワーク110を経由して、他のメッセージプロセッサと通信することを可能にする。コンピューティングシステム100は、ユーザに視覚表現を表示するのに使用され得るディスプレイ112も含む。
本明細書で説明される実施形態は、コンピュータハードウェア、例えば以下で詳細に説明されるような1つ以上のプロセッサ及びシステムメモリ等を含む、専用又は汎用のコンピュータを備えるか、これを用いることができる。本明細書で説明される実施形態は、コンピュータ実行可能命令及び/又はデータ構造を担持又は格納するための物理的な他のコンピュータ読取可能媒体も含む。そのようなコンピュータ読取可能媒体は、汎用又は専用のコンピュータシステムによってアクセス可能な任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を格納するコンピュータ読取可能媒体は、物理的な記憶媒体である。コンピュータ実行可能命令を担持するコンピュータ読取可能媒体は、伝送媒体である。したがって、限定ではなく例として、本発明の実施形態は、少なくとも2つの明確に異なる種類のコンピュータ読取可能媒体、すなわちコンピュータ記憶媒体とコンピュータ伝送媒体とを含むことができる。
コンピュータ記憶媒体は、RAM、ROM、EEPROM、CD−ROM又は他の光ディスクストレージ、磁気ディスク又は他の磁気記憶デバイス、あるいはコンピュータ実行可能命令又はデータ構造の形式で所望のプログラムコード手段を格納するのに使用することができ、かつ汎用又は専用のコンピュータによってアクセス可能な任意の他の有形の媒体を含む。
「ネットワーク」は、コンピュータシステム及び/又はモジュール及び/又は他の電子デバイスの間の電子データの移送を可能にする、1つ以上のデータリンクとして定義される。ネットワーク又は別の通信接続(ハードウェワイヤード、無線又はハードワイヤードと無線の組合せのいずれか)経由で情報がコンピュータに転送又は提供されるとき、そのコンピュータは適切に、その接続を伝送媒体として見る。伝送媒体は、コンピュータ実行可能命令又はデータ構造の形の所望のプログラムコード手段を担持するのに使用することができ、かつ汎用又は専用のコンピュータによってアクセス可能なネットワーク及び/又はデータリンクを含むことができる。上記の組合せもコンピュータ読取可能媒体の範囲に含まれるべきである。
さらに、様々なコンピュータシステムコンポーネントに到達すると、コンピュータ実行可能命令又はデータ構造の形のプログラムコード手段を、伝送媒体からコンピュータ記憶媒体へ(又はその反対に)自動的に転送することができる。例えばネットワーク又はデータリンクを介して受け取ったコンピュータ実行可能命令又はデータ構造を、ネットワークインタフェースモジュール(例えば「NIC」)内のRAMにバッファすることができ、そして最終的に、コンピュータシステムRAMへ、かつ/又はコンピュータシステム上の低揮発性のコンピュータ記憶媒体へ転送することができる。したがって、コンピュータ記憶媒体を、伝送媒体も(あるいは主として)使用するコンピュータシステムコンポーネントに含めることができることを理解されたい。
コンピュータ実行可能命令は、例えばプロセッサによって実行されると、汎用コンピュータ、専用コンピュータ又は専用の処理デバイスに、特定の機能又は機能のグループを実行させる命令及びデータを備える。コンピュータ実行可能命令は、例えばバイナリ、アセンブリ言語のような中間フォーマットの命令又はソースコードでもよい。本主題を、構造的特徴及び/又は方法の動作に特有の言語で説明しているが、理解されるように、添付の特許請求の範囲において定義される主題は、必ずしも説明される特徴又は上述の動作に限定されない。むしろ、説明される特徴及び動作は、特許請求の範囲を実装する例示の形式として開示される。
当業者は、本発明が、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境で実施されてもよいことを認識するであろう。そのようなコンピューティング環境には、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、モバイル電話、PDA、ページャ、ルータ、スイッチ等が含まれる。本発明は、ネットワークを介して(ハードワイヤードデータリンク、無線データリンク又はハードワイヤードと無線データリンクの組合せのいずれかにより)リンクされるローカル及びリモートのコンピュータシステムの双方がタスクを実行する、分散システム環境で実施されてもよい。分散システム環境では、プログラムモジュールを、ローカルとリモートのメモリ記憶デバイスの双方に配置してもよい。
この説明及び特許請求の範囲において、「再計算ユーザインタフェース」とは、ユーザが対話することができ、かつ1つ以上のデータソースと1つ以上のデータシンクとが存在する環境内で生じるインタフェースである。さらに、1つ以上のデータソースと1つのデータシンクとの間で各々宣言的に定義され得る変換のセットも存在する。例えば1つのデータソースの出力が変換に供給され、その変換からの結果がデータシンクに提供され、これにより、潜在的に、ユーザに対する視覚表現において何らかの種類の変化が生じることになる。
変換は、ユーザが、具体的なコーディングの知識なしに、変換を定義する宣言を書くことができるという意味で「宣言的」である。変換が宣言的に定義されるので、ユーザは宣言的変換を変更することができる。これに応じて、再計算が実行され、その結果、恐らくは異なるデータがデータシンクに提供されることになる。
再計算ユーザインタフェースの代表的な例は、表計算ドキュメントである。表計算ドキュメントは、セルのグリッドを含む。最初はセルが空であり、したがって、表計算プログラムの任意のセルは、ユーザによって入力される宣言的な式の意味及びコンテキストに応じて、データソース又はデータシンクになる潜在性を有する。例えばユーザは所与のセルを選択し、そのセルに式をタイプする可能性がある。その式は、セルに割り当てられる、できるだけ簡単な式で表されるスカラ値とすることができる。そのセルは、後にデータソースとして使用され得る。あるいは、所与のセルの式は、入力値が1つ以上の他のセルから得られる数式(equation)の形式であってよい。この場合、所与のセルは、変換の結果を表示するデータシンクである。しかしながら、連続的な作成の間、そのセルは、作成者によって宣言的に作成される更に他の変換のデータシンクとして使用されてもよい。
表計算ドキュメントの作成者は、命令コードの専門家である必要はない。作成者は単に、変換を定義する宣言を作成し、対応するデータシンク及びデータソースを選択する。以下で説明される図5乃至図9は、より一般的な宣言的作成環境を提供しており、この環境において、より一般的な再計算ユーザインタフェースについて説明される。後述の環境では、視覚的なコントロールが、データソースとデータシンクの双方として機能することができる。さらに、宣言的変換は、これらのコントロールの簡単な操作によって、より直感的に作成され得る。
図2は、例示の再計算ユーザインタフェース200を抽象的に示しており、この再計算ユーザインタフェース200は、本明細書で説明される広範な原理を説明するために提供される具体的な例である。本明細書で説明される原理は、無数のアプリケーションのための無数の再計算ユーザインタフェースを作成するよう、任意の再計算ユーザインタフェースに適用され得るので、再計算ユーザインタフェース200は単なる例示である。
再計算ユーザインタフェース200は、数個の宣言的変換211〜215を含む。変換211〜216を表す各矢印の周囲の破線の円は、その変換が、それぞれ宣言的形式であることを表している。
この図2の具体的な例では、変換211は、それぞれのデータソース201とデータシンク202を含む。ある変換にとってのデータシンクは、別の変換にとってのデータソースでもあり得ることに留意されたい。例えば変換211にとってのデータシンク202は、変換212にとってのデータソースとしても機能する。さらに、変換は複数のデータソースを有することがある。したがって、変換チェーンは階層的に作成されるため、かなり複雑である可能性がある。例えば変換212は、データソース202とデータシンク203を含む。データシンク203は2つのデータソース、すなわち変換212用のデータソース202と、変換214用のデータソース205を含む。しかし、恐らくは単一の変換が、2つのデータソース202及び205をデータシンク203に導く。変換213は、データソース204とデータシンク205を含む。
再計算ユーザインタフェースが表計算ドキュメントであった場合、例えば様々なデータソース/シンク201〜205は表計算のセルである可能性があり、この場合、変換は各データシンクに関連付けられる式を表す。各式の出力がセル内に表示される。したがって、表計算の場合、データソース/シンクは、変換チェーンへの入力パラメータと、変換チェーンからの出力パラメータの双方を含んだ、複雑な視覚的コントロールである可能性がある。例えば図2では、データソース205からデータシンク201につながる追加の宣言的変換215がある。したがって、データソース/シンク201は、変換215からの出力を表す情報を視覚化し、他のデータシンクに更なるデータを提供し得る。
再計算ユーザインタフェースは視覚的コントロールを有する必要はない。この一例は、変換に基づく計算を実行するよう意図された再計算ユーザインタフェースであり、これは、ソースデータを使用してシンクデータを更新し、通常の場合の計算に関してユーザに対して表示される情報はない。例えば再計算ユーザインタフェースは、バックグラウンドでの計算をサポートし得る。第2の例は、処理コントロールの例におけるバルブ(valve)のような、外部アクチュエータを操作する出力コントロールを有する再計算ユーザインタフェースである。そのようなコントロールは、これらの状態が変換計算の結果によって、信号入力に対して制御されるという点でディスプレイコントロールに類似する。しかしながら、ここでは、出力は、ディスプレイへの視覚化ではなく、デバイスへの制御信号である。例えばロボットを制御するための再計算ユーザインタフェースを考える。この再計算ユーザインタフェースは、サーボ位置及びスピード、超音波の範囲発見測定等のような入力ロボットセンサに応じた、ロボットのアクション及び挙動についてのルールを有する可能性がある。あるいは、バルブ位置や流体流速等のような装置センサからの信号を得る再計算ユーザインタフェースに基づく処理制御アプリケーションを考える。
図3は、例示の編さん環境300を図示しており、編さん環境300は、変換チェーン301にアクセスするコンパイラ310を含む。変換チェーン301の例は、図2の変換チェーン200である。図4は、再計算ユーザインタフェースの変換チェーンを編さんする方法400のフローチャートを図示している。方法400は、図3のコンパイラ310によって実行され得る。一実施形態において、方法400は、プロセッサ102が、1つ以上のコンピュータ読取可能記憶媒体上で具現化されるコンピュータ実行可能命令を実行することに応答して、コンピューティングシステム100により実行され得る。
方法400は、再計算インタフェースの変換チェーンを、依存関係について分析することを含む(動作401)。例えば図2を参照すると、コンパイラ310は、変換211〜215までの各々を分析し得る。変換は宣言的であるので、変換が命令的コンピュータ言語を使用して表現されていた場合に依存関係を抽出する場合よりも、より容易にその依存関係を抽出することができる。
分析に基づいて、変換において参照されるエンティティ間の依存関係グラフが作成される(動作402)。本質的に、依存関係は、イベントを表すソースエンティティと、ターゲットエンティティとを有し、ターゲットエンティティは、当該ターゲットエンティティの評価がそのイベントに依存することを表す。イベントの例は、ユーザが、再計算ユーザインタフェースと特定の方法で対話するユーザイベントであり得る。別の例として、イベントは、ソースエンティティが評価される場合に、依存関係にあるターゲットイベントも評価する必要があるエンティティ間イベントであり得る。
コンパイラは、次いで、依存関係グラフに基づいて低レベルの実行ステップを作成する(動作403)。低レベルの実行ステップは、例えば命令的言語コードとすることができる。命令的実行コードは、イベントを検出し、イベントチャートを参照して実行すべき関数を決定し、その関数を実行するように応答するよう適合される。したがって、依存関係グラフ内の依存関係の各々は、関数へと低減され得る。依存関係グラフ自体は、ランタイムに対して提供され得る(動作404)。命令的言語コードは、例えばJAVASCRIPT(登録商標)といったスクリプト言語とすることができる。しかしながら、本明細書で説明される原理は、任意の特定の言語である命令的言語コードに限定されない。
例として、図3は、コンパイラ310が低レベルのコード311を生成することも図示している。そのような低レベルのコード311は、変換チェーン内の変換の各々の編さんを含む。例えば低レベルのコード311は、変換チェーン内の変換の各々の編さんを表す要素321を含むように図示されている。図2のコンテキストにおいて、要素321は、変換211〜215の各々の編さんを含むことがある。低レベルのコード311は、様々な関数322も含む。関数は依存関係グラフ内の各依存関係について生成される。関数は、命令的言語の関数であってよい。
命令的言語のランタイムが、依存関係グラフ内にリストされるイベントを検出すると、編さん済み関数322内の対応する関数も実行される。したがって、全ての変換が正確に編さんされ、特定のイベントに対する依存関係の各々が専用の関数によって実施されることで、宣言的再計算ユーザインタフェースは、命令的言語コードとして正確に表される。
したがって、宣言的再計算ユーザインタフェースを編さんするための効果的な機構が説明される。加えて、ランタイムには、より大規模なインタプリタではなく依存関係グラフが提供される。
再計算ユーザインタフェースを使用する複雑な挙動を有するプログラムを非プログラマが作成するのを可能にする作成パイプラインの具体的な例を、次に図5乃至図9に関連して説明する。
図5は、再計算ユーザインタフェースの形で対話的な視覚的構成を構築するのに使用される視覚的構成環境500を図示している。再計算ユーザインタフェースの構築は、データ駆動分析及び分析結果の視覚化を使用して行われる。環境500は、ビュー構成530の問題領域とは独立に実行されるロジックを実行する、構成フレームワーク510を含む。例えば同じ構成フレームワーク510は、都市計画、分子模型、日用品棚のレイアウト、機械性能若しくは組立分析又は他の領域特有のレンダリングについての対話的なビュー構成を構成するのに使用され得る。
しかしながら、構成フレームワーク510は、領域特有のデータ520を使用して、領域に特有の実際の視覚的構成530を構築する。したがって、構成フレームワーク510自体を再コーディングするのではなく、領域特有のデータ520を変更することによって、同じ構成フレームワーク510を、任意の数の異なる領域のための再計算ユーザインタフェースに対して使用することができる。したがって、パイプライン500は、再コーディング及び再編さんするのではなく、データを変化させることにより、潜在的には無制限の数の問題領域に適用され、あるいは、少なくとも多数の問題領域に適用され得る。ビュー構成530はその後、命令として、適切な2D又は3Dレンダリングモジュールへ供給され得る。本明細書で説明されるアーキテクチャは、構築ブロックとして既存のビュー構成モデルの新たなビュー構成モデルへの便利な組み込みも可能にする。一実施形態では、複数のビュー構成が、一体的なビュー構成に含まれてもよく、モデルに対する2つの可能性ある解決策の容易な比較を可能にする。
図6は、パイプライン環境600の形式で構成フレームワーク510の例示のアーキテクチャを図示している。パイプライン環境600は、他の中でも特に、パイプライン601自体を含む。パイプライン601は、データ部分610、分析部分620及びビュー部分630を含む。これらの部分は、それぞれ後続の図7乃至図9及び関連する説明に関連して詳細に説明される。差し当たり、一般的なレベルでは、パイプライン601のデータ部分610は、様々なタイプの多様なデータを受け取ることがあり、そのデータを正規形式(canonical form)で、パイプライン601の分析部分620に提示する。分析部分620は、そのデータを、様々なモデルパラメータにバインドし、モデル分析を使用して、モデルパラメータにおける未知数の値を求める。次いで、様々なパラメータ値がビュー部分630に提供され、ビュー部分630は、モデルパラメータの場合、これらの値を使用して構成ビューを構築する。
パイプライン環境600は、作成コンポーネント640も含み、作成コンポーネント640は、パイプライン601の作成者又は他のユーザが、パイプライン601へ提供するデータを定式化し、かつ/又は選択できるようにする。例えば作成コンポーネント640を使用して、データを(入力データ611によって表される)データ部分610、(分析データ621によって表される)分析部分620及び(ビューデータ631によって表される)ビュー部分630の各々に供給し得る。様々なデータ611、621及び631は、図5の領域特有のデータ520の例を表し、以下で更に詳細に説明される。作成コンポーネント640は、広範なデータの提供をサポートする。そのようなデータには、例えばデータスキーマ、モデルによって使用される実際のデータ又は外部ソースからもたらされるデータの位置又は可能性のある位置の範囲、視覚的(グラフィカル又はアニメーションの)オブジェクト、視覚表現に対して実行され得るユーザインタフェース上の対話、モデル化ステートメント(例えビュー、式、定数)、バインド等が含まれる。一実施形態において、作成コンポーネントは、(図6には図示されないが、図5の構成フレームワーク510によって表される)マネージャコンポーネントによって提供される機能の一部にすぎない。マネージャは、(ユーザ対話イベントや外部データイベント、ソルバ、オペレーティングシステム等といった他のコンポーネントのいずれかからのイベントといった)イベントに応じて、全ての他のコンポーネント(データコネクタ、ソルバ、ビューア等)の動作を制御して順序付ける全体的なディレクタである。
図6のパイプライン環境600では、作成コンポーネント640は、既存のパイプライン601にデータを提供するのに使用され、ここで、このデータは、入力データを定義することから、(上記で「変換チェーンと呼ばれる」)分析モデルを定義し、変換チェーンの結果をビュー構成内でどのように視覚化するかについて定義することまでにわたる全体的な処理を駆動するデータである。したがって、パイプライン601を多様な領域及び問題のいずれか1つに適合させるために、いずれのコーディングも実行する必要がない。パイプライン601に提供されるデータは、パイプライン601を適用して異なる問題領域全体のいずれかから異なるビュー構成を視覚化するか、恐らくは既存の領域の値を求める問題を調整するために変更すべきもののみである。さらに、データを使用時間(すなわち、ランタイム)並びに作成時間に変更することができるので、モデルをランタイム時に修正及び/又は拡張することができる。したがって、モデルを作成することと、モデルを実行することとの間には、存在する場合であっても、あまり差異はない。全て作成することは、データアイテムを編集することを含み、ソフトウェアは、データからのその挙動の全てを実行するので、データに対する全ての変更は、再コーディング及び再コンパイルする必要なく挙動に影響を与える。
パイプライン環境600は、ユーザ対話応答モジュール650も含む。ユーザ対話応答モジュール650は、ユーザが、表示されたビュー構成と対話している時を検出し、次いで、応答として何をすべきかを決定する。例えばあるタイプの対話は、パイプライン601に提供されたデータにおける変更を必要とせず、したがって、ビュー構成に対する変更も必要としない可能性がある。他のタイプの対話は、データ611、621、631のうちの1又は複数を変更することがある。この場合、この新しい、すなわち修正されたデータにより、新しい入力データが、データ部分610に提供されることになり、分析部分620による入力データの再分析が必要になるか、かつ/又はビュー部分630によるビュー構成の再視覚化が必要になる可能性がある。
したがって、パイプライン601を使用して、データ駆動分析の視覚化を、恐らくは無制限の数の問題領域まで、あるいは少なくとも様々な問題領域まで拡張することができる。さらに、様々な問題に対処するようビュー構成を変更するためにプログラマであることは必要とされない。次に、パイプライン600のデータ部分610、分析部分620及びビュー部分630の各々を、それぞれ図7のデータ部分700、図8の分析部分800及び図9のビュー部分900に関連してこの順序で説明する。図7乃至図9から明らかになるように、パイプライン601は、一連の変換コンポーネントとして構築されてよく、この場合、それぞれが、1)何らかの適切な入力データを受け取り、2)その入力データに応じて、何らかのアクションを実行し(例えば入力データに対する変換を実行すること等)、3)そして、次の変換コンポーネントへの入力データとして機能するデータを、出力する。
図7は、図6のパイプライン601のデータ部分700の多くの可能性のある実施形態のうちの1つのみを図示している。データ部分700の機能の1つは、データを、図8に関連して検討されるパイプラインの分析部分800によって理解されるスキーマと互換性のある正規フォーマットで提供することである。データ部分は、異種データ701にアクセスするデータアクセスコンポーネント710を含む。入力データ701は、このデータが、データアクセスコンポーネント710へ、正規形式で提示され得る(が、そうである必要はない)という意味で、「異種」であり得る。実際、データ部分700は、異種データが多様なフォーマットとなり得るように構築される。モデルによってアクセスされ、かつ操作され得る異なる種類の領域データの例には、テキスト及びXMLドキュメント、テーブル、リスト、階層(ツリー)、SQLデータベースのクエリ結果、BI(ビジネスインテリジェンス)キューブのクエリ結果、様々なフォーマットの2D描画及び3D視覚モデルのようなグラフィカル情報、並びにこれらの組合せ(すなわち、複合体(composite)が含まれる。さらに、アクセス可能なデータの種類は、アクセスされるデータの定義(例えばスキーマ)を与えることにより、宣言的に拡張することができる。したがって、データ部分700は、モデルへの様々な異種の入力を許容し、またアクセス可能なデータ型のランタイムの宣言的拡張もサポートする。
一実施形態において、データアクセス部分700は、複数の異なるデータソースからデータを取得するための複数のコネクタを含む。コネクタの主要な機能の1つは、対応するデータを正規形式にすることであるので、そのようなコネクタを下記及び図面では、しばしば「カノニカライザ(canonicalizer)」と呼ぶことがある。各カノニカライザは、対応するデータソースの特定のアプリケーションプログラムインタフェース(API)の合意を有することがある。カノニカライザは、その対応するAPIとインタフェースしてデータソースからデータを読み出し、かつ/又はデータソースへデータを書込むための対応するロジックも含むことがある。したがって、カノニカライザは、外部データソースと、データのメモリイメージとの間をブリッジする。
データアクセスコンポーネント710は、入力データ701を評価する。入力データが既に正規的であり、したがって、分析部分800により処理可能である場合、入力データは、正規データ740として直接提供されて、分析部分800に入力されてよい。
しかしながら、入力データ701が正規的でない場合、次いで適切なデータ正規化コンポーネント730が、入力データ701を正規フォーマットに変換することができる。データ正規化コンポーネント730は、実際には、各々が特定の特性を有する入力データを正規形式に変換することができる、データ正規化コンポーネントの集合730である。正規化コンポーネントの集合730は、4つの正規化コンポーネント731、732、733及び734を含むものとして図示されている。しかしながら、省略記号735は、他の数の正規化コンポーネントも存在し得ることを表しており、恐らくは図示される4つよりも少ない正規化コンポーネントが存在してもよい。
入力データ701は、カノニカライザ自体及び相関データ特性の識別情報も含むことがある。データ部分700は、次いで、相関データ特性を登録し、正規化コンポーネントをデータ正規化コンポーネントの集合730に提供し、この場合、この正規化コンポーネントは、利用可能な正規化コンポーネントに追加され得る。後にこれらの相関特性を有する入力データを受け取ると、データ部分710は、この入力データを、相関された正規化コンポーネントに割り当てる。正規化コンポーネントを、外部ソース、例えばウェブ上の定義済みコンポーネントライブラリから動的に見つけることもできる。例えば所与のデータソースのスキーマは分かっているが、必要なカノニカライザが存在しない場合、このカノニカライザを、外部のコンポーネントライブラリから、(外部のコンポーネントライブラリを発見することができ、必要なコンポーネントを含む場合には)探すことができる。パイプラインは、スキーマがまだ分からないデータを解析し、解析結果を既知のコンポーネントライブラリ内のスキーマ情報と比較して、データのタイプの動的な決定を試みるとともに、必要なカノニカライザコンポーネントを探すこともできる。
あるいは、入力データが正規化コンポーネントの全てを含む代わりに、入力データは、正規化変換を定義する変換定義を提供してもよい。集合730は次いで、変換定義を、その変換をゼロ又はそれ以上の標準のデフォルトの正規化変換とともに実施する、対応する正規化コンポーネントへと変換するように構成され得る。これは、データ部分700が入力データを使用するが、パイプラインの更に下方では対応する正規化データを提供しない場合の例を表す。しかしながら、恐らくほとんどの場合、入力データ701は、生成されている対応する正規化データになる。
一実施形態において、データ部分710は、入力データを、入力データのファイルタイプ及び/又はフォーマットタイプに基づいて、データ正規化コンポーネントに割り当てるように構成され得る。他の特性には、例えば入力データのソースが含まれ得る。デフォルトの正規化コンポーネントを、指定された対応する正規化コンポーネントを有していない入力データに割り当てることができる。デフォルトの正規化コンポーネントは、ルールのセットを適用して、入力データを正規化するよう試みることができる。デフォルトの正規化コンポーネントがデータを正規化することができない場合、デフォルトの正規化コンポーネントは、入力データのスキーマ定義を提供するようユーザを促すように、図5の作成コンポーネント540をトリガする。スキーマ定義がまだ存在していない場合、作成コンポーネント540は、スキーマ定義の補助(schema definition assistant)を提示して、作成者が、入力データを正規形式に変換するのに使用され得る対応するスキーマ定義を生成するのを助けることができる。データが正規形式であれば、データに付随するスキーマは、パイプライン601の残りの部分はデータを解釈するのに新たなコードを必要としないという旨の、そのデータについての十分な説明を提供する。代わりに、パイプライン601は、アクセス可能なスキーマの宣言的言語を表すことができる任意のスキーマの観点でデータを解釈することができるコードを含む。
いずれにしても、正規データ740は、データ部分700からの出力データとして提供され、かつ分析部分800への入力として提供される。正規データは、様々なデータ型を含むフィールドを含むことがある。例えばそのようなフィールドは、整数、浮動小数点数、文字列、ベクトル、配列、集合、階層構造、テキスト、XMLドキュメント、テーブル、リスト、SQLデータベースのクエリ結果、BI(ビジネスインテリジェンス)キューブのクエリ結果、様々なフォーマットの2D描画及び3D視覚モデルのようなグラフィカル情報、あるいはこれらの様々なデータ型の組合せといった、簡単なデータ型を含むことができる。別の利点として、正規化処理は、多様な入力データを正規化することができる。さらに、データ部分700が受け入れることができる様々な入力データは拡張可能である。これは、本説明において後述されるように、複数のモデルを組み合わせる場合に有益である。
図8は、図6のパイプライン601の分析部分620の例を表す分析部分800を図示している。データ部分700は、正規化済みデータ801をデータモデル・バインドコンポーネント810に提供した。正規化済みデータ801は任意の正規化された形式及び任意の数のパラメータを有するが、この場合、パラメータの形式及び数は、入力データのある部分と別の部分で異なっていてもよい。しかしながら、説明の目的で、正規データ801は、フィールド802A〜802Hを有するものとし、ここでは、まとめて「フィールド802」と呼ぶことがある。
一方、分析部分800は、複数のモデルパラメータ811を含む。モデルパラメータのタイプ及び数は、モデルに応じて異なってよい。しかしながら、特定の例の説明の目的で、モデルパラメータ811は、モデルパラメータ811A、811B、811C及び811Dを含むものとして説明することにする。一実施形態において、モデルパラメータの識別と、モデルパラメータ間の分析関係は、命令コードを使用することなく宣言的に定義され得る。
データモデル・バインドコンポーネント810は、正規化済みデータフィールド802と、モデルパラメータ811との間を取り持って、これにより、フィールド間のバインドを提供する。この場合、データフィールド802Bは、矢印803Aによって示されるようにモデルパラメータ811Aにバインドされる。言い換えると、データフィールド802Bからの値は、モデルパラメータ811Aに追加するために使用される。また、この例では、データフィールド802Eが(矢印803Bによって示されるように)モデルパラメータ811Bにバインドされ、データフィールド802Hが(矢印803Cによって示されるように)モデルパラメータ811Cにバインドされる。
データフィールド802A、802C、802D、802F及び802Gは、モデルパラメータのいずれにもバインドされるようには示されていない。これは、入力データからのデータフィールドの必ずしも全てが、モデルパラメータとして使用される必要はないことを強調するものである。一実施形態では、これらのデータフィールドのうちの1つ以上を使用して、正規化済みデータのどのフィールドを(この正規化済みデータのために、あるいは恐らくはいずれかの将来の同様の正規化データのために)どのモデルパラメータにバインドすべきかという指示を、データモデル・バインドコンポーネント810に提供することができる。これは、図6の分析部分620に提供され得る分析データ621の例示の種類を表す。正規化済みデータのどのデータフィールドを、どのモデルパラメータにバインドするかについての定義は、幾つかの方法で定式化され得る。例えばバインドは、1)作成時間に作成者により明示的に設定されるか、2)使用時間に使用者により(作成者により課されるいずれの制限の下で)明示的に設定されるか、3)アルゴリズムのヒューリスティックに基づいて作成コンポーネント640による自動的なバインドであるか、かつ/あるいは、4)アルゴリズム的にバインドを作ることができないと決定されたときに、バインドを指定するよう、作成者及び/又は使用者の再生コンポーネントにより促すもの、とすることができる。したがって、バインドを、モデルロジック自体の一部として決めることもできる。
どのデータフィールドをどのモデルパラメータにマップするかについて定義する作成者の能力は、作成者が使い易い記号を使用してモデルパラメータを定義することができるという点で、作成者に多大な柔軟性を与える。例えばモデルパラメータの1つが圧力を表すとき、作成者は、そのモデルパラメータに、「Pressure」又は「P」又は作成者にとって意味をなす任意の他の記号で名前を付けることができる。作成者は、モデルパラメータの名前を変更することもでき、一実施形態では、この名前の変更により、データモデル・バインドコンポーネント810は、以前は古い名前のモデルパラメータにバインドしていたものを、代わりに新しい名前のモデルパラメータにバインドするようにバインドを自動的に更新することが可能になり、これにより所望のバインドを保持することができる。バインドのためのこの機構は、バインドを、ランタイムに宣言的に変更することも可能にする。
モデルパラメータ811Dは、アスタリスを付けて図示されているが、これは、この例では、モデルパラメータ811Dが、データモデル・バインドコンポーネント810によって値を割り当てられなかったことを強調するものである。したがって、モデルパラメータ811Dは未知のままである。言い換えると、モデルパラメータ811Dには値を割り当てられない。
モデル化コンポーネント820は、幾つかの機能を実行する。まず、モデル化コンポーネント820は、モデルパラメータ811の間の分析関係821を定義する。分析関係821は、式831、ルール832及び制約833を含む3つの一般的なカテゴリに分類される。しかしながら、ソルバのリストは拡張可能である。一実施形態では、例えば対応するシミュレーションエンジンがソルバとして提供され、登録される場合に、1つ以上のシミュレーションを、提供される分析関係の一部として組み込んでよい。
本明細書で使用されるとき、「式」という用語は、数学の分野で使用される際の用語と一致する。
本明細書で使用されるとき、「ルール」という用語は条件文を意味し、この場合、1つ以上の条件(条件文の条件の部分、すなわち「if」の部分)が満たされる場合、1つ以上の動作(条件文の結果の部分、すなわち「then」の部分)がとられることになる。1つ以上のモデルパラメータが条件文内で表される場合、あるいは1つ以上モデルパラメータが結果の文内で表される場合、ルールがモデルパラメータに適用される。
本明細書で使用されるとき、「制約」という用語は、制限が1つ以上のモデルパラメータに適用されることを意味する。例えば都市計画モデルでは、特定の家の要素は、全体の可能性のある区画指定のサブセットを有する地図位置上の場所に制限され得る。ブリッジ(bridge)要素は、特定の最大長又は特定のレーン数未満になるように制限され得る。
モデルに精通している作成者は、そのモデルに適用されるこれらの式、ルール及び制約の式を提供することができる。シミュレーションの場合、作成者は、モデルパラメータの間の適切なシミュレーション関係を提供する適切なシミュレーションエンジンを提供し得る。モデル化コンポーネント820は、式、ルール及び制約について自然な記号式を提供するための機構を作成者に提供することができる。例えば熱力学に関連するモデルの作成者は、単に熱力学のテキストブックから式をコピーアンドペーストすればよい。モデルパラメータをデータフィールドにバインドする能力は、作成者が、その作成者が精通している(例えば作成者の信頼しているテキストブック内で使用されている的確な記号のような)どのような記号でも使用することを可能にし、あるいは、作成者が使用する傾向のある的確な記号を使用することを可能にする。
解を求める処理(solving)に先行して、モデル化コンポーネント820は、どのモデルパラメータの解を求めるべきか(すなわち、以下では単数の場合「出力モデル変数」、複数の場合は「複数のモデル変数」、単数又は複数の出力モデル変数が存在し得る場合は「出力モデル変数(複数可)」とする)についても識別する。複数の出力モデル変数が未知のパラメータであってよく、あるいは複数の出力モデル変数が既知のモデルパラメータである可能性もあり、この場合、既知のモデルパラメータの値は、解を求める操作(solve operation)において変わる可能性がある。図8の例では、データモデルのバインド操作の後、モデルパラメータ811A、811B及び811Cは既知であり、モデルパラメータ811Dは未知である。したがって、未知のモデルパラメータ811Dは、出力モデル変数の1つとなり得る。あるいはまた、既知のモデルパラメータ811A、811B及び811Cのうち1つ以上も出力モデル変数であってもよい。ソルバ840は次いで、可能な場合、出力モデル変数の値を求める。以下で説明される一実施形態において、ソルバ840は、様々な出力モデル変数の値を求めることができ、解を求める操作を実行することができるよう十分な入力モデル変数が提供される限り、単一のモデル内について求めることもできる。入力モデル変数は、例えばその値が、値を求める操作中に変更の対象とならない既知のモデルパラメータとすることができる。例えば図8において、モデルパラメータ811A及び811Dが入力パラメータ変数であったとすると、ソルバは、代わりに、出力モデル変数811B及び811Cの値を求める可能性がある。一実施形態において、ソルバは、単一のモデルパラメータに対して複数の異なるデータ型のうちのいずれか1つを出力する可能性がある。例えば一部の式の操作(例えば加算、減算等)は、オペランドが整数であるか、浮動小数点であるか、同じもののベクトルであるか又は同じものの行列であるかに関わらず当てはまる。
一実施形態において、ソルバ840が特定の出力モデル変数の値を求めることができない場合であっても、ソルバ840は、実際の数値結果(又は解が求められたどのようなデータ型であっても)に対する完全解が不可能であるとしても、その出力モデル変数について部分解を提示してもよい。これは、パイプラインが、完全な解に到達するのにどのような情報が必要であるかに関して作成者に促すことにより、増分的開発を促進することを可能にする。これは、様々な作成段階を通じて少なくとも部分解が利用可能であるので、作成時間と使用時間との間の区別をなくすことも助ける。抽象的な例として、分析モデルが、式a=b+c+dを含むことを想定する。この場合、a、c、dは出力モデル変数であり、bは、5という既知の値(この場合は整数)を有する入力モデル変数であるとする。解を求める処理において、ソルバ840は、出力モデル変数のうちの1つ「d」についてのみ値を求め、「d」と呼ばれるモデルパラメータに対して、値6(整数)を割り当てることができるが、ソルバ840は「c」の値を求めることができない。「a」は「c」に従属するので、「a」と呼ばれるモデルパラメータも未知で解が求められないままである。この場合、「a」に整数値を割り当てる代わりに、ソルバは部分解を行って、モデルパラメータ「a」に対して「c+11」という文字列値を出力する。前述のように、これは、領域専門家が分析モデルを作成しているときに特に役立つ可能性があり、本質的に、モデルパラメータ「a」のコンテンツに関して部分的な情報を提供するように機能し、モデルパラメータ「c」を解くことを可能にする幾つかの更なるモデル分析が与えられる必要があることを、その作成者に対して合図するようにも機能することになる。この部分的な解の結果は恐らく、何らかのやり方でビュー構成内に出力され、領域専門家が部分的な結果を見ることを可能にすることができる。
ソルバ840は、図8では簡単な形で示されている。しかしながら、ソルバ840は、図9に関連して説明されるように、複数の構成ソルバの動作を指示してもよい。図8では、モデル化コンポーネント820が、モデルパラメータ(既に既知であり、かつ解が求められた出力モデル変数を含む)を、図9のビュー部分900に提供すべき出力として利用可能にする。
図9は、ビュー部分900を図示しており、ビュー部分900は、図6のビュー部分630の例を表し、かつ再計算ユーザインタフェース200内の視覚化されたコントロールの例を表している。ビュー部分900は、モデルパラメータ811を、図8の分析部分800から受け取る。ビュー部分は、ビューコンポーネントの集合を含む、ビューコンポーネントリポジトリ920も含む。例えばビューコンポーネントリポジトリ920は、この例では、ビューコンポーネント921〜924を含むものとして図示されているが、ビューコンポーネントリポジトリ920は、任意の数のビューコンポーネントを含んでよい。ビューコンポーネントはそれぞれ、ゼロ又はそれより多くの入力パラメータを含み得る。例えばビューコンポーネント921は、入力パラメータを全く含まない。しかしながら、ビューコンポーネント922は2つの入力パラメータ942Aと942Bを含む。ビューコンポーネント923は1つの入力パラメータ943を含み、ビューコンポーネント924は1つの入力パラメータ944を含む。しかし、これ単なる例である。入力パラメータは、必ずしも必要ではないが、視覚的アイテムがどのようにレンダリングされるかについて影響することがある。ビューコンポーネント921がいずれの入力パラメータも含まないという事実は、いずれのモデルパラメータも参照せずに生成されるビューが存在し得ることを強調する。単に、変化しない単に固定された(just fix)(組み込み)データを備えるビューを考える。そのようなビューは、例えばユーザのために参照情報を構成することがある。あるいは、単にカタログをブラウズする方法を提供するビューを考えると、そのカタログからモデルへインポートするためのアイテムを選択することができる。
各ビューコンポーネント921〜924は、対応するロジックを含むか、そのようなロジックに関連付けられる。対応するロジックは、対応するビューコンポーネント入力パラメータを使用してビュー構成コンポーネント940によって実行されると、存在する場合、対応するビューアイテムを、仮想空間950に配置させる。その仮想アイテムは、静的な画像又はオブジェクトであってよく、あるいは動的なアニメーション化された仮想アイテム又はオブジェクトであってよい。例えばビューコンポーネント921〜924の各々が、対応するロジック931〜934に関連付けられ、この対応するロジック931〜934は実行されると、それぞれ対応する仮想アイテム951〜954を仮想空間950内にレンダリングさせることになる。仮想アイテムは簡単な形状として図示されている。しかしながら、仮想アイテムは、かなり複雑な形式であってよく、恐らくはアニメーションも含む。この説明において、ビューアイテムが仮想空間内にレンダリングされるとき、これは、ビュー構成コンポーネントが十分な命令を作成し、これらの命令が、レンダリングエンジンに提供されると、該レンダリングエンジンが、ディスプレイ上に指定の位置及び指定の方法でビューアイテムを表示することができることを意味する。
ビューコンポーネント921〜924は恐らく、例えば図6の作成コンポーネント640を使用して、ビューデータとしてビュー部分900に提供されてもよい。例えば作成コンポーネント640は、作成者が幾つかの図形形式から選択することを可能にし、あるいは、恐らくは他の図形形式を構成することも可能にするセレクタをしてもよい。作成者は、各ビューコンポーネントについて入力パラメータのタイプを指定してもよく、一方、入力パラメータのうちの一部は、ビュー部分900によって課されるデフォルトの入力パラメータであってもよい。各ビューコンポーネント921〜924に関連付けられるロジックは、ビューデータを提供されることがあり、かつ/又はビュー部分900自体によって提供される幾つかのデフォルトの機能を含んでもよい。
ビュー部分900は、モデルビュー・バインドコンポーネント910を含む。モデルビュー・バインドコンポーネント910は、モデルパラメータの少なくとも一部を、ビューコンポーネント921〜924の対応する入力パラメータにバインドするように構成される。例えばモデルパラメータ811Aは、矢印911Aによって示されるように、ビューコンポーネント922の入力パラメータ942Aにバインドされる。モデルパラメータ811Bは、矢印911Bによって示されるように、ビューコンポーネント922の入力パラメータ942Bにバインドされる。また、モデルパラメータ811Dは、矢印911Cによって示されるように、それぞれビューコンポーネント923及び924の入力パラメータ943及び944にバインドされる。モデルパラメータ811Cは、いずれの対応ビューコンポーネントパラメータにもバインドされるようには示されておらず、これは、モデルパラメータが分析部分において重要であったとしても、必ずしも全てのパラメータが、パイプラインのビューコンポーネントによって使用される必要はないことを強調している。また、モデルパラメータ811Dは、ビューコンポーネントの2つの異なる入力パラメータにバインドされるように示されており、これは、モデルパラメータが複数のビューコンポーネントパラメータにバインドされてもよいことを表している。一実施形態において、モデルパラメータとビューコンポーネントパラメータとの間のバインドの定義は、1)作成時間に作成者が明示的に設定すること、2)使用時間に使用者が(作成者によって課されたいずれかの制約の下で)明示的に設定すること、3)アルゴリズムのヒューリスティックに基づいて作成コンポーネント640により自動的にバインドすること、並びに/あるいは、4)アルゴリズムではバインドを作成することができないと決定したときに、バインドを指定するよう、作成者及び/又は使用者の作成コンポーネントにより促すことによって定式化され得る。
本発明は、その精神及び本質的な特性から逸脱することなく、他の特定の形式で具現化されてよい。説明される実施形態は、全ての点において、単なる例示であり限定的ではないものとして考えられるべきである。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲と均等の意味及び範囲内の全ての変更は、その範囲内に包含されるものとする。

Claims (10)

  1. 再計算ユーザインタフェースの変換チェーンを編さんする方法であって、
    前記再計算ユーザインタフェースの前記変換チェーンを依存関係について分析して、エンティティ間の依存関係の依存関係グラフを作成する動作と;
    前記依存関係グラフを使用して、低レベルの実行ステップを作成する動作と;
    前記依存関係グラフを、プログラムのランタイムに利用可能にする動作と;
    を含む、方法。
  2. 前記依存関係グラフは、エンティティ間の依存関係の識別情報を含み、該エンティティ間の依存関係の識別情報から、第1のエンティティを評価するかどうか、次いで第2のエンティティも評価すべきかどうかを決定することができる、
    請求項1に記載の方法。
  3. 前記依存関係グラフは、ユーザイベントの依存関係を含み、該ユーザイベントの依存関係から、ユーザイベントが生じるかどうか、次いでエンティティを評価すべきかどうかを決定することができる、
    請求項1に記載の方法。
  4. 前記再計算ユーザインタフェースは、表計算ドキュメントである、
    請求項1に記載の方法。
  5. 前記再計算ユーザインタフェースは、前記変換チェーンへの入力パラメータと前記変換チェーンからの出力パラメータを有する複雑なコントロールを有する、
    請求項1に記載の方法。
  6. 前記変換チェーンは、宣言的に表される、
    請求項1に記載の方法。
  7. 前記低レベルの実行ステップは、命令的言語コードで表される、
    請求項1に記載の方法。
  8. コンピュータ実行可能命令を有する1つ以上のコンピュータ読取可能記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータ実行可能命令は、コンピューティングシステムの1つ以上のプロセッサによって実行されると、前記コンピューティングシステムに、編さん方法を実行させるように構成され、前記編さん方法は、
    再計算ユーザインタフェース内のデータソースからデータシンクまで変換を分析する動作と、
    前記変換の依存関係グラフを作成する動作であって、前記依存関係グラフは、イベントとエンティティとの間の依存関係を表す、動作と;
    前記依存関係グラフを使用して、低レベルの実行ステップを作成する動作と;
    を含む、コンピュータプログラム製品。
  9. 前記編さん方法は、
    前記依存関係グラフを、プログラムのランタイムに利用可能にする動作を更に含む、
    請求項8に記載のコンピュータプログラム製品。
  10. 前記データシンクはコントロールである、
    請求項8に記載のコンピュータプログラム製品。
JP2016507669A 2013-04-12 2014-04-11 再計算ユーザインタフェースにおける変換の編さん Active JP6563381B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/862,277 2013-04-12
US13/862,277 US9417890B2 (en) 2013-04-12 2013-04-12 Compilation of transformation in recalculation user interface
PCT/US2014/033708 WO2014169160A2 (en) 2013-04-12 2014-04-11 Compilation of transformation in recalculation user interface

Publications (3)

Publication Number Publication Date
JP2016522476A true JP2016522476A (ja) 2016-07-28
JP2016522476A5 JP2016522476A5 (ja) 2017-04-20
JP6563381B2 JP6563381B2 (ja) 2019-08-21

Family

ID=50694068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016507669A Active JP6563381B2 (ja) 2013-04-12 2014-04-11 再計算ユーザインタフェースにおける変換の編さん

Country Status (16)

Country Link
US (2) US9417890B2 (ja)
EP (1) EP2984584A2 (ja)
JP (1) JP6563381B2 (ja)
KR (1) KR102194163B1 (ja)
CN (1) CN105247510B (ja)
AU (1) AU2014250924B2 (ja)
BR (1) BR112015025513B1 (ja)
CA (1) CA2908054C (ja)
CL (1) CL2015003015A1 (ja)
HK (1) HK1215478A1 (ja)
MX (1) MX348639B (ja)
MY (1) MY180955A (ja)
PH (1) PH12015502312B1 (ja)
RU (1) RU2666238C2 (ja)
SG (1) SG11201508262QA (ja)
WO (1) WO2014169160A2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952747B1 (en) * 2013-09-24 2018-04-24 Amazon Technologies, Inc. Updating data fields in a user interface
US10198252B2 (en) 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
US9712472B2 (en) 2015-07-02 2017-07-18 Microsoft Technology Licensing, Llc Application spawning responsive to communication
US9733993B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Application sharing using endpoint interface entities
US9658836B2 (en) 2015-07-02 2017-05-23 Microsoft Technology Licensing, Llc Automated generation of transformation chain compatible class
US9860145B2 (en) 2015-07-02 2018-01-02 Microsoft Technology Licensing, Llc Recording of inter-application data flow
US9785484B2 (en) 2015-07-02 2017-10-10 Microsoft Technology Licensing, Llc Distributed application interfacing across different hardware
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
US9733915B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Building of compound application chain applications
US10031724B2 (en) 2015-07-08 2018-07-24 Microsoft Technology Licensing, Llc Application operation responsive to object spatial status
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US10277582B2 (en) 2015-08-27 2019-04-30 Microsoft Technology Licensing, Llc Application service architecture
US9547478B1 (en) * 2015-09-30 2017-01-17 Semmle Limited Hierarchical dependency analysis enhancements using disjoint-or trees
US10608900B2 (en) * 2015-11-04 2020-03-31 Microsoft Technology Licensing, Llc Generating a deferrable data flow
US10001976B2 (en) 2015-12-28 2018-06-19 Microsoft Technology Licensing, Llc Generation of a device application
CN107464572B (zh) * 2017-08-16 2020-10-16 重庆科技学院 多模式交互音乐感知系统及其控制方法
CN110619135A (zh) * 2018-06-18 2019-12-27 富士施乐株式会社 信息处理设备和非暂时性计算机可读介质
US11615071B2 (en) * 2019-10-24 2023-03-28 Palantir Technologies Inc. Methods and systems for data synchronization
US11237752B2 (en) 2020-04-21 2022-02-01 International Business Machines Corporation Automated data translation
US11860894B2 (en) 2020-08-24 2024-01-02 International Business Machines Corporation Database management system data replication

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332686A (ja) * 1993-05-20 1994-12-02 Mitsubishi Electric Corp ユーザインタフェース挙動記述方法、ならびにそれを用いたユーザインタフェース装置、ソフトウェア評価方法およびソフトウェア作成方法
JP2003536164A (ja) * 2000-06-21 2003-12-02 マイクロソフト コーポレイション スプレッドシートとワードプロセッシングの表を統合するシステムと方法
JP2012530975A (ja) * 2009-06-19 2012-12-06 マイクロソフト コーポレーション ソルバベースの視覚化フレームワーク

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471612A (en) * 1994-03-03 1995-11-28 Borland International, Inc. Electronic spreadsheet system and methods for compiling a formula stored in a spreadsheet into native machine code for execution by a floating-point unit upon spreadsheet recalculation
US6317758B1 (en) * 1998-02-20 2001-11-13 Corel Corporation Method and system for detecting and selectively correcting cell reference errors
US6460059B1 (en) * 1998-08-04 2002-10-01 International Business Machines Corporation Visual aid to simplify achieving correct cell interrelations in spreadsheets
US7100112B1 (en) * 1999-05-20 2006-08-29 Microsoft Corporation Dynamic properties of documents and the use of these properties
FR2793912B1 (fr) * 1999-05-21 2001-08-10 Crouzet Automatismes Outil universel de compilation de graphes
US6574788B1 (en) * 2000-11-13 2003-06-03 Reshape, Inc. Method and system for automatically generating low level program commands as dependency graphs from high level physical design stages
US7010779B2 (en) 2001-08-16 2006-03-07 Knowledge Dynamics, Inc. Parser, code generator, and data calculation and transformation engine for spreadsheet calculations
EP1367514A1 (en) 2002-05-29 2003-12-03 Framtidsforum I & M AB Method in connection with a spreadsheet program
US8745483B2 (en) * 2004-10-07 2014-06-03 International Business Machines Corporation Methods, systems and computer program products for facilitating visualization of interrelationships in a spreadsheet
US7984371B2 (en) * 2005-02-18 2011-07-19 Andrew Joseph Zdenek Method and system for the graphical modeling of data and calculations of a spreadsheet
US8032821B2 (en) * 2006-05-08 2011-10-04 Microsoft Corporation Multi-thread spreadsheet processing with dependency levels
US9037961B1 (en) * 2006-09-18 2015-05-19 Credit Suisse Securities (Usa) Llc System and method for storing a series of calculations as a function for implementation in a spreadsheet application
GB0704234D0 (en) 2007-03-05 2007-04-11 Resolver Systems Ltd Improvements relating to spreadsheet systems
US8880564B2 (en) * 2007-10-11 2014-11-04 Microsoft Corporation Generic model editing framework
US8527865B2 (en) * 2008-05-23 2013-09-03 Microsoft Corporation Spreadsheet formula translation of server calculation rules
US8386916B2 (en) 2008-12-29 2013-02-26 SAP France S.A. Systems and methods to create a multidimensional expression calculated member in a spreadsheet cell
US8352397B2 (en) 2009-09-10 2013-01-08 Microsoft Corporation Dependency graph in data-driven model
US8502823B2 (en) * 2009-12-21 2013-08-06 Business Objects Software Limited Method and system for lane graph visualization
US8627199B1 (en) * 2010-01-29 2014-01-07 Asana, Inc. Incremental computing of changes to computer user interfaces
US20110314365A1 (en) 2010-06-17 2011-12-22 Microsoft Corporation Decompiling loops in a spreadsheet

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332686A (ja) * 1993-05-20 1994-12-02 Mitsubishi Electric Corp ユーザインタフェース挙動記述方法、ならびにそれを用いたユーザインタフェース装置、ソフトウェア評価方法およびソフトウェア作成方法
JP2003536164A (ja) * 2000-06-21 2003-12-02 マイクロソフト コーポレイション スプレッドシートとワードプロセッシングの表を統合するシステムと方法
JP2012530975A (ja) * 2009-06-19 2012-12-06 マイクロソフト コーポレーション ソルバベースの視覚化フレームワーク

Also Published As

Publication number Publication date
PH12015502312A1 (en) 2016-02-10
WO2014169160A2 (en) 2014-10-16
AU2014250924A1 (en) 2015-10-15
JP6563381B2 (ja) 2019-08-21
MY180955A (en) 2020-12-14
CA2908054C (en) 2020-11-10
US20160335063A1 (en) 2016-11-17
CN105247510B (zh) 2018-11-16
WO2014169160A3 (en) 2015-04-09
HK1215478A1 (zh) 2016-08-26
RU2015142982A (ru) 2017-04-13
BR112015025513A8 (pt) 2019-12-10
SG11201508262QA (en) 2015-11-27
PH12015502312B1 (en) 2016-02-10
US20140310697A1 (en) 2014-10-16
KR20150143658A (ko) 2015-12-23
MX348639B (es) 2017-06-22
EP2984584A2 (en) 2016-02-17
KR102194163B1 (ko) 2020-12-22
CL2015003015A1 (es) 2016-07-15
BR112015025513B1 (pt) 2022-08-16
CA2908054A1 (en) 2014-10-16
CN105247510A (zh) 2016-01-13
US9645801B2 (en) 2017-05-09
US9417890B2 (en) 2016-08-16
RU2666238C2 (ru) 2018-09-06
MX2015014301A (es) 2015-12-08
AU2014250924B2 (en) 2019-05-02
BR112015025513A2 (pt) 2017-07-18

Similar Documents

Publication Publication Date Title
JP6563381B2 (ja) 再計算ユーザインタフェースにおける変換の編さん
US20140306964A1 (en) Incremental compiling of a declarative program
Unpingco Python for probability, statistics, and machine learning
US20140310681A1 (en) Assisted creation of control event
US10055396B2 (en) Binding of data source to compound control
US20140310619A1 (en) Signal capture controls in recalculation user interface
Krämer et al. Executing cyclic scientific workflows in the cloud
Van Tendeloo et al. Concrete syntax: A multi-paradigm modelling approach
Unpingco Getting started with scientific python
Toomey Learning Jupyter 5: Explore Interactive Computing Using Python, Java, JavaScript, R, Julia, and JupyterLab
Antoniuk et al. Software engineering. Laboratory workshop. Methodological instructions for performing laboratory work in the discipline" Software engineering"
Cantwell et al. A Programmer’s Guide to Nektar+
Lazareff The Python user interface of the elsA cfd software: a coupling framework for external steering layers
Marc The Python user interface of the elsA CFD software: a coupling framework for external steering layers

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181030

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190625

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190724

R150 Certificate of patent or registration of utility model

Ref document number: 6563381

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250