(57)【要約】【課題】処理プロセスを容易に再利用可能な情報処理装置、方法、及びプログラムを提供する。【解決手段】一実施形態に係る情報処理装置は、プロセッサを備える。情報処理装置は、複数の処理モジュールを設定可能な複数のノードと、ノード間の接続により構成される処理プロセスにおいて、切り替えモジュールを実行する。切り替えモジュールは、対象ノードに設定された処理モジュールの入力データに基づいて対象ノードが実行可能か判定する。情報処理装置は、対象ノードが実行可能な場合、対象ノードに設定された処理モジュールを実行する。【選択図】図１
2017054171.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを備えた情報処理装置であって、
複数の処理モジュールを設定可能な複数のノードと、前記ノード間の接続により構成される処理プロセスにおいて、
対象ノードに設定された前記処理モジュールの入力データに基づいて前記対象ノードが実行可能か判定する、切り替えモジュールを実行し、
前記対象ノードが実行可能な場合、前記対象ノードに設定された前記処理モジュールを実行する
情報処理装置。
【請求項２】
前記切り替えモジュールは、前記入力データがインポート可能な場合、又は前記入力データがレポジトリに格納されている場合、前記対象ノードが実行可能と判定する
請求項１に記載の情報処理装置。
【請求項３】
前記対象ノードが実行不能な場合、前記対象ノードは、上流ノードに切り替えられる
請求項１に記載の情報処理装置。
【請求項４】
前記処理モジュールの前記入力データは、インポートに関する項目を設定される
請求項１又は請求項２に記載の情報処理装置。
【請求項５】
前記入力データの前記項目は、前記入力データのインポートを優先することを示す第１入力フラグと、上流ノードへの前記入力データの作成依頼をインポートよりも優先することを示す第２入力フラグと、前記入力データの有無に関わらず処理を継続することを示す第３入力フラグと、のいずれかに設定される
請求項３に記載の情報処理装置。
【請求項６】
前記処理モジュールの出力データは、エクスポートに関する項目を設定される
請求項１乃至請求項４のいずれか１項に記載の情報処理装置。
【請求項７】
前記出力データの前記項目は、前記出力データをエクスポートすることを示す第１出力フラグと、前記ノードの処理の終了後に前記出力データを削除することを示す第２出力フラグと、前記出力データのエクスポートも削除もしないことを示す第３出力フラグと、のいずれかに設定される
請求項５に記載の情報処理装置。
【請求項８】
前記処理プロセスの実行が開始される前に、前記対象ノードの前記切り替えモジュールが予め生成される
請求項１乃至請求項６のいずれか１項に記載の情報処理装置。
【請求項９】
前記処理プロセスの実行が開始される前に、前記対象ノードに設定された前記処理モジュールを実行するための実行モジュールが予め生成される
請求項１乃至請求項７のいずれか１項に記載の情報処理装置。
【請求項１０】
前記処理モジュールは、実行するタイミングを示す実行種別を設定される
請求項１乃至請求項８のいずれか１項に記載の情報処理装置。
【請求項１１】
前記実行種別には、初期化処理において実行されることを示す第１種別、終了処理で実行されることを示す第２種別、及び通常実行されることを示す第３種別の少なくとも１つが含まれる
請求項９に記載の情報処理装置。
【請求項１２】
前記処理モジュールは、前記処理プロセスの実行の際に実行するか否かを示す有効フラグを設定される
請求項１乃至請求項１０のいずれか１項に記載の情報処理装置。
【請求項１３】
前記処理モジュールの前記入力データは、反復参照するか否かを示す反復参照フラグを設定される
請求項１乃至請求項１１のいずれか１項に記載の情報処理装置。
【請求項１４】
前記処理モジュールの前記入力データは、時間参照するか否かを示す時間参照フラグを設定される
請求項１乃至請求項１２のいずれか１項に記載の情報処理装置。
【請求項１５】
前記処理モジュールのパラメータ値は、デフォルト値を設定される
請求項１乃至請求項１３のいずれか１項に記載の情報処理装置。
【請求項１６】
複数の処理モジュールを設定可能な複数のノードと、前記ノード間の接続により構成される処理プロセスにおいて、
対象ノードに設定された前記処理モジュールの入力データに基づいて前記対象ノードが実行可能か判定する、切り替えモジュールを実行する工程と、
前記対象ノードが実行可能な場合、前記対象ノードに設定された前記処理モジュールを実行する工程と、
を含む情報処理方法。
【請求項１７】
複数の処理モジュールを設定可能な複数のノードと、前記ノード間の接続により構成される処理プロセスにおいて、
対象ノードに設定された前記処理モジュールの入力データに基づいて前記対象ノードが実行可能か判定する、切り替えモジュールを実行する工程と、
前記対象ノードが実行可能な場合、前記対象ノードに設定された前記処理モジュールを実行する工程と、
をコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
データ分析やデータ分析に基づく意思決定支援システムを運用するためには、データの前処理、モデルの構築、モデルの活用、及びモデルの評価などの、様々な処理を組み合わせて行う必要がある。このような分析のための処理プロセスの構築や管理は、データエンジニアにより行われる。そして、データエンジニアを支援するための情報処理装置が商用化されている。
【０００３】
一般的な情報処理装置は、データの処理プロセスを、ノード及びアークからなるネットワーク構造で可視化する。データエンジニアは、ＧＵＩを用いてノードに処理モジュールを設定したり、パラメータを変更したりすることが可能である。このような情報処理装置を用いることにより、処理プロセスを構築及び管理するコストを軽減することができる。
【０００４】
従来の情報処理装置では、処理プロセスにおける詳細な処理までネットワーク化されていたため、情報処理装置により構築されたネットワーク構造の処理プロセスは、対象案件に依存しやすく、再利用性が低かった。このため、データエンジニアは、案件毎に処理プロセスを作成しなければならなかった。これは、データエンジニアの作業負荷を増大させる原因となっていた。
【０００５】
このような問題を鑑みて、中間生成データに評価値を割り振ることにより、中間生成データを再利用可能にする情報処理装置が提案されている。この情報処理装置では、中間生成データを利用することにより、その中間生成データを生成する処理モジュールより上流の処理プロセスを再構築する必要が無いため、データエンジニアの作業負担を軽減することができる。
【０００６】
しかしながら、この情報処理装置では、中間生成データが共通する処理プロセスの間では、処理プロセスの再利用が可能であるが、異なるデータを扱う処理プロセスの間では、処理プロセスの再利用が困難であった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−２９１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
処理プロセスを容易に再利用可能な情報処理装置、方法、及びプログラムを提供する。
【課題を解決するための手段】
【０００９】
一実施形態に係る情報処理装置は、複数の処理モジュールを設定可能な複数のノードと、前記ノード間の接続により構成される処理プロセスにおいて、切り替えモジュールを実行する。切り替えモジュールは、対象ノードに設定された処理モジュールの入力データに基づいて対象ノードが実行可能か判定する。情報処理装置は、対象ノードが実行可能な場合、対象ノードに設定された処理モジュールを実行する。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係る情報処理装置により構築された処理プロセスの一例を示す図。
【図２】一実施形態に係る情報処理装置の機能構成の一例を示す図。
【図３】モジュールデータの一例を示す図。
【図４】プロセスデータの一例を示す図。
【図５】プロセスデータにおける実行種別の一例を示す図。
【図６】パラメータデータの一例を示す図。
【図７】一実施形態に係る情報処理装置のハードウェア構成の一例を示す図。
【図８】一実施形態に係る情報処理装置の動作の一例を示すフローチャート。
【図９】ノード１の処理モジュールの一例を示す図。
【図１０】ノード２の処理モジュールの一例を示す図。
【図１１】ノード３の処理モジュールの一例を示す図。
【図１２】切り替えモジュールの一例を示す図。
【図１３】一実施形態に係る情報処理装置の動作の具体例を示す図。
【図１４】一実施形態に係る情報処理装置の動作の具体例を示す図。
【図１５】一実施形態に係る情報処理装置の動作の具体例を示す図。
【図１６】処理モジュールＭ１のパラメータデータの一例を示す図。
【図１７】図１６のパラメータデータに応じた処理モジュールＭ１の例を示す図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して説明する。
【００１２】
まず、一実施形態に係る情報処理装置の概要について、図１を参照して説明する。本実施形態に係る情報処理装置は、可視化されたデータの処理プロセスを構築する。図１は、情報処理装置により構築された処理プロセスの一例を示す図である。図１に示すように、処理プロセスは、アーク及びノードを含むネットワーク（有向グラフ）構造を有する。
【００１３】
各ノードには、１つ又は複数の処理モジュールが設定される。ここでいう処理モジュールとは、処理プロセスを構成する個々のプログラムのことである。また、各アークは、方向を設定されている。図１は、情報処理装置により構築された処理プロセスの一例を示す図である。
【００１４】
図１の処理プロセスは、３つのノード（Ｎｏｄｅ）１〜３と、ノード１，２間を接続するアークと、ノード２，３間を接続するアークと、を備える。ノード１には処理モジュールＭ１〜Ｍ３が設定され、ノード２には処理モジュールＭ４，Ｍ５が設定され、ノード３には処理モジュールＭ６が設定されている。また、図１のアークが有する矢印は、アークに設定された方向を示している。矢印の元がアークの始点であり、矢印の先がアークの終点である。
【００１５】
以下では、あるノードＸに対して、そのノードＸに終点が接続されたアークの始点に対応するノードＹを、ノードＸの上流ノードという。同様に、あるノードＸに対して、そのノードＸに始点が接続されたアークの終点に対応するノードＹを、ノードＸの下流ノードという。例えば、ノード２の上流ノードはノード３であり、ノード２の下流ノードはノード１である。
【００１６】
情報処理装置により構築された処理プロセスにおいて、処理は上流ノードから下流ノードに向かって進行する。例えば、図１の処理プロセスでは、処理は、ノード３，２，１の順で実行される。ここでいうノードＸを実行するとは、ノードＸに設定された処理モジュールを実行することをいう。例えば、ノード１を実行するとは、ノード１に設定された処理モジュールＭ１〜Ｍ３を実行することをいう。
【００１７】
以下では、あるノードＸより先に処理が実行される全てのノードを、上流側のノードという。同様に、あるノードＸより後で処理が実行される全てのノードを、下流側のノードいう。例えば、ノード１の上流側のノードは、ノード２及びノード３であり、ノード３の下流側のノードは、ノード１及びノード２である。
【００１８】
データエンジニアなどのユーザは、本実施形態に係る情報処理装置を利用して、図１のような処理プロセスを構築したり、構築した処理プロセスを実行したりすることができる。
【００１９】
なお、図１におけるＲｅｐｏ．は、情報処理装置のレポジトリを示し、Ｉｎｐｕｔ  ｄａｔａは、情報処理装置がオブジェクトをインポート可能な記憶部を示し、Ｏｕｔｐｕｔ  ｄａｔａは、情報処理装置がオブジェクトをエクスポート可能な記憶部を示す。図１の例では、レポジトリにはオブジェクトｗが格納され、Ｉｎｐｕｔ  ｄａｔａにはオブジェクトｘ，ｍが格納され、Ｏｕｔｐｕｔ  ｄａｔａにはオブジェクトｖが格納されている。
【００２０】
次に、本実施形態に係る情報処理装置の機能構成について、図２〜図６を参照して説明する。図２は、本実施形態に係る情報処理装置の機能構成を示す図である。図２に示すように、情報処理装置は、モジュールデータ格納部１と、プロセスデータ格納部２と、パラメータデータ格納部３と、実行命令記憶部４と、プロセス実行部５と、レポジトリ６と、モジュール生成部７と、モジュール格納部８と、処理プロセス表示部９と、を備える。
【００２１】
モジュールデータ格納部１は、各処理モジュールのモジュールデータを格納する。モジュールデータとは、処理プロセスを構成する各処理モジュールに関するデータである。モジュールデータは、ユーザにより格納される。
【００２２】
図３は、モジュールデータ格納部１に格納されたモジュールデータの一例を示す図である。図３のモジュールデータ格納部１は、図１の処理プロセスに対応しており、処理モジュールＭ１〜Ｍ６のモジュールデータを格納している。
【００２３】
図３の例では、各処理モジュールのモジュールデータには、モジュールＩＤ（ModuleID）と、処理モジュールに入力されるオブジェクト（入力データ）の識別子（Inputs）と、処理モジュールから出力されるオブジェクト（出力データ）の識別子（Outputs）と、処理モジュールに含まれるパラメータの識別子（Params）と、パラメータの設定情報と、処理モジュールを実行する際にインポートする必要がある外部ライブラリ（Imports）と、処理モジュールのプログラムコード（body）と、が含まれている。パラメータの設定情報には、パラメータのデータ型や設定値などが含まれている。
【００２４】
図３によれば、例えば、処理モジュール１は、オブジェクトｘを入力データとして入力され、オブジェクトｙを出力データとして出力する。また、処理モジュール１は、ｐ−ｖａｌｕｅ_ｔｈというパラメータを含み、実行の際にｄａｔｅｔｉｍｅ及びｇｌｏｂという外部ライブラリをインポートする必要がある。ｐ−ｖａｌｕｅ_ｔｈは、ｄｏｕｂｌｅ型のパラメータであり、０．０５に設定されている。
【００２５】
なお、本実施形態において、ｘやｙなどのオブジェクトの識別子は、個別の処理プロセスに依存しない値である。ユーザは、処理プロセスを構築する際、各識別子に所望のデータ名を割当てることができる。データ名の割当について、詳しくは後述する。
【００２６】
プロセスデータ格納部２は、各ノードのプロセスデータを格納する。プロセスデータとは、処理プロセスを構成する各ノード及び各処理モジュールを実行する順番を示すデータである。プロセスデータは、ユーザにより格納される。
【００２７】
図４は、プロセスデータ格納部２に格納されたプロセスデータの一例を示す図である。図４のプロセスデータ格納部２は、図１の処理プロセスに対応しており、ノード１〜３のプロセスデータを格納している。
【００２８】
図４の例では、各ノードのプロセスデータには、ノードＩＤ（NodeID）と、上流ノード（Postulate Nodes）と、スクリプト情報（Scripts）と、が含まれている。ユーザは、各ノードに対する上流ノードを設定することにより、ノードを実行する順番を設定することができる。
【００２９】
スクリプト情報とは、各ノードにおける、処理モジュールの処理の順番を示す情報である。図４の例では、スクリプト情報には、処理を実行する順番と、処理モジュールのモジュールＩＤ（ModuleID）と、処理モジュールの実行種別（Type）と、処理モジュールの有効フラグ（Flag）と、が含まれている。
【００３０】
実行種別は、処理モジュールを実行するタイミングを示す設定項目である。例えば、処理プロセスが、初期化処理、反復処理、及び終了処理からなる場合、初期化処理でのみ実行される処理モジュールＸと、反復処理で繰り返し実行される処理モジュールＹと、が同一のノードに含まれることが考えられる。
【００３１】
このような場合、スクリプト情報で設定された順番に従って処理モジュールを実行すると、初期化処理の際に処理モジュールＹが実行され、反復処理の際に処理モジュールＸが実行されるため、処理が非効率になる。このため、処理モジュールは、どのタイミング（初期化処理や反復処理）で実行されるのかを区別可能であるのが好ましい。
【００３２】
実行種別は、このような区別を可能にするための設定項目である。ユーザは、各処理モジュールの実行種別を設定することにより、上記のような処理モジュールの実行タイミングを設定することができる。
【００３３】
図５は、実行種別の一例を示す図である。図５において、ｉｎｉｔｉａｌ（第１種別）は、処理モジュールが処理プロセス全体の最初に実行される、すなわち、初期化処理において実行されることを示す。ｆｉｎａｌ（第２種別）は、処理モジュールが処理プロセス全体の最後に実行される、すなわち、終了処理において実行されることを示す。
【００３４】
ｎｏｒｍａｌ（第３種別）は、処理モジュールが通常実行される、すなわち、設定された順番に従って実行されることを示す。実行種別がｎｏｒｍａｌに設定された処理モジュールは、反復処理において、処理の順番に従って繰り返し実行される。
【００３５】
ｔ_ｉｎｉｔｉａｌは、処理モジュールが時間反復処理の最初に実行されることを示す。ｔ_ｆｉｎａｌは、処理モジュールが時間反復処理の最後に実行されることを示す。時間反復処理とは、経時的に変化する入力値に基づいて、各時間における出力値を計算するような処理のことである。
【００３６】
有効フラグは、処理プロセスの実行の際に処理モジュールを実行するか否かを示す設定項目である。ＴＲＵＥは処理モジュールを実行することを示し、ＦＡＬＳＥは処理モジュールを実行しないことを示す。有効フラグを切り替えることにより、処理プロセスの構成（処理プロセスに含まれるノード、ノードが実行される順番、及び各ノードに設定された処理モジュールなど）を変えないまま、実行される処理モジュールを容易に変更することができる。
【００３７】
ユーザは、有効フラグを用いることにより、ある処理モジュールを実行する場合としない場合の結果の比較や、検証用の処理モジュールの追加を、容易に行うことができる。検証用の処理モジュールとは、処理モジュールが適切に構築されているかを検証する際に利用される処理モジュールである。検証用の処理モジュールとして、処理プロセスの出力データとしては不要な中間生成データなどをエクスポートする処理モジュールなどが考えられる。
【００３８】
図４によれば、例えば、ノード１は、上流ノードがノード２であり、処理モジュールＭ１〜Ｍ３が設定され、処理モジュールＭ１，Ｍ２，Ｍ３の順番で処理が実行される。また、処理モジュールＭ１〜Ｍ３は、いずれも通常実行され、処理は有効（ＴＲＵＥ）である。
【００３９】
なお、各ノードのプロセスデータにおいて、同一の処理モジュールを複数設定することも可能である。これは、例えば、ノード１の３番目のモジュールＩＤをＭ１に設定することに相当する。このような場合には、順番が異なる同一の処理モジュールに対して、同一の実行種別及び有効フラグを設定してもよいし、異なる実行種別及び有効フラグを設定してもよい。
【００４０】
パラメータ格納部３は、各ノードのパラメータデータを格納する。パラメータデータは、処理プロセスを構成する各ノードに設定された処理モジュールの入力データ、出力データ、及びパラメータなどに関するデータである。パラメータデータは、情報処理装置のユーザにより格納される。
【００４１】
図６は、パラメータデータ格納部３に格納されたパラメータデータの一例を示す図である。図６のパラメータデータ格納部３は、図１の処理プロセスに対応しており、ノード１〜３のパラメータデータを格納している。
【００４２】
図６の例では、各ノードのパラメータデータには、入力データに関する設定情報（Input）と、出力データに関する設定情報（Output）と、パラメータに関する設定情報（Param）と、が含まれている。
【００４３】
入力データに関する設定情報には、処理モジュールが実行される順番（script order）と、入力データとして入力されるオブジェクトの識別子（input name）と、オブジェクトに割当てられたデータ名（data name）と、ｉｏフラグ（io）と、時間参照フラグ（time_ref.）と、反復参照フラグ（repeat ref.）と、が含まれる。
【００４４】
出力データに関する設定情報には、処理モジュールが実行される順番（script order）と、出力データとして出力されるオブジェクトの識別子（input name）と、オブジェクトに割当てられたデータ名（data name）と、ｉｏフラグ（io）と、時間参照フラグ（time_ref.）と、反復参照フラグ（repeat ref.）と、が含まれる。
【００４５】
パラメータに関する設定情報には、処理モジュールが実行される順番（script order）と、パラメータの識別子（param name）と、パラメータに割当てられたパラメータ名（param value）と、が含まれる。
【００４６】
データ名は、各識別子を有するオブジェクトに対して、ユーザが任意に設定可能な名称である。データ名は、個別の処理プロセスに依存して設定される。例えば、図６の例では、オブジェクトｘはｄａｔａというデータ名を割当てられている。
【００４７】
ｉｏフラグは、入力データのインポート及び出力データのエクスポートに関する設定を示す項目である。入力データのｉｏフラグとして、例えば、Ｉ，Ｒ，Ｎの３つの値が設定される。
【００４８】
Ｉ（第１入力フラグ）は、入力データがレポジトリに存在しない場合、入力データのインポートが可能な場合はインポートを優先し、インポートが不能な場合は上流ノードに入力データの作成を依頼することを示す。
【００４９】
Ｒ（第２入力フラグ）は、入力データがレポジトリに存在しない場合、上流ノードに入力データの作成を依頼することを示す。すなわち、Ｒは、Ｉとは異なり、入力データがレポジトリに存在しない場合であっても、入力データのインポートの可否が判断されない。これは、上流ノードへの入力データの作成依頼を、入力データのインポートより優先させることに相当する。
【００５０】
Ｎ（第３入力フラグ）は、入力データがレポジトリに存在しない場合、そのまま処理を継続することを示す。ｉｏフラグがＮに設定された入力データは、オブジェクトデータとして初期値を設定されるのが好ましい。これにより、入力データがレポジトリに存在しない場合には、この初期値を入力データとして利用することができる。
【００５１】
出力データのｉｏフラグとして、例えば、Ｅ，Ｄ，Ｒの３つの値が設定される。
【００５２】
Ｅ（第１出力フラグ）は、出力データをエクスポートすることを示す。
【００５３】
Ｄ（第１出力フラグ）は、ノードの処理が終了後に、出力データをレポジトリから削除することを示す。
【００５４】
Ｒ（第１出力フラグ）は、Ｅ及びＤに対応する処理を行わないことを示す。すなわち、ｉｏフラグがＲに設定された出力データ出力データは、エクスポートされず、かつ、ノードの処理が終了後にレポジトリから削除されない。
【００５５】
時間参照フラグは、ノードが時間反復処理される場合に、入力データのインデックスを参照するか否かを示す。また、反復参照フラグは、ノードが反復処理される場合に、入力データのインデックスを参照するか否かを示す。いずれも、Ｔは参照することを示し、Ｆは参照しないことを示す。時間参照フラグ及び反復参照フラグについて、詳しくは後述する。
【００５６】
図６によれば、例えば、ノード１の１番目の処理モジュールは、ｄａｔａ（オブジェクトｘ）を入力され、ｉｎｃｏｍｅを出力する。ｄａｔａは、レポジトリに存在しない場合、インポートされ、インポート不能な場合、上流ノードにより作成される。ｉｎｃｏｍｅは、エクスポートされず、かつ、ノード１の処理の終了後にレポジトリから削除されない。
【００５７】
情報処理装置のユーザは、以上のようなモジュールデータ、プロセスデータ、及びパラメータデータ（以下、「モジュールデータ等」という）を設定し、モジュールデータ格納部１、プロセスデータ格納部２、及びパラメータデータ格納部３にそれぞれ格納することにより、所望の処理プロセスを構築することができる。
【００５８】
なお、各処理モジュールのパラメータの設定情報は、パラメータデータに含まれてもよい。この場合、パラメータの設定情報は、モジュールデータに含まれなくてもよい。
【００５９】
実行命令記憶部４は、ユーザから入力された実行命令を記憶する。ユーザは、実行命令により、実行するノードを指定することができる。指定されるノードは、１つでもよいし、複数でもよい。
【００６０】
プロセス実行部５は、実行命令記憶部４に記憶された実行命令に従って、処理プロセスを実行する。
【００６１】
レポジトリ６は、処理プロセスの実行により作成されたオブジェクト（各処理モジュールの入力データや出力データ）を格納する。レポジトリ６は、オブジェクトを、そのオブジェクトに割り当てられたデータ名により参照可能なように格納する。
【００６２】
モジュール生成部７は、モジュールデータ格納部１、プロセスデータ格納部２、及びパラメータ格納部３を参照して、各ノードの実行モジュールと、各ノードの切り替えモジュールと、を生成する。
【００６３】
実行モジュールとは、ノードに設定された処理モジュールを、プロセスデータで設定された処理の順番に従って実行するプログラムである。実行モジュールには、ノードに設定された処理モジュールが含まれる。また、切り替えモジュールとは、各ノードが実行可能か判定し、判定結果に応じて、実行するノードを上流ノードに切り替えるプログラムである。処理モジュール及び切り替えモジュールは、任意のプログラミング言語により生成可能である。
【００６４】
モジュール格納部８は、モジュール生成部７が生成した実行モジュール及び切り替えモジュールを格納する。
【００６５】
処理プロセス表示部９は、モジュールデータ格納部１、プロセスデータ格納部２、及びパラメータデータ格納部３を参照して、ユーザにより構築された処理プロセスを表示するための画像データを生成し、表示装置に出力する。これにより、図１のような処理プロセスの画像が表示装置に表示され、処理プロセスが可視化される。
【００６６】
処理プロセス表示部９は、レポジトリ６やモジュール格納部８を参照して、これらに格納された情報を表示させてもよい。例えば、レポジトリ６に格納されたオブジェクトが表示されることが考えられる。
【００６７】
次に、本実施形態に係る情報処理装置のハードウェア構成について、図７を参照して説明する。本実施形態に係る情報処理装置は、コンピュータ１００により構成される。コンピュータ１００には、サーバ、クライアント、マイコン、及び汎用コンピュータなどが含まれる。
【００６８】
図７は、コンピュータ１００の一例を示す図である。図７に示すように、コンピュータ１００は、ＣＰＵ（中央演算装置）１０１と、入力装置１０２と、表示装置１０３と、通信装置１０４と、記憶装置１０５と、を備える。ＣＰＵ１０１、入力装置１０２、表示装置１０３、通信装置１０４、及び記憶装置１０５は、バス１０６により相互に接続されている。
【００６９】
ＣＰＵ１０１は、コンピュータ１００の制御装置及び演算装置を含む電子回路である。ＣＰＵ１０１は、バス１０６を介して接続された各装置（例えば、入力装置１０２、通信装置１０４、記憶装置１０５）から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス１０６を介して接続された各装置（例えば、表示装置１０３、通信装置１０４、記憶装置１０５）に出力する。具体的には、ＣＰＵ１０１は、コンピュータ１００のＯＳ（オペレーティングシステム）や、情報処理プログラムなどを実行し、コンピュータ１００を構成する各装置を制御する。
【００７０】
情報処理プログラムとは、コンピュータ１００に、情報処理装置の上述の各機能構成を実現させるプログラムである。情報処理プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。ＣＰＵ１０１が情報処理プログラムを実行することにより、コンピュータ１００が情報処理装置として機能する。
【００７１】
入力装置１０２は、コンピュータ１００に情報を入力するための装置である。入力装置１０２は、例えば、キーボード、マウス、及びタッチパネルであるが、これに限られない。ユーザは、入力装置１０２を用いることにより、オブジェクトデータ、プロセスデータ、パラメータデータ、及び実行命令などの情報を入力することができる。
【００７２】
表示装置１０３は、画像や映像を表示するための装置である。表示装置１０３は、例えば、ＬＣＤ（液晶ディスプレイ）、ＣＲＴ（ブラウン管）、及びＰＤＰ（プラズマディスプレイ）であるが、これに限られない。処理プロセス表示部９は、生成した画像データを表示装置１０３に出力することができる。これにより、表示装置１０３に、図１のような処理プロセスの画像が表示される。
【００７３】
通信装置１０４は、コンピュータ１００が外部装置と無線又は有線で通信するための装置である。通信装置１０４は、例えば、モデム、ハブ、及びルータであるが、これに限られない。オブジェクトデータ、プロセスデータ、パラメータデータ、及び実行命令などの情報は、通信装置１０４を介して外部装置から入力されてもよい。
【００７４】
記憶装置１０５は、コンピュータ１００のＯＳや、情報処理プログラム、情報処理プログラムの実行に必要なデータ、及び情報処理プログラムの実行により生成されたデータなどを記憶する記憶媒体である。記憶装置１０５には、主記憶装置と外部記憶装置とが含まれる。主記憶装置は、例えば、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、及び磁気テープであるが、これに限られない。
【００７５】
モジュールデータ格納部１、プロセスデータ格納部２、パラメータデータ格納部３、実行命令記憶部４、レポジトリ６、モジュール格納部８、インポートされるオブジェクトや外部ライブラリを記憶する記憶部、及びエクスポートされたオブジェクトを記憶する記憶部は、記憶装置１０５により構成されてもよいし、通信装置１０４を介して通信可能な外部のサーバなどにより構築されてもよい。処理プロセスの実行を高速化するために、レポジトリ６及びモジュール格納部８は、主記憶装置により構成されるのが好ましい。
【００７６】
なお、コンピュータ１００は、ＣＰＵ１０１、入力装置１０２、表示装置１０３、通信装置１０４、及び記憶装置１０５を、それぞれ１つ又は複数備えてもよいし、プリンタやスキャナなどの周辺機器を接続されていてもよい。
【００７７】
また、情報処理装置は、単一のコンピュータ１００により構成されてもよいし、相互に接続された複数のコンピュータ１００からなるシステムとして構成されてもよい。
【００７８】
さらに、情報処理プログラムは、コンピュータ１００の記憶装置１０５に予め記憶されていてもよいし、コンピュータ１００の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合も、情報処理プログラムをコンピュータ１００にインストールして実行することにより、情報処理装置の機能が実現される。
【００７９】
次に、本実施形態に係る情報処理装置の動作について、図８を参照して説明する。図８は、本実施形態に係る情報処理装置が処理プロセスを実行する際の動作の一例を示すフローチャートである。以下では、処理プロセスは構築済みであるものとする。また、プロセス実行部５が実行するノードを、対象ノードという。
【００８０】
プロセス実行部５は、実行命令記憶部４に、ユーザから入力された実行命令が記憶されると、記憶された実行命令を読み出し、モジュール生成部７に実行モジュール及び切り替えモジュールの生成を指示する（ステップＳ１）。また、プロセス実行部５は、読み出した実行命令により指定されたノードを、対象ノードに設定する。
【００８１】
モジュール生成部７は、プロセッサ実行部５から実行モジュール及び切り替えモジュールの生成を指示されると、モジュールデータ格納部１、プロセスデータ格納部２、及びパラメータデータ格納部３からモジュールデータ等を読み出す（ステップＳ２）。
【００８２】
モジュール生成部７は、読み出したモジュールデータ等に基づいて、各ノードの実行モジュールを生成し（ステップＳ３）、モジュール格納部８に格納する。すなわち、各ノードの実行モジュールは、処理プロセスの実行が開始される前に予め生成される。
【００８３】
また、モジュール生成部７は、読み出したモジュールデータ等に基づいて、各ノードの切り替えモジュールを生成し（ステップＳ４）、モジュール格納部８に格納する。すなわち、各ノードの切り替えモジュールは、処理プロセスの実行が開始される前に予め生成される。
【００８４】
なお、モジュール生成部７は、ステップＳ３，Ｓ４において、処理プロセスに含まれる全てのノードの実行モジュールを生成してもよいし、モジュール格納部８に実行モジュールが格納されていないノードの実行モジュールのみを生成してもよい。これは、切り替えモジュールについても同様である。また、ステップＳ３，Ｓ４は、順番が逆でもよい。
【００８５】
モジュール格納部８に各ノードの実行モジュール及び切り替えモジュールが格納されると、プロセス実行部５は、レポジトリ６を初期化する（ステップＳ５）。
【００８６】
そして、プロセス実行部５は、モジュール格納部８から対象ノードの切り替えモジュールを読み出し、読み出した切り替えモジュールを実行する（ステップＳ６）。切り替えモジュールにより、対象ノードが実行可能か否か判定される（ステップＳ７）。
【００８７】
対象ノードが実行可能であった場合（ステップＳ７のＹＥＳ）、プロセス実行部５は、モジュール格納部８から対象ノードの実行モジュールを読み出し、実行する（ステップＳ８）。
【００８８】
対象モジュールの実行後、プロセス実行部５は、実行命令により指定された全てのノードが実行されたか判定する（ステップＳ９）。全てのノードが実行された場合（ステップＳ９のＹＥＳ）、プロセス実行部５は、処理プロセスの実行を終了する。一方、未処理のノードが存在する場合（ステップＳ９のＮＯ）、プロセス実行部５は、対象ノードを下流ノードに切り替える（ステップＳ１０）。その後、処理はステップＳ６に戻る。
【００８９】
また、ステップＳ７において、対象ノードが実行不能と判定された場合（ステップＳ７のＮＯ）、プロセス実行部５は、対象ノードを上流ノードに切り替える（ステップＳ１１）。その後、処理はステップＳ６に戻る。
【００９０】
ここで、情報処理装置による上記の動作について、図９〜図１５を参照して具体的に説明する。以下では、情報処理装置が、図１の処理プロセスを実行するものとする。
【００９１】
ユーザが実行命令を入力すると、プロセス実行部５がモジュール生成部７に実行モジュール及び切り替えモジュールの生成を指示し（ステップＳ１）、モジュール生成部７が図３，図４，図６のモジュールデータ等を読み出し（ステップＳ２）、ノード１〜３の実行モジュール及び切り替えモジュールを生成する（ステップＳ３，Ｓ４）。
【００９２】
図９は、ノード１の実行モジュールの一例を示す図である。図１０は、ノード２の実行モジュールの一例を示す図である。図１１は、ノード３の実行モジュールの一例を示す図である。図９〜図１１の例では、実行モジュールは、Ｐｙｔｈｏｎ言語により生成されている。以下、実行モジュールについて、ノード１の実行モジュール（図９）を例に説明する。
【００９３】
ノード１の処理モジュールは、共通して行われる外部ライブラリのインポート処理（import）と、ノード１に設定された処理モジュールＭ１〜Ｍ３（def M1_1, def M2_2, def M3_3）と、により構成されている。処理モジュールＭ１〜Ｍ３は、プロセスデータにおいて設定された順番で並べられている。
【００９４】
処理モジュールＭ１（def M1_1）は、パラメータの設定（p-value_th=0.05）と、レポジトリ６からの入力データの読み出し（x=repo.data）と、プログラムコードの実行（code of Module M1）と、レポジトリ６への出力データの書込み（repo.incom=y）と、により構成されている。
【００９５】
また、処理モジュールＭ１は、引数として、ｒｅｐｏ、ｒｅｐｅａｔ、及びｔｉｍｅが設定されている。ｒｅｐｏはレポジトリ６の参照、ｒｅｐｅａｔは処理モジュールＭ１が呼ばれている反復情報、ｔｉｍｅは処理モジュールＭ１が呼ばれている時刻情報に相当する。
【００９６】
オブジェクトデータ等において、このような実行モジュールを生成するための情報は設定されている。したがって、モジュール生成部７は、オブジェクトデータ等に基づいて、各ノードの実行モジュールを自動的に生成することができる。
【００９７】
なお、図９の実行モジュールでは、モジュールデータにおいて設定されたパラメータ値と、パラメータデータにおいて設定されたパラメータ値と、が異なる場合、パラメータデータにおいて設定されたパラメータ値が優先されている。
【００９８】
例えば、処理モジュールＭ３のパラメータｃａｌｃ_ｍｏｄｅは、モジュールデータではｍｅｄｉａｎに設定され、パラメータデータではａｖｅｒａｇｅに設定されている。パラメータデータが優先された結果、実行モジュールの処理モジュールＭ３では、パラメータｃａｌｃ_ｍｏｄｅはａｖｅｒａｇｅに設定されている（calc_mode=”average”）。
【００９９】
このように、パラメータデータの設定値を、モジュールデータの設定値より優先することにより、モジュールデータを修正することなく、パラメータ値を変更することができる。
【０１００】
また、パラメータ値がパラメータデータに設定されていない場合には、モジュールデータに設定されたパラメータ値を使用すればよい。すなわち、モジュールデータに設定されたパラメータ値をデフォルトパラメータとして使用すればよい。これにより、設定が必要なパラメータ値を減らし、ユーザの負担を軽減することができる。
【０１０１】
図１２は、ノード１〜３の切り替えモジュールの一例を示す図である。図１２の例では、切り替えモジュールは、Ｐｙｔｈｏｎ言語により生成されている。図１２に示すように、切り替えモジュールは、下流側のノードから順に並べた各ノードの切り替えモジュールにより構成される。以下、切り替えモジュールについて、ノード１の切り替えモジュールを例に説明する。
【０１０２】
ノード１の切り替えモジュール（def Node_1ProcessCheck）は、ノード１に外部（レポジトリ６など）から入力することが必要な各入力データの有無を判定し、判定結果に応じた処理を実行するプログラムである。
【０１０３】
図６を参照すると、ノード１の入力データは、ｄａｔａ、ｃｏｓｔ、ｉｎｃｏｍｅ、ｐｒｏｆｉｔ、及びｃｕｓｔｏｍｅｒの５つであるが、ｉｎｃｏｍｅ及びｐｒｏｆｉｔは、処理モジュール１，２によりそれぞれ出力される。したがって、ノード１に外部から入力することが必要な入力データは、ｄａｔａ、ｃｏｓｔ、及びｃｕｓｔｏｍｅｒの３つとなる。このため、図１２に示すように、ノード１の切り替えモジュールは、ｄａｔａ、ｃｏｓｔ、及びｃｕｓｔｏｍｅｒが、外部に存在するか判定するプログラムとなっている。
【０１０４】
図１２の例では、レポジトリ６に上記３つの入力データが存在する場合、ノード１の切り替えモジュールはＯＫを返す。これは、ノード１が実行可能と判定されること（ステップＳ７のＹＥＳ）に相当する。その後、プロセス実行部５は、ノード１の実行モジュールを実行する（ステップＳ８）。
【０１０５】
一方、レポジトリ６にｃｏｓｔ又はｃｕｓｔｏｍｅｒが存在しない場合、ノード１の切り替えモジュールは処理をノード２の切り替えモジュールに返す。これは、ノード１が実行不能と判定され（ステップＳ７のＮＯ）、対象ノードが上流ノードに切り替えられること（ステップＳ１１）に相当する。その後、ノード２の切り替えモジュールが実行される。
【０１０６】
また、ｄａｔａがレポジトリ６に存在しない場合、ノード１の切り替えモジュールはＥｒｒｏｒを返す。Ｅｒｒｏｒを返されると、プロセス実行部５は、ｄａｔａをインポート可能か判定する。ｄａｔａをインポート可能な場合、プロセス実行部５は、ｄａｔａをインポートし、ノード１の実行モジュールを実行する（ステップＳ８）。一方、ｄａｔａがインポート不能な場合、プロセス実行部５は、対象ノードをノード２に切り替える（ステップＳ１１）。これは、図６に示すように、ｄａｔａはのｉｏフラグがＩに設定されているためである。
【０１０７】
オブジェクトデータ等において、このような切り替えモジュールを生成するための情報は設定されている。したがって、モジュール生成部７は、オブジェクトデータ等に基づいて、各ノードの切り替えモジュールを自動的に生成することができる。
【０１０８】
このように、各入力データが存在しない場合の処理を予め設定しておくことにより、処理プロセスの実行を高速化することができる。
【０１０９】
ここで、上記の実行モジュール及び切り替えモジュールによる処理の具体例を、図１３〜図１５を参照して説明する。図１３〜図１５において、オブジェクトの識別子に付されたｉｎは、そのオブジェクトがインポート優先である（ｉｏフラグがＩである）ことを示し、ｏｕｔは、そのオブジェクトがエクスポートされる（ｉｏフラグがＥである）ことを示す。これは図１も同様である。また、実行命令により、実行するノードとしてノード１が指定されたものとする。
【０１１０】
図１３の例では、レポジトリ６にｗ，ｍが格納され、インポート可能なオブジェクトとしてｘが存在する。対象ノードがノード１である場合、ノード１の切り替えモジュールにより、ｄａｔａ（ｘ）、ｃｏｓｔ（ｗ）、及びｃｕｓｔｏｍｅｒ（ｍ）の有無が判定される。ｗ，ｍはレポジトリ６に存在し、ｘはインポート可能であるため、ノード１は実行可能と判定され（ステップＳ７のＹＥＳ）、ノード１の実行モジュールが実行される（ステップＳ８）。この結果、処理モジュールＭ３によりｖが出力され、出力されたｖが出力データとしてエクスポートされる。
【０１１１】
以上の処理により、指定された全てのノードの実行が終了するため（ステップＳ９のＹＥＳ）、処理プロセスの実行が終了する。
【０１１２】
図１４の例では、レポジトリ６にｍが格納され、インポート可能なオブジェクトとしてｘが存在する。図１４の例では、図１３と異なり、ｗがレポジトリ６に存在しないため、ノード１は実行不能と判定される（ステップＳ７のＮＯ）。したがって、対象モジュールはノード２に切り替えられ（ステップＳ１１）、ノード２の切り替えモジュールが実行される（ステップＳ６）。
【０１１３】
続いて、ノード２の切り替えモジュールにより、ｄａｔａ（ｘ）、及びｃｕｓｔｏｍｅｒ（ｍ）の有無が判定される。ｍはレポジトリ６に存在し、ｘはインポート可能であるため、ノード２は実行可能と判定され（ステップＳ７のＹＥＳ）、ノード２の実行モジュールが実行される（ステップＳ８）。この結果、処理モジュールＭ５によりｗが出力され、出力されたｗがレポジトリ６に格納される。
【０１１４】
この時点では、指定されたノード１が実行されていないため（ステップＳ９のＮＯ）、対象ノードが下流ノードであるノード１に切り替えられる（ステップＳ１０）。
【０１１５】
その後、プロセス実行部５が再びノード１の切り替えモジュールを実行すると（ステップＳ６）、ｗがレポジトリ６に存在するため、ノード１は実行可能と判定される（ステップＳ７のＹＥＳ）。以降の処理は、図１３の例と同様である。
【０１１６】
図１５の例では、レポジトリ６が空であり、インポート可能なオブジェクトとしてｘが存在する。図１５の例では、ｍ，ｗがレポジトリ６に存在しないため、ノード１は実行不能と判定され（ステップＳ７のＮＯ）、対象モジュールがノード２に切り替えられ（ステップＳ１１）、ノード２の切り替えモジュールが実行される（ステップＳ６）。
【０１１７】
また、ｍがレポジトリ６に存在しないため、ノード２は実行不能と判定され（ステップＳ７のＮＯ）、対象モジュールがノード３に切り替えられ（ステップＳ１１）、ノード３の切り替えモジュールが実行される（ステップＳ６）。
【０１１８】
ノード３の切り替えモジュールは、ＯＫを返すため、ノード３の実行モジュールが実行される（ステップＳ８）。この結果、処理モジュールＭ６によりｍが出力され、出力されたｍがレポジトリ６に格納される。
【０１１９】
この時点では、指定されたノード１が実行されていないため（ステップＳ９のＮＯ）、対象ノードが下流ノードであるノード２に切り替えられる（ステップＳ１０）。以降の処理は、図１４の例と同様である。
【０１２０】
以上説明した通り、本実施形態に係る情報処理装置は、処理プロセスを構成する各ノードに、複数の処理モジュールを設定可能である。これにより、処理プロセスを、処理レベルのノードではなく、意味レベルのノードにより構成することができる。
【０１２１】
処理プロセスを他の案件で再利用する場合、ユーザは、元の案件と他の案件との対応関係（変更するノード、ノードの変更方法、及びあるノードの変更による他のノードへの影響など）を把握し、処理プロセスが他の案件に対応するよう変更する必要がある。
【０１２２】
しかしながら、処理プロセスが処理レベルのノードにより構築されている場合、各ノードは、元の案件に依存した個々の処理に対応するため、ユーザは、上記のような対応関係を把握することが困難である。
【０１２３】
これに対して、本実施形態にように、処理プロセスが意味レベルのノードにより構築されている場合、各ノードは、コストに関するノードやファイナンスに関するノードというように、ユーザにとって処理の内容を把握しやすい一群の処理に対応させることができる。したがって、ユーザは、元の案件と他の案件との対応関係を容易に把握し、処理プロセスを他の案件に対応するように変更し、他の案件で容易に再利用することができる。
【０１２４】
このように、本実施形態に係る情報処理装置によれば、他の案件で容易に再利用可能な処理プロセスを構築することができる。したがって、本実施形態によれば、処理プロセスを構築及び管理するコストやユーザの負担などを軽減することができる。
【０１２５】
また、本実施形態では、各処理モジュールが入出力するオブジェクト名（ｘなど）と、案件に依存するデータ名（ｄａｔａなど）と、は分離され、パラメータデータによって対応付けられている。したがって、ユーザは、パラメータデータの設定を変更することにより、同一の処理モジュールを異なる案件で利用することができる。
【０１２６】
さらに、本実施形態では、パラメータデータにおいて明示された各処理モジュールの入出力データを用いて、切り替えモジュールを生成することができる。そして、切り替えモジュールを利用することにより、各ノードを実行する前に、そのノードが実行可能か判定し、実行不能な場合には上流ノードに処理を切り替えることができる。これにより、実行不能なノードが実行されないため、処理プロセスの実行を効率化することができる。
【０１２７】
ここで、時間参照フラグ及び反復参照フラグについて、図１６及び図１７を参照して説明する。図１６は、処理モジュールＭ１のパラメータデータの例を示す図である。また、図１７は、図１６のパラメータデータに応じた処理モジュールＭ１の例を示す図である。
【０１２８】
図１６に示すように、Ｆｌａｇ１の例では、ｘ及びｙは、時間参照フラグ及び反復参照フラグがいずれもＦに設定されている。この場合、図１７に示すように、処理モジュールＭ１（#Flag 1, def M1_1）において、ｘ及びｙは、それぞれｄａｔａ及びｉｎｃｏｍｅの全体（data, income）を参照される。
【０１２９】
図１６に示すように、Ｆｌａｇ２の例では、ｘ及びｙは、時間参照フラグがＴに設定され、反復参照フラグがＦに設定されている。この場合、図１７に示すように、処理モジュールＭ１（#Flag 2, def M1_1）において、ｘ及びｙは、それぞれｄａｔａ及びｉｎｃｏｍｅの、現在時刻に応じた部分（data[time], income[time]）を参照される。パラメータデータのこのような設定は、時系列的なシミュレーションなどで、処理モジュールＭ１を再利用する場合に有効である。
【０１３０】
図１６に示すように、Ｆｌａｇ３の例では、ｘ及びｙは、時間参照フラグがＦに設定され、反復参照フラグがＴに設定されている。この場合、図１７に示すように、処理モジュールＭ１（#Flag 3, def M1_1）において、ｘ及びｙは、それぞれｄａｔａ及びｉｎｃｏｍｅの、反復情報（現在の反復回数など）に応じた部分（data[repeat], income[repeat]）を参照される。パラメータデータのこのような設定は、処理モジュールＭ１を繰り返し実行する場合に有効である。
【０１３１】
図１６に示すように、Ｆｌａｇ４の例では、ｘ及びｙは、時間参照フラグ及び反復参照フラグがいずれもＴに設定されている。この場合、図１７に示すように、処理モジュールＭ４（#Flag 4, def M1_1）において、ｘ及びｙは、それぞれｄａｔａ及びｉｎｃｏｍｅの、現在時刻及び反復情報に応じた部分（data[repeat][time], income[repeat][time]）を参照される。パラメータデータのこのような設定は、時系列的なシミュレーションなどで、処理モジュールＭ１を繰り返し実行する場合に有効である。
【０１３２】
なお、ｘ及びｙの時間参照フラグは、それぞれ異なってもよいし、ｘ及びｙの反復参照フラグは、それぞれ異なってもよい。例えば、ｘの時間参照フラグをＦ、反復参照フラグをＴに設定し、ｙの時間参照フラグをＴ、反復参照フラグをＦに設定することも可能である。
【０１３３】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１３４】
１：モジュールデータ格納部、２：プロセスデータ格納部、３：パラメータデータ格納部、４：実行命令記憶部、５：プロセス実行部、６：レポジトリ、７：モジュール生成部、８：モジュール格納部、１００：コンピュータ、１０１：ＣＰＵ、１０２：入力装置、１０３：表示装置、１０４：通信装置、１０５：記憶装置、１０６：バス
【図１】
2017054171.tif 000003
【図２】
2017054171.tif 000004
【図３】
2017054171.tif 000005
【図４】
2017054171.tif 000006
【図５】
2017054171.tif 000007
【図６】
2017054171.tif 000008
【図７】
2017054171.tif 000009
【図８】
2017054171.tif 000010
【図９】
2017054171.tif 000011
【図１０】
2017054171.tif 000012
【図１１】
2017054171.tif 000013
【図１２】
2017054171.tif 000014
【図１３】
2017054171.tif 000015
【図１４】
2017054171.tif 000016
【図１５】
2017054171.tif 000017
【図１６】
2017054171.tif 000018
【図１７】
2017054171.tif 000019