(57)【要約】      （修正有）【課題】分析モデルが変更された場合においても、変更前の分析モデルの実行の効率化を図る。【解決手段】分析モデル作成システムは、分析モデルの少なくとも一部を実行する分析モデル実行部１１−３と、分析モデルの実行の途中で生成された中間データ１５−２に基づいて、分析モデルを部分実行する分析モデル部分実行部１１−５と、中間データ１５−２と分析モデルとの対応関係であるマッピング情報１６と、中間データ１５−２を格納する外部ストレージ３０と、中間データ１５−２を分析モデルに対応付けることによりマッピング情報１６を生成し、マッピング情報１６に基づいて分析モデルに対応付けられた中間データ１５−２を外部ストレージ３０から読み出す分析モデル統括処理部１３とを備える。【選択図】図１
2019125198.tif 000002
【特許請求の範囲】
【請求項１】
分析モデルの少なくとも一部を実行する実行部と、
前記分析モデルの実行の途中で生成された中間データに基づいて、前記分析モデルを部分実行する部分実行部と、
前記中間データを一時的に保持するキャッシュと、
前記キャッシュへの前記中間データの読み書き処理を行うキャッシュ処理部と、
前記中間データと前記分析モデルとの対応関係をマッピング情報として保持する保持部と、
ネットワークを介して前記分析モデルおよび前記中間データを格納する格納部と、
前記中間データを前記分析モデルに対応付けることにより前記マッピング情報を生成し、前記保持部に書き込む処理と、前記マッピング情報に基づいて、前記分析モデルに対応付けられた前記中間データを前記格納部から読み出し、前記キャッシュ処理部を介して前記中間データを前記キャッシュへ書き込む処理とを実行する統括処理部とを備える分析モデル作成システム。
【請求項２】
前記分析モデルの編集画面を提示し、前記編集画面上での操作結果に基づいて前記分析モデルを編集する分析モデル編集部と、
前記統括処理部に前記分析モデルの登録要求を発行する登録部と、
前記統括処理部に前記分析モデルの読込要求を発行する読込部とをさらに備える請求項１に記載の分析モデル作成システム。
【請求項３】
前記保持部は、前記分析モデルに付随するメタ情報をさらに保持する請求項１に記載の分析モデル作成システム。
【請求項４】
前記メタ情報は、前記分析モデルの名称、前記分析モデルの説明、前記格納部への前記分析モデルの登録時刻および前記中間データのデータ量の少なくとも一つを含む請求項３に記載の分析モデル作成システム。
【請求項５】
前記登録部は、前記メタ情報を登録する登録フォームを提供し、
前記読込部は、前記分析モデルごとに前記メタ情報が記入された読込フォームを提供する請求項３に記載の分析モデル作成システム。
【請求項６】
前記統括処理部は、前記分析モデルの削除要求に基づいて、前記分析モデルに対応付けられた前記中間データを削除する請求項１に記載の分析モデル作成システム。
【請求項７】
前記統括処理部は、前記分析モデルの登録処理中に発生したエラーの検知結果に基づいて、前記分析モデル作成システムの状態を前記分析モデルの登録前の状態に戻す請求項１に記載の分析モデル作成システム。
【請求項８】
前記統括処理部は、前記分析モデルの読込処理中に発生したエラーの検知結果に基づいて、前記分析モデル作成システムの状態を分析モデルの読込前の状態に戻す請求項１に記載の分析モデル作成システム。
【請求項９】
前記統括処理部は、前記分析モデルの削除処理中に発生したエラーの検知結果に基づいて、前記分析モデル作成システムの状態を分析モデルの削除前の状態に戻す請求項１に記載の分析モデル作成システム。
【請求項１０】
前記分析モデルは、前記分析モデルを部分実行する複数のノードを備え、
前記マッピング情報は、
前記分析モデルを識別するモデル識別情報と、
前記分析モデルに含まれるノードを識別するノード識別情報と、
前記ノードで使われる前記中間データの格納先情報を備え、
前記分析モデルに含まれるノードのノード識別情報は前記分析モデルのモデル識別情報に対応付けられている請求項１に記載の分析モデル作成システム。
【請求項１１】
前記ネットワークを介してＷｅｂブラウザと通信するＷｅｂ通信部をさらに備え、
前記分析モデル編集部は前記Ｗｅｂブラウザ上で動作する請求項２に記載の分析モデル作成システム。
【請求項１２】
分析モデルの少なくとも一部を実行する実行部と、
前記分析モデルの実行の途中で生成された中間データおよび前記中間データと前記分析モデルとの対応関係を保持する格納部とを備えるプログラミング装置。
【請求項１３】
前記分析モデルに対応付けられた中間データに基づいて、前記分析モデルを部分実行する部分実行部をさらに備える請求項１２に記載のプログラミング装置。
【請求項１４】
前記分析モデルは、前記分析モデルを部分実行する複数のノードを備え、
前記部分実行部は、前記分析モデルの中から選択された各ノードの中間データを各ノードの入力値として用いることにより、前記分析モデルを部分実行する請求項１３に記載のプログラミング装置。
【請求項１５】
分析モデルの少なくとも一部を実行し、
前記分析モデルの実行の途中で生成された中間データおよび前記中間データと前記分析モデルとの対応関係を保持する分析モデル作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分析に用いられる分析モデル作成システム、プログラミング装置および分析モデル作成方法に関する。
【背景技術】
【０００２】
企業内外に蓄積されたデータを経営効率化やマーケティングに活かすため、機械学習などを用いたデータ分析が広く用いられている。データ分析をするには、需要予測値などの目的となる値を既知のデータを用いて算出するための分析モデルが必要となる。
【０００３】
データ分析を経営効率化やマーケティングに活かすにあたり、昨今の素早いビジネス変化に対応するには、迅速に分析モデルを作成できることが望ましい。しかし、精度の高い分析モデルを作るには、分析モデルの試作とテストを繰り返し、無数のデータや分析方法の中から、適した処理を試行錯誤で選択およびチューニングする必要がある。このため、分析モデルの作成には時間がかかる。特に、データ分析においては、１回のテストに数十分から数時間もの時間がかかる場合があり、迅速な分析モデル作成の妨げとなっている。
【０００４】
このような分析モデルの作成を効率化する技術として、非特許文献１および特許文献１が挙げられる。
非特許文献１には、直前に実行された分析モデルの処理過程で生成された中間データをキャッシュし、次回以降はキャッシュを用いることで、その分析モデルの処理を部分的に実行する技術が開示されている。この技術により、同一の分析モデルの処理をテストのたびに最初から実行する必要がなくなり、分析モデルの作成を効率化することができる。
【０００５】
特許文献１には、コンパイルエージェントが、以前にコンパイルされたタイプのキャッシュにアクセスし、開発者によって行われた変更に基づいて、個別にロード可能なタイプの中から再コンパイルされるタイプを決定し、それらの識別されたタイプのみをコンパイルする技術が開示されている。
【０００６】
特許文献１に開示された技術は、ソースコード作成およびテストの試行錯誤を効率化するための技術である。この技術により、システムを稼働させるためにコンパイラがシステム全体を再コンパイルすることによる開発フェーズに時間およびコストがかかという問題を解決することができる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】ｈｔｔｐ：／／ｈｅｌｐ．ｐｅｒｖａｓｉｖｅ．ｃｏｍ／ｄｉｓｐｌａｙ／ＤＦ６６０／Ｃｒｅａｔｉｎｇ＋ａｎｄ＋ｅｘｅｃｕｔｉｎｇ＋ＤａｔａＦｌｏｗ＋ｗｏｒｋｆｌｏｗｓ
【特許文献】
【０００８】
【特許文献１】特表２０１６−５３７７５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、分析モデルを作成する際、試行錯誤の過程で以下のような開発プロセスが取られる。分析モデルを変更して実行させた結果、変更前の分析モデルの方が精度が良かったなどの理由で分析モデルを変更前の処理に戻す。あるいは、複数の分析モデルを作成し、テストを通して精度を比較検討する。
【００１０】
このような開発プロセスを踏まえた時、非特許文献１に開示された技術は、直前に実行された分析モデルの中間データのみをキャッシュするため、分析モデルを過去に作成および実行した処理に戻しても、中間データのキャッシュを適用できなかった。
【００１１】
また、特許文献１に開示された技術は、過去にコンパイルされたタイプのキャッシュと個々のタイプを紐付けて管理する。このため、特許文献１に開示された技術は、タイプが同じであっても、前段の処理が異なっている過去の中間データが誤って適用されることがあった。これは、分析モデル内で発生する中間データは、分析モデル内の個々の処理に加え、その処理の前の処理にも依存するためである。
【００１２】
本発明は、上記事情に鑑みなされたものであり、その目的は、分析モデルが変更された場合においても、変更前の分析モデルの実行の効率化を図ることが可能な分析モデル作成システム、プログラミング装置および分析モデル作成方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、第１の観点に係る分析モデル作成システムは、分析モデルの少なくとも一部を実行する実行部と、前記分析モデルの実行の途中で生成された中間データに基づいて、前記分析モデルを部分実行する部分実行部と、前記中間データを一時的に保持するキャッシュと、前記キャッシュへの前記中間データの読み書き処理を行うキャッシュ処理部と、前記中間データと前記分析モデルとの対応関係をマッピング情報として保持する保持部と、ネットワークを介して前記分析モデルおよび前記中間データを格納する格納部と、前記中間データを前記分析モデルに対応付けることにより前記マッピング情報を生成し、前記保持部に書き込む処理と、前記マッピング情報に基づいて、前記分析モデルに対応付けられた前記中間データを前記格納部から読み出し、前記キャッシュ処理部を介して前記中間データを前記キャッシュへ書き込む処理とを実行する統括処理部とを備える。
【発明の効果】
【００１４】
本発明によれば、分析モデルが変更された場合においても、変更前の分析モデルの実行の効率化を図ることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、第１実施形態に係る分析モデル作成システムの機能的な構成を示すブロック図である。
【図２】図２は、第１実施形態に係る分析モデルのＧＵＩ画面の一例を示す図である。
【図３】図３は、図２の分析モデルの変更後のＧＵＩ画面の一例を示す図である。
【図４】図４は、図１のプログラミング装置のハードウェア構成を示すブロック図である。
【図５】図５は、第１実施形態に係る分析モデルのデータ構造の一例を示す図である。
【図６】図６は、図１のマッピング情報の構成例を示す図である。
【図７】図７は、図１の分析モデルメタ情報の構成例を示す図である。
【図８】図８は、第１実施形態に係る分析モデル登録処理を示すフローチャートである。
【図９】図９は、第１実施形態に係る分析モデル読込処理を示すフローチャートである。
【図１０】図１０は、第１実施形態に係る分析モデル削除処理を示すフローチャートである。
【図１１】図１１は、第１実施形態に係る分析モデル登録画面の一例を示す図である。
【図１２】図１２は、第１実施形態に係る分析モデル読込／削除画面の一例を示す図である。
【図１３】図１３は、第１実施形態に係る登録フォーム生成処理を示すフローチャートである。
【図１４】図１４は、第１実施形態に係る読込フォーム生成処理を示すフローチャートである。
【図１５】図１５は、図１の分析モデル作成システムの部分実行時および登録時の全体的な処理の流れを示すブロック図である。
【図１６】図１６は、図１の分析モデル作成システムの読込時および部分実行時の全体的な処理の流れを示すブロック図である。
【図１７】図１７は、第２実施形態に係る分析モデル作成システムの機能的な構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１７】
（第1実施形態）
図１は、第１実施形態に係る分析モデル作成システムの機能的な構成を示すブロック図である。
図１において、分析モデル作成システム１には、プログラミング装置１０、バージョン管理システム２０および外部ストレージ３０が設けられている。プログラミング装置１０は、ネットワーク４０を介してバージョン管理システム２０および外部ストレージ３０に接続されている。プログラミング装置１０は、ネットワーク４０を介してバージョン管理システム２０および外部ストレージ３０と相互に通信可能である。プログラミング装置１０は、バージョン管理システム２０および外部ストレージ３０のアクセス先となるＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）やＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスの情報を有する。
【００１８】
なお、バージョン管理システム２０および外部ストレージ３０は、プログラミング装置１０の内部に設けるようにしてもよい。また、バージョン管理システム２０と外部ストレージ３０は１つの格納装置に設けるようにしてもよい。この格納装置には、バージョン管理システム２０で使用される格納領域と、外部ストレージ３０で使用される格納領域とを設けることができる。
【００１９】
プログラミング装置１０は、分析モデルを作成したり、実行したりする。分析モデルはデータを加工する一連の処理のまとまりである。プログラミング装置１０は、中間データ１５−２を用いた分析モデルの部分実行が可能である。中間データ１５−２は、分析モデルの少なくとも一部を実行した時に、分析モデルの実行の途中で生成されたデータである。この時、プログラミング装置１０は、中間データ１５−２および中間データ１５−２と分析モデルとの対応関係を保持することができる。さらに、分析モデルが、分析モデルを部分実行する複数のノードを持つ場合、中間データ１５−２とノードとの対応関係を分析モデルごとに保持することができる。この時、中間データ１５−２は、各ノードの入力値として用いることができる。
【００２０】
プログラミング装置１０には、ビジュアルプログラミング部１１、キャッシュ処理部１２、分析モデル統括処理部１３および中間データキャッシュ１５がさらに設けられている、また、プログラミング装置１０には、マッピング情報１６および分析モデルメタ情報１７を格納することができる。
【００２１】
ビジュアルプログラミング部１１は、分析モデルをビジュアル化し、そのビジュアル化された分析モデルを作成したり、実行したりする。この時、分析モデル作成者５０は、プログラミング装置１０を用いてビジュアルプログラミングを行うことができる。プログラミング操作をビジュアル化するために、液晶ディスプレイなどの出力デバイス５１を用いることができる。ビジュアルプログラミング部１１は、ビジュアル化された分析モデルを作成したり、実行したりするために、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を用いることができる。ビジュアルプログラミング部１１は、分析モデルを編集するＧＵＩ画面を出力デバイス５１に出力することができる。分析モデル作成者５０は、そのＧＵＩ画面上で入力デバイス５２を用いて操作を行うことで、分析モデルを作成したり、編集したりすることができる。
【００２２】
図２は、第１実施形態に係る分析モデルのＧＵＩ画面の一例を示す図である。
図２において、ＧＵＩ画面には、分析モデル１３１０−１、ノードパレット１３３０、実行ボタン１３０１、部分実行ボタン１３０２、登録ボタン１３０３および読込ボタン１３０４が表示される。ノードパレット１３３０は画面左側に配置し、分析モデル１３１０−１は画面右側に配置し、実行ボタン１３０１、部分実行ボタン１３０２、登録ボタン１３０３および読込ボタン１３０４は画面上側に配置することができる。
【００２３】
ノードパレット１３３０には、ノード１３２０が表示される。ノード１３２０は、分析モデルが部分実行される時の単位を表すことができる。この時、ノード１３２０は、アイコンなどにより視覚化された処理の部品を構成することができる。分析モデル１３１０−１は、複数のノード１３２０と、それらのノード１３２０の接続関係で表すことができる。
【００２４】
ノード１３２０は、外部からの入力を受け付けるための入力ノードと、データを別形式のデータに変換する処理ノードと、外部に出力するための出力ノードの３種に大別することができる。入力ノードには、例えば、ファイルからデータを入力するファイル読込ノードや、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リクエストを受けるけるＨＴＴＰ受付ノードがある。
【００２５】
処理ノードには、例えば、設定された条件に基づきデータを抽出する抽出ノードや、データの相関行列を算出する相関行列算出ノード、任意のプログラムにより入力データを加工する実行する外部実行ノードがある。出力ノードには、例えば、データをＧＵＩ画面に出力する結果出力ノードや、ＨＴＴＰレスポンスを返すＨＴＴＰ出力ノードがある。
【００２６】
この時、分析モデル作成者５０は、ビジュアルプログラミングツールのＧＵＩを介して、ノード１３２０を組み合わせて分析モデル１３１０−１を作成することができる。具体的には、分析モデル作成者５０は、ノードパレット１３３０にあるノード１３２０を画面右部に配置する。そして、分析モデル作成者５０は、これらのノード１３２０同士を線で接続することにより、分析モデル１３１０を作成することができる。ノード１３２０同士の接続の際は、あるノード１３２０の出力が別のノード１３２０の入力となるように接続する。
【００２７】
なお、ノード１３２０の左端が入力を表し、右端が出力を表す。例えば、分析モデル１３１０−１において、相関行列算出ノード１３２０−３の出力が抽出ノード１３２０−４の入力となり、抽出ノード１３２０−４の出力は、行列情報取得ノード１３２０−５および差分算出ノード１３２０−８の入力となる。また、分析モデル１３２０では、ノード１３２０の接続関係に基づいて処理の実行順序が決定される。具体的には、相関行列算出ノード１３２０−３の実行の次に抽出ノード１３２０−４が実行されように実行順序が決定される。
【００２８】
分析モデル作成者５０が実行ボタン１３０１を押下すると、分析モデル１３１０−１全体の処理が実行される（以下、全体実行と称す）。
【００２９】
分析モデル作成者５０が登録ボタン１３０３を押下すると、現在の分析モデル１３１０−１が保存される。また、分析モデル作成者５０が読込ボタン１３０４を押下すると、分析モデル作成者５０が選択した分析モデル１３１０−１が読み込まれる。
【００３０】
また、分析モデル作成者５０が、分析モデル１３１０−１の線で接続された１個以上のノード１３２０を選択し、部分実行ボタン１３０２を押下すると、選択されたノード１３２０のみが中間データ１５−２を用いて実行される（以下、部分実行と称す）。
【００３１】
例えば、分析モデル１３１０−１において、分析モデル作成者５０が、差分算出ノード１３２０−８と結果出力ノード１３２０−９を選択した後に、部分実行ボタン１３１０を押下すると、差分算出ノード１３２０−８と結果出力ノード１３２０−９のみが実行される。
【００３２】
分析モデル１３１０−１では、正常時と異常時の相関値の差異を基に異常を検知することができる。分析モデル作成者５０は、結果出力ノード１３２０−９にて出力される異常時と正常時の差分が大きくなるように、分析モデル１３１０の修正と、修正された分析モデル１３１０−１の実行（テスト）を繰り返すことができる。
【００３３】
実行ボタン１３０１の押下により分析モデル１３１０−１が全体実行されると、個々のノード１３２０−１〜１３２０−９への入力値Ａ１〜Ａ８が中間データ１５−２として保持される。例えば、差分算出ノード１３２０−８については入力値Ａ４、Ａ７が中間データ１５−２として保持される。この時、差分算出ノード１３２０−８の中間データ１５−２は、高相関抽出ノード１３２０−４にて算出された相関行列と、相関行列算出ノード１３２０−７にて算出された相関行列になる。
【００３４】
ここで、分析モデル作成システム１は、個々のノード１３２０−１〜１３２０−９への入力値Ａ１〜Ａ９を中間データ１５−２として保持することにより、例えば、分析モデル作成者５０が差分算出ノード１３２０−８のみを修正した場合においても、ノード１３２０−１〜１３２０−７の処理を実行させることなく、差分算出ノード１３２０−８への入力値Ａ４、Ａ７に対応する中間データ１５−２を取得することができる。
【００３５】
このため、中間データ１５−２として入力値Ａ４、Ａ７を差分算出ノード１３２０−８に入力することで、差分算出ノード１３２０−８と結果出力ノード１３２０−９のみを部分実行することができる。これにより、分析モデル作成者５０は、分析モデル１３１０−１のテストの度に、変更していないノード１３２０−１〜１３２０−７の処理の計算を実行することなく、分析モデル１３１０のテストを繰り返すことができる。
【００３６】
分析モデル１３１０−１のテストが完了すると、分析モデル作成者５０は、登録ボタン１３０３を押下することで、分析モデル１３１０−１を登録することができる。
【００３７】
図３は、図２の分析モデルの変更後のＧＵＩ画面の一例を示す図である。
図３において、分析モデル１３１０−１ではノイズ（余計な変動値）の影響により結果出力に誤検知が多いとして、分析モデル作成者５０が、相関行列算出の前処理として移動平均を行い、ノイズの低減を試みたものとする。この時、分析モデル作成者５０は、図２の分析モデル１３１０−１に移動平均ノード１４１０−１、１４１０−２を追加し、分析モデル１３１０−２を作成したものとする。
【００３８】
分析モデル作成者５０は、分析モデル１３１０−２を作成すると、実行ボタン１３０１を押下することにより、分析モデル１３１０−２を全体実行することができる。この時、個々のノード１３２０−１〜１３２０−９、１４１０−１、１４１０−２への入力値は、Ｂ１〜Ｂ８、Ｃ１、Ｃ２となる。すなわち、分析モデル１３１０−２では、移動平均ノード１４１０−１、１４１０−２が追加されているため、移動平均ノード１４１０−１、１４１０−２の下流にあるノード１３２０−３〜１３２０−９の入力値が変化する。
【００３９】
分析モデル１３１０−２の全体実行を行うと、例えば、差分算出ノード１３２０−８への入力値がＡ４、Ａ７からＢ４、Ｂ７に変化する。こらは、差分算出ノード１３２０−８への入力値は、差分算出ノード１３２０−８の前段の高相関抽出ノード１３２０−４の入力値Ｂ３および相関行列算出ノード１３２０−７の入力値Ｃ２にも依存するためである。
【００４０】
ここで、分析モデル１３１０−１の全体実行時には個々のノード１３２０−１〜１３２０−９への入力値がＡ１〜Ａ８であったものが、分析モデル１３１０−２が全体実行されると、個々のノード１３２０−１〜１３２０−９への入力値としてＣ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｃ２、Ｂ７、Ｂ８が中間データ１５−２として保持される。
【００４１】
この時、分析モデル１３１０−１に移動平均処理を追加した分析モデル１３１０−２では、分析モデル１３１０−１より却って結果出力が悪くなる場合がある。
【００４２】
この場合、分析モデル作成者５０は、読込ボタン１３０４を押下することにより、分析モデル１３１０−１を再読込することができる。この時、図３のＧＵＩ画面から図２のＧＵＩ画面に移行することができる。そして、図２のＧＵＩ画面上で分析モデル１３１０−１についての処理を作り直すことができる。
【００４３】
そして、分析モデル作成者５０が、例えば、図２のＧＵＩ画面上において、分析モデル１３１０−１についての差分算出ノード１３２０−８を修正したものとする。そして、分析モデル作成者５０が、差分算出ノード１３２０−８と結果出力ノード１３２０−９を選択した後に、部分実行ボタン１３１０を押下したものとする。
【００４４】
この時、先行技術では分析モデル１３１０−１についての部分実行では、差分算出ノード１３２０−８の入力値は、Ａ４、Ａ７であるべきところ、分析モデル１３１０−２の実行後に分析モデル１３１０−１に戻ると、差分算出ノード１３２０−８の入力値としてＢ４、Ｂ７が保持されている。このため、分析モデル１３１０−１についての部分実行であるにかかわらず、差分算出ノード１３２０−８には、分析モデル１３１０−２の実行時に算出された入力値Ｂ４、Ｂ７が入力される。
【００４５】
この結果、分析モデル１３１０−２の実行後に分析モデル１３１０−１に戻った時に、差分算出ノード１３２０−８の部分実行では正しい出力が得られない。従って、差分算出ノード１３２０−８からの正しい出力を得るには、分析モデル１３１０−１を全体実行することで差分算出ノード１３２０−８の入力値Ａ４、Ａ７を再計算させ、その入力値Ａ４、Ａ７を差分算出ノード１３２０−８に入力させる必要がある。
【００４６】
ここで、分析モデル作成システム１は、個々のノード１３２０−１〜１３２０−９への入力値Ａ１〜Ａ８を中間データ１５−２として保持するだけでなく、その中間データ１５−２と分析モデル１３１０−１との対応関係も保持することができる。
【００４７】
中間データ１５−２と分析モデル１３１０−１との対応関係も保持することにより、分析モデル１３１０−１の部分実行時には、分析モデル１３１０−１の個々のノード１３２０−１〜１３２０−９への入力値Ａ１〜Ａ８を読み出すことができる。このため、分析モデル１３１０−１全体を再度実行させることなく、分析モデル１３１０−２の実行時に得られた入力値Ｂ１〜Ｂ８ではなく、分析モデル１３１０−１の実行時に得られた入力値Ａ１〜Ａ８を用いることができる。
【００４８】
例えば、分析モデル１３１０−２が全体実行された時は、差分算出ノード１３２０−８の入力値はＢ４、Ｂ７になっている。この時、分析モデル１３１０−１については、その分析モデル１３１０−１と対応付けられた差分算出ノード１３２０−８の入力値Ａ４、Ａ７が保持されている。
【００４９】
このため、分析モデル１３１０−２の実行後に分析モデル１３１０−１に戻った場合においても、分析モデル１３１０−１を部分実行する時は、その分析モデル１３１０−１と対応付けられた差分算出ノード１３２０−８の入力値Ａ４、Ａ７を用いることができる。
【００５０】
この結果、分析モデル１３１０−２の実行後に分析モデル１３１０−１に戻った時に、差分算出ノード１３２０−８を修正し、差分算出ノード１３２０−８の部分実行を行った場合においても、正しい出力を得ることができる。従って、差分算出ノード１３２０−８からの正しい出力を得るために、分析モデル１３１０−１を全体実行する必要がなくなり、分析モデル１３１０−１の実行の効率化を図ることができる。
【００５１】
一般に、分析モデルの作成の試行錯誤の過程において、分析モデルを過去の状態に戻すことや、過去に作成した別パターンの分析モデルを読込直すことは頻発する。また、データ分析は１回の実行に数十分から数時間の時間がかかる場合が多い。このため、全体実行することなく、部分実行ができるようになると、分析処理の実行時間の削減が可能となり、分析モデルの作成の試行錯誤の作業を効率化することができる。
【００５２】
なお、分析モデルの作成や実行は、ビジュアルプログラミング形式のプログラミング装置１０に限定されない。例えば、テキストエディタ等の文字列で分析モデルを作成するプログラミング装置１０であってもよい。文字列で分析モデルを作成する場合、分析モデルの実行の途中で生成されたデータを中間データとすることができる。例えば、中間データ１５−２は、分析モデルの実行の途中で使用される変数または定数の値とすることができる。
【００５３】
以下、図１のプログラミング装置１０の構成および動作について具体的に説明する。
【００５４】
ビジュアルプログラミング部１１には、ノード情報１１−１、分析モデル情報１１−２、分析モデル実行部１１−３、分析モデル編集部１１−４、分析モデル部分実行部１１−５、登録部１１−６および読込部１１−７が設けられている。
【００５５】
ノード情報１１−１は、各ノード１３２０の定義情報を保持する。各ノード１３２０の定義情報は、ノード１３２０の実行時の処理の定義と、ノード１３２０の入力データ形式および出力データ形式の定義と、分析モデル作成者５０がノード１３２０に設定可能なパラメータの定義と、ＧＵＩ上でのノード１３２０の表示形式（アイコン等）の定義とを有する。なお、ノード１３２０の入力データおよび出力データはシリアライズ可能なデータであり、例えば、文字列とバイナリデータを組み合わせたデータである。
【００５６】
分析モデル情報１１−２は、分析モデル１３１０の処理を定義するファイルである。分析モデル情報１１−２は、分析モデル１３１０のノード１３２０やそのパラメータおよび接続関係の情報を有する。分析モデル情報１１−２は、シリアライズ可能なデータで構成することができ、例えば、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）形式で記載された文字列のファイルとして保持することができる。
【００５７】
ただし、シリアライズ可能であれば、分析モデル情報１１−２は文字列以外にバイナリデータであっても、また文字列とバイナリデータとを組み合わせたデータであってもよい。
【００５８】
なお、プログラミング装置１０がテキストエディタのように文字列で分析モデル１３１０を作成する場合、分析モデル情報１１−２は分析モデル作成者５０が作成したソースコードそのものとなる。
【００５９】
文字列で作成された分析モデルを部分実行するために、分析モデル作成者５０は、中間データ１５−２として使用する変数または定数を分析モデル情報１１−２内で定義することができる。
【００６０】
分析モデル情報１１−２は、分析モデル作成者５０のＧＵＩ操作を基に分析モデル編集部１１−４が生成、変更または削除する。ただし、分析モデル情報１１−２は、登録部１１−６や読込部１１−７の処理実行時にも変更され、分析モデル統括処理部１３によっても変更される。
【００６１】
分析モデル１３１０の個々のノード１３２０は、ビジュアルプログラミング部１１内で一意となるＩＤ（以下、ノードＩＤと称す。）を持つ。これにより、分析モデル１３１０にて同種のノード１３２０を複数回使用した場合においても、分析モデル情報１１−２内で各ノード１３２０を一意に識別することができる。
【００６２】
分析モデル実行部１１−３は、分析モデル情報１１−２を解釈し、実行する。分析モデル実行部１１−３の実行形態としては、分析モデル１３１０の処理全体を実行する場合（全体実行）と、分析モデル作成者５０が選択した範囲のノード１３２０のみを実行する場合（部分実行）がある。全体実行と部分実行のどちらを実行するかは、分析モデル作成者５０が、分析モデル編集部１１−４を用いて図２または図３のＧＵＩ画面上で指定することができる。その際、部分実行における実行対象となるノード１３２０は、ノードＩＤの集合として分析モデル編集部１１−４から送付される。
【００６３】
以下、分析モデルの全体実行と部分実行の処理を詳述する。
分析モデル全体実行の時、分析モデル実行部１１−３は、分析モデル情報１１−２を探索し、入力値が別のノード１３２０に依存していないノード１３２０（以下、ノードＮＡと称す）を検出し、処理を実行する。なお、ノードＮＡは必ずしも１つとは限らない。例えば、図２におけるノードＮＡはファイル読込ノード１３２０−１とファイル読込ノード１３２０−２である。
【００６４】
各ノード１３２０の処理の実行時には、各ノード１３２０への入力値と、分析モデル情報１１−２に定義された各ノード１３２０の設定値が付与される。そして、分析モデル実行部１１−３は、ノード情報１１−１の定義する各ノード１３２０の処理を実行する。例えば、図２の抽出ノード１３２０−４の処理を実行する場合、抽出ノード１３２０−４への入力値Ａ４は相関行列ノード１３２０−３から出力される相関行列となる。この時、抽出ノード１３２０−４の設定値は、分析モデル作成者５０が設定した抽出条件などとなる。
【００６５】
あるノード１３２０の処理が終わると、分析モデル実行部１１−３は、そのノード１３２０の出力を入力とするよう接続されたノード１３２０を実行する。これにより、あるノード１３２０から、そのノード１３２０の接続先のノード１３２０に処理が伝播し、分析モデル１３１０の処理が実行される。例えば、図２の抽出ノード１３２０−４が実行されると、次に行列情報取得ノード１３２０−５と差分実行ノード１３２０−８が実行対象となる。
【００６６】
ただし、ノード１３２０によっては、複数の入力を全て得るまで処理を実行しないよう定義される場合もある。例えば、図２では、差分算出ノード１３２０−８は、複数の入力値Ａ４、Ａ７を全て得るまで処理が実行されないよう定義されている。このため、抽出ノード１３２０−４が実行されても、相関行列算出ノード１３２０−７が実行されるまで差分算出ノード１３２０−８は実行されない。このため、抽出ノード１３２０−４が実行された場合は、その次には行列情報取得ノード１３２０−５のみが実行される。
【００６７】
なお、各ノード１３２０の処理の実行中、分析モデル実行部１１−３は各ノード１３２０の入力値を記憶する。分析モデルの実行可能なノード１３２０がなくなると、その分析モデルの全体実行は終了する。
【００６８】
分析モデルの部分実行の時、分析モデル実行部１１−３は、分析モデル編集部１１−４から送付されたノードＩＤの集合に含まれるノード１３２０の情報を分析モデル情報１１−２から抽出する。そして、その抽出された範囲にて、入力値が別ノード１３２０に依存していないノード１３２０（以下、ノードＮＢと称す）を検出および実行する。
【００６９】
この時、ノードＮＢの入力値として中間データ１５−２を用いることができる。中間データ１５−２は、分析モデル部分実行部１１−５を介して取得することができる。なお、分析モデル実行部１１−３は、中間データ１５−２に基づいて分析モデルを部分実行する場合、分析モデル部分実行部１１−５を呼び出すことができる。そして、分析モデル部分実行部１１−５は、中間データ１５−２に基づいて分析モデルを部分実行することができる。
【００７０】
例えば、図２の分析モデル１３１０−１において、分析モデル作成者５０が、差分算出ノード１３２０−８と結果出力ノード１３２０−９を選択して部分実行させるものとする。この時、ノードＮＢは差分算出ノード１３２０−８となる。また、その時の中間データ１５−２は、分析モデル１３１０−１を前回実行した際の抽出ノード１３２０−４の出力値と相関行列算出ノード１３２０−７の出力値となる。
【００７１】
部分実行における各ノード１３２０の処理および処理の伝播は全体実行と同様の手順で行われる。ただし、実行対象のノード１３２０が部分実行の指定範囲外なら、そのノード１３２０以降の処理は中止される。なお、ノード１３２０の処理の部分実行中、分析モデル実行部１１−３は、各ノード１３２０の入力値を記憶する。実行可能なノード１３２０がなくなると、部分実行は終了する。
【００７２】
全体実行および部分実行を問わず、分析モデル情報１１−２の処理終了後、分析モデル実行部１１−３は、分析モデル部分実行部１１−５を介し、各ノード１３２０の入力値を中間データ１５−２としてキャッシュすることができる。これにより、次回の分析モデルの処理が部分実行である場合に、各ノード１３２０の入力値として中間データ１５−２を使用することができる。
【００７３】
ただし、プログラミング装置１０がテキストエディタのように文字列で分析モデル１３１０を作成する場合、分析モデル実行部１１−３は、分析モデル情報１１−２のソースコードを解釈して実行する。この時、全体実行および部分実行を問わず、実分析モデル情報１１−２内で分析モデル作成者５０が指定した変数や定数を中間データ１５−２として記憶し、実行終了後に分析モデル部分実行部１１−５を介して中間データキャッシュ１５に保存する。
【００７４】
また、部分実行の開始時は、分析モデル部分実行部１１−５を介して取得した中間データ１５−２を分析モデル作成者５０が指定した変数や定数として割り当てた後、分析モデル作成者５０が指定した範囲のソースコードを実行する。
【００７５】
分析モデル編集部１１−４は、分析モデル１３１０を作成するためのＧＵＩを分析モデル作成者５０に提供する。そして、分析モデル作成者５０のＧＵＩ操作を基に分析モデル情報１１−２の生成、変更および削除を行う。分析モデル編集部１１−４のＧＵＩ画面は、例えば、液晶ディスプレイなどに表示することができる。なお、分析モデル編集部１１−４のＧＵＩはＷｅｂアプリケーションとして提供されてもよい。
【００７６】
分析モデル編集部１１−４のＧＵＩとして、例えば、図２のＧＵＩ画面を表示させるビジュアルプログラミングツールを用いることができる。ただし、分析モデル編集部１１−４のＧＵＩでは、図２の登録ボタン１３０３の代わりに図１１および図１２の登録フォーム表示ボタン８０１を表示させ、図２の読込ボタン１３０３の代わりに図１１および図１２の読込フォーム表示ボタン８０２を表示させることができる。
【００７７】
分析モデル編集部１１−４のＧＵＩは、ノード１３２０の配置や接続を行ったり、パラメータ設定を行ったりすることができる。分析モデル編集部１１−４のＧＵＩは、複数のボタンを表示させることができる。そして、分析モデル作成者５０がそのボタンを押下することで各処理の起点となることができる。
【００７８】
具体的には、実行ボタン１３０１が押下されると、分析モデル編集部１１−４は、分析モデル実行部１１−３を呼び出す。登録フォーム表示ボタン８０１が押下されると、分析モデル編集部１１−４は、登録部１１−７を呼び出す。読込フォーム表示ボタン８０２が押下されると、分析モデル編集部１１−４は、読込部１１−６を呼び出す。分析モデル情報１１−２の実行範囲が選択された上で部分実行ボタン１３０２が押下されると、分析モデル編集部１１−４は、選択範囲に含まれるノードＩＤの集合の情報を渡しつつ、分析モデル実行部１１−３を呼び出す。
【００７９】
ただし、プログラミング装置１０がテキストエディタのように文字列で分析モデル１３１０を作成する場合、分析モデル編集部１１−４のＧＵＩは、分析モデル作成者５０が入力した文字を表示させることができる。
【００８０】
分析モデル部分実行部１１−５は、分析モデルの実行の途中で生成された中間データ１５−２に基づいて、その分析モデルを部分実行する。この時、分析モデル部分実行部１１−５は、分析モデル情報１１−２として使用される中間データ１５−２の保存および読込を行うことができる。なお、図１では、分析モデル実行部１１−３と分析モデル部分実行部１１−５とを別個のブロックとして示したが、分析モデル部分実行部１１−５は、分析モデル実行部１１−３の一部の機能として動作させることができる。
【００８１】
中間データ１５−２の保存時は、分析モデル１３１０を構成する各ノード１３２０のノードＩＤおよび実行時の入力値が分析モデル実行部１１−３から渡される。そして、分析モデル部分実行部１１−５は、ノード情報１１−１のノード１３２０の入力データ形式の情報を基にデータをシリアライズし、ノードＩＤとシリアライズした入力値をペアにしてキャッシュ処理部１２に送付する。
【００８２】
例えば、図２の抽出ノード１３２０−４の中間データ１５−２を保存する時、抽出ノード１３２０−４のノードＩＤが「９ｄｂｃ４ｂ３ｂ」であるとすると、分析モデル部分実行部１１−５は、ノード情報１１−１にある抽出ノード１３２０−４の入力データ形式を基に、抽出ノード１３２０−４の入力値（相関行列算出ノード１３２０−３が出力した相関行列となる）をシリアライズし（以下、データＤＡと称す）する。その後、「９ｄｂｃ４ｂ３ｂ」とデータＤＡをペアにしてキャッシュ処理部１２に送付する。
【００８３】
中間データ１５−２の読込時は、分析モデル実行部１１−３から読込対象となるノードＩＤの集合が渡される。そして、分析モデル部分実行部１１−５は、キャッシュ処理部１２を介してノードＩＤに対応した中間データ１５−２を取得し、ノード情報１１−１のノード１３２０の入力データ形式の情報を基にデータをデシリアライズし、ノードＩＤとデシリアライズした中間データ１５−２のペアの集合を分析モデル実行部１１−３に返す。
【００８４】
例えば、図２の抽出ノード１３２０−４の中間データ１５−２の読込時、抽出ノード１３２０−４のノードＩＤである「９ｄｂｃ４ｂ３ｂ」をキャッシュ処理部１２に送付し、データＤＡを取得する。そして、「９ｄｂｃ４ｂ３ｂ」というノードＩＤとデータＤＡをペアにして分析モデル実行部１１−３に送付する。
【００８５】
なお、各ノード１３２０の入力値を中間データ１５−２として格納する過程でシリアライズが不要ならば、分析モデル部分実行部１１−５はシリアライズおよびデシリアライズをしない。また、シリアライズおよびデシリアライズの際に、ＺＩＰやＴＡＲなどのデータ圧縮形式を用いて中間データ１５−２を圧縮してもよい。
【００８６】
また、分析モデル部分実行部１１−５が中間データ１５−２の取得に失敗した時は、取得失敗の旨を分析モデル実行部１１−３に通知する。
【００８７】
登録部１１−６は、分析モデル１３１０の登録時にＧＵＩを用いた入力受付および結果出力を行う。この時、登録部１１−６は、分析モデル１３１０を登録するための登録フォーム８１０の生成、エラー通知、および分析モデル統括処理部１３への分析モデル情報１１−２の登録要求を行う。登録フォーム８１０の具体例については後述する。
【００８８】
読込部１１−７は、分析モデル１３１０の読込時または削除時にＧＵＩを用いた入力受付および結果出力を行う。この時、読込部１１−７は、読込フォーム９０１の生成、エラー通知、および分析モデル統括処理部１３への分析モデル読込要求と分析モデル削除要求を行う。読込フォーム９０１の具体例については後述する。なお、読込部１１−７は、削除要求に失敗した分析モデル情報１１−２のリビジョンＩＤ４０１を記憶し、以降は読込フォーム９０１に表示させないようにすることができる。
【００８９】
キャッシュ処理部１２は、中間データキャッシュ１５への中間データ１５−２の保存、読込、削除および情報提示を行う。
【００９０】
保存処理として、キャッシュ処理部１２は、ノードＩＤと中間データ１５−２とが入力されると、これらを対応づけて中間データキャッシュ１５に保存する。対応付けるとは、例えば、生成元のノードＩＤをファイル名とするファイルに中間データ１５−２を保存することである。具体的には、例えば、図２の抽出ノード１３２０−４の中間データ１５−２を保存する時は、抽出ノード１３２０−４のノードＩＤである「９ｄｂｃ４ｂ３ｂ」をファイル名にして、抽出ノード１３２０−４の中間データ１５−２を保存することができる。
【００９１】
読込処理として、キャッシュ処理部１２は、ノードＩＤが入力されると、中間データキャッシュ１５から、そのノードＩＤに対応する中間データ１５−２を取得し、要求元に送付する。また、全ての中間データ１５−２の読込を要求された時は、中間データキャッシュ１５に格納された全ての中間データ１５−２を取得し、要求元に送付する。
【００９２】
削除処理として、キャッシュ処理部１２は、全ての中間データ１５−２の削除要求を受けると、中間データキャッシュ１５内の全ての中間データ１５−２を削除する。
【００９３】
情報提示処理として、キャッシュ処理部１２は、ノードＩＤが入力されると、そのノードＩＤで指定される名前とデータサイズを含んだ中間データ１５−２の情報を要求元に送付する。なお、中間データ１５−２のデータサイズとは、例えば、中間データ１５−２を格納するファイルのファイルサイズである。
【００９４】
分析モデル統括処理部１３は、中間データ１５−２を分析モデル１３１０に対応付けることによりマッピング情報１６を生成し、そのマッピング情報１６を保持させることができる。また、分析モデル統括処理部１３は、マッピング情報１６に基づいて、分析モデル１３１０に対応付けられた中間データ１５−２を取得し、キャッシュ処理部１２を介して中間データ１５−２を中間データキャッシュ１５に保持させることができる。
【００９５】
この時、分析モデル統括処理部１３は、マッピング情報１６および分析モデルメタ情報１３の授受を行いつつ、キャッシュ処理部１２、登録部１１−６、読込部１１−７、バージョン管理システム２０および外部ストレージ３０を連携して動作させることができる。
【００９６】
ここで、分析モデル編集部１１−４のＧＵＩは、分析モデルの登録時には図２の登録ボタン１３０３の代わりに図１１の登録フォーム表示ボタン８０１を表示させ、図１１のＧＵＩ画面上で操作可能とすることができる。また、分析モデル編集部１１−４のＧＵＩは、分析モデルの読込時には図２の読込ボタン１３０３の代わりに図１２の読込フォーム表示ボタン８０２を表示させ、図１２のＧＵＩ画面上で操作可能とすることができる。
【００９７】
また、分析モデル統括処理部１３は、分析モデル情報１１−２をバージョン管理システム２０に登録する。また、バージョン管理システム２０に登録された分析モデル情報１１−２に対応する中間データ１５−２を管理したり、分析モデル情報１１−２の名前などのメタ情報を管理したりする。さらに、バージョン管理システム２０から分析モデル情報１１−２の読込時に、その分析モデル情報１１−２に対応する中間データ１５−２を中間データキャッシュ１５に復元する。
【００９８】
分析モデル統括処理部１３を設けることにより、プログラミング装置１０は、バージョン管理システム２０から分析モデル情報１１−２を再読込する際も、その分析モデル情報１１−２に対応する中間データ１５−２をキャッシュとして使用することができる。また、分析モデル情報１１−２を読み込んだり、削除したりする際に、分析モデル情報１１−２の概要を分析モデル作成者５０に提示することができる。
【００９９】
中間データキャッシュ１５は中間データ１５−２を格納する領域である。中間データキャッシュ１５は、例えば、ファイルシステムにおけるディレクトリとして実現することができる。中間データキャッシュ１５はキャッシュ処理部１２により管理される。
【０１００】
ただし、特定のデータに名前を付けて保存し、その読込や削除ができるならば、中間データキャッシュ１５は、ファイルシステムの形態に限定されない。例えば、中間データキャッシュ１５は、オブジェクトストレージやファイルサーバ、キーバリューストア、データベースとして実現してもよい。
【０１０１】
ビジュアルプログラミングにおける中間データ１５−２は、ビジュアルプログラミング部１１が分析モデル情報１１−２を実行する際に算出することができる。中間データ１５−２は、例えば、分析モデル１３１０の実行時に、分析モデル１３１０を構成する個々のノード１３２０に渡される入力値である。中間データ１５−２は、分析モデル情報１１−２を構成するノード１３２０ごとに１個生成される。このため、図２における差分算出ノード１３２０−８のように複数の入力がある場合でも、中間データ１５−２は１個のファイルとして保持される。
【０１０２】
プログラミング装置１０がテキストエディタのように文字列で分析モデル１３１０を作成する場合、中間データ１５−２は分析モデル情報１１−２内で分析モデル作成者５０により定義された任意の変数または定数の値となる。なお、中間データ１５−２は中間データキャッシュに格納する関係で、シリアライズやデータ圧縮をされている場合がある。
【０１０３】
マッピング情報１６は、バージョン管理システム２０に登録された分析モデル情報１１−２と外部ストレージ３０に保存された中間データ１５−２とを対応付ける情報である。マッピング情報１６は、分析モデル統括処理部１３により管理される。
【０１０４】
分析モデルメタ情報１７は、分析モデル情報１１−２をバージョン管理システム２０に保存する際に、分析モデル作成者５０が分析モデル情報１１−２を扱いやすくするための情報である。分析モデルメタ情報１７は、分析モデル統括処理部１３にて管理される。
【０１０５】
バージョン管理システム２０は、ソースコードなどの変更履歴を記録または追跡する。バージョン管理システム２０としては、例えば、Ｇｉｔを挙げることができる。バージョン管理システム２０は、分析モデル情報１１−２を登録したり、分析モデル情報１１−２を過去のバージョンに戻したり、複数の分析モデル情報１１−２を切り替えたりするために使用することができる。
【０１０６】
ただし、バージョン管理システム２０は、分析モデル情報１１−２を固有のＩＤと紐付けて保存する機能があればＧｉｔに限定されない。このため、Ａｐａｃｈｅ  Ｓｕｂｖｅｒｓｉｏｎ（登録商標）であってもよい。また、バージョン管理システム２０の代わりに、例えば、ファイルサーバやオブジェクトストレージを用いても実現してもよい。
【０１０７】
外部ストレージ３０は、要求を受けた任意のデータを保存する。外部ストレージ３０としては、例えば、オブジェクトストレージを用いることができる。外部ストレージ３０は、中間データ１５−２を保存するために使用することができる。
【０１０８】
ただし、外部ストレージ３０は、特定のデータに名前を付けて保存し、その読込や削除ができるならば、オブジェクトストレージの形態に限定されない。例えば、外部ストレージ３０は、ファイルサーバやキーバリューストアやデータベースとして実現してもよい。
【０１０９】
以上の処理により、分析モデル１３１０−１を試行錯誤しながら作成する過程において、過去の分析モデル１３１０−１を再読込する時、分析モデル１３１０−１と同時に、対応する中間データ１５−２を中間データキャッシュ１２に復元できる。これにより、分析モデル作成者５０は再読込後に一度、分析モデル１３１０−１を全体実行させることなく、分析モデル１３１０−１を部分実行させることができる。このため、分析処理時間を短縮することができ、分析モデル１３１０−１の作成の試行錯誤を効率化することができる。
【０１１０】
図４は、図１のプログラミング装置のハードウェア構成を示すブロック図である。
図４において、プログラミング装置１０には、プロセッサ２０１、通信制御デバイス２０２、通信インターフェース２０３、主記憶デバイス２０４および外部記憶デバイス２０５が設けられている。プロセッサ２０１、通信制御デバイス２０２、通信インターフェース２０３、主記憶デバイス２０４および外部記憶デバイス２０５は、内部バス２０６を介して相互に接続されている。
【０１１１】
また、プログラミング装置１０のヒューマンインターフェースとして、入力デバイス２０７および出力デバイス２０８が設けられている。入力デバイス２０７および出力デバイス２０８は、内部バス２０６に接続されている。
【０１１２】
プロセッサ２０１は、プログラミング装置１０全体の動作制御を司るハードウェアである。主記憶デバイス２０４は、例えば、半導体メモリから構成され、各種プログラムや制御データを一時的に保持する。主記憶デバイス２０４には、ビジュアルプログラミング部１１、キャッシュ処理部１２および分析モデル統括処理部１３を実現するためのプログラムを保持することができる。
【０１１３】
外部記憶デバイス２０５は、大容量の記憶容量を有する記憶デバイスであり、例えば、ハードディスク装置やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。外部記憶デバイス２０５は、各種プログラムの実行ファイルの他、分析モデル情報１１−２、中間データ１５−２、マッピング情報１６および分析モデルメタ情報１７を保持することができる。ただし、応答速度の向上などの理由により、中間データ１５−２、マッピング情報１６および分析モデルメタ情報１７は、主記憶デバイス２０４に保存してもよい。主記憶デバイス２０４および外部記憶デバイス２０５は、プロセッサ２０１からアクセス可能である。
【０１１４】
通信制御デバイス２０２は、バージョン管理システム２０や外部ストレージ３０との通信を制御する機能を有するハードウェアである。通信制御デバイス２０２は、通信インターフェース２０３を介してネットワーク４０に接続される。入力デバイス２０７は、分析モデル作成者５０が各種操作入力を行うためのキーボードやマウスなどを含むことができる。出力デバイス２０８は各種情報を表示するための液晶ディスプレイなどを含むことができる。
【０１１５】
図５は、第１実施形態に係る分析モデルのデータ構造の一例を示す図である。
図５において、分析モデル情報１１−２はＪＳＯＮで記述することができる。分析モデル情報１１−２では、分析モデル１３１０を構成するノード１３２０の設定情報がリストとして保持される。図５には、設定情報の例として、ファイル読込ノード１３２０−１と相関行列算出ノード１３２０−３の設定情報を示した。
【０１１６】
ノード１３２０の設定情報には、ノードＩＤ（ｉｄ）と、ノード情報１１−１におけるノード１３２０の種類（ｔｙｐｅ）と、分析モデル作成者５０が定義したノード１３２０の名称（ｎａｍｅ）と、分析モデル編集部１１−４のＧＵＩ画面におけるノード１３２０が配置された座標（ｘ、ｙ）と、接続先ノード１３２０（ｗｉｒｅ）と、ノード１３２０独自の設定（ｆｉｌｅｎａｍｅ、ｆｏｒｍａｔなど）が含まれる。
【０１１７】
なお、接続先となるノード１３２０は、出力先となるノード１３２０群のノードＩＤをリストに記述することにより、接続先を定義する。例えば、図５において、ノードＩＤ「９ｄｂｃ４ｂ３ｂ」で表されるファイル読込ノード１３２０−１は、ノードＩＤが「ｃ８ｄｃ７２２ｂ」の相関行列算出ノード１３２０−３に接続していることが分かる。
【０１１８】
図６は、図１のマッピング情報の構成例を示す図である。
図６において、マッピング情報１６は、バージョン管理システム２０に登録された分析モデル情報１１−２と、外部ストレージ３０に保存された中間データ１５−２との対応関係を表す。マッピング情報１６には、リビジョンＩＤ３０１のフィールド、ノードＩＤ３０２のフィールドおよび中間データ格納先３０３のフィールドが設けられている。リビジョンＩＤ３０１のフィールド、ノードＩＤ３０２のフィールドおよび中間データ格納先３０３のフィールドはカラムを表す。リビジョンＩＤ３０１は１レコード内のデータを表すことができる。
【０１１９】
リビジョンＩＤ３０１は、分析モデル情報１１−２の変更の記録時や、バージョン管理システム２０への登録時に付与される識別子である。リビジョンＩＤ３０１としては、例えば、ＧｉｔのコミットＩＤを用いることができる。リビジョンＩＤ３０１は、バージョン管理システム２０に登録された分析モデル情報１１−２を識別するために使用される。例えば、図２の分析モデル１３１０−１をバージョン管理システム２０に登録し、その時にｅ０７ｂ６９ｆｅというリビジョンＩＤが付与された場合、分析モデル１３１０−１に関係するレコードのリビジョンＩＤ３０１はｅ０７ｂ６９ｆｅとなる。
【０１２０】
ノードＩＤ３０２は、外部ストレージ３０に格納されている中間データ１５−２の生成元となるノード１３２０のノードＩＤである。ノードＩＤ３０２は、分析モデル情報１１−２の読込時に、外部ストレージ３０に格納された中間データ１５−２を、分析モデル情報１１−２内の対応するノード１３２０に割り当てるために使用される。
【０１２１】
中間データ格納先３０３は、外部ストレージ３０に格納された中間データ１５−２の格納先を表す。中間データ格納先３０３は、中間データ１５−２を取得したり、削除したりするために用いる。中間データ格納先３０３は、例えば、外部ストレージ３０がオブジェクトストレージの場合は中間データ１５−２にアクセスするためのＵＲＬとなり、外部ストレージ３０がファイルサーバの場合はファイルパスとなる。
【０１２２】
なお、中間データ格納先３０３が示すＵＲＬやファイルパスは、分析モデル作成システム１内で一意とする。例えば、中間データ１５−２を外部ストレージ３０に格納する際、保存名を「<分析モデル情報１１−２のリビジョンＩＤ>．<生成元のノードＩＤ>」とすることができる。ただし、中間データ１５−２の保存名としては、ＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）のような命名方式を用いてもよい。
【０１２３】
例えば、図２の分析モデル１３１０−１をバージョン管理システム２０に登録し、リビジョンＩＤとして「ｅ０７ｂ６９ｆｅ」を得た時、ノードＩＤ「９ｄｂｃ４ｂ３ｂ」で表されるファイル読込ノード１３２０−１の中間データ１５−２をオブジェクトストレージの外部ストレージ３０に登録したものとする。この時、その中間データ１５−２を外部ストレージ３０に格納する際の保存名は「ｅ０７ｂ６９ｆｅ．９ｄｂｃ４ｂ３ｂ」になる。
【０１２４】
分析モデル情報１１−２を構成するノード１３２０のうち、中間データ１５−２を持つノード１３２０が複数ある場合、１つのリビジョンＩＤ３０１に対し複数のノードＩＤおよび中間データ格納先３０２のレコードが登録される。例えば、図２の分析モデル１３１０−１において、ノード１３２０−１からノード１３２０−９までの全てのノードが中間データ１５−２を持つとすると、ｅ０７ｂ６９ｆｅというリビジョンＩＤ３０１に対するレコードは９個作成される。
【０１２５】
逆に、分析モデル情報１１−２を構成するノード１３２０が中間データ１５−２を持たない場合、そのノード１３２０に対応するノードＩＤ３０２および中間データ格納先３０３には、例えば、「Ｎｏｎｅ」などの中間データ１５−２がないことを示す文字列が格納されたレコードが１個のみ登録される。
【０１２６】
図７は、図１の分析モデルメタ情報の構成例を示す図である。
図７において、分析モデルメタ情報１７は、バージョン管理システム２０に登録された分析モデル情報１１−２を分析モデル作成者５０が扱いやすくするための情報である。分析モデルメタ情報１７には、リビジョンＩＤフィールド４０１、分析モデル名フィールド４０２、説明文フィールド４０３、登録時刻フィールド４０４およびデータ量フィールド４０５が設けられている。
【０１２７】
なお、分析モデルメタ情報１７には、これらすべてのフィールド４０１〜４０５を設ける必要はなく、少なくとも１つのフィールド４０１〜４０５を設けるようにしてもよい。
【０１２８】
リビジョンＩＤ４０１は、図４のリビジョンＩＤ３０１と同一のものを用いることができる。
【０１２９】
分析モデル名４０２は分析モデル１３１０の名前である。説明文４０３は分析モデル１３１０の処理内容を説明する情報である。分析モデル名４０２および説明文４０３は、分析モデル情報１１−２をバージョン管理システム２０に登録する際に、分析モデル作成者５０により入力される。分析モデル名４０２および説明文４０３を分析モデルメタ情報１７に登録することにより、分析モデル作成者５０は、バージョン管理システム２０に登録されている分析モデル１３１０が作られた目的や処理内容を理解し、分析モデル１３１０の読込時の参考にすることができる。
【０１３０】
登録時刻４０４は、分析モデル情報１１−２をバージョン管理システム２０に登録した時刻情報である。登録時刻４０４は、例えば、ＩＳＯ８６０１の形式で表すことができる。分析モデルメタ情報１７に登録時刻４０４を登録することにより、分析モデル作成者５０は、分析モデル１３１０が作られたタイミングを知ることができる。
【０１３１】
データ量４０５は、分析モデル１３１０が用いている中間データ１５−２のデータサイズの合計値である。分析モデルメタ情報１７にデータ量４０５を登録することにより、分析モデル作成者５０は、分析モデル１３１０が消費する外部ストレージ３０の容量や、分析モデル１３１０の読込時に中間データキャッシュ１５が消費する容量を知ることができる。
【０１３２】
図８は、第１実施形態に係る分析モデル登録処理を示すフローチャートである。
図８において、分析モデル登録処理では、分析モデル統括処理部１３は、ビジュアルプログラミング部１１に読み込まれている分析モデル情報１１−２をバージョン管理システム２０に登録し、分析モデル情報１１−２が使用する中間データ１５−２を外部ストレージ３０に登録する。
【０１３３】
登録部１１−６が分析モデル統括処理部１３に分析モデル登録要求を送付することにより、分析モデル登録処理が開始される。分析モデル登録要求には、分析モデル情報１１−２、分析モデル１３１０内で使用される全ての中間データ１５−２の合計データサイズ、分析モデル作成者５０が登録フォーム８１０を用いて入力した分析モデル名８１１および説明文８１２が含まれる。なお、分析モデル情報１１−２内で使用される中間データ１５−２の合計データサイズは登録フォーム８１０の生成処理時に算出される。
【０１３４】
分析モデル登録処理が開始されると、処理Ｐ５０１において、分析モデル統括処理部１３は、分析モデル情報１１−２をバージョン管理システム２０に登録し、その時のリビジョンＩＤおよび登録時刻を記憶する。例えば、バージョン管理システム２０がＧｉｔである場合、Ｇｉｔのａｄｄコマンドとｃｏｍｍｉｔコマンドを用いて分析モデル情報１１−２のファイルの変更を記録し、ｐｕｓｈコマンドを用いてバージョン管理システム２０に分析モデル情報１１−２の変更内容を送付する。
【０１３５】
次に、処理Ｐ５０２において、分析モデル統括処理部１３は、処理Ｐ５０１におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ５１３に進み、エラーがなかった場合は処理Ｐ５０１が成功したことを記憶し、処理Ｐ５０３に進む。なお、エラーとしては、例えば、バージョン管理システム２０へのアクセス失敗や、バージョン管理システム２０からのエラー応答などがある。
【０１３６】
次に、処理Ｐ５０３において、分析モデル統括処理部１３は、処理Ｐ５０１にて取得した分析モデル情報１１−２のリビジョンＩＤと登録時刻、および分析モデル登録要求に含まれる分析モデル名、説明文、および中間データ１５−２の合計データサイズを１つのレコードとして分析モデルメタ情報１７に登録する。
【０１３７】
次に、処理Ｐ５０４において、分析モデル統括処理部１３は処理Ｐ５０３におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ５１３に進み、エラーがなかった場合は処理Ｐ５０３が成功したことを記憶し、処理Ｐ５０７に進む。なお、エラーとしては、例えば、分析モデルメタ情報１７へのアクセス失敗や、分析モデルメタ情報１７の容量制限による保存失敗などがある。
【０１３８】
次に、処理Ｐ５０５において、分析モデル統括処理部１３は、キャッシュ処理部１２を用いて分析モデル情報１１−２に含まれるノード１３２０に対応する全ての中間データ１５−２を取得する。
【０１３９】
次に、処理Ｐ５０６において、分析モデル統括処理部１３は、処理Ｐ５０５におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ５１３に進み、エラーがなかった場合は処理Ｐ５０５が成功したことを記憶し、処理Ｐ５０７に進む。なお、エラーとしては、例えば、キャッシュ処理部１２へのアクセス失敗や、キャッシュ処理部１２の中間データ１５−２取得エラーなどがある。ただし、キャッシュ処理部１２が正常に動作した結果、中間データ１５−２の取得数が０の場合はエラーとはしない。
【０１４０】
次に、処理Ｐ５０７において、分析モデル統括処理部１３は、処理Ｐ５０５にて１個以上の中間データ１５−２を取得したか確認する。そして、中間データ１５−２が１個以上ある場合は処理Ｐ５０８に進みし、中間データ１５−２が１個もない場合は処理Ｐ５１０に進む。
【０１４１】
次に、処理Ｐ５０８において、分析モデル統括処理部１３は、処理Ｐ５０５にて取得した中間データ１５−２を外部ストレージ３０に保存し、保存先の情報を中間データ１５−２の生成元となるノード１３２０のノードＩＤと対応付けて記憶する。保存先の情報は、例えば、外部ストレージ３０がオブジェクトストレージの場合は保存先のＵＲＬとなり、ファイルサーバの場合は保存先のファイルパスとなる。
【０１４２】
次に、処理Ｐ５０９において、分析モデル統括処理部１３は処理Ｐ５０８におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ５１３に進み、エラーがなかった場合は処理Ｐ５０８が成功したことを記憶し、処理Ｐ５１０に進む。なお、エラーとしては、例えば、外部ストレージ３０へのアクセス失敗や、外部ストレージ３０への中間データ１５−２の保存失敗などがある。
【０１４３】
次に、処理Ｐ５１０において、分析モデル統括処理部１３は、分析モデル情報１１−２をバージョン管理システム２０に登録した際のリビジョンＩＤと、中間データ１５−２に対応するノード１３２０のノードＩＤと、その中間データ１５−２を外部ストレージ３０に保存した際の格納先の情報を１つのレコードとしてマッピング情報１６に登録する。なお、分析モデルが持つ中間データ１５−２が０個の場合、ノードＩＤフィールド３０２と、中間データ格納先フィールド３０３には、例えば、「Ｎｏｎｅ」などの中間データ１５−２がないことを示す文字列を登録する。
【０１４４】
次に、処理Ｐ５１１において、分析モデル統括処理部１３は処理Ｐ５１０におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ５１３に進み、エラーがなかった場合は処理Ｐ５１２に進む。なお、エラーとしては、例えば、マッピング情報１６へのアクセス失敗や、マッピング情報１６の容量制限による保存失敗などがある。
【０１４５】
次に、処理Ｐ５１２において、分析モデル統括処理部１３は、分析モデル情報１３１０の登録要求が完了したことを登録部１１−６に通知する。以上により、分析モデル登録の正常処理が完了する。
【０１４６】
以下、分析モデル登録においてエラーを検知した際の処理を示す。
処理Ｐ５１３において、分析モデル統括処理部１３は、分析モデル作成システムの状態を分析モデル登録処理の開始前に戻すため、エラー発生前に実行された処理をキャンセルする（ロールバック処理）。エラー発生前に実行された処理は、エラー検知処理Ｐ５０２、Ｐ５０４、Ｐ５０９、Ｐ５１１で記憶した処理の成功状態のフラグを基に判断することができる。
【０１４７】
以下、各処理のキャンセルの方法を示す。
分析モデル情報１１−２の登録処理（Ｐ５０１）をキャンセルする時は、分析モデル情報１１−２の登録情報をバージョン管理システム２０から削除する。例えば、バージョン管理システム２０がＧｉｔである場合、分析モデル情報１１−２登録時のリビジョンＩＤを引数にＧｉｔにｒｅｖｅｒｔコマンドを送付する。
【０１４８】
分析モデルメタ情報１７の登録処理（Ｐ５０３）をキャンセルする時は、その分析モデル情報１１−２のリビジョンＩＤを持つレコードを分析モデルメタ情報１７の保持部に送付する。
【０１４９】
中間データ１５−２の登録処理（Ｐ５０８）をキャンセルする時は、処理Ｐ５０８にて格納した中間データ１５−２を外部ストレージ３０から削除する。
【０１５０】
マッピング情報の登録処理（P５０９）をキャンセルする時は、その分析モデル情報１１−２のリビジョンＩＤを持つレコードをマッピング情報１７の保持部に送付する。
【０１５１】
次に、処理Ｐ５１４において、分析モデル統括処理部１３は、処理Ｐ５１３におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ５１６に進み、エラーがなかった場合は処理Ｐ５１５に進む。なお、エラーとしては、例えば、キャンセル処理におけるバージョン管理システム２０からの分析モデル情報１１−２の登録情報の削除失敗や、外部ストレージ３０内の中間データ１５−２の削除失敗などがある。
【０１５２】
処理Ｐ５１４でエラーがなかった場合、処理Ｐ５１５において、分析モデル統括処理部１３は、分析モデル登録要求が異常終了したことを登録部１１−６に通知する。通知の際に送付するデータは、処理全体が異常終了したことを示すフラグ情報と、エラー検知処理Ｐ５０２、Ｐ５０４、Ｐ５０９、Ｐ５１１で記憶した各処理における処理結果（異常または正常のフラグ）と、処理Ｐ５１３にて実行されたロールバック処理の内容である。
【０１５３】
処理Ｐ５１４でエラーがあった場合、処理Ｐ５１６において、分析モデル統括処理部１３は、分析モデル登録要求が異常終了し、かつそのロールバック処理（Ｐ５１３）が失敗したことを登録部１１−６に通知する。通知の際に送付するデータは、処理全体が異常終了したことを示すフラグ情報と、ロールバックが失敗したことを示すフラグ情報と、エラー検知処理Ｐ５０２、Ｐ５０４、Ｐ５０９、Ｐ５１１で記憶した各処理における処理結果（異常または正常のフラグ）と、処理Ｐ５１３にて実行されたロールバック処理と、ロールバックに失敗した処理の内容である。
【０１５４】
以上により、分析モデル作成システム１は、ビジュアルプログラミング部１１に読み込まれている分析モデル情報１１−２をバージョン管理システム２０に正常に登録するとともに、分析モデル１３１０に対応する中間データ１５−２を外部ストレージ３０に正常に登録することが可能となる。
【０１５５】
図９は、第１実施形態に係る分析モデル読込処理を示すフローチャートである。
図９において、分析モデル読込処理では、バージョン管理システム２０に登録されている分析モデル情報１１−２をビジュアルプログラミング部１１に読み込ませ、分析モデル１３１０内で使用されていた中間データ１５−２を外部ストレージ３０から中間データキャッシュ１５に復元する。
【０１５６】
読込部１１−７が分析モデル統括処理部１３に分析モデル読込要求を送付することにより、分析モデル読込処理が開始される。分析モデル読込要求には、読込対象となる分析モデル情報１１−２のリビジョンＩＤが含まれる。
【０１５７】
分析モデル読込処理が開始されると、処理Ｐ６０１において、分析モデル統括処理部１３は、バージョン管理システム２０からリビジョンＩＤに対応した分析モデル情報１１−２を取得する。例えば、バージョン管理システム２０がＧｉｔの時、Ｇｉｔのｃｈｅｃｋｏｕｔコマンドを用いて、分析モデル情報１１−２をリビジョンＩＤで示された状態に戻すことができる。
【０１５８】
次に、処理Ｐ６０２において、分析モデル統括処理部１３は、処理Ｐ６０１におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ６１３に進み、エラーがなかった場合は処理Ｐ６０１が成功したことを記憶し、処理Ｐ６０３に進む。なお、エラーとしては、例えば、分析モデル情報１１−２のリビジョン変更の失敗などがある。
【０１５９】
次に、処理Ｐ６０３において、分析モデル統括処理部１３は、リビジョンＩＤに対応した全てのレコードをマッピング情報１６から取得する。１レコードが１個の中間データ１５−２を表す。各レコードには、ノードＩＤ３０２と中間データ格納先３０３が含まれる。
【０１６０】
次に、処理Ｐ６０４において、分析モデル統括処理部１３は、処理Ｐ６０３におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ６１３に進み、エラーがなかった場合は処理Ｐ６０３が成功したことを記憶し、処理Ｐ６０５に進む。なお、エラーとしては、例えば、マッピング情報１７へのアクセス失敗や、マッピング情報１７からのデータ取得失敗などがある。
【０１６１】
次に、処理Ｐ６０５において、分析モデル統括処理部１３は、処理Ｐ６０３で分析モデル１３１０が使用する中間データ１５−２が存在したか確認する。存在した場合は処理Ｐ６０６に進み、存在していない場合は処理Ｐ６０８に進む。なお、中間データ１５−２の存在の判定方法は、処理Ｐ６０３で取得したレコードが１行で、かつそのノードＩＤ３０２と中間データ格納先３０３の値が「Ｎｏｎｅ」である場合、存在しないとし、それ以外は存在すると判定する。
【０１６２】
次に、処理Ｐ６０６において、分析モデル統括処理部１３は、処理Ｐ６０３で取得したレコードに含まれる中間データ格納先３０３にアクセスすることにより、外部ストレージ３０から中間データ１５−２を取得する。そして、外部ストレージ３０から取得した中間データ１５−２と対応するノードＩＤ３０２を対応付けて記憶する。
【０１６３】
次に、処理Ｐ６０７において、分析モデル統括処理部１３は、処理Ｐ６０６におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ６１３に進み、エラーがなかった場合は処理Ｐ６０６が成功したことを記憶し、処理Ｐ６０８に進む。なお、エラーとしては、例えば、外部ストレージ３０へのアクセス失敗や、外部ストレージ３０からの中間データ１５−２の取得失敗などがある。
【０１６４】
次に、処理Ｐ６０８において、分析モデル統括処理部１３は、キャッシュ処理部１２を用いることにより、処理Ｐ６０６にて取得した中間データ１５−２を中間データキャッシュ１５に保存する。キャッシュ処理部１２の使用時、その中間データ１５−２に対応するノード１３２０のノードＩＤとしては、処理Ｐ６０７で対応付けたノードＩＤ３０２を用いる。なお、中間データキャッシュ１５内に既存の中間データ１５−２が格納されていた場合は、ロールバック処理Ｐ６１１に備えてキャッシュ処理部１２を用いて既存の全ての中間データ１５−２を一度取得し、記憶する。そして、キャッシュ処理部１２を用いて中間データキャッシュ１５内の全ての中間データ１５−２を削除し、処理Ｐ６０６にて取得した中間データ１５−２を格納する。
【０１６５】
次に、処理Ｐ６０９において、分析モデル統括処理部１３は、処理Ｐ６０８におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ６１１に進み、エラーがなかった場合は処理Ｐ６１０に進む。なお、エラーとしては、例えば、既存の中間データ１５−２の削除失敗や、中間データ１５−２保存失敗などがある。
【０１６６】
次に、処理Ｐ６１０において、分析モデル統括処理部１３は、処理Ｐ６０１で取得した分析モデル情報１１−２を読込部１１−７に送付する。以上により、分析モデル読込の正常処理が完了する。
【０１６７】
以下、分析モデル読込処理においてエラーを検知した際の処理を示す。
処理Ｐ６１１において、分析モデル統括処理部１３は、分析モデル作成システムの状態を分析モデル読込処理の開始前に戻すため、中間データ１５−２の反映処理（Ｐ６０８）をキャンセルする。この時、キャッシュ処理部１２を用いることにより、中間データキャッシュ１５内の全ての中間データ１５−２を一度削除した後、処理Ｐ６０８において記憶していた既存の中間データ１５−２を中間データキャッシュ１５に保存する。
【０１６８】
次に、処理Ｐ６１２において、分析モデル統括処理部１３は、処理Ｐ６１１におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ６１４に進み、エラーがなかった場合は処理Ｐ６１３に進む。なお、エラーとしては、例えば、中間データ１５−２の削除失敗や保存失敗がある。
【０１６９】
処理Ｐ６１２でエラーがなかった場合、処理Ｐ６１３において、分析モデル統括処理部１３は、分析モデル読込要求が異常終了したことを読込部１１−７に通知する。通知の際に送付するデータは、処理全体が異常終了したことを示すフラグ情報と、エラー検知処理Ｐ６０２、Ｐ６０４、Ｐ６０７、Ｐ６０９で記憶した各処理の結果（異常または正常のフラグ）と、処理６１１にて実行されたロールバック処理の内容である。なお、ロールバック処理をしていない時はロールバック処理の内容は送付しない。
【０１７０】
処理Ｐ６１２でエラーがあった場合、処理Ｐ６１４において、分析モデル統括処理部１３は、分析モデル読込要求が異常終了し、そのロールバック処理（Ｐ６１１）が失敗したことを読込部１１−７に通知する。通知の際に送付するデータは、処理全体が異常終了したことを示すフラグ情報と、ロールバックが失敗したことを示すフラグ情報と、エラー検知処理Ｐ６０２、Ｐ６０４、Ｐ６０７、Ｐ６０９で記憶した各処理の結果（異常または正常のフラグ）と、ロールバックに失敗した処理の内容である。
【０１７１】
以上により、分析モデル作成システム１は、バージョン管理システム２０に登録されている分析モデル情報１１−２をビジュアルプログラミング部１１に正常に読み込むとともに、分析モデル１３１０内で使用されていた中間データを外部ストレージ３０から中間データキャッシュ１５に正常に復元することが可能となる。
【０１７２】
図１０は、第１実施形態に係る分析モデル削除処理を示すフローチャートである。
図１０において、分析モデル削除処理では、分析モデル作成者５０が指定した分析モデル情報１１−２をプログラミング装置１０から削除し、その分析モデル１３１０で使用している中間データ１５−２を外部ストレージ３０から削除する。
【０１７３】
分析モデル削除処理では、バージョン管理システム２０内の分析モデル情報１１−２は削除しない。これにより、バージョン管理システム２０では分析モデル情報１１−２が差分管理され、バージョン管理システム２０に差分情報が残っていても、データ容量の消費量の増大を抑制することができる。なお、プログラミング装置１０から分析モデル情報１１−２が削除されると、分析モデル作成者５０はプログラミング装置１０からは分析モデルにアクセスできなくなる。
【０１７４】
読込部１１−７が分析モデル統括処理部１３に分析モデル削除要求を送付することにより、分析モデル削除処理が開始される。分析モデル削除要求には、削除対象となる分析モデル情報１１−２のリビジョンＩＤが含まれる。
【０１７５】
分析モデル削除処理が開始されると、処理Ｐ７０１において、分析モデル統括処理部１３は、分析モデルメタ情報１７の保持部に分析モデル情報１１−２のリビジョンＩＤを持つレコードの削除要求を送付する。
【０１７６】
次に、処理Ｐ７０２において、分析モデル統括処理部１３は、処理Ｐ７０１におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ７１１に進み、エラーがなかった場合は処理Ｐ７０１が成功したことを記憶し、処理Ｐ７０３に進む。なお、エラーとしては、例えば、分析モデルメタ情報１７へのアクセス失敗や、分析モデルメタ情報１７のレコード削除失敗がある。
【０１７７】
次に、処理Ｐ７０３において、分析モデル統括処理部１３は、分析モデル情報１１−２のリビジョンＩＤを持つ全てのレコードをマッピング情報１６から取得し、各レコードから中間データ格納先３０３を取得する。
【０１７８】
次に、処理Ｐ７０４において、分析モデル統括処理部１３は、処理Ｐ７０３におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ７１１に進み、エラーがなかった場合は処理Ｐ７０３が成功したことを記憶し、処理Ｐ７０５に進む。なお、エラーとしては、例えば、マッピング情報１７へのアクセス失敗や、マッピング情報１７からのデータ取得失敗などがある。
【０１７９】
次に、処理Ｐ７０５において、分析モデル統括処理部１３は、分析モデル情報１１−２が使用する中間データ１５−２が存在したか確認する。存在した場合は処理Ｐ７０６に進み、存在していない場合は処理Ｐ７０８に進む。なお、中間データ１５−２の存在の判定は、処理Ｐ７０３で取得した中間データ格納先３０３が１個で、かつその内容が「Ｎｏｎｅ」である場合、中間データ１５−２が存在しないとする。
【０１８０】
次に、処理Ｐ７０６において、分析モデル統括処理部１３は、処理Ｐ７０３で取得した中間データ格納先３０３で示された中間データ１５−２の削除要求を外部ストレージ３０に送付する。
【０１８１】
次に、処理Ｐ７０７において、分析モデル統括処理部１３は、処理Ｐ７０６におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ７１１に進み、エラーがなかった場合は処理Ｐ７０８に進む。なお、エラーとしては、例えば、外部ストレージ３０へのアクセス失敗や、外部ストレージ３０内の中間データ１５−２削除失敗などがある。
【０１８２】
次に、処理Ｐ７０８において、分析モデル統括処理部１３は、分析モデル情報１１−２のリビジョンＩＤを持つレコードの削除要求をマッピング情報１６の保持部に送付する。
【０１８３】
次に、処理Ｐ７０９において、分析モデル統括処理部１３は、処理Ｐ７０８におけるエラーの有無を確認する。エラーがあった場合は処理Ｐ７１１に進み、エラーがなかった場合は処理Ｐ７０８が成功したことを記憶し、処理Ｐ７１０に進む。なお、エラーとしては、例えば、マッピング情報１７へのアクセス失敗や、マッピング情報１７のレコード削除失敗などがある。
【０１８４】
次に、処理Ｐ７１０において、分析モデル統括処理部１３は、分析モデル削除要求が完了したことを読込部１１−７に通知する。以上により、分析モデル削除の正常処理が完了する。
【０１８５】
以下、分析モデル削除処理においてエラーを検知した際の処理を示す。
処理Ｐ７１１において、分析モデル統括処理部１３は、エラー検知処理Ｐ７０２、Ｐ７０４、Ｐ７０７、Ｐ７０９で記憶した処理の成功状態のフラグを基に、未削除のデータのリストを作成する。
【０１８６】
次に、処理Ｐ７１２において、分析モデル統括処理部１３は、分析モデル削除要求が異常終了したことを読込部１１−７に通知し、処理Ｐ７０１から削除処理をやり直す。ただし、削除処理をやり直す際は、処理Ｐ７１１において作成した削除できていないデータのリストを用いることにより、削除済みのデータの削除処理をスキップし、削除できていないデータのみ削除する。なお、異常終了を通知する際に送付するデータは、処理全体が異常終了したことを示すフラグ情報と、エラー検知処理Ｐ７０２、Ｐ７０４、Ｐ７０７、Ｐ７０９で記憶した各処理の結果（異常または正常のフラグ）と、処理Ｐ７１１にて作成した削除できていないデータのリストを含む。
【０１８７】
以上により、分析モデル作成システム１は、バージョン管理システム２０に登録されている分析モデル情報１１−２をプログラミング装置１０から正常に削除するとともに、分析モデル１３１０内で使用されていた中間データ１５−２を外部ストレージ３０から正常に削除することが可能となる。
【０１８８】
図１１は、第１実施形態に係る分析モデル登録画面の一例を示す図である。
図１１において、分析モデル編集部１１−４から提供されるＧＵＩ画面上で登録フォーム表示ボタン８０１を押下すると、登録部１１−６は、登録フォーム８１０を表示する。
【０１８９】
登録フォーム８１０は、分析モデル名入力欄８１１や、分析モデル説明文入力欄８１２、中間データ情報８１３、登録ボタン８１４、閉じるボタン８１５を備えている。なお、登録部１１−６による登録フォーム８１０生成処理は図１３の説明にて詳述する。
【０１９０】
分析モデル作成者５０は各種入力欄８１１、８１２に分析モデル１３１０の名前および説明文を入力することにより、分析モデル１３１０の処理と名前や説明文とを紐付けて分析モデル１３１０を管理できる。
【０１９１】
中間データ情報８１３は、分析モデル１３１０内で使用している中間データ１５−２の保存名およびデータサイズの一覧、および中間データ１５−２のデータサイズの合計値を表示する。これにより、分析モデル作成者５０は、分析モデル１３１０を登録する際、外部ストレージ３０が消費する保存領域の大きさを事前に知ることができる。
【０１９２】
登録ボタン８１４が分析モデル作成者５０に押下されると、登録部１１−６は分析モデル統括処理部１３に分析モデル登録要求を送付し、分析モデル統括処理部１３にて分析モデル登録処理が実行される。なお、分析モデル登録要求として、登録部１１−６は、登録フォーム８１０に存在する分析モデルの名前と説明文と中間データ１５−２の合計データサイズに加え、ビジュアルプログラミング部１１が保持する分析モデル情報１１−２を使用する。
【０１９３】
分析モデル登録処理が正常終了すると、登録部１１−６は登録完了のメッセージをＧＵＩ画面に表示する。一方、分析モデル登録処理が異常終了すると、登録部１１−５は、登録処理が異常終了したというメッセージとともに、分析モデル統括処理部１３から送付されたエラー検知処理Ｐ５０２、Ｐ５０４、Ｐ５０９、Ｐ５１１で記憶した各処理における処理結果（異常または正常のフラグ）と、処理Ｐ５１３にて実行されたロールバック処理と、ロールバックに失敗した処理の内容をＧＵＩに表示する。ただし、ロールバックに失敗していなければ、ロールバックに失敗した処理の内容はＧＵＩに表示しない。
【０１９４】
閉じるボタン８１５が分析モデル作成者５０に押下されると、登録部１１−６は、分析モデル登録処理を実行せずに、登録フォーム８１０を閉じる。
【０１９５】
このような画面により、分析モデル作成者５０は分析モデル情報１１−２および分析モデル１３１０の中間データ１５−２をバージョン管理システム２０と外部ストレージ３０に保存でき、かつ保存時に分析モデルを扱いやすくするための名前や説明文を付与することができる。
【０１９６】
図１２は、第１実施形態に係る分析モデル読込／削除画面の一例を示す図である。
図１２において、分析モデル作成者５０が読込フォーム表示ボタン８０１を押すと、読込部１１−７が読込フォーム９０１を表示する。読込フォーム９０１には、０個以上の分析モデルメタ情報表示欄９０２と、１個の読込ボタン９０３と、１個の閉じるボタン９０４が含まれる。
【０１９７】
分析モデルメタ情報表示欄９０２には、分析モデルメタ情報１７に登録された分析モデル名４０２、説明文４０２、リビジョンＩＤ４０１、登録時刻４０３およびデータ量４０５を表示することができる。
【０１９８】
分析モデルメタ情報表示欄９０２は、分析モデル作成者５０の操作により、１つのみ選択することができる。分析モデル作成者５０の操作とは、例えば、マウス等の入力デバイスを用いた左クリックや右クリックである。分析モデルメタ情報表示欄９０２が選択されると、それに対応する分析モデル１３１０のリビジョンＩＤが読込部１１−７に送付される。
【０１９９】
分析モデルメタ情報表示欄９０２を表示することにより、分析モデル作成者５０は、登録した分析モデル１３１０の概要を確認しながら、読込対象または削除対象となる分析モデル１３１０を選択できる。
【０２００】
１つの分析モデルメタ情報表示欄９０２を選択した状態で読込ボタン９０３が押下されると、読込部１１−７は、分析モデル統括処理部１３に分析モデル読込要求を送付する。そして、分析モデル統括処理部１３にて分析モデル読込処理が実行される。分析モデル読込要求には、選択された分析モデルメタ情報表示欄９０２が有するリビジョンＩＤが含まれる。
【０２０１】
分析モデル読込処理が正常終了すると、読込部１１−７は、分析モデル編集部１１−４に画面の更新を要求し、新規に読み込まれた分析モデル１３１０にＧＵＩ画面が切り替わる。
【０２０２】
一方、分析モデル読込処理が異常終了すると、読込部１１−７は、読込処理が異常終了したというメッセージとともに、分析モデル統括処理部１３から送付されたエラー検知処理Ｐ６０２、Ｐ６０４、Ｐ６０７、Ｐ６０９で記憶した各処理の結果（異常または正常のフラグ）と、ロールバック処理の内容とロールバックに失敗した処理の内容をＧＵＩ画面に表示する。ただし、ロールバックに失敗した処理がなければ、ロールバックに失敗した処理の内容はＧＵＩ画面に表示しない。
【０２０３】
閉じるボタン９０４が押下されると、読込部１１−７は、分析モデル読込処理を実行せずに、読込フォーム９０１を閉じる。
【０２０４】
また、分析モデル作成者５０の操作に応じ、分析モデルメタ情報表示欄９０２上には削除ボタン９０５が表示される。分析モデル作成者５０の操作とは、例えば、マウス等の入力デバイスを右クリックするなどである。ただし、削除ボタン９０５は、分析モデルメタ情報表示欄９０２に予め表示してもよい。
【０２０５】
分析モデル作成者５０が削除ボタン９０５を押下すると、読込部１１−７は、分析モデル統括処理部１３に分析モデル削除要求を送付する。そして、分析モデル統括処理部１３にて分析モデル削除処理が実行される。分析モデル削除要求には、選択された分析モデルメタ情報表示欄９０２が有するリビジョンＩＤが含まれる。
【０２０６】
分析モデル削除処理が終了すると、正常および異常を問わず、読込部１１−７は、読込フォーム９０１から削除された分析モデル１３１０に対応する分析モデルメタ情報表示欄９０２を削除する。これにより、分析モデル作成者５０は、データの一部が削除された分析モデル１３１０の読込による予期せぬエラーを回避できる。
【０２０７】
また、読込部１１−７は、削除処理が異常終了した分析モデル１３１０のリビジョンＩＤを記憶しておき、次回以降に読込フォーム９０１を生成する時は、異常終了した分析モデル１３１０の分析モデルメタ情報表示欄９０２を生成しないようにする。これにより、分析モデル作成者５０は、削除処理の実行後の如何なるタイミングでも、データの一部が削除された分析モデル１３１０の読込による予期せぬエラーを回避できる。
【０２０８】
このようなＧＵＩ画面により、分析モデル作成者５０は、分析モデル１３１０の概要を確認しながら分析モデル１３１０の読込もしくは削除が可能となる。読込の場合は、分析モデル１３１０とともに、それに対応する中間データ１５−２も読み込まれる。削除の場合は、不要な分析モデル１３１０とともに、それに対応する中間データ１５−２がプログラミング装置１０および外部ストレージ３０から削除される。
【０２０９】
図１３は、第１実施形態に係る登録フォーム生成処理を示すフローチャートである。登録フォーム生成処理では、登録フォーム表示ボタン８０１が押下された時、登録部１１−６が登録フォーム８１０を生成する。
【０２１０】
図１３において、登録フォーム８１０の生成処理が開始されると、処理Ｐ１１０１において、登録部１１−６は、分析モデル情報１１−２を取得する。そして、その分析モデル情報１１−２に含まれる全てのノード１３２０に対する中間データ１５−２の情報を、キャッシュ処理部１２を用いて取得する。中間データ１５−２の情報には、その中間データ１５−２の名前と、データサイズを含むことができる。登録部１１−６は、取得した中間データ１５−２の情報を、例えば、各中間データ１５−２の情報を要素とするリストとして保持する。
【０２１１】
次に、処理Ｐ１１０２において、登録部１１−６は、処理Ｐ１１０１におけるエラーの有無を確認する。エラーがなかった場合は処理Ｐ１１０３に進み、エラーがあった場合はエラーの内容を記憶し、処理Ｐ１１０９に進む。なお、エラーの内容としては、例えば、キャッシュ処理部１２へのアクセス失敗や、キャッシュ処理部１２の中間データ１５−２の情報の取得失敗などがある。
【０２１２】
次に、処理Ｐ１１０３において、登録部１１−６は、処理Ｐ１１０１にて取得した各中間データ１５−２の情報のリストをデータサイズの降順にソートする。これにより、登録フォーム８１０に中間データ情報８１３を表示する時、中間データ１５−２のデータサイズ順に情報が表示される。このため、分析モデル作成者５０は、どの中間データ１５−２が大きな容量を使用しているのか容易に確認できる。ただし、ソートの順序はデータサイズの降順に限定されない。例えば、分析モデル作成者５０が指定すれば、データサイズの昇順でもよいし、中間データの名前の昇順または降順でもよい。
【０２１３】
次に、処理Ｐ１１０４において、登録部１１−６は、中間データ１５−２の情報に含まれる各中間データ１５−２のデータサイズの合計値を算出し記憶する。そのデータサイズの合計値は、登録フォーム８１０の中間データ情報８１３に表示される他、分析モデル登録要求に使用される。
【０２１４】
次に、処理Ｐ１１０５において、登録部１１−６は、処理Ｐ１１０４でソートした中間データ１５−２の情報、および処理Ｐ１１０５で算出した中間データ１５−２のデータサイズの合計値を中間データ情報８１３とし、登録フォーム８１０をＧＵＩ画面上に表示する。以上により、登録フォーム８１０の作成の正常処理が完了する。
【０２１５】
以下、登録フォーム８１０の生成処理においてエラーを検知した際の処理を示す。
処理Ｐ１１０７において、登録部１１−６は、登録フォーム８１０の作成に失敗したというメッセージと、処理Ｐ１１０２にて記憶したエラーの内容をＧＵＩ画面に表示する。
【０２１６】
以上により、登録部１１−６は、分析モデル１３１０を登録するための登録フォーム８１０をＧＵＩ画面に表示することが可能となる。
【０２１７】
図１４は、第１実施形態に係る読込フォーム生成処理を示すフローチャートである。読込フォーム生成処理では、読込フォーム表示ボタン８０２が押下された時、読込部１１−７が読込フォーム９０１を表示する。
図１４において、読込フォーム９０１の生成処理が開始されると、処理Ｐ１２０１において、読込部１１−７は、分析モデル統括処理部１３を介し、分析モデルメタ情報１７が有する分析モデル情報１１−２のメタ情報（リビジョンＩＤ４０１、分析モデル名４０２、説明文４０３、登録時刻４０４およびデータ量４０５）の全てのレコードを取得する。
【０２１８】
次に、処理Ｐ１２０２において、読込部１１−７は、処理Ｐ１２０１におけるエラーの有無を確認する。エラーがなかった場合は処理Ｐ１２０３に進み、エラーがあった場合はエラーの内容を記憶し、処理Ｐ１２０６に進む。なお、エラーとしては、例えば分析モデル統括処理部１３へのアクセス失敗や、分析モデル１３１０のメタ情報取得失敗などがある。
【０２１９】
次に、処理Ｐ１２０３において、読込部１１−７は、削除要求が異常終了した分析モデル１３１０のリビジョンＩＤのリストを用いることにより、Ｐ１２０１で取得した各分析モデル１３１０のメタ情報から、異常終了した分析モデル１３１０とリビジョンＩＤ４０１が一致するレコードを除外する。削除要求が異常終了した分析モデル１３１０のリビジョンＩＤのリストは、分析モデル削除要求にて記憶することができる。
これにより、分析モデル作成者５０は、削除処理の実行時にデータの一部が削除された分析モデル１３１０の読込による予期しないエラーを回避できる。
【０２２０】
次に、処理Ｐ１２０４において、読込部１１−７は、各分析モデル１３１０のメタ情報を分析モデル１３１０の登録時刻の降順にソートする。分析モデル１３１０を登録時刻の降順で読込フォーム９０１に表示することにより、分析モデル作成者５０は分析モデル１３１０がどのような変遷をしているか容易に確認できる。ただし、ソートの順序は登録時刻の降順に限定されない。例えば、分析モデル作成者５０が指定すれば、データサイズの昇順でもよいし、分析モデル１３１０の名前の昇順または降順でもよい。
【０２２１】
次に、処理Ｐ１２０５において、読込部１１−７は、処理Ｐ１２０４でソートした分析モデル１３１０のメタ情報から分析モデルメタ情報表示欄９０２を生成する。そして、分析モデルメタ情報表示欄９０２を読込ボタン９０３および閉じるボタン９０４とともに、読込フォーム９０１としてＧＵＩ画面上に表示する。以上により、読込フォーム９０１作成の正常処理が完了する。
【０２２２】
以下、読込フォーム生成処理においてエラーを検知した際の処理を示す。
処理Ｐ１２０６において、読込部１１−７は、読込フォーム９０１の作成に失敗したというメッセージと、処理Ｐ１２０２にて記憶したエラーの内容をＧＵＩ画面に表示する。
【０２２３】
以上により、読込部１１−７は、分析モデル１３１０の読込のための読込フォーム９０１をＧＵＩ画面に表示することが可能となる。
【０２２４】
以下、図１の分析モデル作成システム１の全体的な処理の流れについて説明する。
【０２２５】
図１５は、図１の分析モデル作成システムの部分実行時および登録時の全体的な処理の流れを示すブロック図である。
図１５において、分析モデル編集部１１−４は、図１１のＧＵＩ画面を出力デバイス５１表示にさせる（Ｓ１）。そして、分析モデル作成者５０は、図１１のＧＵＩ画面を参照しながら、入力デバイス５２を操作することで実行ボタン１３０１を押下する。
【０２２６】
実行ボタン１３０１が押下されると、その旨が分析モデル編集部１１−４に通知され（Ｓ２）、分析モデル編集部１１−４は、分析モデル実行部１１−３に分析モデル実行要求を送付する（Ｓ３）。分析モデル実行部１１−３は、分析モデル実行要求を受け取ると、分析モデル１３１０に対応した分析モデル情報１１−２を探索し、分析モデル１３１０に用いられているノード１３２０を検出する（Ｓ４）。そして、分析モデル実行部１１−３は、そのノード１３２０に対応するノード情報１１−１を参照し（Ｓ５）、そのノード情報１１−１の定義する各ノード１３２０の処理を実行する。
【０２２７】
ここで、分析モデル実行部１１−３は、分析モデル情報１１−２に記録されたノード１３２０間の接続関係に基づいて、各ノード１３２０の処理順序を決定することができる。この時、あるノード１３２０の処理が終わると、そのノード１３２０の出力を入力とするよう接続されたノード１３２０を実行することができる。
【０２２８】
分析モデル実行部１１−３は、各ノード１３２０の実行中に分析モデル部分実行部１１−５を介し、各ノード１３２０の入力値を中間データ１５−２としてキャッシュする。この時、分析モデル実行部１１−３は、各ノード１３２０のノードＩＤおよび実行時の入力値を分析モデル部分実行部１１−５に渡す（Ｓ６）。そして、分析モデル部分実行部１１−５は、各ノード１３２０のノードＩＤおよび実行時の入力値をペアとしてキャッシュ処理部１２に送付する（Ｓ７）。そして、キャッシュ処理部１２は、中間データキャッシュ１５にアクセスし、各ノード１３２０のノードＩＤをファイル名とするファイルに中間データ１５−２を保存する（Ｓ８）。
【０２２９】
次に、分析モデル作成者５０は、図１１のＧＵＩ画面を参照しながら、入力デバイス５２を操作することで登録フォーム表示ボタン８０１を押下する。登録フォーム表示ボタン８０１が押下されると、その旨が分析モデル編集部１１−４に通知され（Ｓ１１）、分析モデル編集部１１−４は、登録部１１−７を呼び出す。そして、登録部１１−７は、分析モデル編集部１１−４を介し登録フォーム８１０を出力デバイス５１に表示させる（Ｓ１２、Ｓ１３）。
【０２３０】
そして、分析モデル作成者５０は、図１１のＧＵＩ画面を参照しながら、入力デバイス５２を操作することで、分析モデル１３１０の名前や説明文などを登録フォーム８１０に記入し、登録ボタン８１４を押下する。登録ボタン８１４が押下されると、その旨が分析モデル編集部１１−４に通知され（Ｓ１４）、分析モデル編集部１１−４は、登録部１１−６を呼び出す。そして、登録部１１−６は、分析モデル統括処理部１３に分析モデル登録要求を送付する（Ｓ１６）。
【０２３１】
分析モデル統括処理部１３は、分析モデル登録要求を受け取ると、分析モデル１３１０の分析モデル情報１１−２をバージョン管理システム２０に登録する（Ｓ１７）。さらに、分析モデル統括処理部１３は、分析モデル１３１０のリビジョンＩＤおよび分析モデル１３１０の名前や説明文などを１つのレコードとして分析モデルメタ情報１７に登録する（Ｓ１８）。
【０２３２】
さらに、分析モデル統括処理部１３は、キャッシュ処理部１２を介して分析モデル１３１０に含まれるノード１３２０に対応する中間データ１５−２を中間データキャッシュ１５から取得する（Ｓ１９）。そして、分析モデル統括処理部１３は、中間データ１５−２を外部ストレージ３０に保存する（Ｓ２０）。
【０２３３】
さらに、分析モデル統括処理部１３は、分析モデル１３１０の分析モデル情報１１−２のリビジョンＩＤと、中間データ１５−２に対応するノード１３２０のノードＩＤと、その中間データ１５−２を外部ストレージ３０に保存した際の格納先情報を１つのレコードとしてマッピング情報１６に登録する（Ｓ２１）。
【０２３４】
図１６は、図１の分析モデル作成システムの読込時および部分実行時の全体的な処理の流れを示すブロック図である。
図１６において、分析モデル編集部１１−４は、図１２のＧＵＩ画面を出力デバイス５１表示にさせる（Ｓ３１）。そして、分析モデル作成者５０は、図１２のＧＵＩ画面を参照しながら、入力デバイス５２を操作することで読込フォーム表示ボタン８０２を押下する。
【０２３５】
読込フォーム表示ボタン８０２が押下されると、その旨が分析モデル編集部１１−４に通知され（Ｓ３２）、分析モデル編集部１１−４は、読込部１１−７を呼び出す。そして、読込部１１−７は、分析モデル統括処理部１３を介し分析モデルメタ情報１７を読み出す（Ｓ３３、Ｓ３４）。
【０２３６】
そして、読込部１１−７は、分析モデルメタ情報１７に登録されているリビジョンＩＤごとに分析モデルの名前や説明文などが記入された分析モデルメタ情報表示欄９０２を作成する。そして、読込部１１−７は、分析モデルメタ情報表示欄９０２がリビジョンＩＤごとに一覧表示された読込フォーム９０１を作成し、分析モデル編集部１１−４を介し出力デバイス５１に表示させる（Ｓ３５、Ｓ３６）。
【０２３７】
そして、分析モデル作成者５０は、図１２のＧＵＩ画面を参照しながら、入力デバイス５２を操作することで、分析モデルメタ情報表示欄９０２を１つのみ選択する。分析モデル作成者５０は、１つの分析モデルメタ情報表示欄９０２を選択した状態で読込ボタン９０３を押下すると、その旨が分析モデル編集部１１−４に通知され（Ｓ３７）、分析モデル編集部１１−４は、読込部１１−７を呼び出す（Ｓ３８）。そして、読込部１１−７は、分析モデル統括処理部１３に分析モデル読込要求を送付する（Ｓ３９）。この分析モデル読込要求には、選択された分析モデルメタ情報表示欄９０２が有するリビジョンＩＤが含まれる。ここで、選択された分析モデルメタ情報表示欄９０２が有するリビジョンＩＤが分析モデル１３１０−１に対応しているものとする。
【０２３８】
分析モデル統括処理部１３は、分析モデル読込要求を受け取ると、分析モデル１３１０−１の分析モデル情報１１−２をバージョン管理システム２０から読み出す（Ｓ４０）。さらに、分析モデル統括処理部１３は、分析モデル１３１０−１のノードＩＤ３０２と中間データ格納先３０３をマッピング情報１６から読み出す（Ｓ４１）。
【０２３９】
そして、分析モデル統括処理部１３は、外部ストレージ３０の中間データ格納先３０３にアクセスすることにより外部ストレージ３０から中間データ１５−２を取得する（Ｓ４２）。そして、分析モデル統括処理部１３は、キャッシュ処理部１２を介して分析モデル１３１０−１に含まれるノード１３２０に対応する中間データ１５−２を中間データキャッシュ１５に保存する（Ｓ４３）。
【０２４０】
次に、分析モデル作成者５０は、図１２のＧＵＩ画面を参照しながら、入力デバイス５２を操作することで分析モデル１３１０−１の１個以上のノード１３２０を選択し、部分実行ボタン１３０２を押下する。ノード１３２０が選択された状態で部分実行ボタン１３０２が押下されると、その旨が分析モデル編集部１１−４に通知され（Ｓ５１）、分析モデル編集部１１−４は、分析モデル実行部１１−３に分析モデル部分実行要求を送付する（Ｓ５２）。分析モデル実行部１１−３は、分析モデル部分実行要求を受け取ると、分析モデル１３１０−１の選択範囲に対応した分析モデル情報１１−２を探索し、分析モデル１３１０−１の選択範囲に用いられているノード１３２０を検出する（Ｓ５３、Ｓ５４）。
【０２４１】
そして、分析モデル実行部１１−３は、分析モデル部分実行部１１−５を呼び出す（Ｓ５５）。そして、分析モデル部分実行部１１−５は、キャッシュ処理部１２を介し、分析モデル１３１０−１の選択範囲に用いられているノード１３２０の中間データ１５−２を中間データキャッシュ１５から読み出す（Ｓ５６、Ｓ５７）。
【０２４２】
そして、分析モデル実行部１１−３は、分析モデル部分実行部１１−５を介し、そのノード１３２０に対応するノード情報１１−１を参照する（Ｓ５８）。そして、そのノード１３２０の入力値として中間データ１５−２を用いつつ、そのノード情報１１−１の定義する各ノード１３２０の処理を実行する。
【０２４３】
（第２実施形態）
図１７は、第２実施形態に係る分析モデル作成システムの機能的な構成を示すブロック図である。
図１７において、分析モデル作成システム１６００には、図１のプログラミング装置１０の代わりにプログラミング装置１０´が設けられている。プログラミング装置１０´には、図１のビジュアルプログラミング部１１代わりにビジュアルプログラミング部１１´が設けられている。ビジュアルプログラミング部１１´には、図１の分析モデル編集部１１−４の代わりにＷｅｂ通信部１６１０が設けられている。
【０２４４】
電子計算機１６２０には、Ｗｅｂブラウザ１６２１が設けられている。Ｗｅｂブラウザ１６２１には、分析モデル編集部１６２２が設けられている。分析モデル編集部１６２２は、Ｗｅｂブラウザ１６２１にて動作することができる。電子計算機１６２０は、出力デバイス１６３０および入力デバイス１６４０に接続されている。さらに、電子計算機１６２０はネットワーク４０を介してＷｅｂ通信部１６１０に接続されている。
【０２４５】
電子計算機１６２０は、プロセッサ、主記憶デバイス、外部記憶デバイスおよび通信制御デバイスを備えることができる。電子計算機１６２０は、例えば、パーソナルコンピュータを用いることができる。あるいは、電子計算機１６２０、出力デバイス１６３０および入力デバイス１６４０は、スマートフォンなどの携帯情報端末であってもよい。電子計算機１６２０は分析モデル作成者５０により使用される。
【０２４６】
Ｗｅｂブラウザ１６２１は、電子計算機１６２０の上で動作するアプリケーションである。Ｗｅｂブラウザ１６２１は、プログラミング装置１０´にＨＴＴＰリクエストを発行し、その応答として取得したデータを電子計算機１６２０の出力デバイス１６３０に表示する。この時、Ｗｅｂブラウザ１６２１は、分析モデル編集部１６２２を出力デバイス１６３０に表示することができる。
【０２４７】
Ｗｅｂ通信部１６１０は、Ｗｅｂブラウザ１６２１のＨＴＴＰリクエストを基に分析モデル編集部１６２２の処理を定義したデータをＷｅｂブラウザ１６２１に送付する。そして、Ｗｅｂブラウザ１６２１上で動作する分析モデル編集部１６２２からのＨＴＴＰリクエストを基に、分析モデル作成システム１において分析モデル編集部１１−４が実行する各種処理をＷｅｂブラウザ１６２１上の分析モデル編集部１６２２が実現できるよう、各種処理の制御命令およびデータを中継する。
【０２４８】
分析モデル編集部１６２２は、分析モデル編集部１１−４をＷｅｂブラウザ１６２１で動作可能にしたものである。分析モデル編集部１６２２が分析モデル作成システム１６００内の各種データや機能を使用する時は、Ｗｅｂ通信部１６１０を介して使用する。
【０２４９】
以上により、分析モデル作成システム１６００はＷｅｂアプリケーションとして、遠隔の電子計算機１６２０を用いて分析モデル１３１０を作成することができる。
【０２５０】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。
【０２５１】
また、上述した本実施形態では各情報を「テーブル」形式によって説明したが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくてもよく、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために、「テーブル」、「リスト」、「ＤＢ」、「キュー」等について「情報」と呼ぶことがある。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「ＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【０２５２】
また、上述した本実施形態において、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）上のボタンの押下を起点に実行される処理は、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）呼び出しを起点に実行されてもよい。
【０２５３】
また、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、あるいはＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納するようにしてもよい。
【０２５４】
また、上述した本実施形態の制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【０２５５】
また、上述した各構成、機能、処理部および処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【符号の説明】
【０２５６】
１…分析モデル作成システム、１０…プログラミング装置、１１…ビジュアルプログラミング部、１１−１…ノード情報、１１−２…分析モデル情報、１１−３…分析モデル実行部、１１−４…分析モデル編集部、１１−５…分析モデル部分実行部、１１−６…登録部、１１−７…読込部、１２…キャッシュ処理部、１３…分析モデル統括処理部、１５…中間データキャッシュ、１６…マッピング情報、１７…分析モデルメタ情報、２０…バージョン管理システム、３０…外部ストレージ、４０…ネットワーク、３０１、４０１…リビジョンＩＤ、３０２…ノードＩＤ、３０３…中間データ格納先、４０２…分析モデル名、４０３…説明文、４０４…登録時刻、４０５…データ量、１３０１…実行ボタン、１３０２…部分実行ボタン、１３０３…登録フォーム表示ボタン、１３０４…読込フォーム表示ボタン、１３１０…分析モデル、１３２０…ノード、１３３０…ノードパレット
【図１】
2019125198.tif 000003
【図２】
2019125198.tif 000004
【図３】
2019125198.tif 000005
【図４】
2019125198.tif 000006
【図５】
2019125198.tif 000007
【図６】
2019125198.tif 000008
【図７】
2019125198.tif 000009
【図８】
2019125198.tif 000010
【図９】
2019125198.tif 000011
【図１０】
2019125198.tif 000012
【図１１】
2019125198.tif 000013
【図１２】
2019125198.tif 000014
【図１３】
2019125198.tif 000015
【図１４】
2019125198.tif 000016
【図１５】
2019125198.tif 000017
【図１６】
2019125198.tif 000018
【図１７】
2019125198.tif 000019