(57)【要約】  分析モデルの生成および実行に関するシステム（１００）、方法（４００）、および他の実施形態（２００）が記載される。一実施形態において、コンピュータによって実行される方法（４００）は、分析式を含む分析モデルを実行するための選択されたランタイム環境を識別すること（４１０）を含む。ユーザスクリプトデータ構造が生成され、分析式をランタイム環境の実行可能な式にマッピングすること（４２０）を提供する。プリスクリプトデータ構造、分析モデルを有するユーザスクリプトデータ構造、およびポストスクリプトデータ構造を含むコンピュータ化された仕様オブジェクトが生成される（４３０）。プリスクリプトデータ構造は、ランタイム環境が、分析モデルが作用すべき入力データにどのようにアクセスすべきかを指定する。ポストスクリプトデータ構造は、分析モデルによって生成された結果データをランタイム環境からどのように出力すべきかを指定する。コンピュータ化された仕様オブジェクトは、分析モデルをランタイム環境で実行するためにコンピュータネットワーク上でランタイム環境に送信される（４４０）。
2018536227.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス（１１０）によって行なわれる、コンピュータによって実行される方法（４００）であって、前記コンピューティングデバイス（１１０）はメモリからの命令を実行するための少なくとも１つのプロセッサを含み、前記方法（４００）は、
利用可能なコンピュータ化されたランタイム環境のグループから選択されたランタイム環境（１５０）を識別すること（４１０）を備え、前記選択されたランタイム環境（１５０）は分析式を含む分析モデルを実行するように選択され、前記分析モデルは前記選択されたランタイム環境（１５０）の実行と互換性がないフォーマットであり、前記方法はさらに、
ユーザスクリプトデータ構造（１１６）を生成すること（４２０）を備え、前記ユーザスクリプトデータ構造（１１６）は、前記選択されたランタイム環境（１５０）のランタイム仕様に基づいて、前記分析モデルの前記分析式を前記選択されたランタイム環境（１５０）の実行可能な式にマッピングするための命令を含み、前記方法はさらに、
コンピュータ化された仕様オブジェクト（１１４）を生成すること（４３０）を備え、前記コンピュータ化された仕様オブジェクト（１１４）は、
（i）  前記選択されたランタイム環境（１５０）が、前記分析モデルが作用すべき入力データにどのようにアクセスすべきかを指定するプリスクリプトデータ構造（１１５）と、
（ii）  前記ユーザスクリプトデータ構造（１１６）および前記分析モデルと、
（iii）  前記分析モデルによって生成された結果データを前記選択されたランタイム環境（１５０）からどのように出力すべきかを指定するポストスクリプトデータ構造（１１７）とを含み、前記方法はさらに、
前記分析モデルを前記選択されたランタイム環境（１５０）によって実行するために、前記コンピュータ化された仕様オブジェクト（１１４）をコンピュータネットワーク上で前記選択されたランタイム環境（１５０）に送信すること（４４０）を備え、少なくとも前記マッピングするための命令は、前記分析モデルに、前記選択されたランタイム環境（１５０）における実行との互換性を持たせ、前記方法はさらに、
前記選択されたランタイム環境（１５０）から結果データを受信すること（４５０）を備える、方法。
【請求項２】
コンピュータ化された構成オブジェクトを前記コンピュータネットワーク上で前記選択されたランタイム環境に送信して、パラメータのセットに基づいて前記選択されたランタイム環境と同期し、前記選択されたランタイム環境のどこで前記分析モデルを実行すべきかを指定することをさらに備える、請求項１に記載の方法。
【請求項３】
前記選択されたランタイム環境において前記コンピュータ化された仕様オブジェクトの実行を開始することをさらに備える、請求項１に記載の方法。
【請求項４】
前記実行可能な式は、前記選択されたランタイム環境によって順番に実行すべき複数の計算ステップを含む、請求項１に記載の方法。
【請求項５】
前記プリスクリプトデータ構造は、前記選択されたランタイム環境がどのようにデータベースデバイスに接続して、前記分析モデルが作用すべき前記入力データにアクセスすべきかを指定するように生成される、請求項１に記載の方法。
【請求項６】
前記プリスクリプトデータ構造は、前記分析モデルが作用すべき前記入力データを、前記選択されたランタイム環境によってどのようにデータファイルから読出すべきかを指定するように生成される、請求項１に記載の方法。
【請求項７】
前記選択されたランタイム環境による構成ファイルへのアクセスを提供することをさらに備え、前記構成ファイルは、前記分析モデルを、前記選択されたランタイム環境のローカルノード上で、リモートノード上で、クラスタ化ノード上で、または前記ローカルノード、前記リモートノード、および前記クラスタ化ノードの組合せ上で実行すべきであると指定する、請求項１に記載の方法。
【請求項８】
コンピュータ化された開始オブジェクトを前記コンピュータネットワーク上で前記選択されたランタイム環境に送信することをさらに備え、前記コンピュータ化された開始オブジェクトは、前記選択されたランタイム環境によってアクセスすべき前記分析モデルについての前記入力データを格納する複数のデータ構造を指定する、請求項１に記載の方法。
【請求項９】
前記ユーザスクリプトデータ構造は、前記選択されたランタイム環境によって前記入力データに対して実行すべき前記分析モデルの一連の分析ステップを指定するように生成される、請求項１に記載の方法。
【請求項１０】
コンピューティングシステム（１００）であって、
コンピュータ化された仕様オブジェクト（１１４）を生成するように構成された分析アプリケーションロジック（１１０）を備え、前記コンピュータ化された仕様オブジェクトは、
分析式を有する分析モデルを指定するユーザスクリプトデータ構造（１１６）を有し、前記ユーザスクリプトデータ構造（１１６）は、前記分析式をコンピュータ化されたランタイム環境（１５０）の実行可能な式にマッピングするための命令を含み、前記コンピュータ化された仕様オブジェクトはさらに、
前記コンピュータ化されたランタイム環境（１５０）が、前記分析モデルが作用すべき独立変数データにどのようにアクセスすべきかを指定するプリスクリプトデータ構造（１１５）と、
前記コンピュータ化されたランタイム環境（１５０）によって実行されたときに前記分析モデルによって生成された結果データをどのように出力すべきかを指定するポストスクリプトデータ構造（１１７）とを有し、前記コンピューティングシステムはさらに、
前記コンピュータ化された仕様オブジェクト（１１４）を生成するための前記分析アプリケーションロジック（１１０）とのユーザ対話を容易にするように構成されたユーザインターフェイスロジック（１３０）を備える、コンピューティングシステム。
【請求項１１】
前記分析モデルは、複数の計算ステップを、前記コンピュータ化されたランタイム環境によって順番に実行すべき前記分析式として指定する、請求項１０に記載のコンピューティングシステム。
【請求項１２】
前記分析モデルは、複数の統計演算を、前記コンピュータ化されたランタイム環境によって順番に実行すべき前記分析式として指定する、請求項１０に記載のコンピューティングシステム。
【請求項１３】
前記独立変数データおよび前記結果データを格納するように構成されたデータベースデバイスをさらに備え、前記データベースデバイスは前記コンピュータ化されたランタイム環境によってアクセス可能である、請求項１０に記載のコンピューティングシステム。
【請求項１４】
前記プリスクリプトデータ構造は、前記コンピュータ化されたランタイム環境がどのように前記データベースデバイスに接続して前記独立変数データにアクセスすべきかを指定する、請求項１３に記載のコンピューティングシステム。
【請求項１５】
前記ポストスクリプトデータ構造は、前記コンピュータ化されたランタイム環境がどのように前記データベースデバイスに接続して前記結果データを格納すべきかを指定する、請求項１３に記載のコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
今日、会社に勤務するビジネスアナリストは、ビジネスの何らかの局面を理解するのを助けるために用いられる統計モデルを開発する場合がある。モデルは計算式を含み、当該計算式は、そのようなモデルのための特殊なアプリケーションを動作させるコンピューティングシステムによって実行される必要がある。場合によっては、モデルは非常に複雑な場合があり、会社は典型的に外部のベンダ（定量分析プロバイダ）を利用してモデルを実行し得る。外部のベンダは、カスタムソフトウェアによってモデルを実行すべきランタイム環境を提供する。しかし、ランタイム環境は、ランタイム環境に特有の計算式を実行するように構成されている。ゆえに、ランタイム環境への入力はいずれも、ランタイム環境が認識する特有のコンピュータ言語／フォーマットでなければならない。たとえば、外部のベンダがＭＡＴＬＡＢである場合は、実行用に提出される統計モデルを、当該モデルがＭＡＴＬＡＢランタイム環境で実行可能であるようにＭＡＴＬＡＢ計算式を用いて作成してフォーマットしなければならない。同様に、異なるベンダを利用して統計モデルを実行する場合は、当該統計モデルをそのベンダの計算式を用いて作成してフォーマットしなければならない。そうでなければ、統計モデルは無効な入力であり、そのベンダのランタイム環境で実行されないことになる。
【０００２】
しかし、ビジネスアナリストは、任意の特定のランタイム環境について訓練されていない場合がある。プログラミング処理を簡略化するために、ビジネスアナリストは最初に、たとえば英語、擬似コード、またはフローチャートを用いて統計モデルを作成する場合がある。ビジネスアナリストは次に、特定のランタイム環境およびその特定のプログラミング言語について訓練されているソフトウェアプログラマと一緒に働く場合がある。ソフトウェアプログラマは次に、ランタイム環境の計算式に準拠しており当該計算式を用いるモデルのプログラムを作成する。
【０００３】
後日、ビジネスアナリストまたは会社が、新たな外部のベンダを利用して統計モデルを実行すべきであると決定した場合は、会社の既存の統計モデルは機能しないことになる。これは、新たな外部のベンダは、異なる言語を必要とする異なるランタイム環境（たとえばＰｙｔｈｏｎ）を提供し、異なる計算式を必要とするモデルを実行する可能性が最も高いためである。したがって、既存の統計モデルを、異なるランタイム環境の計算式に適合するように再プログラミングしなければならない。ビジネスアナリストは同じソフトウェアプログラマまたは異なるソフトウェアプログラマと一緒に働いて、新たなランタイム環境の計算式を用いる既存のモデルの新たなプログラムを作成しなければならない場合がある。
【０００４】
会社は、新たな外部のベンダに切替わると再プログラミングしなければならない多くの統計モデルを所有し得る。既存のモデルを再プログラミングする処理には時間と費用がかかる。再プログラミングは多くのリソース（ビジネスアナリスト、ソフトウェアプログラマ等）も消費する。さらに、会社が新たな外部のベンダに切替えるたびに再プログラミング処理を繰返さなければならない。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
一実施形態において、コンピュータによって実行される方法がコンピューティングデバイスによって行なわれるとして記載され、当該コンピューティングデバイスは、少なくともメモリからの命令を実行するためのプロセッサを含む。当該方法は、利用可能なコンピュータ化されたランタイム環境のグループから選択されたランタイム環境を識別することを含み、選択されたランタイム環境は分析式を含む分析モデルを実行するように選択され、分析モデルは選択されたランタイム環境の実行と互換性がないフォーマットであり、当該方法はさらに、ユーザスクリプトデータ構造を生成することを含み、ユーザスクリプトデータ構造は、選択されたランタイム環境のランタイム仕様に基づいて、分析モデルの分析式を選択されたランタイム環境の実行可能な式にマッピングするための命令を含み、当該方法はさらに、コンピュータ化された仕様オブジェクトを生成することを含み、コンピュータ化された仕様オブジェクトは、（i）選択されたランタイム環境が、分析モデルが作用すべき入力データにどのようにアクセスすべきかを指定するプリスクリプトデータ構造と、（ii）ユーザスクリプトデータ構造および分析モデルと、（iii）分析モデルによって生成された結果データを選択されたランタイム環境からどのように出力すべきかを指定するポストスクリプトデータ構造とを含み、当該方法はさらに、分析モデルを選択されたランタイム環境によって実行するために、コンピュータ化された仕様オブジェクトをコンピュータネットワーク上で選択されたランタイム環境に送信することを含み、少なくともマッピングするための命令は、分析モデルに、選択されたランタイム環境における実行との互換性を持たせ、当該方法はさらに、選択されたランタイム環境から結果データを受信することを含む。
【０００６】
別の実施形態において、当該方法はさらに、コンピュータ化された構成オブジェクトをコンピュータネットワーク上で選択されたランタイム環境に送信して、パラメータのセットに基づいて選択されたランタイム環境と同期し、選択されたランタイム環境のどこで分析モデルを実行すべきかを指定することを含む。
【０００７】
別の実施形態において、当該方法はさらに、選択されたランタイム環境においてコンピュータ化された仕様オブジェクトの実行を開始することを含む。
【０００８】
別の実施形態において、実行可能な式は、選択されたランタイム環境によって順番に実行すべき複数の計算ステップを含む。
【０００９】
別の実施形態において、プリスクリプトデータ構造は、選択されたランタイム環境がどのようにデータベースデバイスに接続して、分析モデルが作用すべき入力データにアクセスすべきかを指定するように生成される。
【００１０】
別の実施形態において、プリスクリプトデータ構造は、分析モデルが作用すべき入力データを、選択されたランタイム環境によってどのようにデータファイルから読み出すべきかを指定するように生成される。
【００１１】
別の実施形態において、当該方法はさらに、選択されたランタイム環境による構成ファイルへのアクセスを提供することを含み、構成ファイルは、分析モデルを、選択されたランタイム環境のローカルノード上で、リモートノード上で、クラスタ化ノード上で、またはローカルノード、リモートノード、およびクラスタ化ノードの組合せ上で実行すべきであると指定する。
【００１２】
別の実施形態において、当該方法はさらに、コンピュータ化された開始オブジェクトをコンピュータネットワーク上で選択されたランタイム環境に送信することを含み、コンピュータ化された開始オブジェクトは、選択されたランタイム環境によってアクセスすべき分析モデルについての入力データを格納する複数のデータ構造を指定する。
【００１３】
別の実施形態において、ユーザスクリプトデータ構造は、選択されたランタイム環境によって入力データに対して実行すべき分析モデルの一連の分析ステップを指定するように生成される。
【００１４】
別の実施形態において、コンピューティングシステムが記載され、当該コンピューティングシステムは、コンピュータ化された仕様オブジェクトを生成するように構成された分析アプリケーションロジックを含み、コンピュータ化された仕様オブジェクトは、分析式を有する分析モデルを指定するユーザスクリプトデータ構造を有し、ユーザスクリプトデータ構造は、分析式をコンピュータ化されたランタイム環境の実行可能な式にマッピングするための命令を含み、コンピュータ化された仕様オブジェクトはさらに、コンピュータ化されたランタイム環境が、分析モデルが作用すべき独立変数データにどのようにアクセスすべきかを指定するプリスクリプトデータ構造と、コンピュータ化されたランタイム環境によって実行されたときに分析モデルによって生成された結果データをどのように出力すべきかを指定するポストスクリプトデータ構造とを有し、当該コンピューティングシステムはさらに、コンピュータ化された仕様オブジェクトを生成するための分析アプリケーションロジックとのユーザ対話を容易にするように構成されたユーザインターフェイスロジックを含む。
【００１５】
コンピューティングシステムの別の実施形態において、分析モデルは、複数の計算ステップを、コンピュータ化されたランタイム環境によって順番に実行すべき分析式として指定する。
【００１６】
コンピューティングシステムの別の実施形態において、分析モデルは、複数の統計演算を、コンピュータ化されたランタイム環境によって順番に実行すべき分析式として指定する。
【００１７】
別の実施形態において、コンピューティングシステムは、独立変数データおよび結果データを格納するように構成されたデータベースデバイスをさらに含み、データベースデバイスはコンピュータ化されたランタイム環境によってアクセス可能である。
【００１８】
コンピューティングシステムの別の実施形態において、プリスクリプトデータ構造は、コンピュータ化されたランタイム環境がどのようにデータベースデバイスに接続して独立変数データにアクセスすべきかを指定する。
【００１９】
コンピューティングシステムの別の実施形態において、ポストスクリプトデータ構造は、コンピュータ化されたランタイム環境がどのようにデータベースデバイスに接続して結果データを格納すべきかを指定する。
【００２０】
本明細書に組込まれてその一部を構成している添付の図面は、本開示のさまざまなシステム、方法、および他の実施形態を示す。図中に示される要素の境界（たとえばボックス、ボックスのグループ、または他の形状）は境界の一実施形態を表わしていることが認識されるであろう。いくつかの実施形態において、１つの要素は複数の要素として実現されてもよく、またはその複数の要素は１つの要素として実現されてもよい。いくつかの実施形態において、別の要素の内部構成要素として示されている要素は外部構成要素として実現されてもよく、逆もまた同様である。さらに、要素は一定の縮尺率で描かれていない場合がある。
【図面の簡単な説明】
【００２１】
【図１】分析モデルが多数の異なる定量分析プロバイダランタイム環境のいずれかで実行可能であるように当該分析モデルを定義できるように構成された分析アプリケーションインフラストラクチャ（ＡＡＩ）を有するシステムの一実施形態を示す図である。
【図２】分析モデルが多数の異なる定量分析プロバイダランタイム環境のいずれかで実行可能であるように当該分析モデルを定義できるように構成された分析アプリケーションインフラストラクチャ（ＡＡＩ）を有するシステムの別の実施形態を示す図である。
【図３】図１のシステムがデプロイメントの観点からどのように見えるかを示す、デプロイメントアーキテクチャの一実施形態を示す図である。
【図４】図１の分析アプリケーションインフラストラクチャ（ＡＡＩ）によって実行可能な方法の一実施形態を示す図である。
【図５】本明細書に記載の例示的なシステムおよび方法の１つ以上、ならびに／または同等物を用いて構成されるおよび／またはプログラミングされる例示的なコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【００２２】
詳細な説明
ユーザ（たとえばビジネスアナリスト）が統計モデル（または他の種類の分析モデル）を作成できるように構成されたコンピュータ化システムおよび方法が本明細書に記載される。分析モデルを実行するために選択される特有のランタイム環境について当該分析モデルを再生成または再構成する必要なしに当該分析モデルを複数の異なる種類のランタイム環境（たとえばＭＡＴＬＡＢ、Ｐｙｔｈｏｎ、Ｒ等）で実行できるようにするインターフェイスが実現される。
【００２３】
「分析モデル」という用語は本明細書において総称的に用いられており、コンピューティングシステムによって読取可能であるように、かつコンピューティングシステムに入力されるように構成された数学モデル、ビジネスモデル、統計モデル、アルゴリズムモデル、またはそれらのいずれかの組合せを指し得る。たとえば、統計モデルは、拡張マークアップ言語（ＸＭＬ）ファイルなどの文書において一連のステートメント（たとえば分析式）を用いて定義され得る。
【００２４】
「コンピュータ化されたランタイム環境」、「ランタイム環境」、「実行環境」、「統計ランタイム」、「定量分析ランタイム」、および「プロバイダランタイム」という用語は本明細書において同義で用いられており、定量分析プロバイダによって提供されるコンピュータ化された計算システム（たとえばウェブサービスシステム）を指す。
【００２５】
本明細書で使用される「定量分析プロバイダ」または「ランタイムプロバイダ」という用語は、分析モデルを実行するためのコンピュータ化されたランタイム環境を提供するベンダを指す。
【００２６】
「仕様」および「コンピュータ化された仕様オブジェクト」という用語は本明細書において同義で用いられ得る。
【００２７】
「分析アプリケーションインフラストラクチャ」および「分析アプリケーションロジック」という用語は本明細書において同義で用いられている。
【００２８】
本明細書で使用される「プッシュする」という用語およびそのさまざまな形態は、別のプログラムまたはコンピュータがデータを要求していなくても当該別のプログラムまたはコンピュータにデータを送る（たとえば送信する）ことを指す。
【００２９】
本明細書で使用される「プルする」という用語およびそのさまざまな形態は、別のプログラムまたはコンピュータからデータを要求して当該データを受信することを指す。
【００３０】
全体的な概要
一実施形態において、分析アプリケーションインフラストラクチャ（analytical application infrastructure：ＡＡＩ）が提供される。ＡＡＩは本明細書において分析アプリケーションロジックとも称される。ＡＡＩは、コンピュータ化されたランタイム環境（たとえばリモートサーバコンピュータシステム）の１つ以上のノード上でのスクリプト化モデルの実行を可能にする。ランタイムパラメータを用いてＡＡＩを構成することによって、モデル実行をいずれのノード上でも行なうことができ、またはモデルを複数のノード上で実行するために分散させることができる。一実施形態に従うと、ＡＡＩの一部として、インターフェイスおよびプラグインドライバが、統計モデルをランタイム環境にプラグインできるように、かつそれについての処理ノードを宣言的に構成するために設けられる。
【００３１】
ＡＡＩは、任意の統計ランタイム環境を用いて分析モデルを実行できるようにするインターフェイス仕様およびプラグインモジュールを提供する。例として、分析モデルは、当該分析モデルを特定のランタイム環境（たとえばＭＡＴＬＡＢ、Ｓｃａｌａ、Ｍ−Ｌｉｂ等）で実行するのに特有の符号化フォーマットまたは構文に関係なく定義され得る。異なるランタイム環境には入力分析モデルのための異なる符号化フォーマットが必要である。ゆえに、分析モデルがランタイム環境によって予想されるフォーマットとは異なるフォーマットで定義されている場合は、分析モデルはランタイム環境によって認識されないことになり、実行不可能である（たとえば互換性のないフォーマット）。ＡＡＩは、あるフォーマットの分析モデルを、フォーマットに関係なくさまざまなランタイム環境のいずれかで提出および実行できるようにする。さらに一実施形態において、ＡＡＩは、分析モデルの処理をランタイム環境の特定のハードウェアインフラストラクチャ（たとえばローカルノード、リモートノード、Ｈａｄｏｏｐクラスタ）に宣言的に導く命令をランタイム環境に与える機能を提供する。
【００３２】
一実施形態において、ＡＡＩは、「プリスクリプト」ブロック、「ユーザスクリプト」ブロック、および「ポストスクリプト」ブロックを含む実行モデルまたは仕様を生成する。当該仕様は、一実施形態に従うと、コンピュータ化されたオブジェクト（すなわちコンピュータ化された仕様オブジェクト）として生成されて維持される。ある観点からは、３つのコンポーネントが互いに（プリスクリプトブロック、ユーザスクリプトブロック、ポストスクリプトブロック）実行可能なアーティファクトを作成し、これは特定の定量分析プロバイダの指定されたランタイム環境に宣言的に関連付けられ得、さらにローカルノードもしくはリモートノード上で、またはＨａｄｏｏｐクラスタ上で動作するようにターゲット化され得る。一実施形態において、プリスクリプトおよびポストスクリプトプラグインは明確に指定される。プリスクリプトおよびポストスクリプトは定量分析プロバイダ（ランタイム環境−ホストサーバ側）によって、または分析アプリケーションロジックのプロバイダ（クライアント側）によって実現され得る。
【００３３】
一実施形態に従うと、ＡＡＩはコンピュータ化された仕様オブジェクト（仕様）内に以下の別個の部分を含む。
【００３４】
−  モデラーがデータを所有し、データを用いて動作し、モデルを実行するためのクレデンシャルを確立する開始ブロック。
【００３５】
−  モデル変数をデータハンドルに結合し、モデルためのワークスペースを準備し、データについて問合せるためのプロバイダ特有の構文構造を準備し、入出力データ構造を準備するプリスクリプトブロック。
【００３６】
−  変数／静的パラメータおよびプレースホルダへの結合とともに、ユーザスクリプトブロック内の定量分析技術の統計モデル（モデル定義）によって少なくとも部分的に表わされるコアビジネスロジック。コアビジネスロジックは、ユーザスクリプトブロックと関連付けられたメタ情報に基づいて結合すべきランタイム環境を自動的に決定する。たとえば、メタ情報は、統計モデルを実行するために（ランタイム環境のグループから）選択された特定のランタイム環境を識別する。したがって、ユーザスクリプトブロックと関連付けられたメタ情報を変更すると、モデル定義（すなわち分析／統計モデル）が変更されることなくランタイム環境（およびしたがってプロバイダ）が切替わる。
【００３７】
−  下流消費のための実行の出力を準備する後処理ブロック（ポストスクリプトブロック）。
【００３８】
−  選択されたランタイム環境内でどのハードウェア（たとえばローカルノード、リモートノード、ノードのクラスタ）を用いてモデルを実行すべきかを示す情報および他の環境パラメータを保持する構成ブロック。
【００３９】
本明細書中の説明のほとんどは統計モデルを参照することに関して与えられる。しかし、他の種類の分析モデルも可能である。たとえばＭＡＴＬＡＢおよびＰｙｔｈｏｎベースのランタイム環境にアクセス可能であり、かつそれらの双方に対して統計モデルを実行可能なシステムが構成される。統計モデルは単一の定義モデルである。典型的に今日、アルゴリズムがＭＡＴＬＡＢに対して開発されている場合は、ＭＡＴＬＡＢ特有のコードが書かれる。同様に、アルゴリズムがＰｙｔｈｏｎに対して開発されている場合は、Ｐｙｔｈｏｎ特有のコードが書かれる。一実施形態において、統計モデル（単一の定義モデル）がランタイム環境の特有のコードでコード化されることなく、基本となるＭＡＴＬＡＢ、Ｐｙｔｈｏｎ、または他のランタイム環境と結合および実行可能な当該モデルの１つの仕様（コードではなくスクリプト）を定義することができる。
【００４０】
統計モデルが実行する機能は、ランタイム不可知論的に（すなわちスクリプトを介して）指定され得る。典型的に、統計モデルは１セットの独立変数（入力データ）および１セットの従属変数（結果データ）を有する。たとえば、従属変数は、住宅ローンを債務不履行する一定の人口区分の確率であってもよい。独立変数は、国内総生産（ＧＤＰ）、失業率、インフレ率、および住宅ローンの残高の履歴平均であってもよい。モデルはこれら４つの独立変数に作用して債務不履行の確率を計算または決定し得る。これら４つの独立変数は、モデルによって定義されるようなさまざまな分析アルゴリズムの影響を受け得る（たとえば、多数のステップで実行されて、最終結果、すなわち債務不履行の確率を決定する線形回帰アルゴリズムまたはその他の統計アルゴリズムであり得る）。
【００４１】
一実施形態において、宣言的パラダイム（たとえば口語英語）に基づく宣言的仕様（コンピュータ化された仕様オブジェクト）が生成される。コンピュータ化された仕様オブジェクトにおいて、変数が選択され、これらの変数が受けることになる計算の種類が宣言され、出力結果の種類が定義される。この宣言的仕様は次に、たとえばＸＭＬフォーマットで格納される。当該仕様は次に、仕様からの３つの異なる別個のセットの命令が定量分析プロバイダのランタイム環境に入力されるように、基本となる定量分析プロバイダ（たとえばＭＡＴＬＡＢまたはＰｙｔｈｏｎ）に送られ得る。
【００４２】
一実施形態において、第１のセットの命令はプリスクリプトである。これは、定量分析プロバイダランタイム環境に、特定のデータベースに接続して一定の表および列を送信中の変数にマッピングするように命令する。第２のセットの命令はユーザスクリプトである。これは、計算すべき式、たとえば線形回帰またはその他の数学関数を提供するように定量分析プロバイダに問合せるアルゴリズムまたは統計モデルである。ランタイム環境が提供するものに基づいて、プリスクリプト内で問合せられて定義された、上記の例からの４つの独立変数がその式に入力される。第３のセットの命令はポストスクリプトである。ここでは、ランタイム環境が、出力結果を計算した後に、従属変数プレースホルダとして送信されたプレースホルダに出力結果を格納するように指示される。プリスクリプト、メインユーザスクリプト、およびポストスクリプトを有するアプローチは、定量分析プロバイダの基本となるランタイム環境（定量分析エンジン）に関して統一されている。すなわち、ユーザスクリプト内に定義された同一の分析モデル（単一定義）を有する同一の仕様構造を、分析モデルを書き直す、または仕様構造（プリスクリプト、ユーザスクリプト、ポストスクリプト）から逸脱する必要なしに、いずれの基本となるランタイム環境でも使用することができる。
【００４３】
一実施形態において、定量分析プロバイダのランタイム環境（たとえばＭＡＴＬＡＢまたはＰｙｔｈｏｎ）は、分析アプリケーションインフラストラクチャ（ＡＡＩ）または任意の特有のインターフェイス情報の仕様を認識するように再プログラミングされなくてもよい。スクリプトは、モデルがランタイム環境で動作することを保証する。顧客は、それらの統計モデルを実行するために１つの定量分析プロバイダに依拠しなければならないことに限定されることを望まない。本明細書に記載のメカニズムは、顧客が、既存の統計モデルをランタイム環境に特有の新たな式を用いて新たな言語に再プログラミングする必要なしに、あるランタイム環境から別のランタイム環境に移ることができるようにする。本システムおよび方法を用いると、ＡＡＩ環境で定義される統計モデルを、異なるランタイム環境で実行するために入力することができる。
【００４４】
図１は、分析アプリケーションインフラストラクチャまたはロジック１１０を有するコンピュータ化システム１００の一実施形態を示す。分析アプリケーションロジック１１０は、分析（たとえば統計）モデルを選択されたランタイム環境の特有の要件に準拠するように再プログラミングする／書換える必要なしに、当該統計モデルを多数の異なるランタイム環境のいずれかで実行するために定義されて活用される／提出されることができるように構成される。分析アプリケーションロジック１１０はＪａｖａ（登録商標）エンジン１１２を含み、Ｊａｖａエンジン１１２はコンピュータ化された仕様オブジェクト１１４（仕様）の生成をサポートする。コンピュータ化された仕様オブジェクト１１４はプリスクリプト１１５、ユーザスクリプト１１６、およびポストスクリプト１１７を含む。コンピュータ化された仕様オブジェクト１１４は、本明細書において後述するように、コンピュータ化された開始オブジェクトおよびコンピュータ化された構成オブジェクトも含み得る。
【００４５】
コンピュータ化システム１００はデータベースデバイス１２０も含む。データベースデバイス１２０は分析アプリケーションロジック１１０に直接および／またはネットワークインターフェイスを介して動作可能に接続されて、ネットワーク接続を介したデータベースデバイス１２０へのアクセスを可能にする。一実施形態に従うと、データベースデバイス１２０は、分析アプリケーションロジック１１０と関連付けられたコンピュータ化されたオブジェクトおよびデータ構造（たとえば統計モデルのための独立変数データおよび出力結果データの記録）をデータベースシステム（たとえば分析アプリケーションデータベースシステム）に格納して管理するように構成される。
【００４６】
コンピュータ化システム１００は、分析アプリケーションロジック１１０に動作可能に接続されたユーザインターフェイスロジック１３０も含む。一実施形態において、ユーザインターフェイスロジック１３０は、グラフィカルユーザインターフェイス（ＧＵＩ）を生成して分析アプリケーションロジック１１０とのユーザ対話を容易にするように構成される。たとえば、ユーザインターフェイスロジック１３０は、実現されるインターフェイスのグラフィカル設計に基づいてグラフィカルユーザインターフェイスを生成して表示させるプログラムコードを含む。ＧＵＩを介したユーザ動作および選択に応答して、スクリプトおよびモデル定義の関連のアスペクトが操作され得る。
【００４７】
コンピュータ化システム１００は、分析アプリケーションロジック１１０に動作可能に接続された表示画面１４０も含む。一実施形態に従うと、表示画面１４０は、単一の定義分析モデリングと関連付けられた情報を見て更新するためのユーザインターフェイスロジック１３０によって生成されたグラフィカルユーザインターフェイス（ＧＵＩ）のビューを表示して当該インターフェイスとのユーザ対話を容易にするように実現される。一実施形態において、分析アプリケーションロジック１１０は、多くのクライアントデバイス／ユーザによってアクセスされる集中型サーバ側アプリケーションである。ゆえに、表示画面１４０は、ユーザがネットワーク化されたコンピュータ通信を介して分析アプリケーションロジック１１０からのサービスにアクセスして当該サービスを受けることができるようにする複数のコンピューティングデバイス／端末を表わし得る。
【００４８】
さらに、ユーザインターフェイスロジック１３０は、ユーザが選択可能な、利用可能なランタイム環境のリストから１つのランタイム環境を選択するための入力パラメータを用いて構成される。当該入力パラメータは、選択された分析モデルが実行のためにデプロイされることになるランタイム環境を識別する。一実施形態において、選択されたランタイム環境はメタ情報として格納される。以下の説明では、選択されたランタイム環境は、リモートコンピュータシステム上の定量分析プロバイダによってホストされるコンピュータ化されたランタイム環境１５０（図１参照）と称される。
【００４９】
ユーザインターフェイスロジック１３０はさらに、表示画面１４０上のグラフィカルユーザインターフェイスを介した結果データの出力および表示を容易にするように構成される。結果データは、実行用に提出された選択された分析モデルを実行した後に、コンピュータ化されたランタイム環境１５０によって生成されて当該環境から受信したデータである。コンピュータ化されたランタイム環境１５０のさらに他の説明は本明細書において後述する。さまざまな他の実施形態に従って、他の種類の結果データも可能である。
【００５０】
他の実施形態は、図１の分析アプリケーションロジック１１０と同一または同様の機能を提供する異なるロジックまたはロジックの組合せを提供し得る。一実施形態において、分析アプリケーションロジック１１０は、コンピュータ化システム１００のプロセッサによって実行されると当該ロジックの機能を果たすように構成されたアルゴリズムおよび／またはプログラムモジュールを含む実行可能なアプリケーションである。当該アプリケーションは、コンピュータプログラム製品として非一時的なコンピュータ記憶媒体に格納される。一実施形態において、分析アプリケーションロジック１１０の機能は非一時的なコンピュータ読取可能な媒体上に格納されたモジュールとして実現され、当該モジュールは、本明細書に記載の機能の実行を命じる、少なくとも上記プロセッサによって実行可能な命令を含む。分析アプリケーションロジック１１０、データベースデバイス１２０、ユーザインターフェイスロジック１３０、表示画面１４０、およびそれらの間の動作可能な接続は、本明細書においてひとまとめに分析アプリケーション環境と称される。
【００５１】
一実施形態において、図１が示すブロックは、分析アプリケーションロジック１１０によって生成されて仕様（コンピュータ化された仕様オブジェクト）に含められるコンポーネントを記述している。当該仕様は、データ構造の形態のプリスクリプト１１５、ユーザスクリプト１１６、およびポストスクリプト１１７を含むように生成される。ユーザスクリプト１１６は実際の定量分析ブロックを含むように生成される（実行用の統計モデルがユーザスクリプトデータ構造に追加される）。図１は、プリスクリプト１１５、ユーザスクリプト１１６、およびポストスクリプト１１７がどのように定量分析プロバイダのコンピュータ化されたランタイム環境１５０に入力されるかを示す。図１では、Ｒが定量分析エンジンとして用いられている（ＭＡＴＬＡＢ、Ｐｙｔｈｏｎ等も代替的な定量分析エンジンとして示されている）。基本的な概念は従来のセットアップで動作可能であるか、またはクラスタ化されたＨａｄｏｏｐアーキテクチャを用いて実現可能である。スクリプトは、基本となるハードウェア仕様についての情報、またはスクリプトが定量分析プロバイダによってどのように動作するかについての情報を含んでいなくてもよい。
【００５２】
定量分析プロバイダは、統計モデルを実行するためのランタイム環境を提供するエンティティ（たとえばホストサーバを有するベンダ）である。分析アプリケーションロジックプロバイダは、分析アプリケーションロジック１１０を用いて１つ以上の統計モデルをランタイム環境上で実行するために提出するエンティティ（たとえばクライアント）である。複数の異なるランタイム環境が選択に利用可能であり、その各々が特定のフォーマットの統計モデルを実行可能であることを思い起こされたい。仕様（プリスクリプト、ユーザスクリプト、ポストスクリプト）は、選択されたランタイム環境に何を実現すべきかについて命令する。たとえば、ランタイム環境は、（たとえばホストサーバ上に生成されて実現された）プリスクリプトおよびポストスクリプトを直接実行可能である。あるいは、定量分析プロバイダは、ランタイム環境の関数の構文、フォーマット等を記述する（たとえば、データベースに接続して問合せを実行するためにはどの機能が内部で呼出されるかを記述する）ランタイム環境の仕様を公開することができる。複数の異なるランタイム環境から仕様を得ることによって、ランタイム仕様のデータベースが、識別された各ランタイム環境によってデータ構造形態で生成されて編成され得る。後述するように、ランタイム仕様を用いてユーザスクリプト１１６のための変換命令が生成され得る。次に、分析アプリケーションロジック１１０は、選択されたランタイム環境のランタイム仕様に従ってプリスクリプトおよびポストスクリプトを生成して実行するように構成される。双方のアプローチが実行可能である。
【００５３】
したがって、定量分析プロバイダがクライアントにプリスクリプトおよびポストスクリプトを実行してほしい場合は、定量分析プロバイダは、ランタイム環境内でどのようにデータベースに接続して問合せを実行するかを含むランタイム仕様および構文をクライアントと共有しなければならなくなる。そして、分析アプリケーションロジック１１０を動作させるクライアントは、定量分析プロバイダからの仕様を前提としてプリスクリプトおよびポストスクリプトを実行することができる。あるいは、定量分析プロバイダがランタイム仕様をクライアントに見せたくない場合は、定量分析プロバイダは、たとえば、特定のクライアントと動作するためのランタイム環境についてのプリスクリプトおよびポストスクリプトを内部で実行することができる。
【００５４】
ある実施形態は、仕様（プリスクリプト、ユーザスクリプト、ポストスクリプト）の構成と、定量分析プロバイダの指定されたランタイム環境に仕様を入力して実行を開始する能力とを提供する。スクリプトに基づく仕様は、モデルがいずれのランタイム環境でも動作可能なように当該モデルを指定するための中立のアプローチである。すなわち、各ランタイム環境がモデルの異なる式を必要とする場合でも、同一のモデルが異なるランタイム環境で実行可能である。（たとえばＭＡＴＬＡＢ等についての）基本となる統計コードは専用であることが多い。しかし、ＡＡＩのユーザは、ランタイム環境を利用して開発された統計モデルを実行するために専用のコードを知っているまたは理解している必要はない。ユーザ統計モデルは、統計モデルが実行のためにどこに入力されても（ＭＡＴＬＡＢ、Ｐｙｔｈｏｎ、Ｒ等）そのままであり続けるビジネスレベルモデルである。仕様（プリスクリプト、ユーザスクリプト、ポストスクリプト）は本質的にユーザインターフェイス仕様である。一実施形態において、プリスクリプトおよびポストスクリプトは、特定のランタイム環境に対して特定であるように再構成される。たとえば、ランタイム環境がどのようにデータベースに接続してデータベースに問合せるかに基づいて、スクリプトはランタイム環境のプロトコルに従ったコマンドまたはコードを含む。ゆえに、スクリプトは、統計モデルがランタイム環境で実行可能であるようにするインターフェイスを提供する。
【００５５】
プリスクリプトは分析アプリケーションロジック１１０によって生成されるブロックであり、コンピュータ化されたランタイム環境１５０に、分析モデル内の式によって用いられるデータ（たとえば入力変数データ）をどのように取得する／読み出すかについて命令する。一実施形態において、データは分析アプリケーションインフラストラクチャデータベースデバイス１２０内に存在する。すなわち、データがどのようにデータベースデバイス１２０から抽出されてコンピュータ化されたランタイム環境１５０に提供されるかは、プリスクリプトブロック内に定義されている。たとえば、一実施形態において、プリスクリプトデータ構造１１５は、コンピュータ化されたランタイム環境がどのようにデータベースデバイス１２０に接続して独立変数データにアクセスすべきかを指定する。
【００５６】
プリスクリプトはデータにアクセスし、外部ランタイム環境が分析モデルの一部として入力されるデータを正確に読み出して認識できるように、当該データをフォーマットに編成する。たとえば、あるランタイム環境はデータを値のリストとして読み出すように構成され得る。ゆえに、入力データが値のリストとしてフォーマットされていない場合は、入力データは正確に読み出されないことになる。別のランタイム環境は、表フォーマットのデータを読み出すように構成され得る。第３のランタイム環境は、たとえばエクセル（登録商標）フォーマットなどの特有のフォーマットのデータを読み出し得る。すなわち、各定量分析プロバイダは、それらのランタイム環境に適した異なる態様でデータを取扱い得る。したがって、プリスクリプトは、それに応じて特定の定量分析プロバイダのランタイム環境について構築または構成される。プリスクリプトはデータ環境への接続を可能にし、データの抽出を可能にし、ランタイム環境がデータを適切に観察できるようにデータを操作する。
【００５７】
ユーザスクリプトは仕様オブジェクト１１４の主要部である。ユーザスクリプトは分析（たとえば統計）モデルを指定する。当該モデルは、たとえば、数ある統計的および数学的方法の中でも特に線形回帰を用いて、４つの独立変数に基づいてあるグループの顧客についてのローンの債務不履行の確率を計算する。すなわち、ユーザスクリプトは、独立変数データに対して実行すべき一連の計算（たとえば統計）ステップまたは演算を（分析式として）指定する。定量分析プロバイダは実際の統計関数および数学関数（実行可能な式）を提供し、これがランタイム環境１５０において当該データに作用して結果を計算することになる。入力データはプリスクリプトによって利用可能になる。一実施形態において、ユーザスクリプトは、分析モデルを構成する分析式をコンピュータ化されたランタイム環境の対応する実行可能な式にマッピングするための命令を含む。ゆえに、ユーザスクリプトは、分析モデル自体が認識不可能な／互換性のないフォーマットを有する場合でもランタイム環境が入力される分析モデルを実行できるようにするためのメカニズムを提供する。
【００５８】
たとえば、線形回帰関数が３つの変数を入力して当該変数に作用する方法が１つあると仮定する。したがって、入力データがプリスクリプト手法によって処理される（アクセスされる、操作される等）と、データは周知の数学的原理によって基本となるアルゴリズムに結合され、当該アルゴリズムはユーザスクリプト内に命令された順序で呼出される。したがって、ランタイム環境は、実行時に、どのようにアルゴリズムがインスタンス化されるか、およびどのようにデータがアルゴリズムにおいてプレースホルダに提示されるかについての基本となる数学的基礎を変更することができない。
【００５９】
たとえば、線形回帰アルゴリズムは、括弧内のコンマによって分離された３つの変数を入力するように構成され得る。そのような数学的フォーマットは変更不可能である。データが、線形回帰アルゴリズムの値のリストとしてランタイム環境に提示され得る場合でも、アルゴリズムの名前または式もランタイム環境によっても認識されて識別可能でなければならない。たとえば、ＭＡＴＬＡＢランタイム環境はアルゴリズム「線形回帰」を呼出し得、Ｐｙｔｈｏｎランタイム環境はアルゴリズム「ＬＲＥＧ」を呼出し得、第３の定量分析プロバイダランタイム環境はアルゴリズム「ＬＲ」を呼出し得る。ランタイム環境の名前、フォーマット、および他の規則は、ランタイム仕様によって定義されるランタイム環境の構文と見なすことができる。上述のように、（データ構造形態の）ランタイム仕様のデータベースはさまざまな利用可能なランタイム環境から生成可能である。
【００６０】
したがって、一実施形態において、選択されたランタイム環境に応答して、対応するランタイム仕様がデータベースから分析され、ユーザスクリプトは、選択されたランタイム環境の構文に特有である／構文と互換性がある式を含むように生成される。したがって、一実施形態において、分析アプリケーション環境で開発された分析モデルに異なるランタイム環境との互換性を持たせるために、ユーザスクリプトは、分析モデル内のステップの名前を、ランタイム仕様に基づいて対応するステップ／動作についてランタイム環境が用いる名前および構文に再マッピングするステートメントを含む。ゆえに一実施形態において、ユーザスクリプトは、（特有のフォーマットまたは構文を有していない）分析モデルのステートメントを、選択されたランタイム環境の構文に準拠するステートメントに変換するように構成される。
【００６１】
一実施形態において、定量分析プロバイダからのランタイム仕様は、どのように出力結果を得てアルゴリズムから出力結果をリードバックするかについての情報またはデータを含み得る。そのような情報またはデータはポストスクリプト内で用いられてデータの出力を定義し得る。たとえば、出力が、住宅ローンを債務不履行することになるあるグループの顧客についての債務不履行の確率である場合、ランタイム環境は、値を多数の異なる方法で（たとえば数値的に、列として、数値フォーマットにデコードバックする必要がある何らかの２進値として）戻し得る。ポストスクリプトはそれに応じて、結果を分析アプリケーション環境に（たとえばデータベースデバイス１２０に）ライトバックするまたは出力し戻すことができるように構成される。ゆえに、ランタイム環境からどのように出力をリードバックするのかのランタイム仕様の知識を用いてポストスクリプトが正確に構成される。したがって、ここでも、ポストスクリプトを特定のランタイム環境に適合させることができる。たとえば、一実施形態において、ポストスクリプトデータ構造１１７は、コンピュータ化されたランタイム環境がどのようにデータベースデバイス１２０に接続して結果データを格納すべきかを指定する。
【００６２】
出力結果を分析アプリケーション環境にライトバックすることは、分析アプリケーション環境（クライアント／顧客システム）がどのように構成されているかに基づく。しかし一実施形態において、ポストスクリプト式をクライアントシステムからランタイム環境に送信してランタイム環境内で実行することができる。このように、ランタイム環境は、クライアントシステムの要件とともに動作して実行結果を出力するように構成され得る。
【００６３】
顧客がある定量分析プロバイダから別の定量分析プロバイダに変更することによってランタイム環境を変更したい場合は、プリスクリプトブロックおよびポストスクリプトブロックは新たなランタイム環境と互換性があるように生成される。ユーザスクリプトも、モデル内に用いられるステップまたは呼出し関数の式名を、新たなランタイム環境と互換性があるように新たなランタイム環境の対応するアルゴリズム（たとえば線形回帰、相関等）の名前／構文と再マッピングするように生成される。一実施形態において、上述のように、新たなランタイム環境のランタイム仕様がデータベースから取出され、適切な変換およびマッピング命令を決定するために用いられる。したがって、ユーザスクリプトについて、モデル内のステートメントをランタイム環境の対応するステートメントおよび構文に変換するマッピングが実行される。分析アプリケーション環境名が取られてランタイム環境名にマッピングされる。したがって、顧客が定量分析プロバイダを変更すると、新たなランタイム環境の構文に基づいて新たなマッピングが当該ユーザスクリプトについて実行されて生成される。ビジネスアナリストにはこのマッピングが見えない。したがって、ビジネスアナリストにとっては、（ユーザスクリプト内に定義されているような）統計モデルは変化しておらず、ビジネスアナリストによって再プログラミングされる必要はない。
【００６４】
一実施形態において、コンピュータ化された仕様オブジェクト１１４の一部である開始ブロック（たとえばコンピュータ化された開始オブジェクト）があり、これは、実際の実行を開始する前に分析アプリケーション環境で起こる１セットのステップを提供する。別の実施形態において、当該開始ブロックは、コンピュータ化された仕様オブジェクトとは別個のコンピュータ化された開始オブジェクトであってもよい。
【００６５】
開始ブロックは、どの表、列等が実際のデータを供給するかを定義する。出力結果をファイルとしてライトバックする定量分析プロバイダもある。当該プロバイダはデータベースデバイス１２０に対して読出／書込をまったく行なわない。したがって、定量分析プロバイダがそのファイルを分析アプリケーション環境に与えると、分析アプリケーション環境は、定量分析プロバイダがファイルにライトバックする書込み許可があるように、どのデータ構造を事前に準備すべきかを決定する。
【００６６】
開始ブロックは、ある意味、基本となるランタイム環境に応じて一度実行される。今日、実行はＬｉｎｕｘ（登録商標）ボックス上で行なわれ、明日、実行はクラスタ上で行なわれ、その次の日、実行は大型のＵＮＩＸ（登録商標）ＩＢＭメインフレーム環境で行なわれる場合がある。したがって、基本となるデプロイメント環境に応じて、開始ブロックは分析アプリケーションインフラストラクチャ処理の開始時に一度実行される。
【００６７】
構成ブロック（たとえばコンピュータ化された構成オブジェクト）を用いて、システム要素の１つ以上を１セットのパラメータに同期させる。当該１セットのパラメータは、たとえば、リモートファイルの場所に関連するパラメータ（Remote_File_Location）、エッジノードの識別に関連するパラメータ（Edge_Node_Identifier）、ｈｉｖｅセッションに関連するパラメータ（Hive_Session_Parameters）、および関数の識別に関連するパラメータ（Function_ID）を含み得る。さらに、構成ブロックは、モデルがコンピュータ化されたランタイム環境のどこで（ローカルノード、リモートノード、クラスタ上）実行されているかを定義し得る。したがって、一実施形態において、どこで機能が実行されているか、どこでデータがハンドオフされるか、どこで結果が戻されるか、どのフォルダにアクセスすべきか等をシステムが識別するように命令されるおよび／または識別することができるように、ホスト名がシステム内で共有される。これらのパラメータおよび／または命令は構成ブロック内で設定されて定義される。コンピュータ化された構成オブジェクトは、さまざまな実施形態に従って、コンピュータ化された仕様オブジェクトの一部であってもよく、または完全に別個のオブジェクトであってもよい。
【００６８】
システム実行フロー
再び図１を参照して、図１の左側は、分析アプリケーションロジック１１０を含む分析アプリケーション環境の一実施形態を示す。メタモデルデータベースを含むデータベースデバイス１２０も存在し、ここに分析アプリケーションロジック１１０を用いて定義されるオブジェクトが格納される。図１はメタモデルデータベース１２０への点線接続も示している。メタモデルデータベース１２０はすべての定義オブジェクトを保持する保管場所である。モデル定義も、メタモデルデータベース１２０内にデポジットされるオブジェクトである。
【００６９】
一実施形態に従うと、ＡＡＩのアプリケーション層はＪａｖａエンジン１１２である。アプリケーション層内の主要なフレームワークは、統計モデルが（たとえば人間のビジネスアナリストによって）構築されるモデリングフレームワークである。コアモデリングフレームワークは、ビジネスユーザ（人間のビジネスアナリスト）がモデルの意図を宣言的に定義し、これによって少なくともプリスクリプト、ユーザスクリプト、およびポストスクリプトを有するコンピュータ化された仕様オブジェクト１１４（仕様）が得られる場所である。
【００７０】
一実施形態において、コンピュータ化された仕様オブジェクト１１４はＸＭＬファイルとして表わされる。ＸＭＬファイルの内容は、たとえば、英語を読み書きできる者は誰でもＸＭＬファイルを見て当該モデル定義が意味することを理解できるように、ある意味で口語英語である。したがって、仕様（プリスクリプト、ユーザスクリプト、ポストスクリプト）は、統計的プログラミングの扱いにくく不可解な言語で従来書かれていた表記法のビジネスパーソンが理解できる表記への変換である。これは、ＸＭＬファイル１１８内の「モデルランタイム」ノード構成として図１に表わされている。ＸＭＬファイル１１８は、意図に加えて、モデルを最終的に実行する際に参加するその他すべて（たとえば仕様、開始ブロック、および構成ブロック）を表わす。ＸＭＬファイル１１８は、モデルを理解してそのモデルのダイナミクスを実行するための単一の基準点になる。
【００７１】
図１は、その同一のモデル定義がノードに入力される表現も示している。当該ノードにおいて、コンピュータ化されたランタイム環境１５０は、まずモデル定義を得て、モデル定義を実際の実現（たとえばＲベースのランタイムエンジン１５２またはＭＡＴＬＡＢベースのもしくはＰｙｔｈｏｎベースのランタイムエンジン１５４）に結合することによって、モデルの実行を行なう。次に、実行の物理的アスペクトがＨａｄｏｏｐノード（たとえばコモディティハードウェアのクラスタ）に入力され得る。これらのさまざまな実行可能なハードウェアシステムノードは、さまざまな理由／優先で定量分析プロバイダによって決定される。図１は、Ｈａｄｏｏｐ環境で動作するように構成された実行環境を示す。Ｈａｄｏｏｐ環境は、単一の主要ノード１５６と、いくつかのワーカースレーブノード１５７および１５８とを有しており、当該ノードにおいて分析モデルは実際にはクロックサイクル毎に実行される。
【００７２】
図２を参照して、図２のシステム２００は図１のシステム１００と同様であるが、図２のシステム２００はファイルベースのデータ表現を用いている。図１には、そのようなファイルの表現がない。図２には、「モデル入力データセットおよび変数について作成されたｈｄｆｓファイル」とラベル付けされたブロック２１０がある。ｈｄｆｓファイルはＨａｄｏｏｐ分散ファイルシステムのファイルである。システム２００は、モデルの実行のために用いられるデータが、定量分析プロバイダランタイム環境をＡＡＩデータリポジトリ（データベース）１２０に接続できるようにすることによって、または、定量分析プロバイダランタイム環境がＡＡＩデータリポジトリ１２０に接続しなくてもいいようにデータのファイルベースの表現（ブロック２１０）を提供することによって、共有され得ることを示す。その程度まで、定量分析プロバイダランタイム環境は、いずれの形態または態様の分析アプリケーションロジック１１０の存在に対しても完全に不可知論的であり得る。ブロック２１０のｈｄｆｓファイルは、定量分析プロバイダ実行環境１５０にデータを与えて結果データを取戻すためのルートとなる。
【００７３】
図３は、図１のシステム１００がデプロイメントの観点からどのように見えるかを示すデプロイメントアーキテクチャの一実施形態を示す。分析アプリケーション環境３１０は図３の右側にあり、定量分析プロバイダ環境３２０は図３の左側にある。図３に示すように、仕様のプリスクリプト３２２およびポストスクリプト３２４の部分はプラグインとして分析アプリケーション環境３１０から定量分析プロバイダ環境３２０に送信（プッシュ）されており、統計モデルは分析アプリケーション環境から定量分析プロバイダ環境に入力（プッシュ）されている。
【００７４】
図３に示すプッシュ処理は、一実施形態に従ってどのように実行が開始されるかである。図３のブロック３２６では、分析モデルの複雑度および処理すべきデータ量に応じてプロバイダランタイム環境３２０が分析モデルを実行して多数のノードに広げられ得る。ポストスクリプト３２４は、ディスクまたはｈｄｆｓファイル３２８にライトバックするように構成される。ファイルは受信（プル）処理によってリードバックされ、図３の右側に示されるＡＡＩデータベースデバイス３１２にポストされる。プル処理は、データ要求を別のコンピュータに送信することと、コンピュータが出力結果で応答した後、当該コンピュータから出力結果を受信することとを含むネットワーク通信処理である。図３の左下のＨｉｖｅ管理セクション３３０は、異なる実行可能なタスクを行なっているクラスタの分散部分を示す。
【００７５】
図４は、図１の分析アプリケーションロジック１１０によって実行可能な方法４００の一実施形態を示す。方法４００は分析アプリケーションロジック１１０の動作を記述しており、図１の分析アプリケーションロジック１１０によって、または方法４００のアルゴリズムを用いて構成されたコンピューティングデバイスによって行われるように実行される。たとえば、一実施形態において、方法４００はコンピュータアプリケーションを実行するように構成されたコンピューティングデバイスによって実行される。当該コンピュータアプリケーションは、電子形態のデータを処理するように構成され、方法４００の機能を果たす格納された実行可能な命令を含む。
【００７６】
方法４００を図１の観点から説明する。図１では、分析アプリケーションロジック１１０は、利用可能なランタイム環境のグループから選択されたランタイム環境に分析モデルを提出するためのユーザインターフェイスおよび変換メカニズムを提供するコンピュータ化システム１００の一部である。ここでも、分析モデルは数学モデル、ビジネスモデル、統計モデル、アルゴリズムモデル、またはそれらのいずれかの組合せとして記述され得る。たとえば、分析モデルは、拡張マークアップ言語（ＸＭＬ）ファイルなどのコンピュータ化された文書において一連のステートメント（たとえば分析式）を用いて定義され得る。分析モデルは、たとえば、分析アプリケーション環境において統一された分析式を用いるビジネスアナリストによって生成される。方法４００は、ビジネスアナリストまたは他のオペレータが、分析モデルを実行するために利用可能なランタイム環境のグループからランタイム環境を選択できるようにする。ゆえに、方法４００は、あるランタイム環境から異なるランタイム環境に容易に切替えて、分析モデルを修正または再プログラミングする必要なしに分析モデルを実際に実行するメカニズムを提供する。
【００７７】
方法４００を開始して実行用の分析モデルを提出する処理を開始すると、ブロック４１０において、選択されたランタイム環境を識別する入力パラメータがユーザインターフェイスから読み出される。一実施形態において、識別されたランタイム環境はメタ情報として格納される。一実施形態において、利用可能なランタイム環境のリスト／グループが、ユーザが選択できるように表示され得る。次に、選択されたランタイム環境のランタイム仕様が上述のようにデータベースから取出される。ランタイム仕様は、関連付けられたランタイム環境の少なくとも構文および関数／ステートメントを定義しており、このデータはユーザスクリプトのための適切な命令を生成するために用いられる。ブロック４１０は、実行用に提出すべき分析モデルを既存の分析モデルのグループから識別することも含み得る。当該モデルはユーザインターフェイスを介してユーザ入力から識別され得、次に当該方法は、識別されたモデルを格納するデータベースまたは他の記憶場所から当該モデルを取出すことを含む。上記に説明したように、分析モデルは、ランタイム環境と互換性がないフォーマットを用いて定義される分析式を含む。
【００７８】
ブロック４２０において、ユーザスクリプトデータ構造が生成される。取出されたランタイム仕様を用いて、分析モデルのステートメントをランタイム環境の同等の／対応するステートメントにマッピングするための命令が生成される。たとえば、ユーザスクリプトデータ構造は、メタ情報に基づいて、分析モデルの分析式をコンピュータ化されたランタイム環境の実行可能な式にマッピングするための命令を含む。実行可能な式は、一実施形態に従うと、コンピュータ化されたランタイム環境によって順番に実行すべき複数の計算ステップを含み得る。一実施形態において、ユーザスクリプトデータ構造は、コンピュータ化されたランタイム環境によって入力データに対して実行すべき分析モデルの一連の分析ステップを指定する。ランタイム環境が認識できないフォーマットで分析モデルが定義されている場合でも、ユーザスクリプトデータ構造の命令はランタイム環境によって用いられて、分析モデルが適切に読み出されて実行される。一実施形態において、実行すべき選択された分析モデルはユーザスクリプトデータ構造に追加される／含められる。
【００７９】
ブロック４３０において、コンピュータ化された仕様オブジェクトが生成される。コンピュータ化された仕様オブジェクトは、上述のように、ユーザスクリプトデータ構造および実行すべき分析モデル、プリスクリプトデータ構造、ならびにポストスクリプトデータ構造を含む。ポストスクリプトデータ構造は、分析モデルによって生成される出力結果データをコンピュータ化されたランタイム環境からどのように出力すべきかを指定する。プリスクリプトデータ構造は、コンピュータ化されたランタイム環境が、分析モデルが作用すべき入力データ（たとえば独立変数データ）にどのようにアクセスすべきかを指定する。
【００８０】
たとえば、プリスクリプトデータ構造は、コンピュータ化されたランタイム環境がどのようにデータベースデバイスに接続して、分析モデルが作用すべき入力データにアクセスすべきかを指定し得る。あるいは、プリスクリプトデータ構造は、分析モデルが作用すべき入力データを、コンピュータ化されたランタイム環境によってどのようにデータファイルから読み出すべきかを指定し得る。
【００８１】
ブロック４４０において、コンピュータ化された仕様オブジェクト（分析モデルを含む）は、分析モデルをコンピュータ化されたランタイム環境によって実行するために、コンピュータネットワーク上で選択されたコンピュータ化されたランタイム環境にプッシュされる。ここでも、本明細書で使用される「プッシュされる」という用語およびそのさまざまな形態は、別のプログラムまたはコンピュータ（たとえばコンピュータ化されたランタイム環境）がデータを要求していなくてもネットワーク通信を介して当該別のプログラムまたはコンピュータにデータを送る（たとえば送信する）ことを指す。ランタイム環境におけるコンピュータ化された仕様オブジェクトの実行は、一実施形態に従うと、ランタイム環境で受信されると開始され得る。
【００８２】
分析モデルは、少なくともユーザスクリプトデータ構造に含まれているマッピングのための命令に従って、選択されたランタイム環境によって実行される。マッピング命令は、ランタイム環境が分析モデルを適切に読み出して実行することによって、分析モデルにランタイム環境での実行との互換性を持たせることができるようにする。ゆえに、コンピュータ化された仕様オブジェクトは、分析モデルがランタイム環境と互換性がないフォーマットで定義されている場合でも分析モデルに選択されたランタイム環境との互換性を持たせるインターフェイスとして機能する。分析モデルを実行すると、ランタイム環境は結果データを生成する。
【００８３】
ブロック４５０において、分析モデルを実行することによってコンピュータ化されたランタイム環境から生成された結果データが、コンピュータ化されたランタイム環境からプルされる。ここでも、本明細書で使用される「プルされる」という用語およびそのさまざまな形態は、ネットワーク通信を介して別のプログラムまたはコンピュータからデータを要求して当該データを受信することを指す。一実施形態において、結果データは、ランタイム環境による分析モデルの実行が完了するとポストスクリプトデータ構造に基づいてランタイム環境から分析アプリケーション環境にプルされる。
【００８４】
このコンピュータ化された方法４００を用いると、（メタ情報を変更する）ユーザインターフェイスを介して新たなランタイム環境を選択することによって、分析モデルが、選択されたランタイム環境と互換性があるフォーマットに再プログラミングされる／書換えられる必要なしに、選択されたランタイム環境によって実行され得る。ユーザスクリプトデータ構造は、新たに選択されたランタイム環境のランタイム仕様に基づいて再生成されて、分析モデルの分析式を新たに選択されたランタイム環境の実行可能な式に再マッピングする。次に、分析モデルがユーザスクリプトデータ構造とともに実行のために新たなランタイム環境に送信される。
【００８５】
さらに、一実施形態において、コンピュータ化された構成オブジェクトが、コンピュータネットワーク上でコンピュータ化されたランタイム環境にプッシュされ得る。当該コンピュータ化された構成オブジェクトを用いてコンピュータ化されたランタイム環境のシステム要素と同期し、コンピュータ化されたランタイム環境のどこで分析モデルを実行すべきかを指定する。
【００８６】
一実施形態において、コンピュータ化されたランタイム環境による構成ファイルへのアクセスが提供される。構成ファイルは、コンピュータ化されたランタイム環境のどこで（たとえばハードウェアに関して）分析モデルを実行すべきかを指定する。たとえば、構成ファイルは、分析モデルをランタイム環境内のローカルノード、リモートノード、クラスタ化ノード上で、またはそれらの組合せ上で実行すべきであると指定し得る。
【００８７】
一実施形態において、コンピュータ化された開始オブジェクトが、コンピュータネットワーク上でコンピュータ化されたランタイム環境にプッシュされ得る。コンピュータ化された開始オブジェクトは、コンピュータ化されたランタイム環境によってアクセスすべき分析モデルについての入力データを格納する複数のデータ構造を指定する。
【００８８】
このように、ユーザ（たとえばビジネスアナリスト）は、任意の定量分析プロバイダランタイム環境で実行可能な分析モデルを生成することができる。標準化フォーマットを有するコンピュータ化された仕様オブジェクトを生成することができる。標準化フォーマットは、少なくともプリスクリプトデータ構造、ユーザスクリプトデータ構造、およびポストスクリプトデータ構造を含む。ユーザスクリプトデータ構造は分析モデルを指定し、ユーザスクリプトデータ構造が実行されると、分析モデルの分析式を選択されたランタイム環境の実行可能な式にマッピングする。
【００８９】
クラウドまたは企業の実施形態
一実施形態において、本システムは、企業で実行可能なアプリケーションまたは分散アプリケーションの集まりを含むコンピューティング／データ処理システムである。本分析アプリケーションインフラストラクチャ（ＡＡＩ）は、当該アプリケーションの実装コンポーネント／プログラムモジュールである。当該アプリケーションおよびコンピューティングシステムは、クラウドベースのネットワーキングシステム、サービスとしてのソフトウェア（ＳａａＳ）アーキテクチャ、または他の種類のネットワーク化されたコンピューティングソリューションと動作するように構成され得るか、またはこれらとして実装され得る。一実施形態において、本システムは、少なくとも本明細書に開示された機能を提供し、かつコンピュータネットワーク上で（サーバとして機能する）コンピューティングシステムと通信するコンピューティングデバイス／端末を介して多くのユーザによってアクセスされる、集中型サーバ側アプリケーションである。
【００９０】
一実施形態において、（ＡＡＩを含む）本明細書に記載のコンポーネントの１つ以上は、非一時的なコンピュータ読取可能な媒体に格納されたプログラムモジュールとして構成される。プログラムモジュールは、少なくとも１つのプロセッサによって実行されると本明細書に記載の対応する機能をコンピューティングデバイスに実行させる命令を格納して構成される。
【００９１】
コンピューティングデバイスの実施形態
図５は、本明細書で説明した例示的なシステムおよび方法、ならびに／または均等物のうちの１つ以上を用いて構成されたおよび／またはプログラミングされた例示的なコンピューティングデバイスを示す。例示的なコンピューティングデバイスは、バス５０８によって動作可能に接続されたプロセッサ５０２、メモリ５０４、および入出力ポート５１０を含むコンピュータ５００であってもよい。一例では、コンピュータ５００は、上述のようにＡＡＩの機能を容易にするように構成された、図１の分析アプリケーションロジック１１０と同様の分析アプリケーションロジック５３０を含む。他の例では、ロジック５３０は、ハードウェア、命令が格納された非一時的なコンピュータ読取可能な媒体、ファームウェア、および／またはこれらの組み合わせで実装されてもよい。ロジック５３０はバス５０８に装着されたハードウェアコンポーネントとして示されているが、他の実施形態において、ロジック５３０は、プロセッサ５０２内に実装されてもよく、メモリ５０４に格納されてもよく、またはディスク５０６に格納されてもよいことが理解されねばならない。
【００９２】
一実施形態において、ロジック５３０またはコンピュータは、説明した動作を実施するための手段（たとえば構造体：ハードウェア、非一時的なコンピュータ読取可能な媒体、ファームウェア）である。いくつかの実施形態において、コンピューティングデバイスは、クラウドコンピューティングシステム内で動作するサーバ、サービスとしてのソフトウェア（ＳａａＳ）アーキテクチャで構成されたサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイス等であってもよい。
【００９３】
上記手段はまた、メモリ５０４に一時的に格納されその後プロセッサ５０２によって実行されるデータ５１６としてコンピュータ５００に与えられる、格納されたコンピュータによる実行が可能な命令として、実装されてもよい。
【００９４】
ロジック５３０はまた、分析アプリケーションインフラストラクチャ（ＡＡＩ）の機能を果たすための手段（たとえば、ハードウェア、実行可能な命令を格納している非一時的なコンピュータ読取可能な媒体、ファームウェア）を提供し得る。
【００９５】
コンピュータ５００の例示的な構成を概略的に説明すると、プロセッサ５０２は、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを含む、多様な異なるプロセッサであってもよい。メモリ５０４は、揮発性メモリおよび／または不揮発性メモリを含み得る。不揮発性メモリは、たとえば、ＲＯＭ、ＰＲＯＭ等を含み得る。揮発性メモリは、たとえば、ＲＡＭ、ＳＲＡＭ、ＤＲＡＭ等を含み得る。
【００９６】
記憶ディスク５０６は、たとえば入出力（Ｉ／Ｏ）インターフェイス（たとえばカード、装置）５１８および入出力ポート５１０を介して、コンピュータ５００に動作可能に接続されていてもよい。ディスク５０６は、たとえば、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピー（登録商標）ディスクドライブ、ジップドライブ、フラッシュメモリカード、メモリスティック等であってもよい。さらに、ディスク５０６は、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒドライブ、ＣＤ−ＲＷドライブ、ＤＶＤ  ＲＯＭ等であってもよい。メモリ５０４は、たとえばプロセス５１４および／またはデータ５１６を格納することができる。ディスク５０６および／またはメモリ５０４は、コンピュータ５００のリソースを制御して割当てるオペレーティングシステムを格納することができる。
【００９７】
コンピュータ５００は、Ｉ／Ｏインターフェイス５１８および入出力ポート５１０を介して入出力（Ｉ／Ｏ）装置と対話してもよい。入出力装置は、たとえば、キーボード、マイクロフォン、ポインティングおよび選択装置、カメラ、ビデオカード、ディスプレイ、ディスク５０６、ネットワークデバイス５２０等であってもよい。入出力ポート５１０は、たとえば、シリアルポート、パラレルポート、およびＵＳＢポートを含み得る。
【００９８】
コンピュータ５００は、ネットワーク環境において動作することができ、したがって、Ｉ／Ｏインターフェイス５１８および／またはＩ／Ｏポート５１０を介してネットワークデバイス５２０に接続されていてもよい。コンピュータ５００は、ネットワークデバイス５２０を通してネットワークと対話し得る。コンピュータ５００は、ネットワークを通してリモートコンピュータに論理的に接続されていてもよい。コンピュータ５００が対話し得るネットワークは、ＬＡＮ、ＷＡＮ、および他のネットワークを含み得るがこれらに限定されない。
【００９９】
定義および他の実施形態
別の実施形態において、上記方法および／またはこれらの方法の均等物は、コンピュータにより実行可能な命令を用いて実装してもよい。ゆえに、一実施形態において、非一時的なコンピュータ読取可能な／記憶媒体は、マシンによって実行されたときに上記方法をこのマシン（および／または関連するコンポーネント）に実行させる、アルゴリズム／実行可能なアプリケーションの、コンピュータにより実行可能な命令が格納されて構成されている。例示的なマシンは、プロセッサ、コンピュータ、クラウドコンピューティングシステムにおいて動作するサーバ、サービスとしてのソフトウェア（ＳａａＳ）アーキテクチャで構成されたサーバ、スマートフォン等を含むがこれらに限定されない。一実施形態において、コンピューティングデバイスは、開示されている方法のうちのいずれかを実行するように構成された１つ以上の実行可能なアルゴリズムを用いて実装される。
【０１００】
１つ以上の実施形態において、開示されている方法またはこれらの方法の均等物は、その方法を実行するように構成されたコンピュータハードウェアによって、または、その方法を実行するように構成された実行可能なアルゴリズムを含む非一時的なコンピュータ読取可能な媒体内に具体化されたコンピュータソフトウェアによって、実行される。
【０１０１】
説明を簡潔にするために、図面に示されている方法論はアルゴリズムの一連のブロックとして示され説明されているが、方法論はブロックの順序によって限定されないことが、理解されねばならない。いくつかのブロックは、示され説明されたものと異なる順序で、および／または他のブロックと同時に起こり得る。また、例示的な方法論を実現するために、示されたすべてのブロックよりも少ないブロックを使用する場合もある。ブロックは組み合わせてもよく、または、複数の動作／コンポーネントに対応させて分離してもよい。さらに、追加のおよび／または代替の方法論が、ブロックに示されていない追加の動作を用いてもよい。
【０１０２】
以下は、本明細書で使用される選択された用語の定義を含む。定義は、用語の範囲に含まれ実現のために使用し得るコンポーネントのさまざまな例および／または形態を含む。例は、限定を意図したものではない。定義は用語の単数形も複数形も含み得る。
【０１０３】
「一実施形態」、「実施形態」、「一例」、「例」等と述べる場合、そのように説明された実施形態または例が、特定の特徴、構造、特性、性質、要素、または限定を含み得るものの、すべての実施形態または例が必ずしもその特定の特徴、構造、特性、性質、要素、または限定を含むとは限らないことを、示す。さらに、「一実施形態において」という表現を繰返し使用する場合、これは必ずしも同じ実施形態を指すとは限らないが、同じ実施形態を指す場合もある。
【０１０４】
ＡＳＩＣ：特定用途向け集積回路。
ＣＤ：コンパクトディスク。
【０１０５】
ＣＤ−Ｒ：書込可能なＣＤ。
ＣＤ−ＲＷ：書換え可能なＣＤ。
【０１０６】
ＤＶＤ：デジタル汎用ディスクおよび／またはデジタルビデオディスク。
ＬＡＮ：ローカルエリアネットワーク。
【０１０７】
ＲＡＭ：ランダムアクセスメモリ。
ＤＲＡＭ：ダイナミックＲＡＭ。
【０１０８】
ＳＲＡＭ：同期ＲＡＭ。
ＲＯＭ：読み出し専用メモリ。
【０１０９】
ＰＲＯＭ：プログラマブルＲＯＭ。
ＵＳＢ：ユニバーサルシリアルバス。
【０１１０】
ＷＡＮ：ワイドエリアネットワーク
「動作可能な接続」、すなわちエンティティが「動作可能に接続される」ようにする接続は、信号、物理的通信、および／または論理的通信の送信および／または受信をなし得る接続である。動作可能な接続は、物理的インターフェイス、電気的インターフェイス、および／またはデータインターフェイスを含み得る。動作可能な接続は、動作可能な制御を可能にするのに十分なインターフェイスおよび／または接続の、異なる組み合わせを含み得る。たとえば、２つのエンティティは、動作可能に接続されることにより、信号を、直接または１つ以上の中間エンティティ（たとえばプロセッサ、オペレーティングシステム、ロジック、非一時的なコンピュータ読取可能な媒体）を通して、互いにやり取りすることができる。動作可能な接続は、データを生成して当該データをメモリに格納する１つのエンティティと、たとえば命令制御を介してメモリからそのデータを取出す別のエンティティとを含み得る。論理的および／または物理的通信チャネルを用いて動作可能な接続を構成することができる。
【０１１１】
本明細書で使用される「データ構造」は、メモリ、記憶装置、またはその他のコンピュータ化システムに格納された、コンピューティングシステム内のデータの組織である。データ構造は、たとえば、データフィールド、データファイル、データアレイ、データ記録、データベース、データテーブル、グラフ、ツリー、リンクされたリスト等のうちのいずれか１つであればよい。データ構造は、他の多数のデータ構造から形成されこれらデータ構造を含み得る（たとえば、データベースは多数のデータ記録を含む）。他の実施形態に従うと、データ構造の他の例も同じく可能である。
【０１１２】
本明細書で使用される「コンピュータ読取可能な媒体」または「コンピュータ記憶媒体」は、プロセッサによって実行されたときに、開示されている機能のうちの１つ以上を果たすように構成された命令および／またはデータを格納する非一時的な媒体を指す。コンピュータ読取可能な媒体は、不揮発性媒体および揮発性媒体を含むがこれらに限定されない形態であってもよい。不揮発性媒体は、たとえば、光ディスク、磁気ディスク等を含み得る。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリ等を含み得る。コンピュータ読取可能な媒体の一般的な形態は、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス、コンパクトディスク（ＣＤ）、他の光学媒体、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、メモリチップまたはカード、メモリスティック、ソリッドステート記憶装置（ＳＳＤ）、フラッシュドライブ、および、それ以外の、コンピュータ、プロセッサまたは他の電子装置が機能することが可能な媒体を含み得るが、これらに限定されない。各種媒体は、一実施形態において実装のために選択された場合、開示されているおよび／または請求項に記載の機能のうちの１つ以上を実行するように構成されたアルゴリズムの、格納された命令を含み得る。
【０１１３】
本明細書で使用される「ロジック」は、コンピュータ、または電気的ハードウェア、実行可能なアプリケーションまたはプログラムモジュールの命令が格納された非一時的な媒体、および／またはこれらの組み合わせを用いて実装されて、本明細書に開示されている機能または動作のうちのいずれかを実行する、および／または、本明細書に開示されている別のロジック、方法および／またはシステムからの機能または動作を実行させる、コンポーネントを表わす。同等のロジックは、ファームウェア、アルゴリズムを用いてプログラミングされたマイクロプロセッサ、個別ロジック（たとえばＡＳＩＣ）、少なくとも１つの回路、アナログ回路、デジタル回路、プログラムドロジック装置、アルゴリズムの命令を含むメモリ装置等を含み得る。これらはいずれも開示されている機能のうちの１つ以上を実行するように構成されていてもよい。一実施形態において、ロジックは、１つ以上のゲート、ゲートの組み合わせ、または開示されている機能のうちの１つ以上を実行するように構成された他の回路部品を含み得る。複数のロジックが記載されている場合、これらの複数のロジックを１つのロジックに統合することが可能であろう。同様に、単一のロジックが記載されている場合、この単一のロジックを複数のロジック間で分散させることが可能であろう。一実施形態において、これらロジックのうちの１つ以上は、開示されているおよび／または請求項に記載の機能の実行に関係する、対応する構造である。どのタイプのロジックを実装するかという選択は、所望のシステム条件または仕様に基づき得る。たとえば、考慮すべき事項が高速化である場合は、ハードウェアが機能を実現するように選択されるであろう。考慮すべき事項が低コスト化である場合は、格納された命令／実行可能なアプリケーションが機能を実現するように選択されるであろう。
【０１１４】
本明細書で使用される「ユーザ」は、１人以上の人間、１つ以上のコンピュータもしくはその他の装置、またはこれらの組み合わせを含むがこれらに限定されない。
【０１１５】
開示された実施形態は図示されかなり詳細に説明されているが、以下の請求項の範囲をこのような詳細事項に限定することまたは何らかの形で制限することは意図されていない。主題のさまざまな局面を説明するために、考えられるだけのすべての構成要素または方法論の組み合わせを説明することは、当然不可能である。したがって、本開示は、具体的な詳細事項にも、図示され説明されている例示のための例にも限定されない。ゆえに、本開示は、添付の請求項の範囲内にある変更、修正、および変化を含むことが意図されている。
【０１１６】
「含む（includesまたはincluding）」という用語は、詳細な説明または請求項において使用されている限り、請求項の移行句として用いられるときの「備える（comprising）」の解釈と同様に包括的な用語であることが意図されている。
【０１１７】
「または」という用語は、詳細な説明または請求項において使用されている限り（たとえばＡまたはＢ）、「ＡまたはＢまたはＡとＢ」を意味することが意図されている。出願人が「ＡとＢではなくＡのみまたはＢのみ」を示すことを意図する場合は、「ＡとＢではなくＡのみまたはＢのみ」という表現を使用する。このように、本明細書における「または」という用語の用法は、包括的用法であって排他的用法ではない。
【０１１８】
「Ａ、Ｂ、およびＣのうちの１つ以上」という表現は、本明細書において使用されている限り（たとえばＡ、Ｂ、およびＣのうちの１つ以上を格納するように構成されたデータ記憶装置）、一組の可能性すなわちＡ、Ｂ、Ｃ、ＡＢ、ＡＣ、ＢＣ、および／またはＡＢＣを意味することが意図されている（たとえば、データ記憶装置は、Ａのみ、Ｂのみ、Ｃのみ、Ａ＆Ｂ、Ａ＆Ｃ、Ｂ＆Ｃ、および／またはＡ＆Ｂ＆Ｃを格納し得る）。Ａのうちの１つ、Ｂのうちの１つ、およびＣのうちの１つを要求することは意図されていない。出願人が「Ａのうちの少なくとも１つ、Ｂのうちの少なくとも１つ、およびＣのうちの少なくとも１つ」を示すことを意図する場合は、「Ａのうちの少なくとも１つ、Ｂのうちの少なくとも１つ、およびＣのうちの少なくとも１つ」という表現を使用する。
【図１】
2018536227.tif 000003
【図２】
2018536227.tif 000004
【図３】
2018536227.tif 000005
【図４】
2018536227.tif 000006
【図５】
2018536227.tif 000007
【国際調査報告】
2018536227.tif 000008
2018536227.tif 000009