(57)【要約】  特殊ツール（１１０１）は、クライアント装置（２０１）で動作し、クライアント装置（２０１）とサーバ（２０２）との間のプロトコルを監視する。特殊ツール（１１０１）は、サーバ（２０２）との間で情報を送受信するポート番号から、プロセスＩＤを取得する。特殊ツール（１１０１）は、ＯＳに問い合わせることで、プロセスＩＤに対応する解析ツール名を取得する。特殊ツール（１１０１）は、取得した解析ツール名から特定される解析ツール（１１１０）の動作中の解析スクリプト（１１１１）の記述内容を解析し、解析した結果に基づいて、Ｉｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを特定する。特殊ツール（１１０１）は、特定したＩｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とに基づいて、解析ツール（１１１０）の動作中の解析スクリプト（１１１１）に関するデータリネージュ（１１２０）を生成する。
2020188779.tif 000002
【特許請求の範囲】
【請求項１】
自装置で実行中のプロセスの識別子を取得する取得部と、
前記取得部によって取得された前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定する特定部と、
前記特定部によって特定された前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する解析部と、
前記解析部によって特定された前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する生成部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記解析部は、
前記スクリプトの記述内容を解析できない場合には、前記プロセスの識別子に対応するウィンドウハンドルを取得し、取得した前記ウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定し、
前記特定部は、
前記解析部によって特定された前記スクリプト名、前記入力データ名および前記出力データ名に基づいて、前記データリネージュを生成する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記解析部は、
データリネージュの生成対象となるツールを登録した辞書情報を参照して、特定された前記データ処理ツールが対象ツールであるか否かを判定し、
前記データ処理ツールが対象ツールである場合に、前記スクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する、ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記辞書情報は、前記生成対象となるツールの種別を特定する情報を含み、
前記解析部は、
前記辞書情報を参照して、前記データ処理ツールが対象ツールである場合に、前記データ処理ツールの種別に応じて、前記スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する、または、前記ウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定する、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記生成部によって生成された前記データリネージュを出力する出力部を、さらに有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記データリネージュは、前記スクリプトのスクリプト名と対応付けて、前記入力データ名と前記出力データ名とを示す情報である、ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記取得部は、
所定のプロトコルにより自装置と他装置との間で送受信される情報に基づいて、自装置で実行中のプロセスの識別子を取得する、ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記取得部は、
前記他装置との間で情報を送受信するポート番号から、自装置で実行中のプロセスの識別子を取得する、ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記取得部は、
前記他装置との間で送受信されるシステムコールの呼び出し元のプロセスの識別子を取得する、ことを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
前記生成部は、
前記解析部によって前記スクリプト名、入力データ名および出力データ名が特定されなかった場合、前記プロトコルにより自装置と前記他装置との間で送受信される情報に含まれるデータ名に基づいて、前記データ処理ツールに関するデータリネージュを生成する、ことを特徴とする請求項７に記載の情報処理装置。
【請求項１１】
自装置で実行中のプロセスの識別子を取得し、取得した前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定し、特定した前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、特定した前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する情報処理装置、
を含むことを特徴とする情報処理システム。
【請求項１２】
前記情報処理装置は、
前記スクリプトの記述内容を解析できない場合には、前記プロセスの識別子に対応するウィンドウハンドルを取得し、取得した前記ウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定し、特定した前記スクリプト名、前記入力データ名および前記出力データ名に基づいて、前記データリネージュを生成する、ことを特徴とする請求項１１に記載の情報処理システム。
【請求項１３】
自装置で実行中のプロセスの識別子を取得し、
取得した前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定し、
特定した前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、
特定した前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項１４】
前記スクリプトの記述内容を解析できない場合には、前記プロセスの識別子に対応するウィンドウハンドルを取得し、
取得した前記ウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定し、
特定した前記スクリプト名、前記入力データ名および前記出力データ名に基づいて、前記データリネージュを生成する、
処理を前記コンピュータに実行させることを特徴とする請求項１３に記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システムおよび情報処理プログラムに関する。
【背景技術】
【０００２】
従来、データ分析・処理の過程で生成されたファイルに対して、そのファイルの出所と流通経路を、ファイルの属性として記録したデータリネージュを生成する技術がある。データリネージュによれば、例えば、データ間の依存関係を可視化して、どのデータに対してどのような分析・処理を行ったのかを把握可能にすることができる。【０００３】
先行技術としては、指定されたポート情報に基づいて業務サーバからＨＴＭＬ文書を取得し、取得したＨＴＭＬ文書からタイトルを示すＴＩＴＬＥ要素を取得し、取得したＴＩＴＬＥ要素を、指定されたポート情報と一致する収集済プロセス一覧の待受ポート情報に対応付けられたプロセス識別情報のアプリケーション名として特定するものがある。また、ファイル操作の履歴をツリー構造で表示するための技術がある。【０００４】
また、ファイルサーバに格納されるファイルが削除されることを検出した場合に、ファイルを退避ファイルとして保存領域に格納し、ファイルサーバにおけるファイルの格納位置を示す情報と保存領域における退避ファイルの格納位置を示す情報とを対応づけてメタデータリポジトリに格納する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−０１２２２５号公報
【特許文献２】国際公開第２０１２／００１７６３号
【特許文献３】国際公開第２０１３／０４２２１８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、データ処理ツールによっては、データリネージュを生成することができない場合がある。例えば、特定のメタデータ管理ソフトに対応した解析ツールであれば、データ解析時にデータリネージュを自動生成することが考えられるが、特定のメタデータ管理ソフトに対応していなければ、解析ツール自体に手を加えなければ、データリネージュを生成することができない。【０００７】
一つの側面では、本発明は、データ処理ツールに手を加えることなくデータリネージュを生成することを目的とする。
【課題を解決するための手段】
【０００８】
１つの実施態様では、自装置で実行中のプロセスの識別子を取得する取得部と、前記取得部によって取得された前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定する特定部と、前記特定部によって特定された前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する解析部と、前記解析部によって特定された前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する生成部と、を有する情報処理装置が提供される。
【発明の効果】
【０００９】
本発明の一側面によれば、データ処理ツールに手を加えることなくデータリネージュを生成することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかる情報処理装置１０１の一実施例を示す説明図である。
【図２】図２は、情報処理システム２００のシステム構成例を示す説明図である。
【図３】図３は、クライアント装置２０１のハードウェア構成例を示すブロック図である。
【図４】図４は、クライアント装置２０１の機能的構成例を示すブロック図である。
【図５】図５は、辞書情報の具体例を示す説明図である。
【図６】図６は、解析スクリプトの記述内容の一例を示す説明図である。
【図７】図７は、データリネージュの具体例を示す説明図（その１）である。
【図８】図８は、ウィンドウのスクリーンショットの一例を示す説明図（その１）である。
【図９】図９は、データリネージュの具体例を示す説明図（その２）である。
【図１０】図１０は、ウィンドウのスクリーンショットの一例を示す説明図（その２）である。
【図１１】図１１は、情報処理システム２００の第１の実施例を示す説明図である。
【図１２】図１２は、クライアント装置２０１の第１のデータリネージュ生成処理手順の一例を示すフローチャート（その１）である。
【図１３】図１３は、クライアント装置２０１の第１のデータリネージュ生成処理手順の一例を示すフローチャート（その２）である。
【図１４】図１４は、情報処理システム２００の第２の実施例を示す説明図である。
【図１５】図１５は、クライアント装置２０１の第２のデータリネージュ生成処理手順の一例を示すフローチャート（その１）である。
【図１６】図１６は、クライアント装置２０１の第２のデータリネージュ生成処理手順の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１１】
以下に図面を参照して、本発明にかかる情報処理装置、情報処理システムおよび情報処理プログラムの実施の形態を詳細に説明する。
【００１２】
（実施の形態）
図１は、実施の形態にかかる情報処理装置１０１の一実施例を示す説明図である。図１において、情報処理装置１０１は、データリネージュを生成するコンピュータである。例えば、情報処理装置１０１は、ユーザが使用するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である。データ処理装置１０２は、データを処理するコンピュータである。例えば、データ処理装置１０２は、サーバである。データベース１０３は、データリネージュを格納する記憶装置である。
【００１３】
データ処理装置１０２は、情報処理装置１０１からの依頼に応じて、データをリードしたりライトしたりする。より具体的には、例えば、情報処理装置１０１は、データ処理装置１０２にアクセスして、ファイルをリードし、解析ツールを使ってデータ解析を行い、データ解析して得られたファイルをライトする。
【００１４】
データリネージュは、データがどのように生成されたのかを示す来歴情報である。データリネージュによれば、データ間の依存関係を可視化して、どのデータに対してどのような分析・処理を行い、どのデータが生成されたのかを把握可能にして、データ利活用の促進を図ることができる。
【００１５】
例えば、ある処理を試しに実行してみると結果がよかったため、同じ処理をもう一度実行したい場合がある。しかし、どのデータを入力として、どの解析ツールを使って得られた結果であるかがわからないと、同じ処理を再現することが難しい。このような場合に、データリネージュがあれば、どのデータに対してどのような処理を行い、どのデータが生成されたのかを把握できるため、同じ処理を再現しやすくなる。
【００１６】
ここで、特定のメタデータ管理ソフトのデータ形式やプロトコルに対応した解析ツールであれば、解析ツールが、データ解析をしたときにデータリネージュを自動生成して、メタデータ管理ソフトに登録する機能を持たせることが考えられる。しかし、特定のメタデータ管理ソフトに対応した解析ツールを使用しなければ、データリネージュを登録することができない。
【００１７】
また、使いたい解析ツールが特定のメタデータ管理ソフトに対応したものでなければ、その解析ツールを、データリネージュを登録できるように改造することも考えられる。しかしながら、データリネージュを登録できるように解析ツールに手を加える必要があり、設計者の手間や時間が発生する。
【００１８】
また、ファイルシステムでは、どのファイルがリード・ライトされたのかを特定することができる。このため、ファイルシステムにリードされたファイルとライトされたファイルとを対応付けた情報を登録する機能を持たせて、データリネージュを生成することが考えられる。しかし、どの解析ツールのどの解析スクリプトによって生成されたファイルであるかを特定する情報を生成することができない。
【００１９】
このため、どのような解析ツールを使って作業をしたとしても、解析ツールのスクリプトと入出力データとを対応付けたデータリネージュを自動生成することができるようなシステムが望まれる。また、クライアント側で解析ツールを動作させて、ＩｎｐｕｔとＯｕｔｐｕｔに使用したファイルを特定して、データリネージュを作成したいという要望がある。
【００２０】
そこで、本実施の形態では、データ処理ツールに手を加えることなく、スクリプトと入出力データとを対応付けたデータリネージュを自動生成する情報処理装置１０１について説明する。以下、情報処理装置１０１の処理例について説明する。
【００２１】
（１）情報処理装置１０１は、自装置で実行中のプロセスの識別子を取得する。具体的には、例えば、情報処理装置１０１は、所定のプロトコルにより自装置とデータ処理装置１０２との間で送受信される情報に基づいて、自装置で実行中のプロセスの識別子を取得する。所定のプロトコルは、情報処理装置１０１とデータ処理装置１０２との間で情報をやり取りする際に用いられる通信プロトコルである。
【００２２】
プロトコルとしては、例えば、ＷｅｂＤＡＶ（Ｗｅｂ−ｂａｓｅｄ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ａｕｔｈｏｒｉｎｇ  ａｎｄ  Ｖｅｒｓｉｏｎｉｎｇ）プロトコルを用いることができる。ＷｅｂＤＡＶプロトコルは、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を拡張したファイル共有プロトコルの一種である。
【００２３】
プロセスの識別子は、情報処理装置１０１で実行中のプロセスを一意に識別する情報であり、例えば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から付与されるプロセスＩＤ（ＰＩＤ）である。より詳細に説明すると、例えば、情報処理装置１０１は、データ処理装置１０２との間で情報を送受信するポート番号から、プロセスＩＤを取得することにしてもよい。
【００２４】
なお、所定のプロトコルにより情報処理装置１０１とデータ処理装置１０２との間で送受信される情報には、例えば、データ処理ツール、スクリプト、入力データ、出力データに関する各種情報（データ本体、データ名など）が含まれる。ただし、プロトコルを監視するだけでは、どのデータが、どのデータ処理ツールのどのスクリプトに対応しているのかは特定できない。
【００２５】
（２）情報処理装置１０１は、取得したプロセスの識別子に基づいて、当該プロセスに対応するデータ処理ツールを特定する。ここで、データ処理ツールは、データを処理するソフトウェアである。例えば、データ処理ツールは、入力されたデータの解析を行う解析ツールである。
【００２６】
データ処理ツールは、実行時はＯＳ上のプロセスとして存在する。このため、情報処理装置１０１は、例えば、タスクマネージャ等を使用してＯＳに問い合わせることで、プロセスＩＤに対応するソフトウェア名（例えば、ツール名）を取得する。これにより、プロセスＩＤに対応するソフトウェア名から、データ処理ツールを特定することができる。
【００２７】
図１の例では、プロセスＩＤから、情報処理装置１０１で実行中のデータ処理ツールＴＬが特定された場合を想定する。
【００２８】
（３）情報処理装置１０１は、特定したデータ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する。ここで、スクリプトとは、どのようなデータを、どのように処理するかが記述されたプログラムである。
【００２９】
データ処理ツールは、スクリプトの内容によって処理を変更し、スクリプトによって処理を実行する。入力データ名は、データ処理ツールのスクリプトに入力されたデータ（入力データ）の名称である。出力データ名は、データ処理ツールのスクリプトで入力データを処理した結果得られたデータ（出力データ）の名称である。
【００３０】
具体的には、例えば、情報処理装置１０１は、特定したデータ処理ツールの動作中のスクリプトを読み込む。スクリプトの格納場所は、例えば、データ処理ツールのスクリプトごとに、当該スクリプトの格納場所を示す情報から特定することができる。なお、データ処理ツールのスクリプトは、情報処理装置１０１に予め格納されているものもあれば、実行時にデータ処理装置１０２から取得して情報処理装置１０１に格納されるものもある。
【００３１】
つぎに、情報処理装置１０１は、読み込んだスクリプトの記述内容を解析する。そして、情報処理装置１０１は、解析した結果に基づいて、スクリプトに記述された入力データ名と出力データ名とを特定する。すなわち、情報処理装置１０１は、スクリプトの中身（ソースコード）を解析して、入力となるデータの名称と、当該データを処理した結果得られるデータの名称とを特定する。
【００３２】
図１の例では、データ処理ツールＴＬの動作中のスクリプトｓｃの記述内容を解析した結果に基づいて、入力データ名Ｘと出力データ名Ｙとが特定された場合を想定する。
【００３３】
（４）情報処理装置１０１は、特定した入力データ名と出力データ名とに基づいて、特定されたデータ処理ツールの動作中のスクリプトに関するデータリネージュを生成する。具体的には、例えば、情報処理装置１０１は、データ処理ツールの動作中のスクリプトの情報と対応付けて、特定した入力データ名と出力データ名とを示すデータリネージュを生成する。
【００３４】
スクリプトの情報は、例えば、スクリプト名である。スクリプト名は、例えば、情報処理装置１０１で動作中のスクリプト（現在開いているファイル）のファイル名から特定することができる。また、スクリプトの情報には、データ処理ツールのツール名が含まれていてもよい。
【００３５】
図１の例では、データ処理ツールＴＬの動作中のスクリプトｓｃの情報と対応付けて、入力データ名Ｘと出力データ名Ｙとを示すデータリネージュ１１０が生成される。生成されたデータリネージュ１１０は、例えば、データベース１０３に登録される。
【００３６】
このように、情報処理装置１０１によれば、データ処理ツールに手を加えることなく、スクリプトと入出力データとを対応付けたデータリネージュを自動生成することができる。図１の例では、データ処理ツールＴＬが特定のメタデータ管理ソフトに対応していない場合であっても、データ処理ツールＴＬの動作中のスクリプトｓｃの中身を解析して、スクリプトｓｃと入力データＸと出力データＹとを対応付けたデータリネージュ１１０を生成することができる。
【００３７】
これにより、どのデータ（入力データＸ）に対して、どのような解析（スクリプトｓｃ）が行われ、どのデータ（出力データＹ）が生成されたのかを把握可能にして、データ利活用の促進を図ることができる。例えば、データに対する利点として、機械学習で使用・生成されたデータや学習モデルが、何のために利用されたものであるかを把握可能にすることができる。また、データ処理ツールに対する利点としては、データベースのバージョンアップにともなうＳＱＬ文の変更や、どういう変換を行っているかを可視化して、デバッグしやすくすることができる。
【００３８】
（情報処理システム２００のシステム構成例）
つぎに、実施の形態にかかる情報処理システム２００のシステム構成例について説明する。ここでは、図１に示した情報処理装置１０１を、クライアント装置２０１に適用した場合を例に挙げて説明する。情報処理システム２００は、例えば、社内に蓄えられたデータやツールを利用してデータ解析を行うためのコンピュータシステムに適用される。
【００３９】
図２は、情報処理システム２００のシステム構成例を示す説明図である。図２において、情報処理システム２００は、クライアント装置２０１と、サーバ２０２と、メタデータ管理サーバ２０３と、を含む。情報処理システム２００において、クライアント装置２０１、サーバ２０２およびメタデータ管理サーバ２０３は、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００４０】
ここで、クライアント装置２０１は、情報処理システム２００のユーザが使用するコンピュータである。ユーザは、例えば、データサイエンティストや事業部門の社員などである。例えば、クライアント装置２０１は、ＰＣ、タブレットＰＣなどである。
【００４１】
サーバ２０２は、クライアント装置２０１からの依頼に応じて、データをリードしたりライトしたりする。例えば、クライアント装置２０１は、サーバ２０２にアクセスして、ファイルをリードし、解析ツールを使ってデータ解析を行い、解析して得られたデータをライトすることができる。図１に示したデータ処理装置１０２は、例えば、サーバ２０２に相当する。
【００４２】
メタデータ管理サーバ２０３は、メタデータリポジトリ２２０を有し、データリネージュを管理する。メタデータリポジトリ２２０は、データリネージュを格納するデータベースである。図１に示したデータベース１０３は、例えば、メタデータリポジトリ２２０に相当する。サーバ２０２およびメタデータ管理サーバ２０３は、例えば、アプリケーションサーバ、ウェブサーバ、データベースサーバなどにより実現される。
【００４３】
なお、ここでは、クライアント装置２０１、サーバ２０２およびメタデータ管理サーバ２０３を、それぞれ別々のコンピュータにより実現することにしたが、これに限らない。例えば、クライアント装置２０１、サーバ２０２およびメタデータ管理サーバ２０３は、１台のコンピュータにより実現されることにしてもよい。
【００４４】
（クライアント装置２０１のハードウェア構成例）
つぎに、クライアント装置２０１のハードウェア構成例について説明する。
【００４５】
図３は、クライアント装置２０１のハードウェア構成例を示すブロック図である。図３において、クライアント装置２０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスプレイ３０４と、入力装置３０５と、可搬型記録媒体Ｉ／Ｆ３０６と、を有する。また、各構成部はバス３００によってそれぞれ接続される。
【００４６】
ここで、ＣＰＵ３０１は、クライアント装置２０１の全体の制御を司る。ＣＰＵ３０１は、複数のコアを有していてもよい。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する記憶部である。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４７】
通信Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して外部のコンピュータ（例えば、サーバ２０２、メタデータ管理サーバ２０３）に接続される。そして、通信Ｉ／Ｆ３０３は、ネットワーク２１０と自装置内部とのインターフェースを司り、外部装置からのデータの入出力を制御する。
【００４８】
ディスプレイ３０４は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する表示装置である。ディスプレイ３０４としては、例えば、液晶ディスプレイや有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどを採用することができる。
【００４９】
入力装置３０５は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置３０５は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００５０】
可搬型記録媒体Ｉ／Ｆ３０６は、ＣＰＵ３０１の制御に従って可搬型記録媒体３０７に対するデータのリード／ライトを制御する。可搬型記録媒体３０７は、可搬型記録媒体Ｉ／Ｆ３０６の制御で書き込まれたデータを記憶する。可搬型記録媒体３０７としては、例えば、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリなどが挙げられる。
【００５１】
なお、クライアント装置２０１は、上述した構成部のほかに、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ、スキャナ、プリンタなどを有することにしてもよい。また、図２に示したサーバ２０２、メタデータ管理サーバ２０３についても、クライアント装置２０１と同様のハードウェア構成により実現することができる。ただし、サーバ２０２、メタデータ管理サーバ２０３は、ディスプレイ３０４や入力装置３０５を有していなくてもよい。
【００５２】
（クライアント装置２０１の機能的構成例）
図４は、クライアント装置２０１の機能的構成例を示すブロック図である。図４において、クライアント装置２０１は、取得部４０１と、特定部４０２と、解析部４０３と、生成部４０４と、出力部４０５と、を含む。具体的には、例えば、取得部４０１〜出力部４０５は、図３に示したメモリ３０２、可搬型記録媒体３０７などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、通信Ｉ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ３０２に記憶される。
【００５３】
取得部４０１は、自装置で実行中のプロセスの識別子を取得する。具体的には、例えば、取得部４０１は、所定のプロトコルにより自装置とサーバ２０２との間で送受信される情報に基づいて、自装置で実行中のプロセスの識別子を取得する。所定のプロトコルとしては、例えば、ＷｅｂＤＡＶプロトコルやシステムコールプロトコルを用いることができる。
【００５４】
ＷｅｂＤＡＶプロトコルは、ＨＴＴＰを拡張したファイル共有プロトコルの一種であり、ＯＳからサーバ上のディレクトリをマウントすることができるようになる。システムコールプロトコルは、ＯＳの機能を呼び出すための機構であるシステムコールを利用するプロトコルであり、ハードウェアを意識せずにコンピュータを使うことができる。
【００５５】
クライアント装置２０１とサーバ２０２との間で送受信される情報には、例えば、データ処理ツール、スクリプト、入力データ、出力データに関する各種情報が含まれる。例えば、スクリプトに関する情報は、スクリプトのデータ本体（ソースコードまたはバイナリデータ）やスクリプト名などである。入力データに関する情報は、サーバ２０２からクライアント装置２０１に送信されたＩｎｐｕｔファイルのデータ本体やファイル名などである。出力データに関する情報は、クライアント装置２０１からサーバ２０２に送信されたＯｕｔｐｕｔデータのデータ本体やファイル名などである。
【００５６】
例えば、所定のプロトコルとして、ＷｅｂＤＡＶプロトコルを利用するとする。この場合、取得部４０１は、例えば、ｎｅｔｓｔａｔ等のコマンドを使用して、サーバ２０２との間で情報を送受信するポート番号から、プロセスＩＤを取得する。プロセスＩＤは、現在実行されているプロセスを一意に識別するためにＯＳによって付与される識別子である。
【００５７】
なお、ＷｅｂＤＡＶをＷｉｎｄｏｗｓの仮想ファイルシステムフレームワーク（Ｉｎｓｔａｌｌａｂｌｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、Ｓｈｅｌｌ  ｎａｍｅｓｐａｃｅ  ｅｘｔｅｎｓｉｏｎｓ）で開発した場合、取得部４０１は、例えば、シェル拡張ハンドラによりプロセスＩＤを取得することにしてもよい。この場合、ＴＣＰコネクションのポート番号によらずに、プロセスＩＤを知ることができる。
【００５８】
また、所定のプロトコルとして、システムコールプロトコルを利用するとする。この場合、取得部４０１は、例えば、特定のシステムコールの呼び出し元のプロセスＩＤを取得する。特定のシステムコールは、例えば、Ｏｐｅｎ、Ｒｅａｄ、Ｗｒｉｔｅなどのシステムコールである。
【００５９】
特定部４０２は、取得されたプロセスの識別子に基づいて、当該プロセスに対応するデータ処理ツールを特定する。ここで、データ処理ツールは、データを処理するソフトウェアであり、例えば、データの解析を行う解析ツールである。
【００６０】
以下の説明では、データ処理ツールを「解析ツール」と表記し、データ処理ツールのスクリプトを「解析スクリプト」と表記する場合がある。
【００６１】
具体的には、例えば、特定部４０２は、タスクマネージャやｐｓコマンド等を使用してＯＳに問い合わせることで、プロセスＩＤに対応する解析ツール名を取得する。これにより、プロセスＩＤに対応する解析ツール名から、クライアント装置２０１で実行中の解析ツールを特定することができる。
【００６２】
解析部４０３は、特定された解析ツールの動作中の解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する。ここで、解析スクリプトは、どのようなファイルを、どのように処理するかが記述されたプログラムである。解析スクリプトは、例えば、１または複数のファイルによって構成される。
【００６３】
具体的には、例えば、解析部４０３は、特定された解析ツールの動作中の解析スクリプトを読み込む。より詳細に説明すると、例えば、解析部４０３は、ツール管理情報を参照して、特定された解析ツール名に対応する解析スクリプト名を特定する。
【００６４】
ここで、ツール管理情報は、解析ツールに対応する１または複数の解析スクリプトに関する情報を含む。例えば、ツール管理情報は、解析ツールの解析ツール名と、当該解析ツールの解析スクリプトの解析スクリプト名と、当該解析スクリプトの格納場所との対応関係を示す。ツール管理情報は、例えば、予め作成されてメモリ３０２に記憶されている。
【００６５】
また、解析部４０３は、自装置で現在実行中のファイル（現在開いているファイル）のファイル名を特定する。そして、解析部４０３は、特定した解析ツール名に対応する解析スクリプト名のうち、特定したファイル名と一致する解析スクリプト名を、特定された解析ツールの動作中の解析スクリプトの名称として特定する。
【００６６】
つぎに、解析部４０３は、ツール管理情報を参照して、特定した解析スクリプトの格納場所を特定する。そして、解析部４０３は、特定した格納場所から解析スクリプトを読み込む。これにより、クライアント装置２０１上で複数のファイルが開かれている状況であっても、特定部４０２によって特定された解析ツールの動作中の解析スクリプトの情報（例えば、ソースコード）を取得することができる。
【００６７】
つぎに、解析部４０３は、読み込んだ解析スクリプトの記述内容（ソースコード）を解析する。そして、解析部４０３は、解析した結果に基づいて、解析スクリプトに記述されたＩｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを特定する。Ｉｎｐｕｔファイル名は、解析ツールに入力されるＩｎｐｕｔファイルの名称（入力データ名）である。Ｏｕｔｐｕｔファイル名は、解析ツールでＩｎｐｕｔファイルを処理した結果得られるＯｕｔｐｕｔファイルの名称（出力データ名）である。
【００６８】
なお、解析スクリプトの記述内容から入力データ名（Ｉｎｐｕｔファイル名）と出力データ名（Ｏｕｔｐｕｔファイル名）とを特定する際の処理例については、図６および図７を用いて後述する。
【００６９】
ただし、解析スクリプトの記述内容を解析できない場合がある。例えば、解析ツールがクローズドソースの場合、ソースコードを非公開とし、バイナリデータのみが配布される。解析スクリプトがバイナリデータの場合、解析スクリプトを解析してＩｎｐｕｔ／Ｏｕｔｐｕｔファイル名を特定することができない。また、解析スクリプトの格納場所を特定できなかった場合も、解析スクリプトの記述内容を解析することができない。
【００７０】
ここで、解析ツールがＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）でウィンドウのインターフェースを持つ場合がある。この場合、ウィンドウには、例えば、解析スクリプト名、Ｉｎｐｕｔファイル名、Ｏｕｔｐｕｔファイル名が表示される場合がある。
【００７１】
そこで、解析部４０３は、解析スクリプトの記述内容を解析できない場合には、取得されたプロセスの識別子に対応するウィンドウハンドルを取得することにしてもよい。そして、解析部４０３は、取得したウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。
【００７２】
ここで、ウィンドウハンドルとは、画面に表示されているウィンドウを識別する識別子である。ウィンドウ内の情報を認識した結果は、例えば、ウィンドウの画像をＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）処理して認識した結果である。ＯＣＲ処理とは、画像を解析して文字や記号を認識する処理である。また、ウィンドウ内の情報を認識した結果は、Ｗｉｎ３２  ＡＰＩのＧｅｔＷｉｎｄｏｗＴｅｘｔなどで、ウィンドウ内の情報を取得して認識した結果であってもよい。
【００７３】
具体的には、例えば、解析部４０３は、取得されたプロセスＩＤに基づいて、ＯＳに問い合わせることで、当該プロセスＩＤに対応するウィンドウハンドルを取得する。つぎに、解析部４０３は、取得したウィンドウハンドルから特定されるＧＵＩのウィンドウのスクリーンショットを取得する。そして、解析部４０３は、取得したスクリーンショットをＯＣＲ処理して認識した結果に基づいて、解析スクリプト名、Ｉｎｐｕｔファイル名およびＯｕｔｐｕｔファイル名を特定する。
【００７４】
より詳細に説明すると、例えば、解析部４０３は、ウィンドウに表示された文字列「ファイル」を特定し、特定した文字列「ファイル」に対応する文字列をファイル名として特定する。また、解析部４０３は、ウィンドウに表示された文字列「スクリプト」を特定し、特定した文字列「スクリプト」に対応する文字列をファイル名として特定する。各文字列「ファイル」、「スクリプト」に対応する文字列は、例えば、ウィンドウ上での位置によって特定される。
【００７５】
ただし、解析スクリプト名については、例えば、ウィンドウを起動する操作から特定されることにしてもよい。例えば、解析ツールが「メールソフト」である場合に、ユーザの操作入力によって「返信」を起動する動作が行われたとする。この場合、解析部４０３は、解析スクリプト名として「返信」を特定する。
【００７６】
また、解析部４０３は、複数のウィンドウハンドルが取得された場合には、例えば、複数のウィンドウハンドルそれぞれから特定されるウィンドウごとに、当該ウィンドウのスクリーンショットを取得する。そして、解析部４０３は、取得したスクリーンショットごとに、当該スクリーンショットをＯＣＲ処理して認識した結果に基づいて、各種ファイル名を特定する。
【００７７】
なお、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から入力データ名（Ｉｎｐｕｔファイル名）と出力データ名（Ｏｕｔｐｕｔファイル名）とを特定する際の処理例については、図８および図９を用いて後述する。
【００７８】
上述したように、例えば、解析ツールがクローズドソースであったり、ＧＵＩベースのソフトウェアでない場合には、解析スクリプトの記述内容や、ウィンドウの画像をＯＣＲ処理して認識した結果から、入力データ名や出力データ名を特定することができない。
【００７９】
このため、解析スクリプトの中身を解析可能な解析ツールや、ＧＵＩベースの解析ツールを、データリネージュの生成対象となるソフトウェアとして、予め辞書に登録しておくことにしてもよい。データリネージュの生成対象となるツール名を登録した辞書情報の具体例について説明する。
【００８０】
図５は、辞書情報の具体例を示す説明図である。図５において、対象ツール辞書５００は、データリネージュの生成対象となるツール名を登録した辞書情報の具体例である。対象ツール辞書５００は、ツール名、スクリプト解析フラグおよびＯＣＲ解析フラグのフィールドを有し、各フィールドに情報を設定することで、対象ツール情報（例えば、対象ツール情報５００−１，５００−２）をレコードとして記憶する。
【００８１】
ここで、ツール名は、データリネージュの生成対象となるツールの名称を示す。スクリプト解析フラグは、解析スクリプトの記述内容を解析可能であるか否かを示す情報である。ここでは、スクリプト解析フラグ「○」は、解析スクリプトの記述内容を解析可能であることを示す。スクリプト解析フラグ「×」は、解析スクリプトの記述内容を解析できないことを示す。
【００８２】
ＯＣＲ解析フラグは、ＧＵＩベースのソフトウェアであるか否かを示す情報である。ここでは、ＯＣＲ解析フラグ「○」は、ＧＵＩベースのソフトウェアであり、ＯＣＲ解析可能であることを示す。ＯＣＲ解析フラグ「×」は、ＧＵＩベースのソフトウェアではなく、ＯＣＲ解析できないことを示す。
【００８３】
スクリプト解析フラグおよびＯＣＲ解析フラグは、データリネージュの生成対象となるツールの種別を特定する情報の一例である。すなわち、スクリプト解析フラグおよびＯＣＲ解析フラグの組み合わせによって、データリネージュの生成対象となるツールが、解析スクリプトの記述内容を解析可能なツールであるか、ＯＣＲ解析が可能なツールであるかという種別を特定することができる。
【００８４】
例えば、対象ツール情報５００−１は、ツール名「Ｊｕｐｙｔｅｒ  Ｎｏｔｅｂｏｏｋ」の解析ツールが、解析スクリプトの記述内容を解析可能であるが、ＧＵＩベースのソフトウェアではないためＯＣＲ解析できない種別のツールであることを示す。
【００８５】
なお、対象ツール情報には、スクリプト解析フラグおよびＯＣＲ解析フラグが含まれていなくてもよい。すなわち、対象ツール情報は、データリネージュの生成対象となるツール名のみを示す情報であってもよい。対象ツール辞書５００は、予め作成されてメモリ３０２に記憶されている。
【００８６】
図４の説明に戻り、解析部４０３は、例えば、図５に示した対象ツール辞書５００を参照して、特定された解析ツールが対象ツールであるか否かを判定することにしてもよい。そして、解析部４０３は、解析ツールが対象ツールである場合に、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する、または、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。一方、解析ツールが対象ツールではない場合には、解析部４０３は、スクリプト名、入力データ名および出力データ名を特定しないことにしてもよい。
【００８７】
より具体的には、例えば、解析部４０３は、対象ツール辞書５００を参照して、特定された解析ツールのスクリプト解析フラグが「○」の場合、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定することにしてもよい。また、解析部４０３は、特定された解析ツールのＯＣＲ解析フラグが「○」の場合、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。また、解析部４０３は、特定された解析ツールの解析ツール名が対象ツール辞書５００に未登録の場合には、入力データ名等を特定しない。
【００８８】
生成部４０４は、解析部４０３によって特定された入力データ名と出力データ名とに基づいて、特定部４０２によって特定された解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する。ここで、データリネージュは、データがどのように生成されたのかを示す来歴情報である。
【００８９】
具体的には、例えば、生成部４０４は、解析スクリプト名と対応付けて、Ｉｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを示すデータリネージュを生成する。解析スクリプト名は、例えば、クライアント装置２０１で動作中の解析スクリプト（現在開いているファイル）のファイル名から特定されたもの、または、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から特定されたものである。データリネージュには、例えば、解析ツール名、解析スクリプトのデータ本体、Ｉｎｐｕｔファイルのデータ本体、Ｏｕｔｐｕｔファイルのデータ本体が含まれていてもよい。
【００９０】
データリネージュの具体例については、図７および図９を用いて後述する。
【００９１】
出力部４０５は、生成されたデータリネージュを出力する。出力部４０５の出力形式としては、例えば、メモリ３０２への記憶、通信Ｉ／Ｆ３０３による他のコンピュータへの送信、ディスプレイ３０４への表示、不図示のプリンタへの印刷出力などがある。
【００９２】
具体的には、例えば、出力部４０５は、生成されたデータリネージュを、メタデータ管理サーバ２０３に送信する。メタデータ管理サーバ２０３は、クライアント装置２０１からデータリネージュを受信すると、受信したデータリネージュをメタデータリポジトリ２２０に格納する。
【００９３】
なお、解析スクリプトの記述内容と、ウィンドウの画像をＯＣＲ処理して認識した結果のいずれからも、入力データ名と出力データ名を特定することができない場合がある。この場合、生成部４０４は、自装置とサーバ２０２との間で送受信される情報に含まれる入力データ名と出力データ名とを特定することにしてもよい。そして、生成部４０４は、特定された解析ツール名と、特定した入力データ名と出力データ名とを含むデータリネージュを生成することにしてもよい。
【００９４】
これにより、解析スクリプトとの対応関係はわからなくても、解析ツールに対応する入力データと出力データを特定可能なデータリネージュを生成することができる。
【００９５】
なお、上述した説明では、解析部４０３は、解析スクリプトの記述内容を解析できない場合に、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしたが、これに限らない。例えば、解析スクリプトの記述内容を解析する前に、解析部４０３は、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。そして、解析部４０３は、ウィンドウの画像をＯＣＲ処理して認識した結果から、スクリプト名、入力データ名および出力データ名を特定できない場合に、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定することにしてもよい。
【００９６】
（入力データ名と出力データ名とを特定する際の第１の処理例）
つぎに、図６および図７を用いて、解析スクリプトの記述内容から、入力データ名と出力データ名とを特定する際の処理例について説明する。
【００９７】
図６は、解析スクリプトの記述内容の一例を示す説明図である。図６において、解析スクリプト６００の記述内容（ソースコード）が示されている。解析スクリプト６００のファイル名は、「Ａｎａｌｙｚｅ＿ｆｒｕｉｔ．ｉｐｙｎｂ」である。なお、図６では、解析スクリプト６００の記述内容の一部を抜粋して表示している。
【００９８】
この場合、解析部４０３は、解析スクリプト６００の記述内容を解析して、例えば、コード６０１〜６０３から、パス名を検出することで、Ｉｎｐｕｔファイル名「ｔｅｓｔｄａｔａ．ｃｓｖ」を特定する。また、解析部４０３は、解析スクリプト６００の記述内容を解析して、例えば、コード６０４〜６０６から、パス名を検出することで、Ｏｕｔｐｕｔファイル名「ｒｅｓｕｌｔ．ｃｓｖ」を特定する。
【００９９】
この場合、生成部４０４は、特定されたＩｎｐｕｔファイル名「ｔｅｓｔｄａｔａ．ｃｓｖ」と、Ｏｕｔｐｕｔファイル名「ｒｅｓｕｌｔ．ｃｓｖ」とに基づいて、解析スクリプト６００に関するデータリネージュを生成する。具体的には、例えば、生成部４０４は、図７に示すようなデータリネージュ７００を生成する。
【０１００】
図７は、データリネージュの具体例を示す説明図（その１）である。図７において、データリネージュ７００は、Ｉｎｐｕｔ情報７０１と、スクリプト情報７０２と、Ｏｕｔｐｕｔ情報７０３とを含む。ここで、Ｉｎｐｕｔ情報７０１は、Ｉｎｐｕｔファイル名「ｔｅｓｔｄａｔａ．ｃｓｖ」を示す。スクリプト情報７０２は、解析スクリプト６００（図６参照）の解析スクリプト名「Ａｎａｌｙｚｅ＿ｆｒｕｉｔ．ｉｐｙｎｂ」を示す。Ｏｕｔｐｕｔ情報７０３は、Ｏｕｔｐｕｔファイル名「ｒｅｓｕｌｔ．ｃｓｖ」を示す。
【０１０１】
データリネージュ７００によれば、データ間の依存関係を可視化して、解析スクリプト「Ａｎａｌｙｚｅ＿ｆｒｕｉｔ．ｉｐｙｎｂ」に、ファイル「ｔｅｓｔｄａｔａ．ｃｓｖ」を入力して解析を行った結果、ファイル「ｒｅｓｕｌｔ．ｃｓｖ」が生成されたことを把握することができる。なお、クライアント装置２０１は、解析スクリプト６００の記述内容を解析した結果から特定した、ＩｎｐｕｔファイルおよびＯｕｔｐｕｔファイルのパス名をデータリネージュ７００に含めることにしてもよい。
【０１０２】
（入力データ名と出力データ名とを特定する際の第２の処理例）
つぎに、図８および図９を用いて、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から、入力データ名と出力データ名とを特定する際の処理例について説明する。ここでは、解析ツールが、線をつないで計算フローを作成して実行するようなＧＵＩを含むソフトウェアである場合を想定する。
【０１０３】
図８は、ウィンドウのスクリーンショットの一例を示す説明図（その１）である。図８において、スクリーンショット８００は、プロセスＩＤに対応するウィンドウハンドルから特定されたウィンドウの画像であり、図形８０１〜８０４を含む。ここでは、図形８０１，８０２が矢印線で図形８０３につながれており、図形８０４が矢印線で図形８０３につながれている。
【０１０４】
ここで、図形８０１，８０２は、矢印線８０５，８０６の向きから、スクリプトに入力されるファイルを表す。図形８０３は、スクリプトを表す。図形８０４は、矢印線８０７の向きから、スクリプトから出力されるファイルを表す。この場合、解析部４０３は、スクリーンショット８００をＯＣＲ処理して認識した結果に基づいて、Ｉｎｐｕｔファイル名「天気情報．ｔｘｔ」およびＩｎｐｕｔファイル名「ＣＭ視聴率．ｃｓｖ」を特定する。
【０１０５】
また、解析部４０３は、スクリーンショット８００をＯＣＲ処理して認識した結果に基づいて、解析スクリプト名「解析スクリプトＡ．ｐｙ」を特定する。また、解析部４０３は、スクリーンショット８００をＯＣＲ処理して認識した結果に基づいて、Ｏｕｔｐｕｔファイル名「予測客数」を特定する。
【０１０６】
より詳細に説明すると、例えば、解析部４０３は、ウィンドウに表示された文字列「ファイル」を特定し、特定した文字列「ファイル」に対応する文字列「天気情報．ｔｘｔ」、「ＣＭ視聴率．ｃｓｖ」および「予測客数」をファイル名としてそれぞれ特定する。また、解析部４０３は、ウィンドウに表示された文字列「スクリプト」を特定し、特定した文字列「スクリプト」に対応する文字列「解析スクリプトＡ．ｐｙ」をファイル名として特定する。
【０１０７】
また、Ｉｎｐｕｔファイル名またはＯｕｔｐｕｔファイル名は、ウィンドウ上での各ファイル名の位置関係から特定することにしてもよい。例えば、解析部４０３は、ウィンドウ上で解析スクリプト名「解析スクリプトＡ．ｐｙ」よりも左側に位置するファイル名「天気情報．ｔｘｔ」および「ＣＭ視聴率．ｃｓｖ」を、Ｉｎｐｕｔファイル名として特定する。また、解析部４０３は、ウィンドウ上で解析スクリプト名「解析スクリプトＡ．ｐｙ」よりも右側に位置するファイル名「予測客数」を、Ｏｕｔｐｕｔファイル名として特定する。
【０１０８】
また、解析部４０３は、パターンマッチング等の技術を利用して、図形８０１〜８０４と矢印線８０５〜８０７を検出することにしてもよい。この場合、解析部４０３は、例えば、矢印線８０５〜８０７の向きから、各図形８０１，８０２，８０４内のファイル名が、Ｉｎｐｕｔファイル名またはＯｕｔｐｕｔファイル名のいずれであるかを判断することにしてもよい。なお、図８中、「［データ解析ソフトウェアα］客数予測」は、解析ツール名に相当する。
【０１０９】
生成部４０４は、特定されたＩｎｐｕｔファイル名「天気情報．ｔｘｔ」、Ｉｎｐｕｔファイル名「ＣＭ視聴率．ｃｓｖ」、解析スクリプト名「解析スクリプトＡ．ｐｙ」およびＯｕｔｐｕｔファイル名「予測客数」に基づいて、解析スクリプト「解析スクリプトＡ．ｐｙ」に関するデータリネージュを生成する。具体的には、例えば、生成部４０４は、図９に示すようなデータリネージュ９００を生成する。
【０１１０】
図９は、データリネージュの具体例を示す説明図（その２）である。図９において、データリネージュ９００は、Ｉｎｐｕｔ情報９０１，９０２と、スクリプト情報９０３と、Ｏｕｔｐｕｔ情報９０４とを含む。ここで、Ｉｎｐｕｔ情報９０１は、Ｉｎｐｕｔファイル名「天気情報．ｔｘｔ」を示す。Ｉｎｐｕｔ情報９０２は、Ｉｎｐｕｔファイル名「ＣＭ視聴率．ｃｓｖ」を示す。スクリプト情報９０３は、解析スクリプト名「解析スクリプトＡ．ｐｙ」を示す。Ｏｕｔｐｕｔ情報９０４は、Ｏｕｔｐｕｔファイル名「予測客数」を示す。
【０１１１】
また、データリネージュ９００は、実行履歴情報９１０を含む。実行履歴情報９１０は、実行時刻「２０１９／２／１０／８：００」と実行者「山田」とを示す。実行時刻「２０１９／２／１０／８：００」は、解析スクリプト「解析スクリプトＡ．ｐｙ」が実行された日時を示す。実行者「山田」は、解析スクリプト「解析スクリプトＡ．ｐｙ」を実行したユーザ（例えば、ログインユーザ）を示す。
【０１１２】
データリネージュ９００によれば、データ間の依存関係を可視化して、解析スクリプト「解析スクリプトＡ．ｐｙ」に、ファイル「天気情報．ｔｘｔ」およびファイル「ＣＭ視聴率．ｃｓｖ」を入力して解析を行った結果、ファイル「予測客数」が生成されたことを把握することができる。また、データリネージュ９００によれば、解析スクリプト「解析スクリプトＡ．ｐｙ」の実行時刻「２０１９／２／１０／８：００」および実行者「山田」を把握することができる。
【０１１３】
（入力データ名と出力データ名とを特定する際の第３の処理例）
つぎに、図１０を用いて、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から、入力データ名と出力データ名とを特定する際の処理例について説明する。ここでは、解析ツールがメールソフトである場合を想定し、「返信」を起動する動作を解析とみなして、返信メールのソース（Ｉｎｐｕｔ）となる受信メールを特定する場合について説明する。
【０１１４】
図１０は、ウィンドウのスクリーンショットの一例を示す説明図（その２）である。図１０において、スクリーンショット１０００は、プロセスＩＤに対応するウィンドウハンドルから特定されたウィンドウの画像であり、返信メールを作成するための操作画面を示している。
【０１１５】
この場合、解析部４０３は、スクリーンショット１０００をＯＣＲ処理して認識した結果に基づいて、返信メールの件名「ＲＥ：［ｘｘｘ開発プロジェクト］」を特定する（図１０中、符号１００１に対応）。また、解析部４０３は、返信メールの件名「ＲＥ：［ｘｘｘ開発プロジェクト］」から「ＲＥ：」を除いた部分を、返信メールのソースとなる受信メールの件名「［ｘｘｘ開発プロジェクト］」として特定する。
【０１１６】
この場合、生成部４０４は、例えば、特定された受信メールの件名「［ｘｘｘ開発プロジェクト］」と、返信メールの件名「ＲＥ：［ｘｘｘ開発プロジェクト］」とを対応付けた、解析スクリプト「返信」に関するデータリネージュを生成する。
【０１１７】
この際、生成部４０４は、受信メール、返信メールそれぞれのファイルパスを、受信メール、返信メールそれぞれの件名に対応付けることにしてもよい。受信メール、返信メールそれぞれのファイルパスは、例えば、サーバ２０２との間で送受信される情報から件名とともに特定される。ただし、返信メールのファイルパスは、実際に返信メールが送信されたタイミングで特定される。
【０１１８】
これにより、解析ツール（メールソフト）に手を加えずに、返信メールのソースとなるメールを特定することが可能となる。なお、ここでは、ウィンドウを起動する操作から解析スクリプト「返信」を特定することにしたが、これに限らない。例えば、解析スクリプト名がウィンドウ名（画面名）に含まれる場合がある。このため、解析部４０３は、画面をＯＣＲ処理して認識した結果に基づいて、画面名を検出することで、解析スクリプト名を特定することにしてもよい。
【０１１９】
（クライアント装置２０１の情報処理手順）
つぎに、クライアント装置２０１の情報処理手順について説明する。まず、クライアント装置２０１とサーバ２０２との間のプロトコルとして、ＷｅｂＤＡＶプロトコルを利用する場合を例に挙げて説明する。
【０１２０】
図１１は、情報処理システム２００の第１の実施例を示す説明図である。図１１において、情報処理システム２００に含まれるクライアント装置２０１と、サーバ２０２と、メタデータ管理サーバ２０３とが示されている。第１の実施例では、クライアント装置２０１は、特殊ツール１１０１により、データリネージュ生成処理を行う。
【０１２１】
特殊ツール１１０１は、クライアント装置２０１で動作するソフトウェアであり、クライアント装置２０１とサーバ２０２との間のプロトコルを監視することで、インプットしたファイルとアウトプットしたファイルを特定することができる。
【０１２２】
以下、図１２および図１３を用いて、特殊ツール１１０１によるデータリネージュ生成処理手順について説明する。
【０１２３】
図１２および図１３は、クライアント装置２０１の第１のデータリネージュ生成処理手順の一例を示すフローチャートである。図１２のフローチャートにおいて、まず、クライアント装置２０１は、特殊ツール１１０１により、ｎｅｔｓｔａｔ等のコマンドを使用して、サーバ２０２との間で情報を送受信するポート番号から、プロセスＩＤを取得する（ステップＳ１２０１）。
【０１２４】
つぎに、クライアント装置２０１は、特殊ツール１１０１により、タスクマネージャ等を使用してＯＳに問い合わせることで、プロセスＩＤに対応する解析ツール名を取得する（ステップＳ１２０２）。そして、クライアント装置２０１は、特殊ツール１１０１により、対象ツール辞書５００を参照して、取得した解析ツール名から特定される解析ツールが対象ツールであるか否かを判断する（ステップＳ１２０３）。図１１の例では、解析ツール名から特定される解析ツールは、解析ツール１１１０である。
【０１２５】
ここで、対象ツールではない場合（ステップＳ１２０３：Ｎｏ）、クライアント装置２０１は、特殊ツール１１０１により、本フローチャートによる一連の処理を終了する。一方、対象ツールの場合（ステップＳ１２０３：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、対象ツール辞書５００を参照して、解析スクリプトの記述内容を解析可能であるか否かを判断する（ステップＳ１２０４）。
【０１２６】
ここで、解析スクリプトの記述内容を解析不能の場合（ステップＳ１２０４：Ｎｏ）、クライアント装置２０１は、図１３に示すステップＳ１３０１に移行する。
【０１２７】
一方、解析スクリプトの記述内容を解析可能の場合（ステップＳ１２０４：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、解析ツールの動作中の解析スクリプトの記述内容を解析した結果に基づいて、Ｉｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを特定する（ステップＳ１２０５）。
【０１２８】
以下の説明では、Ｉｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを「Ｉ／Ｏファイル名」と表記する場合がある。図１１の例では、解析ツール１１１０の動作中の解析スクリプトは、解析スクリプト１１１１である。
【０１２９】
そして、クライアント装置２０１は、特殊ツール１１０１により、Ｉ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１２０６）。ここで、Ｉ／Ｏファイル名が特定された場合（ステップＳ１２０６：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、特定したＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１２０７）。
【０１３０】
例えば、データリネージュは、解析スクリプト名と対応付けて、Ｉ／Ｏファイル名を示す。解析スクリプト名は、例えば、クライアント装置２０１で現在実行中のファイル（現在開いているファイル）のファイル名から特定される。
【０１３１】
そして、クライアント装置２０１は、特殊ツール１１０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１２０８）、本フローチャートによる一連の処理を終了する。
【０１３２】
また、ステップＳ１２０６において、Ｉ／Ｏファイル名が特定されなかった場合（ステップＳ１２０６：Ｎｏ）、クライアント装置２０１は、図１３に示すステップＳ１３０１に移行する。
【０１３３】
図１３のフローチャートにおいて、クライアント装置２０１は、特殊ツール１１０１により、対象ツール辞書５００を参照して、解析ツールがＯＣＲ解析可能であるか否かを判断する（ステップＳ１３０１）。
【０１３４】
ここで、ＯＣＲ解析不能の場合（ステップＳ１３０１：Ｎｏ）、クライアント装置２０１は、特殊ツール１１０１により、ステップＳ１３０９に移行する。一方、ＯＣＲ解析可能の場合（ステップＳ１３０１：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、取得したプロセスＩＤから、ＯＳに問い合わせることで、当該プロセスＩＤに対応するウィンドウハンドルを取得する（ステップＳ１３０２）。
【０１３５】
そして、クライアント装置２０１は、特殊ツール１１０１により、取得したウィンドウハンドルから特定されるウィンドウのスクリーンショットを取得する（ステップＳ１３０３）。つぎに、クライアント装置２０１は、特殊ツール１１０１により、取得したスクリーンショットをＯＣＲ処理する（ステップＳ１３０４）。
【０１３６】
そして、クライアント装置２０１は、特殊ツール１１０１により、スクリーンショットをＯＣＲ処理して認識した結果に基づいて、解析スクリプト名とＩ／Ｏファイル名を特定する（ステップＳ１３０５）。つぎに、クライアント装置２０１は、特殊ツール１１０１により、解析スクリプト名とＩ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１３０６）。
【０１３７】
ここで、解析スクリプト名とＩ／Ｏファイル名が特定された場合（ステップＳ１３０６：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、特定した解析スクリプト名とＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１３０７）。
【０１３８】
そして、クライアント装置２０１は、特殊ツール１１０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１３０８）、本フローチャートによる一連の処理を終了する。
【０１３９】
また、ステップＳ１３０６において、解析スクリプト名とＩ／Ｏファイル名が特定されなかった場合（ステップＳ１３０６：Ｎｏ）、クライアント装置２０１は、特殊ツール１１０１により、取得した解析ツール名と該当ファイル名とを対応付けたデータリネージュを生成して（ステップＳ１３０９）、ステップＳ１３０８に移行する。
【０１４０】
該当ファイル名は、例えば、ステップＳ１２０１において取得されたプロセスＩＤに対応する送受信ポートを介して、クライアント装置２０１とサーバ２０２との間で送受信される情報に含まれるＩ／Ｏファイル名である。
【０１４１】
これにより、解析ツールに手を加えることなく、データリネージュを自動生成してメタデータリポジトリ２２０に登録することができる。図１１の例では、解析スクリプト１１１１と対応付けて、Ｉｎｐｕｔファイル１１１２のファイル名と、Ｏｕｔｐｕｔファイル１１１３のファイル名とを示すデータリネージュ１１２０が自動生成されてメタデータリポジトリ２２０に登録される。
【０１４２】
なお、上述した説明では、ステップＳ１２０４において、対象ツール辞書５００を参照して、解析スクリプトの記述内容を解析可能であるか否かを判断することにしたが、これに限らない。例えば、クライアント装置２０１は、特殊ツール１１０１により、解析スクリプトを読み込んだ上で、解析スクリプトの記述内容を解析可能であるか否かを判断することにしてもよい。
【０１４３】
つぎに、クライアント装置２０１とサーバ２０２との間のプロトコルとして、システムコールプロトコルを利用する場合を例に挙げて説明する。
【０１４４】
図１４は、情報処理システム２００の第２の実施例を示す説明図である。図１４において、情報処理システム２００に含まれるクライアント装置２０１と、サーバ２０２と、メタデータ管理サーバ２０３とが示されている。第２の実施例では、クライアント装置２０１は、特殊ファイルシステム１４０１により、データリネージュ生成処理を行う。
【０１４５】
特殊ファイルシステム１４０１は、クライアント装置２０１で動作するソフトウェアであり、クライアント装置２０１とサーバ２０２との間のシステムコールを監視することができる。例えば、特殊ファイルシステム１４０１は、ユーザランドでファイルシステムを作成可能なＦＵＳＥ（Ｆｉｌｅｓｙｓｔｅｍ  ｉｎ  Ｕｓｅｒｓｐａｃｅ）のインターフェースを使用して実装することができる。
【０１４６】
以下、図１５および図１６を用いて、特殊ファイルシステム１４０１によるデータリネージュ生成処理手順について説明する。
【０１４７】
図１５および図１６は、クライアント装置２０１の第２のデータリネージュ生成処理手順の一例を示すフローチャートである。図１５のフローチャートにおいて、まず、クライアント装置２０１は、特殊ファイルシステム１４０１により、システムコールの呼び出し元のプロセスＩＤを取得する（ステップＳ１５０１）。
【０１４８】
システムコールは、例えば、Ｏｐｅｎ／Ｒｅａｄ／Ｗｒｉｔｅのシステムコールである。なお、クライアント装置２０１は、ｉｎｏｔｉｆｙ（ｉｎｏｄｅ  ｎｏｔｉｆｙ）でファイルの変更を検知する仕組みを用いて、ファイルを変更したプロセスＩＤを取得することにしてもよい。また、例えば、ＦＵＳＥの場合には、クライアント装置２０１は、ｆｕｓｅ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）などにより、ファイル変更を検知する仕組みを用いずに、アクセスプロセス（プロセスＩＤ）を取得することができる。
【０１４９】
つぎに、クライアント装置２０１は、特殊ファイルシステム１４０１により、ｐｓコマンド等を使用してＯＳに問い合わせることで、プロセスＩＤに対応する解析ツール名を取得する（ステップＳ１５０２）。そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、対象ツール辞書５００を参照して、取得した解析ツール名から特定される解析ツールが対象ツールであるか否かを判断する（ステップＳ１５０３）。図１４の例では、解析ツール名から特定される解析ツールは、解析ツール１４１０である。
【０１５０】
ここで、対象ツールではない場合（ステップＳ１５０３：Ｎｏ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、本フローチャートによる一連の処理を終了する。一方、対象ツールの場合（ステップＳ１５０３：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、対象ツール辞書５００を参照して、解析スクリプトの記述内容を解析可能であるか否かを判断する（ステップＳ１５０４）。
【０１５１】
ここで、解析スクリプトの記述内容を解析不能の場合（ステップＳ１５０４：Ｎｏ）、クライアント装置２０１は、図１６に示すステップＳ１６０１に移行する。
【０１５２】
一方、解析スクリプトの記述内容を解析可能の場合（ステップＳ１５０４：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、解析ツールの動作中の解析スクリプトの記述内容を解析した結果に基づいて、Ｉ／Ｏファイル名を特定する（ステップＳ１５０５）。図１４の例では、解析ツール１４１０の動作中の解析スクリプトは、解析スクリプト１４１１である。
【０１５３】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、Ｉ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１５０６）。ここで、Ｉ／Ｏファイル名が特定された場合（ステップＳ１５０６：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、特定したＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１５０７）。
【０１５４】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１５０８）、本フローチャートによる一連の処理を終了する。
【０１５５】
また、ステップＳ１５０６において、Ｉ／Ｏファイル名が特定されなかった場合（ステップＳ１５０６：Ｎｏ）、クライアント装置２０１は、図１６に示すステップＳ１６０１に移行する。
【０１５６】
図１６のフローチャートにおいて、クライアント装置２０１は、特殊ファイルシステム１４０１により、対象ツール辞書５００を参照して、解析ツールがＯＣＲ解析可能であるか否かを判断する（ステップＳ１６０１）。
【０１５７】
ここで、ＯＣＲ解析不能の場合（ステップＳ１６０１：Ｎｏ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、ステップＳ１６０９に移行する。一方、ＯＣＲ解析可能の場合（ステップＳ１６０１：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得したプロセスＩＤから、ＯＳに問い合わせることで、当該プロセスＩＤに対応するウィンドウハンドルを取得する（ステップＳ１６０２）。
【０１５８】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得したウィンドウハンドルから特定されるウィンドウのスクリーンショットを取得する（ステップＳ１６０３）。つぎに、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得したスクリーンショットをＯＣＲ処理する（ステップＳ１６０４）。
【０１５９】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、スクリーンショットをＯＣＲ処理して認識した結果に基づいて、解析スクリプト名とＩ／Ｏファイル名を特定する（ステップＳ１６０５）。つぎに、クライアント装置２０１は、特殊ファイルシステム１４０１により、解析スクリプト名とＩ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１６０６）。
【０１６０】
ここで、解析スクリプト名とＩ／Ｏファイル名が特定された場合（ステップＳ１６０６：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、特定した解析スクリプト名とＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１６０７）。
【０１６１】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１６０８）、本フローチャートによる一連の処理を終了する。
【０１６２】
また、ステップＳ１６０６において、解析スクリプト名とＩ／Ｏファイル名が特定されなかった場合（ステップＳ１６０６：Ｎｏ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得した解析ツール名と該当ファイル名とを対応付けたデータリネージュを生成して（ステップＳ１６０９）、ステップＳ１６０８に移行する。
【０１６３】
該当ファイル名は、例えば、ステップＳ１５０１において取得されたプロセスＩＤに対応する呼び出し元とサーバ２０２との間で送受信される情報に含まれるｉｎｏｄｅ番号から特定されるＩ／Ｏファイル名である。
【０１６４】
これにより、解析ツールに手を加えることなく、データリネージュを自動生成してメタデータリポジトリ２２０に登録することができる。図１４の例では、解析スクリプト１４１１と対応付けて、Ｉｎｐｕｔファイル１４１２のファイル名と、Ｏｕｔｐｕｔファイル１４１３のファイル名とを示すデータリネージュ１４２０が自動生成されてメタデータリポジトリ２２０に登録される。
【０１６５】
以上説明したように、実施の形態にかかるクライアント装置２０１によれば、所定のプロトコルにより自装置とサーバ２０２との間で送受信される情報に基づいて、自装置で実行中のプロセスＩＤを取得し、取得したプロセスＩＤに基づいて、当該プロセスに対応する解析ツールを特定することができる。また、クライアント装置２０１によれば、特定した解析ツールの動作中の解析スクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、特定した入力データ名と出力データ名とに基づいて、当該解析スクリプトに関するデータリネージュを生成することができる。具体的には、例えば、クライアント装置２０１は、スクリプト名と対応付けて、入力データ名と出力データ名とを示すデータリネージュを生成することができる。スクリプト名は、例えば、クライアント装置２０１で現在動作中の解析スクリプト（現在開いているファイル）のファイル名から特定される。
【０１６６】
これにより、解析ツールに手を加えることなく、解析スクリプトと入出力データとを対応付けたデータリネージュを自動生成することができる。このため、例えば、特定のメタデータ管理ソフトに対応していないような解析ツールを使用したとしても、どのデータに対して、どのような解析が行われ、どのデータが生成されたのかを把握可能なデータリネージュを生成することができる。
【０１６７】
また、クライアント装置２０１によれば、解析スクリプトの記述内容を解析できない場合には、取得したプロセスＩＤに対応するウィンドウハンドルを取得し、取得したウィンドウハンドルから特定されるウィンドウの画像（スクリーンショット）をＯＣＲ処理して認識した結果に基づいて、解析スクリプト名、入力データ名および出力データ名を特定することができる。そして、クライアント装置２０１によれば、特定したスクリプト名、入力データ名および出力データ名に基づいて、データリネージュを生成することができる。
【０１６８】
これにより、解析スクリプトの中身が解析不能な場合に、ＧＵＩのウィンドウのスクリーンショットをＯＣＲ処理して、ウィンドウに表示された解析スクリプト名、入力データ名および出力データ名を特定して、解析スクリプトと入出力データとを対応付けたデータリネージュを生成することができる。
【０１６９】
また、クライアント装置２０１によれば、解析スクリプト名、入力データ名および出力データ名が特定されなかった場合、所定のプロトコルにより自装置と他装置との間で送受信される情報に含まれるファイル名に基づいて、解析ツールに関するデータリネージュを生成することができる。
【０１７０】
これにより、ＯＣＲ解析が不能、あるいは、ＯＣＲ解析しても各種ファイル名を特定できない場合には、解析スクリプトとの対応関係はわからなくても、解析ツールに対応する入力データと出力データを特定可能なデータリネージュを生成することができる。
【０１７１】
また、クライアント装置２０１によれば、対象ツール辞書５００を参照して、特定した解析ツールが対象ツールであるか否かを判定することができる。そして、クライアント装置２０１によれば、解析ツールが対象ツールである場合に、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定することができる。
【０１７２】
これにより、データリネージュを生成する必要のないソフトウェアについて、データリネージュが生成されるのを防ぐことができる。また、データリネージュを生成することができないような種別のソフトウェアに対して、スクリプトの記述内容の解析や、ウィンドウのＯＣＲ処理などの無駄な処理が行われるのを防ぐことができる。
【０１７３】
また、クライアント装置２０１によれば、対象ツール辞書５００を参照して、解析ツールが対象ツールである場合に、解析ツールの種別に応じて、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する、または、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することができる。
【０１７４】
これにより、解析ツールが、解析スクリプトの中身を解析可能な種別のソフトウェア（例えば、オープンソース）である場合に、解析スクリプトの記述内容を解析して、入力データ名と出力データ名とを特定することができる。例えば、解析ツールが、解析スクリプトの中身を解析不能な種別のソフトウェア（例えば、クローズドソース）であるにもかかわらず、解析スクリプトの中身の解析を試みるといった無駄な処理を防ぐことができる。また、解析ツールが、解析スクリプトを実行するためのＧＵＩを有する種別のソフトウェアである場合に、ウィンドウの画像をＯＣＲ処理して、スクリプト名、入力データ名および出力データ名を特定することができる。例えば、解析ツールが、解析スクリプトを実行するためのＧＵＩを有していない種別のソフトウェアであるにもかかわらず、ウィンドウの画像（スクリーンショット）の取得や、当該画像のＯＣＲ処理を試みるといった無駄な処理を防ぐことができる。
【０１７５】
また、クライアント装置２０１によれば、生成したデータリネージュを出力することができる。例えば、クライアント装置２０１は、生成されたデータリネージュを、メタデータ管理サーバ２０３に送信することができる。
【０１７６】
これにより、クライアント装置２０１において生成されたデータリネージュを、メタデータ管理サーバ２０３のメタデータリポジトリ２２０に登録することができる。
【０１７７】
また、クライアント装置２０１によれば、ＷｅｂＤＡＶプロトコルを利用する場合、ｎｅｔｓｔａｔ等のコマンドを使用して、サーバ２０２との間で情報を送受信するポート番号から、プロセスＩＤを取得することができる。また、クライアント装置２０１によれば、システムコールプロトコルを利用する場合、サーバ２０２との間で送受信されるシステムコールの呼び出し元のプロセスＩＤを取得することができる。
【０１７８】
これにより、クライアント装置２０１とサーバ２０２との間のプロトコルを監視することで、クライアント装置２０１で実行中のプロセスのプロセスＩＤを特定することができる。
【０１７９】
これらのことから、実施の形態にかかる情報処理システム２００およびクライアント装置２０１によれば、解析ツールに手を加えることなく、データリネージュを自動生成してメタデータリポジトリ２２０に登録することができる。これにより、どのデータに対して、どのような解析（データ処理方法）が行われ、どのデータが生成されたのかを把握可能にして、データ利活用の促進を図ることができる。
【０１８０】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＵＳＢメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１８１】
１０１  情報処理装置
１０２  データ処理装置
１０３  データベース
１１０，７００，９００，１１２０，１４２０  データリネージュ
２００  情報処理システム
２０１  クライアント装置
２０２  サーバ
２０３  メタデータ管理サーバ
２１０  ネットワーク
２２０  メタデータリポジトリ
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  通信Ｉ／Ｆ
３０４  ディスプレイ
３０５  入力装置
３０６  可搬型記録媒体Ｉ／Ｆ
３０７  可搬型記録媒体
４０１  取得部
４０２  特定部
４０３  解析部
４０４  生成部
４０５  出力部
５００  対象ツール辞書
６００，１１１１，１４１１，ｓｃ  解析スクリプト
８００，１０００  スクリーンショット
８０１，８０２，８０３，８０４  図形
１１０１  特殊ツール
１１１０，１４１０  解析ツール
１４０１  特殊ファイルシステム
ＴＬ  データ処理ツール
【図１】
2020188779.tif 000003
【図２】
2020188779.tif 000004
【図３】
2020188779.tif 000005
【図４】
2020188779.tif 000006
【図５】
2020188779.tif 000007
【図６】
2020188779.tif 000008
【図７】
2020188779.tif 000009
【図８】
2020188779.tif 000010
【図９】
2020188779.tif 000011
【図１０】
2020188779.tif 000012
【図１１】
2020188779.tif 000013
【図１２】
2020188779.tif 000014
【図１３】
2020188779.tif 000015
【図１４】
2020188779.tif 000016
【図１５】
2020188779.tif 000017
【図１６】
2020188779.tif 000018
【手続補正書】
【提出日】令和3年5月18日(2021.5.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
自装置で実行中のプロセスの識別子を取得する取得部と、
前記取得部によって取得された前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定する特定部と、
前記特定部によって特定された前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する解析部と、
前記解析部によって特定された前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する生成部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記解析部は、
前記スクリプトの記述内容を解析できない場合には、前記プロセスの識別子に対応するウィンドウハンドルを取得し、取得した前記ウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定し、
前記特定部は、
前記解析部によって特定された前記スクリプト名、前記入力データ名および前記出力データ名に基づいて、前記データリネージュを生成する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記解析部は、
データリネージュの生成対象となるツールを登録した辞書情報を参照して、特定された前記データ処理ツールが対象ツールであるか否かを判定し、
前記データ処理ツールが対象ツールである場合に、前記スクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する、ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記辞書情報は、前記生成対象となるツールの種別を特定する情報を含み、
前記解析部は、
前記辞書情報を参照して、前記データ処理ツールが対象ツールである場合に、前記データ処理ツールの種別に応じて、前記スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する、または、前記ウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定する、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記生成部によって生成された前記データリネージュを出力する出力部を、さらに有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記データリネージュは、前記スクリプトのスクリプト名と対応付けて、前記入力データ名と前記出力データ名とを示す情報である、ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
自装置で実行中のプロセスの識別子を取得し、取得した前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定し、特定した前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、特定した前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する情報処理装置、
を含むことを特徴とする情報処理システム。
【請求項８】
自装置で実行中のプロセスの識別子を取得し、
取得した前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定し、
特定した前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、
特定した前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システムおよび情報処理プログラムに関する。
【背景技術】
【０００２】
従来、データ分析・処理の過程で生成されたファイルに対して、そのファイルの出所と流通経路を、ファイルの属性として記録したデータリネージュを生成する技術がある。データリネージュによれば、例えば、データ間の依存関係を可視化して、どのデータに対してどのような分析・処理を行ったのかを把握可能にすることができる。
【０００３】
先行技術としては、指定されたポート情報に基づいて業務サーバからＨＴＭＬ文書を取得し、取得したＨＴＭＬ文書からタイトルを示すＴＩＴＬＥ要素を取得し、取得したＴＩＴＬＥ要素を、指定されたポート情報と一致する収集済プロセス一覧の待受ポート情報に対応付けられたプロセス識別情報のアプリケーション名として特定するものがある。また、ファイル操作の履歴をツリー構造で表示するための技術がある。
【０００４】
また、ファイルサーバに格納されるファイルが削除されることを検出した場合に、ファイルを退避ファイルとして保存領域に格納し、ファイルサーバにおけるファイルの格納位置を示す情報と保存領域における退避ファイルの格納位置を示す情報とを対応づけてメタデータリポジトリに格納する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−０１２２２５号公報
【特許文献２】国際公開第２０１２／００１７６３号
【特許文献３】国際公開第２０１３／０４２２１８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、データ処理ツールによっては、データリネージュを生成することができない場合がある。例えば、特定のメタデータ管理ソフトに対応した解析ツールであれば、データ解析時にデータリネージュを自動生成することが考えられるが、特定のメタデータ管理ソフトに対応していなければ、解析ツール自体に手を加えなければ、データリネージュを生成することができない。
【０００７】
一つの側面では、本発明は、データ処理ツールに手を加えることなくデータリネージュを生成することを目的とする。
【課題を解決するための手段】
【０００８】
１つの実施態様では、自装置で実行中のプロセスの識別子を取得する取得部と、前記取得部によって取得された前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定する特定部と、前記特定部によって特定された前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する解析部と、前記解析部によって特定された前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する生成部と、を有する情報処理装置が提供される。
【発明の効果】
【０００９】
本発明の一側面によれば、データ処理ツールに手を加えることなくデータリネージュを生成することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかる情報処理装置１０１の一実施例を示す説明図である。
【図２】図２は、情報処理システム２００のシステム構成例を示す説明図である。
【図３】図３は、クライアント装置２０１のハードウェア構成例を示すブロック図である。
【図４】図４は、クライアント装置２０１の機能的構成例を示すブロック図である。
【図５】図５は、辞書情報の具体例を示す説明図である。
【図６】図６は、解析スクリプトの記述内容の一例を示す説明図である。
【図７】図７は、データリネージュの具体例を示す説明図（その１）である。
【図８】図８は、ウィンドウのスクリーンショットの一例を示す説明図（その１）である。
【図９】図９は、データリネージュの具体例を示す説明図（その２）である。
【図１０】図１０は、ウィンドウのスクリーンショットの一例を示す説明図（その２）である。
【図１１】図１１は、情報処理システム２００の第１の実施例を示す説明図である。
【図１２】図１２は、クライアント装置２０１の第１のデータリネージュ生成処理手順の一例を示すフローチャート（その１）である。
【図１３】図１３は、クライアント装置２０１の第１のデータリネージュ生成処理手順の一例を示すフローチャート（その２）である。
【図１４】図１４は、情報処理システム２００の第２の実施例を示す説明図である。
【図１５】図１５は、クライアント装置２０１の第２のデータリネージュ生成処理手順の一例を示すフローチャート（その１）である。
【図１６】図１６は、クライアント装置２０１の第２のデータリネージュ生成処理手順の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１１】
以下に図面を参照して、本発明にかかる情報処理装置、情報処理システムおよび情報処理プログラムの実施の形態を詳細に説明する。
【００１２】
（実施の形態）
図１は、実施の形態にかかる情報処理装置１０１の一実施例を示す説明図である。図１において、情報処理装置１０１は、データリネージュを生成するコンピュータである。例えば、情報処理装置１０１は、ユーザが使用するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である。データ処理装置１０２は、データを処理するコンピュータである。例えば、データ処理装置１０２は、サーバである。データベース１０３は、データリネージュを格納する記憶装置である。
【００１３】
データ処理装置１０２は、情報処理装置１０１からの依頼に応じて、データをリードしたりライトしたりする。より具体的には、例えば、情報処理装置１０１は、データ処理装置１０２にアクセスして、ファイルをリードし、解析ツールを使ってデータ解析を行い、データ解析して得られたファイルをライトする。
【００１４】
データリネージュは、データがどのように生成されたのかを示す来歴情報である。データリネージュによれば、データ間の依存関係を可視化して、どのデータに対してどのような分析・処理を行い、どのデータが生成されたのかを把握可能にして、データ利活用の促進を図ることができる。
【００１５】
例えば、ある処理を試しに実行してみると結果がよかったため、同じ処理をもう一度実行したい場合がある。しかし、どのデータを入力として、どの解析ツールを使って得られた結果であるかがわからないと、同じ処理を再現することが難しい。このような場合に、データリネージュがあれば、どのデータに対してどのような処理を行い、どのデータが生成されたのかを把握できるため、同じ処理を再現しやすくなる。
【００１６】
ここで、特定のメタデータ管理ソフトのデータ形式やプロトコルに対応した解析ツールであれば、解析ツールが、データ解析をしたときにデータリネージュを自動生成して、メタデータ管理ソフトに登録する機能を持たせることが考えられる。しかし、特定のメタデータ管理ソフトに対応した解析ツールを使用しなければ、データリネージュを登録することができない。
【００１７】
また、使いたい解析ツールが特定のメタデータ管理ソフトに対応したものでなければ、その解析ツールを、データリネージュを登録できるように改造することも考えられる。しかしながら、データリネージュを登録できるように解析ツールに手を加える必要があり、設計者の手間や時間が発生する。
【００１８】
また、ファイルシステムでは、どのファイルがリード・ライトされたのかを特定することができる。このため、ファイルシステムにリードされたファイルとライトされたファイルとを対応付けた情報を登録する機能を持たせて、データリネージュを生成することが考えられる。しかし、どの解析ツールのどの解析スクリプトによって生成されたファイルであるかを特定する情報を生成することができない。
【００１９】
このため、どのような解析ツールを使って作業をしたとしても、解析ツールのスクリプトと入出力データとを対応付けたデータリネージュを自動生成することができるようなシステムが望まれる。また、クライアント側で解析ツールを動作させて、ＩｎｐｕｔとＯｕｔｐｕｔに使用したファイルを特定して、データリネージュを作成したいという要望がある。
【００２０】
そこで、本実施の形態では、データ処理ツールに手を加えることなく、スクリプトと入出力データとを対応付けたデータリネージュを自動生成する情報処理装置１０１について説明する。以下、情報処理装置１０１の処理例について説明する。
【００２１】
（１）情報処理装置１０１は、自装置で実行中のプロセスの識別子を取得する。具体的には、例えば、情報処理装置１０１は、所定のプロトコルにより自装置とデータ処理装置１０２との間で送受信される情報に基づいて、自装置で実行中のプロセスの識別子を取得する。所定のプロトコルは、情報処理装置１０１とデータ処理装置１０２との間で情報をやり取りする際に用いられる通信プロトコルである。
【００２２】
プロトコルとしては、例えば、ＷｅｂＤＡＶ（Ｗｅｂ−ｂａｓｅｄ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ａｕｔｈｏｒｉｎｇ  ａｎｄ  Ｖｅｒｓｉｏｎｉｎｇ）プロトコルを用いることができる。ＷｅｂＤＡＶプロトコルは、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を拡張したファイル共有プロトコルの一種である。
【００２３】
プロセスの識別子は、情報処理装置１０１で実行中のプロセスを一意に識別する情報であり、例えば、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から付与されるプロセスＩＤ（ＰＩＤ）である。より詳細に説明すると、例えば、情報処理装置１０１は、データ処理装置１０２との間で情報を送受信するポート番号から、プロセスＩＤを取得することにしてもよい。
【００２４】
なお、所定のプロトコルにより情報処理装置１０１とデータ処理装置１０２との間で送受信される情報には、例えば、データ処理ツール、スクリプト、入力データ、出力データに関する各種情報（データ本体、データ名など）が含まれる。ただし、プロトコルを監視するだけでは、どのデータが、どのデータ処理ツールのどのスクリプトに対応しているのかは特定できない。
【００２５】
（２）情報処理装置１０１は、取得したプロセスの識別子に基づいて、当該プロセスに対応するデータ処理ツールを特定する。ここで、データ処理ツールは、データを処理するソフトウェアである。例えば、データ処理ツールは、入力されたデータの解析を行う解析ツールである。
【００２６】
データ処理ツールは、実行時はＯＳ上のプロセスとして存在する。このため、情報処理装置１０１は、例えば、タスクマネージャ等を使用してＯＳに問い合わせることで、プロセスＩＤに対応するソフトウェア名（例えば、ツール名）を取得する。これにより、プロセスＩＤに対応するソフトウェア名から、データ処理ツールを特定することができる。
【００２７】
図１の例では、プロセスＩＤから、情報処理装置１０１で実行中のデータ処理ツールＴＬが特定された場合を想定する。
【００２８】
（３）情報処理装置１０１は、特定したデータ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する。ここで、スクリプトとは、どのようなデータを、どのように処理するかが記述されたプログラムである。
【００２９】
データ処理ツールは、スクリプトの内容によって処理を変更し、スクリプトによって処理を実行する。入力データ名は、データ処理ツールのスクリプトに入力されたデータ（入力データ）の名称である。出力データ名は、データ処理ツールのスクリプトで入力データを処理した結果得られたデータ（出力データ）の名称である。
【００３０】
具体的には、例えば、情報処理装置１０１は、特定したデータ処理ツールの動作中のスクリプトを読み込む。スクリプトの格納場所は、例えば、データ処理ツールのスクリプトごとに、当該スクリプトの格納場所を示す情報から特定することができる。なお、データ処理ツールのスクリプトは、情報処理装置１０１に予め格納されているものもあれば、実行時にデータ処理装置１０２から取得して情報処理装置１０１に格納されるものもある。
【００３１】
つぎに、情報処理装置１０１は、読み込んだスクリプトの記述内容を解析する。そして、情報処理装置１０１は、解析した結果に基づいて、スクリプトに記述された入力データ名と出力データ名とを特定する。すなわち、情報処理装置１０１は、スクリプトの中身（ソースコード）を解析して、入力となるデータの名称と、当該データを処理した結果得られるデータの名称とを特定する。
【００３２】
図１の例では、データ処理ツールＴＬの動作中のスクリプトｓｃの記述内容を解析した結果に基づいて、入力データ名Ｘと出力データ名Ｙとが特定された場合を想定する。
【００３３】
（４）情報処理装置１０１は、特定した入力データ名と出力データ名とに基づいて、特定されたデータ処理ツールの動作中のスクリプトに関するデータリネージュを生成する。具体的には、例えば、情報処理装置１０１は、データ処理ツールの動作中のスクリプトの情報と対応付けて、特定した入力データ名と出力データ名とを示すデータリネージュを生成する。
【００３４】
スクリプトの情報は、例えば、スクリプト名である。スクリプト名は、例えば、情報処理装置１０１で動作中のスクリプト（現在開いているファイル）のファイル名から特定することができる。また、スクリプトの情報には、データ処理ツールのツール名が含まれていてもよい。
【００３５】
図１の例では、データ処理ツールＴＬの動作中のスクリプトｓｃの情報と対応付けて、入力データ名Ｘと出力データ名Ｙとを示すデータリネージュ１１０が生成される。生成されたデータリネージュ１１０は、例えば、データベース１０３に登録される。
【００３６】
このように、情報処理装置１０１によれば、データ処理ツールに手を加えることなく、スクリプトと入出力データとを対応付けたデータリネージュを自動生成することができる。図１の例では、データ処理ツールＴＬが特定のメタデータ管理ソフトに対応していない場合であっても、データ処理ツールＴＬの動作中のスクリプトｓｃの中身を解析して、スクリプトｓｃと入力データＸと出力データＹとを対応付けたデータリネージュ１１０を生成することができる。
【００３７】
これにより、どのデータ（入力データＸ）に対して、どのような解析（スクリプトｓｃ）が行われ、どのデータ（出力データＹ）が生成されたのかを把握可能にして、データ利活用の促進を図ることができる。例えば、データに対する利点として、機械学習で使用・生成されたデータや学習モデルが、何のために利用されたものであるかを把握可能にすることができる。また、データ処理ツールに対する利点としては、データベースのバージョンアップにともなうＳＱＬ文の変更や、どういう変換を行っているかを可視化して、デバッグしやすくすることができる。
【００３８】
（情報処理システム２００のシステム構成例）
つぎに、実施の形態にかかる情報処理システム２００のシステム構成例について説明する。ここでは、図１に示した情報処理装置１０１を、クライアント装置２０１に適用した場合を例に挙げて説明する。情報処理システム２００は、例えば、社内に蓄えられたデータやツールを利用してデータ解析を行うためのコンピュータシステムに適用される。
【００３９】
図２は、情報処理システム２００のシステム構成例を示す説明図である。図２において、情報処理システム２００は、クライアント装置２０１と、サーバ２０２と、メタデータ管理サーバ２０３と、を含む。情報処理システム２００において、クライアント装置２０１、サーバ２０２およびメタデータ管理サーバ２０３は、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００４０】
ここで、クライアント装置２０１は、情報処理システム２００のユーザが使用するコンピュータである。ユーザは、例えば、データサイエンティストや事業部門の社員などである。例えば、クライアント装置２０１は、ＰＣ、タブレットＰＣなどである。
【００４１】
サーバ２０２は、クライアント装置２０１からの依頼に応じて、データをリードしたりライトしたりする。例えば、クライアント装置２０１は、サーバ２０２にアクセスして、ファイルをリードし、解析ツールを使ってデータ解析を行い、解析して得られたデータをライトすることができる。図１に示したデータ処理装置１０２は、例えば、サーバ２０２に相当する。
【００４２】
メタデータ管理サーバ２０３は、メタデータリポジトリ２２０を有し、データリネージュを管理する。メタデータリポジトリ２２０は、データリネージュを格納するデータベースである。図１に示したデータベース１０３は、例えば、メタデータリポジトリ２２０に相当する。サーバ２０２およびメタデータ管理サーバ２０３は、例えば、アプリケーションサーバ、ウェブサーバ、データベースサーバなどにより実現される。
【００４３】
なお、ここでは、クライアント装置２０１、サーバ２０２およびメタデータ管理サーバ２０３を、それぞれ別々のコンピュータにより実現することにしたが、これに限らない。例えば、クライアント装置２０１、サーバ２０２およびメタデータ管理サーバ２０３は、１台のコンピュータにより実現されることにしてもよい。
【００４４】
（クライアント装置２０１のハードウェア構成例）
つぎに、クライアント装置２０１のハードウェア構成例について説明する。
【００４５】
図３は、クライアント装置２０１のハードウェア構成例を示すブロック図である。図３において、クライアント装置２０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスプレイ３０４と、入力装置３０５と、可搬型記録媒体Ｉ／Ｆ３０６と、を有する。また、各構成部はバス３００によってそれぞれ接続される。
【００４６】
ここで、ＣＰＵ３０１は、クライアント装置２０１の全体の制御を司る。ＣＰＵ３０１は、複数のコアを有していてもよい。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する記憶部である。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４７】
通信Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して外部のコンピュータ（例えば、サーバ２０２、メタデータ管理サーバ２０３）に接続される。そして、通信Ｉ／Ｆ３０３は、ネットワーク２１０と自装置内部とのインターフェースを司り、外部装置からのデータの入出力を制御する。
【００４８】
ディスプレイ３０４は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する表示装置である。ディスプレイ３０４としては、例えば、液晶ディスプレイや有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどを採用することができる。
【００４９】
入力装置３０５は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置３０５は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００５０】
可搬型記録媒体Ｉ／Ｆ３０６は、ＣＰＵ３０１の制御に従って可搬型記録媒体３０７に対するデータのリード／ライトを制御する。可搬型記録媒体３０７は、可搬型記録媒体Ｉ／Ｆ３０６の制御で書き込まれたデータを記憶する。可搬型記録媒体３０７としては、例えば、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリなどが挙げられる。
【００５１】
なお、クライアント装置２０１は、上述した構成部のほかに、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ、スキャナ、プリンタなどを有することにしてもよい。また、図２に示したサーバ２０２、メタデータ管理サーバ２０３についても、クライアント装置２０１と同様のハードウェア構成により実現することができる。ただし、サーバ２０２、メタデータ管理サーバ２０３は、ディスプレイ３０４や入力装置３０５を有していなくてもよい。
【００５２】
（クライアント装置２０１の機能的構成例）
図４は、クライアント装置２０１の機能的構成例を示すブロック図である。図４において、クライアント装置２０１は、取得部４０１と、特定部４０２と、解析部４０３と、生成部４０４と、出力部４０５と、を含む。具体的には、例えば、取得部４０１〜出力部４０５は、図３に示したメモリ３０２、可搬型記録媒体３０７などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、通信Ｉ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ３０２に記憶される。
【００５３】
取得部４０１は、自装置で実行中のプロセスの識別子を取得する。具体的には、例えば、取得部４０１は、所定のプロトコルにより自装置とサーバ２０２との間で送受信される情報に基づいて、自装置で実行中のプロセスの識別子を取得する。所定のプロトコルとしては、例えば、ＷｅｂＤＡＶプロトコルやシステムコールプロトコルを用いることができる。
【００５４】
ＷｅｂＤＡＶプロトコルは、ＨＴＴＰを拡張したファイル共有プロトコルの一種であり、ＯＳからサーバ上のディレクトリをマウントすることができるようになる。システムコールプロトコルは、ＯＳの機能を呼び出すための機構であるシステムコールを利用するプロトコルであり、ハードウェアを意識せずにコンピュータを使うことができる。
【００５５】
クライアント装置２０１とサーバ２０２との間で送受信される情報には、例えば、データ処理ツール、スクリプト、入力データ、出力データに関する各種情報が含まれる。例えば、スクリプトに関する情報は、スクリプトのデータ本体（ソースコードまたはバイナリデータ）やスクリプト名などである。入力データに関する情報は、サーバ２０２からクライアント装置２０１に送信されたＩｎｐｕｔファイルのデータ本体やファイル名などである。出力データに関する情報は、クライアント装置２０１からサーバ２０２に送信されたＯｕｔｐｕｔデータのデータ本体やファイル名などである。
【００５６】
例えば、所定のプロトコルとして、ＷｅｂＤＡＶプロトコルを利用するとする。この場合、取得部４０１は、例えば、ｎｅｔｓｔａｔ等のコマンドを使用して、サーバ２０２との間で情報を送受信するポート番号から、プロセスＩＤを取得する。プロセスＩＤは、現在実行されているプロセスを一意に識別するためにＯＳによって付与される識別子である。
【００５７】
なお、ＷｅｂＤＡＶをＷｉｎｄｏｗｓの仮想ファイルシステムフレームワーク（Ｉｎｓｔａｌｌａｂｌｅ  Ｆｉｌｅ  Ｓｙｓｔｅｍ、Ｓｈｅｌｌ  ｎａｍｅｓｐａｃｅ  ｅｘｔｅｎｓｉｏｎｓ）で開発した場合、取得部４０１は、例えば、シェル拡張ハンドラによりプロセスＩＤを取得することにしてもよい。この場合、ＴＣＰコネクションのポート番号によらずに、プロセスＩＤを知ることができる。
【００５８】
また、所定のプロトコルとして、システムコールプロトコルを利用するとする。この場合、取得部４０１は、例えば、特定のシステムコールの呼び出し元のプロセスＩＤを取得する。特定のシステムコールは、例えば、Ｏｐｅｎ、Ｒｅａｄ、Ｗｒｉｔｅなどのシステムコールである。
【００５９】
特定部４０２は、取得されたプロセスの識別子に基づいて、当該プロセスに対応するデータ処理ツールを特定する。ここで、データ処理ツールは、データを処理するソフトウェアであり、例えば、データの解析を行う解析ツールである。
【００６０】
以下の説明では、データ処理ツールを「解析ツール」と表記し、データ処理ツールのスクリプトを「解析スクリプト」と表記する場合がある。
【００６１】
具体的には、例えば、特定部４０２は、タスクマネージャやｐｓコマンド等を使用してＯＳに問い合わせることで、プロセスＩＤに対応する解析ツール名を取得する。これにより、プロセスＩＤに対応する解析ツール名から、クライアント装置２０１で実行中の解析ツールを特定することができる。
【００６２】
解析部４０３は、特定された解析ツールの動作中の解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する。ここで、解析スクリプトは、どのようなファイルを、どのように処理するかが記述されたプログラムである。解析スクリプトは、例えば、１または複数のファイルによって構成される。
【００６３】
具体的には、例えば、解析部４０３は、特定された解析ツールの動作中の解析スクリプトを読み込む。より詳細に説明すると、例えば、解析部４０３は、ツール管理情報を参照して、特定された解析ツール名に対応する解析スクリプト名を特定する。
【００６４】
ここで、ツール管理情報は、解析ツールに対応する１または複数の解析スクリプトに関する情報を含む。例えば、ツール管理情報は、解析ツールの解析ツール名と、当該解析ツールの解析スクリプトの解析スクリプト名と、当該解析スクリプトの格納場所との対応関係を示す。ツール管理情報は、例えば、予め作成されてメモリ３０２に記憶されている。
【００６５】
また、解析部４０３は、自装置で現在実行中のファイル（現在開いているファイル）のファイル名を特定する。そして、解析部４０３は、特定した解析ツール名に対応する解析スクリプト名のうち、特定したファイル名と一致する解析スクリプト名を、特定された解析ツールの動作中の解析スクリプトの名称として特定する。
【００６６】
つぎに、解析部４０３は、ツール管理情報を参照して、特定した解析スクリプトの格納場所を特定する。そして、解析部４０３は、特定した格納場所から解析スクリプトを読み込む。これにより、クライアント装置２０１上で複数のファイルが開かれている状況であっても、特定部４０２によって特定された解析ツールの動作中の解析スクリプトの情報（例えば、ソースコード）を取得することができる。
【００６７】
つぎに、解析部４０３は、読み込んだ解析スクリプトの記述内容（ソースコード）を解析する。そして、解析部４０３は、解析した結果に基づいて、解析スクリプトに記述されたＩｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを特定する。Ｉｎｐｕｔファイル名は、解析ツールに入力されるＩｎｐｕｔファイルの名称（入力データ名）である。Ｏｕｔｐｕｔファイル名は、解析ツールでＩｎｐｕｔファイルを処理した結果得られるＯｕｔｐｕｔファイルの名称（出力データ名）である。
【００６８】
なお、解析スクリプトの記述内容から入力データ名（Ｉｎｐｕｔファイル名）と出力データ名（Ｏｕｔｐｕｔファイル名）とを特定する際の処理例については、図６および図７を用いて後述する。
【００６９】
ただし、解析スクリプトの記述内容を解析できない場合がある。例えば、解析ツールがクローズドソースの場合、ソースコードを非公開とし、バイナリデータのみが配布される。解析スクリプトがバイナリデータの場合、解析スクリプトを解析してＩｎｐｕｔ／Ｏｕｔｐｕｔファイル名を特定することができない。また、解析スクリプトの格納場所を特定できなかった場合も、解析スクリプトの記述内容を解析することができない。
【００７０】
ここで、解析ツールがＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）でウィンドウのインターフェースを持つ場合がある。この場合、ウィンドウには、例えば、解析スクリプト名、Ｉｎｐｕｔファイル名、Ｏｕｔｐｕｔファイル名が表示される場合がある。
【００７１】
そこで、解析部４０３は、解析スクリプトの記述内容を解析できない場合には、取得されたプロセスの識別子に対応するウィンドウハンドルを取得することにしてもよい。そして、解析部４０３は、取得したウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。
【００７２】
ここで、ウィンドウハンドルとは、画面に表示されているウィンドウを識別する識別子である。ウィンドウ内の情報を認識した結果は、例えば、ウィンドウの画像をＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）処理して認識した結果である。ＯＣＲ処理とは、画像を解析して文字や記号を認識する処理である。また、ウィンドウ内の情報を認識した結果は、Ｗｉｎ３２  ＡＰＩのＧｅｔＷｉｎｄｏｗＴｅｘｔなどで、ウィンドウ内の情報を取得して認識した結果であってもよい。
【００７３】
具体的には、例えば、解析部４０３は、取得されたプロセスＩＤに基づいて、ＯＳに問い合わせることで、当該プロセスＩＤに対応するウィンドウハンドルを取得する。つぎに、解析部４０３は、取得したウィンドウハンドルから特定されるＧＵＩのウィンドウのスクリーンショットを取得する。そして、解析部４０３は、取得したスクリーンショットをＯＣＲ処理して認識した結果に基づいて、解析スクリプト名、Ｉｎｐｕｔファイル名およびＯｕｔｐｕｔファイル名を特定する。
【００７４】
より詳細に説明すると、例えば、解析部４０３は、ウィンドウに表示された文字列「ファイル」を特定し、特定した文字列「ファイル」に対応する文字列をファイル名として特定する。また、解析部４０３は、ウィンドウに表示された文字列「スクリプト」を特定し、特定した文字列「スクリプト」に対応する文字列をファイル名として特定する。各文字列「ファイル」、「スクリプト」に対応する文字列は、例えば、ウィンドウ上での位置によって特定される。
【００７５】
ただし、解析スクリプト名については、例えば、ウィンドウを起動する操作から特定されることにしてもよい。例えば、解析ツールが「メールソフト」である場合に、ユーザの操作入力によって「返信」を起動する動作が行われたとする。この場合、解析部４０３は、解析スクリプト名として「返信」を特定する。
【００７６】
また、解析部４０３は、複数のウィンドウハンドルが取得された場合には、例えば、複数のウィンドウハンドルそれぞれから特定されるウィンドウごとに、当該ウィンドウのスクリーンショットを取得する。そして、解析部４０３は、取得したスクリーンショットごとに、当該スクリーンショットをＯＣＲ処理して認識した結果に基づいて、各種ファイル名を特定する。
【００７７】
なお、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から入力データ名（Ｉｎｐｕｔファイル名）と出力データ名（Ｏｕｔｐｕｔファイル名）とを特定する際の処理例については、図８および図９を用いて後述する。
【００７８】
上述したように、例えば、解析ツールがクローズドソースであったり、ＧＵＩベースのソフトウェアでない場合には、解析スクリプトの記述内容や、ウィンドウの画像をＯＣＲ処理して認識した結果から、入力データ名や出力データ名を特定することができない。
【００７９】
このため、解析スクリプトの中身を解析可能な解析ツールや、ＧＵＩベースの解析ツールを、データリネージュの生成対象となるソフトウェアとして、予め辞書に登録しておくことにしてもよい。データリネージュの生成対象となるツール名を登録した辞書情報の具体例について説明する。
【００８０】
図５は、辞書情報の具体例を示す説明図である。図５において、対象ツール辞書５００は、データリネージュの生成対象となるツール名を登録した辞書情報の具体例である。対象ツール辞書５００は、ツール名、スクリプト解析フラグおよびＯＣＲ解析フラグのフィールドを有し、各フィールドに情報を設定することで、対象ツール情報（例えば、対象ツール情報５００−１，５００−２）をレコードとして記憶する。
【００８１】
ここで、ツール名は、データリネージュの生成対象となるツールの名称を示す。スクリプト解析フラグは、解析スクリプトの記述内容を解析可能であるか否かを示す情報である。ここでは、スクリプト解析フラグ「○」は、解析スクリプトの記述内容を解析可能であることを示す。スクリプト解析フラグ「×」は、解析スクリプトの記述内容を解析できないことを示す。
【００８２】
ＯＣＲ解析フラグは、ＧＵＩベースのソフトウェアであるか否かを示す情報である。ここでは、ＯＣＲ解析フラグ「○」は、ＧＵＩベースのソフトウェアであり、ＯＣＲ解析可能であることを示す。ＯＣＲ解析フラグ「×」は、ＧＵＩベースのソフトウェアではなく、ＯＣＲ解析できないことを示す。
【００８３】
スクリプト解析フラグおよびＯＣＲ解析フラグは、データリネージュの生成対象となるツールの種別を特定する情報の一例である。すなわち、スクリプト解析フラグおよびＯＣＲ解析フラグの組み合わせによって、データリネージュの生成対象となるツールが、解析スクリプトの記述内容を解析可能なツールであるか、ＯＣＲ解析が可能なツールであるかという種別を特定することができる。
【００８４】
例えば、対象ツール情報５００−１は、ツール名「Ｊｕｐｙｔｅｒ  Ｎｏｔｅｂｏｏｋ」の解析ツールが、解析スクリプトの記述内容を解析可能であるが、ＧＵＩベースのソフトウェアではないためＯＣＲ解析できない種別のツールであることを示す。
【００８５】
なお、対象ツール情報には、スクリプト解析フラグおよびＯＣＲ解析フラグが含まれていなくてもよい。すなわち、対象ツール情報は、データリネージュの生成対象となるツール名のみを示す情報であってもよい。対象ツール辞書５００は、予め作成されてメモリ３０２に記憶されている。
【００８６】
図４の説明に戻り、解析部４０３は、例えば、図５に示した対象ツール辞書５００を参照して、特定された解析ツールが対象ツールであるか否かを判定することにしてもよい。そして、解析部４０３は、解析ツールが対象ツールである場合に、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する、または、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。一方、解析ツールが対象ツールではない場合には、解析部４０３は、スクリプト名、入力データ名および出力データ名を特定しないことにしてもよい。
【００８７】
より具体的には、例えば、解析部４０３は、対象ツール辞書５００を参照して、特定された解析ツールのスクリプト解析フラグが「○」の場合、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定することにしてもよい。また、解析部４０３は、特定された解析ツールのＯＣＲ解析フラグが「○」の場合、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。また、解析部４０３は、特定された解析ツールの解析ツール名が対象ツール辞書５００に未登録の場合には、入力データ名等を特定しない。
【００８８】
生成部４０４は、解析部４０３によって特定された入力データ名と出力データ名とに基づいて、特定部４０２によって特定された解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する。ここで、データリネージュは、データがどのように生成されたのかを示す来歴情報である。
【００８９】
具体的には、例えば、生成部４０４は、解析スクリプト名と対応付けて、Ｉｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを示すデータリネージュを生成する。解析スクリプト名は、例えば、クライアント装置２０１で動作中の解析スクリプト（現在開いているファイル）のファイル名から特定されたもの、または、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から特定されたものである。データリネージュには、例えば、解析ツール名、解析スクリプトのデータ本体、Ｉｎｐｕｔファイルのデータ本体、Ｏｕｔｐｕｔファイルのデータ本体が含まれていてもよい。
【００９０】
データリネージュの具体例については、図７および図９を用いて後述する。
【００９１】
出力部４０５は、生成されたデータリネージュを出力する。出力部４０５の出力形式としては、例えば、メモリ３０２への記憶、通信Ｉ／Ｆ３０３による他のコンピュータへの送信、ディスプレイ３０４への表示、不図示のプリンタへの印刷出力などがある。
【００９２】
具体的には、例えば、出力部４０５は、生成されたデータリネージュを、メタデータ管理サーバ２０３に送信する。メタデータ管理サーバ２０３は、クライアント装置２０１からデータリネージュを受信すると、受信したデータリネージュをメタデータリポジトリ２２０に格納する。
【００９３】
なお、解析スクリプトの記述内容と、ウィンドウの画像をＯＣＲ処理して認識した結果のいずれからも、入力データ名と出力データ名を特定することができない場合がある。この場合、生成部４０４は、自装置とサーバ２０２との間で送受信される情報に含まれる入力データ名と出力データ名とを特定することにしてもよい。そして、生成部４０４は、特定された解析ツール名と、特定した入力データ名と出力データ名とを含むデータリネージュを生成することにしてもよい。
【００９４】
これにより、解析スクリプトとの対応関係はわからなくても、解析ツールに対応する入力データと出力データを特定可能なデータリネージュを生成することができる。
【００９５】
なお、上述した説明では、解析部４０３は、解析スクリプトの記述内容を解析できない場合に、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしたが、これに限らない。例えば、解析スクリプトの記述内容を解析する前に、解析部４０３は、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することにしてもよい。そして、解析部４０３は、ウィンドウの画像をＯＣＲ処理して認識した結果から、スクリプト名、入力データ名および出力データ名を特定できない場合に、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定することにしてもよい。
【００９６】
（入力データ名と出力データ名とを特定する際の第１の処理例）
つぎに、図６および図７を用いて、解析スクリプトの記述内容から、入力データ名と出力データ名とを特定する際の処理例について説明する。
【００９７】
図６は、解析スクリプトの記述内容の一例を示す説明図である。図６において、解析スクリプト６００の記述内容（ソースコード）が示されている。解析スクリプト６００のファイル名は、「Ａｎａｌｙｚｅ＿ｆｒｕｉｔ．ｉｐｙｎｂ」である。なお、図６では、解析スクリプト６００の記述内容の一部を抜粋して表示している。
【００９８】
この場合、解析部４０３は、解析スクリプト６００の記述内容を解析して、例えば、コード６０１〜６０３から、パス名を検出することで、Ｉｎｐｕｔファイル名「ｔｅｓｔｄａｔａ．ｃｓｖ」を特定する。また、解析部４０３は、解析スクリプト６００の記述内容を解析して、例えば、コード６０４〜６０６から、パス名を検出することで、Ｏｕｔｐｕｔファイル名「ｒｅｓｕｌｔ．ｃｓｖ」を特定する。
【００９９】
この場合、生成部４０４は、特定されたＩｎｐｕｔファイル名「ｔｅｓｔｄａｔａ．ｃｓｖ」と、Ｏｕｔｐｕｔファイル名「ｒｅｓｕｌｔ．ｃｓｖ」とに基づいて、解析スクリプト６００に関するデータリネージュを生成する。具体的には、例えば、生成部４０４は、図７に示すようなデータリネージュ７００を生成する。
【０１００】
図７は、データリネージュの具体例を示す説明図（その１）である。図７において、データリネージュ７００は、Ｉｎｐｕｔ情報７０１と、スクリプト情報７０２と、Ｏｕｔｐｕｔ情報７０３とを含む。ここで、Ｉｎｐｕｔ情報７０１は、Ｉｎｐｕｔファイル名「ｔｅｓｔｄａｔａ．ｃｓｖ」を示す。スクリプト情報７０２は、解析スクリプト６００（図６参照）の解析スクリプト名「Ａｎａｌｙｚｅ＿ｆｒｕｉｔ．ｉｐｙｎｂ」を示す。Ｏｕｔｐｕｔ情報７０３は、Ｏｕｔｐｕｔファイル名「ｒｅｓｕｌｔ．ｃｓｖ」を示す。
【０１０１】
データリネージュ７００によれば、データ間の依存関係を可視化して、解析スクリプト「Ａｎａｌｙｚｅ＿ｆｒｕｉｔ．ｉｐｙｎｂ」に、ファイル「ｔｅｓｔｄａｔａ．ｃｓｖ」を入力して解析を行った結果、ファイル「ｒｅｓｕｌｔ．ｃｓｖ」が生成されたことを把握することができる。なお、クライアント装置２０１は、解析スクリプト６００の記述内容を解析した結果から特定した、ＩｎｐｕｔファイルおよびＯｕｔｐｕｔファイルのパス名をデータリネージュ７００に含めることにしてもよい。
【０１０２】
（入力データ名と出力データ名とを特定する際の第２の処理例）
つぎに、図８および図９を用いて、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から、入力データ名と出力データ名とを特定する際の処理例について説明する。ここでは、解析ツールが、線をつないで計算フローを作成して実行するようなＧＵＩを含むソフトウェアである場合を想定する。
【０１０３】
図８は、ウィンドウのスクリーンショットの一例を示す説明図（その１）である。図８において、スクリーンショット８００は、プロセスＩＤに対応するウィンドウハンドルから特定されたウィンドウの画像であり、図形８０１〜８０４を含む。ここでは、図形８０１，８０２が矢印線で図形８０３につながれており、図形８０４が矢印線で図形８０３につながれている。
【０１０４】
ここで、図形８０１，８０２は、矢印線８０５，８０６の向きから、スクリプトに入力されるファイルを表す。図形８０３は、スクリプトを表す。図形８０４は、矢印線８０７の向きから、スクリプトから出力されるファイルを表す。この場合、解析部４０３は、スクリーンショット８００をＯＣＲ処理して認識した結果に基づいて、Ｉｎｐｕｔファイル名「天気情報．ｔｘｔ」およびＩｎｐｕｔファイル名「ＣＭ視聴率．ｃｓｖ」を特定する。
【０１０５】
また、解析部４０３は、スクリーンショット８００をＯＣＲ処理して認識した結果に基づいて、解析スクリプト名「解析スクリプトＡ．ｐｙ」を特定する。また、解析部４０３は、スクリーンショット８００をＯＣＲ処理して認識した結果に基づいて、Ｏｕｔｐｕｔファイル名「予測客数」を特定する。
【０１０６】
より詳細に説明すると、例えば、解析部４０３は、ウィンドウに表示された文字列「ファイル」を特定し、特定した文字列「ファイル」に対応する文字列「天気情報．ｔｘｔ」、「ＣＭ視聴率．ｃｓｖ」および「予測客数」をファイル名としてそれぞれ特定する。また、解析部４０３は、ウィンドウに表示された文字列「スクリプト」を特定し、特定した文字列「スクリプト」に対応する文字列「解析スクリプトＡ．ｐｙ」をファイル名として特定する。
【０１０７】
また、Ｉｎｐｕｔファイル名またはＯｕｔｐｕｔファイル名は、ウィンドウ上での各ファイル名の位置関係から特定することにしてもよい。例えば、解析部４０３は、ウィンドウ上で解析スクリプト名「解析スクリプトＡ．ｐｙ」よりも左側に位置するファイル名「天気情報．ｔｘｔ」および「ＣＭ視聴率．ｃｓｖ」を、Ｉｎｐｕｔファイル名として特定する。また、解析部４０３は、ウィンドウ上で解析スクリプト名「解析スクリプトＡ．ｐｙ」よりも右側に位置するファイル名「予測客数」を、Ｏｕｔｐｕｔファイル名として特定する。
【０１０８】
また、解析部４０３は、パターンマッチング等の技術を利用して、図形８０１〜８０４と矢印線８０５〜８０７を検出することにしてもよい。この場合、解析部４０３は、例えば、矢印線８０５〜８０７の向きから、各図形８０１，８０２，８０４内のファイル名が、Ｉｎｐｕｔファイル名またはＯｕｔｐｕｔファイル名のいずれであるかを判断することにしてもよい。なお、図８中、「［データ解析ソフトウェアα］客数予測」は、解析ツール名に相当する。
【０１０９】
生成部４０４は、特定されたＩｎｐｕｔファイル名「天気情報．ｔｘｔ」、Ｉｎｐｕｔファイル名「ＣＭ視聴率．ｃｓｖ」、解析スクリプト名「解析スクリプトＡ．ｐｙ」およびＯｕｔｐｕｔファイル名「予測客数」に基づいて、解析スクリプト「解析スクリプトＡ．ｐｙ」に関するデータリネージュを生成する。具体的には、例えば、生成部４０４は、図９に示すようなデータリネージュ９００を生成する。
【０１１０】
図９は、データリネージュの具体例を示す説明図（その２）である。図９において、データリネージュ９００は、Ｉｎｐｕｔ情報９０１，９０２と、スクリプト情報９０３と、Ｏｕｔｐｕｔ情報９０４とを含む。ここで、Ｉｎｐｕｔ情報９０１は、Ｉｎｐｕｔファイル名「天気情報．ｔｘｔ」を示す。Ｉｎｐｕｔ情報９０２は、Ｉｎｐｕｔファイル名「ＣＭ視聴率．ｃｓｖ」を示す。スクリプト情報９０３は、解析スクリプト名「解析スクリプトＡ．ｐｙ」を示す。Ｏｕｔｐｕｔ情報９０４は、Ｏｕｔｐｕｔファイル名「予測客数」を示す。
【０１１１】
また、データリネージュ９００は、実行履歴情報９１０を含む。実行履歴情報９１０は、実行時刻「２０１９／２／１０／８：００」と実行者「山田」とを示す。実行時刻「２０１９／２／１０／８：００」は、解析スクリプト「解析スクリプトＡ．ｐｙ」が実行された日時を示す。実行者「山田」は、解析スクリプト「解析スクリプトＡ．ｐｙ」を実行したユーザ（例えば、ログインユーザ）を示す。
【０１１２】
データリネージュ９００によれば、データ間の依存関係を可視化して、解析スクリプト「解析スクリプトＡ．ｐｙ」に、ファイル「天気情報．ｔｘｔ」およびファイル「ＣＭ視聴率．ｃｓｖ」を入力して解析を行った結果、ファイル「予測客数」が生成されたことを把握することができる。また、データリネージュ９００によれば、解析スクリプト「解析スクリプトＡ．ｐｙ」の実行時刻「２０１９／２／１０／８：００」および実行者「山田」を把握することができる。
【０１１３】
（入力データ名と出力データ名とを特定する際の第３の処理例）
つぎに、図１０を用いて、ウィンドウのスクリーンショットをＯＣＲ処理して認識した結果から、入力データ名と出力データ名とを特定する際の処理例について説明する。ここでは、解析ツールがメールソフトである場合を想定し、「返信」を起動する動作を解析とみなして、返信メールのソース（Ｉｎｐｕｔ）となる受信メールを特定する場合について説明する。
【０１１４】
図１０は、ウィンドウのスクリーンショットの一例を示す説明図（その２）である。図１０において、スクリーンショット１０００は、プロセスＩＤに対応するウィンドウハンドルから特定されたウィンドウの画像であり、返信メールを作成するための操作画面を示している。
【０１１５】
この場合、解析部４０３は、スクリーンショット１０００をＯＣＲ処理して認識した結果に基づいて、返信メールの件名「ＲＥ：［ｘｘｘ開発プロジェクト］」を特定する（図１０中、符号１００１に対応）。また、解析部４０３は、返信メールの件名「ＲＥ：［ｘｘｘ開発プロジェクト］」から「ＲＥ：」を除いた部分を、返信メールのソースとなる受信メールの件名「［ｘｘｘ開発プロジェクト］」として特定する。
【０１１６】
この場合、生成部４０４は、例えば、特定された受信メールの件名「［ｘｘｘ開発プロジェクト］」と、返信メールの件名「ＲＥ：［ｘｘｘ開発プロジェクト］」とを対応付けた、解析スクリプト「返信」に関するデータリネージュを生成する。
【０１１７】
この際、生成部４０４は、受信メール、返信メールそれぞれのファイルパスを、受信メール、返信メールそれぞれの件名に対応付けることにしてもよい。受信メール、返信メールそれぞれのファイルパスは、例えば、サーバ２０２との間で送受信される情報から件名とともに特定される。ただし、返信メールのファイルパスは、実際に返信メールが送信されたタイミングで特定される。
【０１１８】
これにより、解析ツール（メールソフト）に手を加えずに、返信メールのソースとなるメールを特定することが可能となる。なお、ここでは、ウィンドウを起動する操作から解析スクリプト「返信」を特定することにしたが、これに限らない。例えば、解析スクリプト名がウィンドウ名（画面名）に含まれる場合がある。このため、解析部４０３は、画面をＯＣＲ処理して認識した結果に基づいて、画面名を検出することで、解析スクリプト名を特定することにしてもよい。
【０１１９】
（クライアント装置２０１の情報処理手順）
つぎに、クライアント装置２０１の情報処理手順について説明する。まず、クライアント装置２０１とサーバ２０２との間のプロトコルとして、ＷｅｂＤＡＶプロトコルを利用する場合を例に挙げて説明する。
【０１２０】
図１１は、情報処理システム２００の第１の実施例を示す説明図である。図１１において、情報処理システム２００に含まれるクライアント装置２０１と、サーバ２０２と、メタデータ管理サーバ２０３とが示されている。第１の実施例では、クライアント装置２０１は、特殊ツール１１０１により、データリネージュ生成処理を行う。
【０１２１】
特殊ツール１１０１は、クライアント装置２０１で動作するソフトウェアであり、クライアント装置２０１とサーバ２０２との間のプロトコルを監視することで、インプットしたファイルとアウトプットしたファイルを特定することができる。
【０１２２】
以下、図１２および図１３を用いて、特殊ツール１１０１によるデータリネージュ生成処理手順について説明する。
【０１２３】
図１２および図１３は、クライアント装置２０１の第１のデータリネージュ生成処理手順の一例を示すフローチャートである。図１２のフローチャートにおいて、まず、クライアント装置２０１は、特殊ツール１１０１により、ｎｅｔｓｔａｔ等のコマンドを使用して、サーバ２０２との間で情報を送受信するポート番号から、プロセスＩＤを取得する（ステップＳ１２０１）。
【０１２４】
つぎに、クライアント装置２０１は、特殊ツール１１０１により、タスクマネージャ等を使用してＯＳに問い合わせることで、プロセスＩＤに対応する解析ツール名を取得する（ステップＳ１２０２）。そして、クライアント装置２０１は、特殊ツール１１０１により、対象ツール辞書５００を参照して、取得した解析ツール名から特定される解析ツールが対象ツールであるか否かを判断する（ステップＳ１２０３）。図１１の例では、解析ツール名から特定される解析ツールは、解析ツール１１１０である。
【０１２５】
ここで、対象ツールではない場合（ステップＳ１２０３：Ｎｏ）、クライアント装置２０１は、特殊ツール１１０１により、本フローチャートによる一連の処理を終了する。一方、対象ツールの場合（ステップＳ１２０３：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、対象ツール辞書５００を参照して、解析スクリプトの記述内容を解析可能であるか否かを判断する（ステップＳ１２０４）。
【０１２６】
ここで、解析スクリプトの記述内容を解析不能の場合（ステップＳ１２０４：Ｎｏ）、クライアント装置２０１は、図１３に示すステップＳ１３０１に移行する。
【０１２７】
一方、解析スクリプトの記述内容を解析可能の場合（ステップＳ１２０４：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、解析ツールの動作中の解析スクリプトの記述内容を解析した結果に基づいて、Ｉｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを特定する（ステップＳ１２０５）。
【０１２８】
以下の説明では、Ｉｎｐｕｔファイル名とＯｕｔｐｕｔファイル名とを「Ｉ／Ｏファイル名」と表記する場合がある。図１１の例では、解析ツール１１１０の動作中の解析スクリプトは、解析スクリプト１１１１である。
【０１２９】
そして、クライアント装置２０１は、特殊ツール１１０１により、Ｉ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１２０６）。ここで、Ｉ／Ｏファイル名が特定された場合（ステップＳ１２０６：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、特定したＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１２０７）。
【０１３０】
例えば、データリネージュは、解析スクリプト名と対応付けて、Ｉ／Ｏファイル名を示す。解析スクリプト名は、例えば、クライアント装置２０１で現在実行中のファイル（現在開いているファイル）のファイル名から特定される。
【０１３１】
そして、クライアント装置２０１は、特殊ツール１１０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１２０８）、本フローチャートによる一連の処理を終了する。
【０１３２】
また、ステップＳ１２０６において、Ｉ／Ｏファイル名が特定されなかった場合（ステップＳ１２０６：Ｎｏ）、クライアント装置２０１は、図１３に示すステップＳ１３０１に移行する。
【０１３３】
図１３のフローチャートにおいて、クライアント装置２０１は、特殊ツール１１０１により、対象ツール辞書５００を参照して、解析ツールがＯＣＲ解析可能であるか否かを判断する（ステップＳ１３０１）。
【０１３４】
ここで、ＯＣＲ解析不能の場合（ステップＳ１３０１：Ｎｏ）、クライアント装置２０１は、特殊ツール１１０１により、ステップＳ１３０９に移行する。一方、ＯＣＲ解析可能の場合（ステップＳ１３０１：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、取得したプロセスＩＤから、ＯＳに問い合わせることで、当該プロセスＩＤに対応するウィンドウハンドルを取得する（ステップＳ１３０２）。
【０１３５】
そして、クライアント装置２０１は、特殊ツール１１０１により、取得したウィンドウハンドルから特定されるウィンドウのスクリーンショットを取得する（ステップＳ１３０３）。つぎに、クライアント装置２０１は、特殊ツール１１０１により、取得したスクリーンショットをＯＣＲ処理する（ステップＳ１３０４）。
【０１３６】
そして、クライアント装置２０１は、特殊ツール１１０１により、スクリーンショットをＯＣＲ処理して認識した結果に基づいて、解析スクリプト名とＩ／Ｏファイル名を特定する（ステップＳ１３０５）。つぎに、クライアント装置２０１は、特殊ツール１１０１により、解析スクリプト名とＩ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１３０６）。
【０１３７】
ここで、解析スクリプト名とＩ／Ｏファイル名が特定された場合（ステップＳ１３０６：Ｙｅｓ）、クライアント装置２０１は、特殊ツール１１０１により、特定した解析スクリプト名とＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１３０７）。
【０１３８】
そして、クライアント装置２０１は、特殊ツール１１０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１３０８）、本フローチャートによる一連の処理を終了する。
【０１３９】
また、ステップＳ１３０６において、解析スクリプト名とＩ／Ｏファイル名が特定されなかった場合（ステップＳ１３０６：Ｎｏ）、クライアント装置２０１は、特殊ツール１１０１により、取得した解析ツール名と該当ファイル名とを対応付けたデータリネージュを生成して（ステップＳ１３０９）、ステップＳ１３０８に移行する。
【０１４０】
該当ファイル名は、例えば、ステップＳ１２０１において取得されたプロセスＩＤに対応する送受信ポートを介して、クライアント装置２０１とサーバ２０２との間で送受信される情報に含まれるＩ／Ｏファイル名である。
【０１４１】
これにより、解析ツールに手を加えることなく、データリネージュを自動生成してメタデータリポジトリ２２０に登録することができる。図１１の例では、解析スクリプト１１１１と対応付けて、Ｉｎｐｕｔファイル１１１２のファイル名と、Ｏｕｔｐｕｔファイル１１１３のファイル名とを示すデータリネージュ１１２０が自動生成されてメタデータリポジトリ２２０に登録される。
【０１４２】
なお、上述した説明では、ステップＳ１２０４において、対象ツール辞書５００を参照して、解析スクリプトの記述内容を解析可能であるか否かを判断することにしたが、これに限らない。例えば、クライアント装置２０１は、特殊ツール１１０１により、解析スクリプトを読み込んだ上で、解析スクリプトの記述内容を解析可能であるか否かを判断することにしてもよい。
【０１４３】
つぎに、クライアント装置２０１とサーバ２０２との間のプロトコルとして、システムコールプロトコルを利用する場合を例に挙げて説明する。
【０１４４】
図１４は、情報処理システム２００の第２の実施例を示す説明図である。図１４において、情報処理システム２００に含まれるクライアント装置２０１と、サーバ２０２と、メタデータ管理サーバ２０３とが示されている。第２の実施例では、クライアント装置２０１は、特殊ファイルシステム１４０１により、データリネージュ生成処理を行う。
【０１４５】
特殊ファイルシステム１４０１は、クライアント装置２０１で動作するソフトウェアであり、クライアント装置２０１とサーバ２０２との間のシステムコールを監視することができる。例えば、特殊ファイルシステム１４０１は、ユーザランドでファイルシステムを作成可能なＦＵＳＥ（Ｆｉｌｅｓｙｓｔｅｍ  ｉｎ  Ｕｓｅｒｓｐａｃｅ）のインターフェースを使用して実装することができる。
【０１４６】
以下、図１５および図１６を用いて、特殊ファイルシステム１４０１によるデータリネージュ生成処理手順について説明する。
【０１４７】
図１５および図１６は、クライアント装置２０１の第２のデータリネージュ生成処理手順の一例を示すフローチャートである。図１５のフローチャートにおいて、まず、クライアント装置２０１は、特殊ファイルシステム１４０１により、システムコールの呼び出し元のプロセスＩＤを取得する（ステップＳ１５０１）。
【０１４８】
システムコールは、例えば、Ｏｐｅｎ／Ｒｅａｄ／Ｗｒｉｔｅのシステムコールである。なお、クライアント装置２０１は、ｉｎｏｔｉｆｙ（ｉｎｏｄｅ  ｎｏｔｉｆｙ）でファイルの変更を検知する仕組みを用いて、ファイルを変更したプロセスＩＤを取得することにしてもよい。また、例えば、ＦＵＳＥの場合には、クライアント装置２０１は、ｆｕｓｅ＿ｇｅｔ＿ｃｏｎｔｅｘｔ（）などにより、ファイル変更を検知する仕組みを用いずに、アクセスプロセス（プロセスＩＤ）を取得することができる。
【０１４９】
つぎに、クライアント装置２０１は、特殊ファイルシステム１４０１により、ｐｓコマンド等を使用してＯＳに問い合わせることで、プロセスＩＤに対応する解析ツール名を取得する（ステップＳ１５０２）。そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、対象ツール辞書５００を参照して、取得した解析ツール名から特定される解析ツールが対象ツールであるか否かを判断する（ステップＳ１５０３）。図１４の例では、解析ツール名から特定される解析ツールは、解析ツール１４１０である。
【０１５０】
ここで、対象ツールではない場合（ステップＳ１５０３：Ｎｏ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、本フローチャートによる一連の処理を終了する。一方、対象ツールの場合（ステップＳ１５０３：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、対象ツール辞書５００を参照して、解析スクリプトの記述内容を解析可能であるか否かを判断する（ステップＳ１５０４）。
【０１５１】
ここで、解析スクリプトの記述内容を解析不能の場合（ステップＳ１５０４：Ｎｏ）、クライアント装置２０１は、図１６に示すステップＳ１６０１に移行する。
【０１５２】
一方、解析スクリプトの記述内容を解析可能の場合（ステップＳ１５０４：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、解析ツールの動作中の解析スクリプトの記述内容を解析した結果に基づいて、Ｉ／Ｏファイル名を特定する（ステップＳ１５０５）。図１４の例では、解析ツール１４１０の動作中の解析スクリプトは、解析スクリプト１４１１である。
【０１５３】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、Ｉ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１５０６）。ここで、Ｉ／Ｏファイル名が特定された場合（ステップＳ１５０６：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、特定したＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１５０７）。
【０１５４】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１５０８）、本フローチャートによる一連の処理を終了する。
【０１５５】
また、ステップＳ１５０６において、Ｉ／Ｏファイル名が特定されなかった場合（ステップＳ１５０６：Ｎｏ）、クライアント装置２０１は、図１６に示すステップＳ１６０１に移行する。
【０１５６】
図１６のフローチャートにおいて、クライアント装置２０１は、特殊ファイルシステム１４０１により、対象ツール辞書５００を参照して、解析ツールがＯＣＲ解析可能であるか否かを判断する（ステップＳ１６０１）。
【０１５７】
ここで、ＯＣＲ解析不能の場合（ステップＳ１６０１：Ｎｏ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、ステップＳ１６０９に移行する。一方、ＯＣＲ解析可能の場合（ステップＳ１６０１：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得したプロセスＩＤから、ＯＳに問い合わせることで、当該プロセスＩＤに対応するウィンドウハンドルを取得する（ステップＳ１６０２）。
【０１５８】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得したウィンドウハンドルから特定されるウィンドウのスクリーンショットを取得する（ステップＳ１６０３）。つぎに、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得したスクリーンショットをＯＣＲ処理する（ステップＳ１６０４）。
【０１５９】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、スクリーンショットをＯＣＲ処理して認識した結果に基づいて、解析スクリプト名とＩ／Ｏファイル名を特定する（ステップＳ１６０５）。つぎに、クライアント装置２０１は、特殊ファイルシステム１４０１により、解析スクリプト名とＩ／Ｏファイル名が特定されたか否かを判断する（ステップＳ１６０６）。
【０１６０】
ここで、解析スクリプト名とＩ／Ｏファイル名が特定された場合（ステップＳ１６０６：Ｙｅｓ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、特定した解析スクリプト名とＩ／Ｏファイル名に基づいて、解析ツールの動作中の解析スクリプトに関するデータリネージュを生成する（ステップＳ１６０７）。
【０１６１】
そして、クライアント装置２０１は、特殊ファイルシステム１４０１により、生成したデータリネージュを、メタデータ管理サーバ２０３に出力して（ステップＳ１６０８）、本フローチャートによる一連の処理を終了する。
【０１６２】
また、ステップＳ１６０６において、解析スクリプト名とＩ／Ｏファイル名が特定されなかった場合（ステップＳ１６０６：Ｎｏ）、クライアント装置２０１は、特殊ファイルシステム１４０１により、取得した解析ツール名と該当ファイル名とを対応付けたデータリネージュを生成して（ステップＳ１６０９）、ステップＳ１６０８に移行する。
【０１６３】
該当ファイル名は、例えば、ステップＳ１５０１において取得されたプロセスＩＤに対応する呼び出し元とサーバ２０２との間で送受信される情報に含まれるｉｎｏｄｅ番号から特定されるＩ／Ｏファイル名である。
【０１６４】
これにより、解析ツールに手を加えることなく、データリネージュを自動生成してメタデータリポジトリ２２０に登録することができる。図１４の例では、解析スクリプト１４１１と対応付けて、Ｉｎｐｕｔファイル１４１２のファイル名と、Ｏｕｔｐｕｔファイル１４１３のファイル名とを示すデータリネージュ１４２０が自動生成されてメタデータリポジトリ２２０に登録される。
【０１６５】
以上説明したように、実施の形態にかかるクライアント装置２０１によれば、所定のプロトコルにより自装置とサーバ２０２との間で送受信される情報に基づいて、自装置で実行中のプロセスＩＤを取得し、取得したプロセスＩＤに基づいて、当該プロセスに対応する解析ツールを特定することができる。また、クライアント装置２０１によれば、特定した解析ツールの動作中の解析スクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、特定した入力データ名と出力データ名とに基づいて、当該解析スクリプトに関するデータリネージュを生成することができる。具体的には、例えば、クライアント装置２０１は、スクリプト名と対応付けて、入力データ名と出力データ名とを示すデータリネージュを生成することができる。スクリプト名は、例えば、クライアント装置２０１で現在動作中の解析スクリプト（現在開いているファイル）のファイル名から特定される。
【０１６６】
これにより、解析ツールに手を加えることなく、解析スクリプトと入出力データとを対応付けたデータリネージュを自動生成することができる。このため、例えば、特定のメタデータ管理ソフトに対応していないような解析ツールを使用したとしても、どのデータに対して、どのような解析が行われ、どのデータが生成されたのかを把握可能なデータリネージュを生成することができる。
【０１６７】
また、クライアント装置２０１によれば、解析スクリプトの記述内容を解析できない場合には、取得したプロセスＩＤに対応するウィンドウハンドルを取得し、取得したウィンドウハンドルから特定されるウィンドウの画像（スクリーンショット）をＯＣＲ処理して認識した結果に基づいて、解析スクリプト名、入力データ名および出力データ名を特定することができる。そして、クライアント装置２０１によれば、特定したスクリプト名、入力データ名および出力データ名に基づいて、データリネージュを生成することができる。
【０１６８】
これにより、解析スクリプトの中身が解析不能な場合に、ＧＵＩのウィンドウのスクリーンショットをＯＣＲ処理して、ウィンドウに表示された解析スクリプト名、入力データ名および出力データ名を特定して、解析スクリプトと入出力データとを対応付けたデータリネージュを生成することができる。
【０１６９】
また、クライアント装置２０１によれば、解析スクリプト名、入力データ名および出力データ名が特定されなかった場合、所定のプロトコルにより自装置と他装置との間で送受信される情報に含まれるファイル名に基づいて、解析ツールに関するデータリネージュを生成することができる。
【０１７０】
これにより、ＯＣＲ解析が不能、あるいは、ＯＣＲ解析しても各種ファイル名を特定できない場合には、解析スクリプトとの対応関係はわからなくても、解析ツールに対応する入力データと出力データを特定可能なデータリネージュを生成することができる。
【０１７１】
また、クライアント装置２０１によれば、対象ツール辞書５００を参照して、特定した解析ツールが対象ツールであるか否かを判定することができる。そして、クライアント装置２０１によれば、解析ツールが対象ツールである場合に、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定することができる。
【０１７２】
これにより、データリネージュを生成する必要のないソフトウェアについて、データリネージュが生成されるのを防ぐことができる。また、データリネージュを生成することができないような種別のソフトウェアに対して、スクリプトの記述内容の解析や、ウィンドウのＯＣＲ処理などの無駄な処理が行われるのを防ぐことができる。
【０１７３】
また、クライアント装置２０１によれば、対象ツール辞書５００を参照して、解析ツールが対象ツールである場合に、解析ツールの種別に応じて、解析スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する、または、ウィンドウの画像をＯＣＲ処理して認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定することができる。
【０１７４】
これにより、解析ツールが、解析スクリプトの中身を解析可能な種別のソフトウェア（例えば、オープンソース）である場合に、解析スクリプトの記述内容を解析して、入力データ名と出力データ名とを特定することができる。例えば、解析ツールが、解析スクリプトの中身を解析不能な種別のソフトウェア（例えば、クローズドソース）であるにもかかわらず、解析スクリプトの中身の解析を試みるといった無駄な処理を防ぐことができる。また、解析ツールが、解析スクリプトを実行するためのＧＵＩを有する種別のソフトウェアである場合に、ウィンドウの画像をＯＣＲ処理して、スクリプト名、入力データ名および出力データ名を特定することができる。例えば、解析ツールが、解析スクリプトを実行するためのＧＵＩを有していない種別のソフトウェアであるにもかかわらず、ウィンドウの画像（スクリーンショット）の取得や、当該画像のＯＣＲ処理を試みるといった無駄な処理を防ぐことができる。
【０１７５】
また、クライアント装置２０１によれば、生成したデータリネージュを出力することができる。例えば、クライアント装置２０１は、生成されたデータリネージュを、メタデータ管理サーバ２０３に送信することができる。
【０１７６】
これにより、クライアント装置２０１において生成されたデータリネージュを、メタデータ管理サーバ２０３のメタデータリポジトリ２２０に登録することができる。
【０１７７】
また、クライアント装置２０１によれば、ＷｅｂＤＡＶプロトコルを利用する場合、ｎｅｔｓｔａｔ等のコマンドを使用して、サーバ２０２との間で情報を送受信するポート番号から、プロセスＩＤを取得することができる。また、クライアント装置２０１によれば、システムコールプロトコルを利用する場合、サーバ２０２との間で送受信されるシステムコールの呼び出し元のプロセスＩＤを取得することができる。
【０１７８】
これにより、クライアント装置２０１とサーバ２０２との間のプロトコルを監視することで、クライアント装置２０１で実行中のプロセスのプロセスＩＤを特定することができる。
【０１７９】
これらのことから、実施の形態にかかる情報処理システム２００およびクライアント装置２０１によれば、解析ツールに手を加えることなく、データリネージュを自動生成してメタデータリポジトリ２２０に登録することができる。これにより、どのデータに対して、どのような解析（データ処理方法）が行われ、どのデータが生成されたのかを把握可能にして、データ利活用の促進を図ることができる。
【０１８０】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＵＳＢメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１８１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１８２】
（付記１）自装置で実行中のプロセスの識別子を取得する取得部と、
前記取得部によって取得された前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定する特定部と、
前記特定部によって特定された前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する解析部と、
前記解析部によって特定された前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する生成部と、
を有することを特徴とする情報処理装置。
【０１８３】
（付記２）前記解析部は、
前記スクリプトの記述内容を解析できない場合には、前記プロセスの識別子に対応するウィンドウハンドルを取得し、取得した前記ウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定し、
前記特定部は、
前記解析部によって特定された前記スクリプト名、前記入力データ名および前記出力データ名に基づいて、前記データリネージュを生成する、ことを特徴とする付記１に記載の情報処理装置。
【０１８４】
（付記３）前記解析部は、
データリネージュの生成対象となるツールを登録した辞書情報を参照して、特定された前記データ処理ツールが対象ツールであるか否かを判定し、
前記データ処理ツールが対象ツールである場合に、前記スクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定する、ことを特徴とする付記２に記載の情報処理装置。
【０１８５】
（付記４）前記辞書情報は、前記生成対象となるツールの種別を特定する情報を含み、
前記解析部は、
前記辞書情報を参照して、前記データ処理ツールが対象ツールである場合に、前記データ処理ツールの種別に応じて、前記スクリプトの記述内容を解析した結果に基づいて、入力データ名と出力データ名とを特定する、または、前記ウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定する、ことを特徴とする付記３に記載の情報処理装置。
【０１８６】
（付記５）前記生成部によって生成された前記データリネージュを出力する出力部を、さらに有することを特徴とする付記４に記載の情報処理装置。
【０１８７】
（付記６）前記データリネージュは、前記スクリプトのスクリプト名と対応付けて、前記入力データ名と前記出力データ名とを示す情報である、ことを特徴とする付記５に記載の情報処理装置。
【０１８８】
（付記７）前記取得部は、
所定のプロトコルにより自装置と他装置との間で送受信される情報に基づいて、自装置で実行中のプロセスの識別子を取得する、ことを特徴とする付記６に記載の情報処理装置。
【０１８９】
（付記８）前記取得部は、
前記他装置との間で情報を送受信するポート番号から、自装置で実行中のプロセスの識別子を取得する、ことを特徴とする付記７に記載の情報処理装置。
【０１９０】
（付記９）前記取得部は、
前記他装置との間で送受信されるシステムコールの呼び出し元のプロセスの識別子を取得する、ことを特徴とする付記７に記載の情報処理装置。
【０１９１】
（付記１０）前記生成部は、
前記解析部によって前記スクリプト名、入力データ名および出力データ名が特定されなかった場合、前記プロトコルにより自装置と前記他装置との間で送受信される情報に含まれるデータ名に基づいて、前記データ処理ツールに関するデータリネージュを生成する、ことを特徴とする付記７に記載の情報処理装置。
【０１９２】
（付記１１）自装置で実行中のプロセスの識別子を取得し、取得した前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定し、特定した前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、特定した前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する情報処理装置、
を含むことを特徴とする情報処理システム。
【０１９３】
（付記１２）前記情報処理装置は、
前記スクリプトの記述内容を解析できない場合には、前記プロセスの識別子に対応するウィンドウハンドルを取得し、取得した前記ウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定し、特定した前記スクリプト名、前記入力データ名および前記出力データ名に基づいて、前記データリネージュを生成する、ことを特徴とする付記１１に記載の情報処理システム。
【０１９４】
（付記１３）自装置で実行中のプロセスの識別子を取得し、
取得した前記プロセスの識別子に基づいて、前記プロセスに対応するデータ処理ツールを特定し、
特定した前記データ処理ツールの動作中のスクリプトの記述内容を解析し、解析した結果に基づいて、入力データ名と出力データ名とを特定し、
特定した前記入力データ名と前記出力データ名とに基づいて、前記スクリプトに関するデータリネージュを生成する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【０１９５】
（付記１４）前記スクリプトの記述内容を解析できない場合には、前記プロセスの識別子に対応するウィンドウハンドルを取得し、
取得した前記ウィンドウハンドルから特定されるウィンドウ内の情報を認識した結果に基づいて、スクリプト名、入力データ名および出力データ名を特定し、
特定した前記スクリプト名、前記入力データ名および前記出力データ名に基づいて、前記データリネージュを生成する、
処理を前記コンピュータに実行させることを特徴とする付記１３に記載の情報処理プログラム。
【符号の説明】
【０１９６】
１０１  情報処理装置
１０２  データ処理装置
１０３  データベース
１１０，７００，９００，１１２０，１４２０  データリネージュ
２００  情報処理システム
２０１  クライアント装置
２０２  サーバ
２０３  メタデータ管理サーバ
２１０  ネットワーク
２２０  メタデータリポジトリ
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  通信Ｉ／Ｆ
３０４  ディスプレイ
３０５  入力装置
３０６  可搬型記録媒体Ｉ／Ｆ
３０７  可搬型記録媒体
４０１  取得部
４０２  特定部
４０３  解析部
４０４  生成部
４０５  出力部
５００  対象ツール辞書
６００，１１１１，１４１１，ｓｃ  解析スクリプト
８００，１０００  スクリーンショット
８０１，８０２，８０３，８０４  図形
１１０１  特殊ツール
１１１０，１４１０  解析ツール
１４０１  特殊ファイルシステム
ＴＬ  データ処理ツール
【国際調査報告】
2020188779.tif 000019
2020188779.tif 000020
2020188779.tif 000021
2020188779.tif 000022