(57)【要約】【課題】ソフトウェアプログラム内の部分を切り出して利用することを可能にする。【解決手段】処理プロファイルにおける入力データの特性と検索用データプロファイルにおける検索用入力データの特性とに基づいて、既存プログラムから、処理プログラムの入力インタフェースの候補となる処理ステップ見つけ、入力候補処理ステップに検索用入力データを入力したときに入力候補処理ステップより下流の処理ステップから出力される出力データの特性を示す出力処理プロファイルを抽出し、出力処理プロファイルにおける出力データの特性と検索用データプロファイルにおける検索用期待値データの特性とに基づいて、既存プログラムから、処理プログラムの出力インタフェースの候補となる処理ステップである出力候補処理ステップを見つけ、既存プログラムにおける入力候補処理ステップから出力候補処理ステップまでの範囲を処理プログラムの抽出範囲とする。【選択図】図１
2019159805.tif 000002
【特許請求の範囲】
【請求項１】
蓄積された既存プログラムから所望の処理プログラムを見つけるためのプログラム検索システムであって、
前記既存プログラムに含まれる各処理ステップおよび前記処理ステップの接続により前記既存プログラムの処理を定義したプログラム定義情報を保持する定義情報保持部と、
前記既存プログラムに含まれる各処理ステップの入力データの特性を示す処理プロファイルを保持する処理プロファイル管理部と、
検索用入力データの特性と、前記検索用入力データを前記処理プログラムに入力したときに出力データとして期待する検索用期待値データの特性とを示す検索用データプロファイルを保持するデータプロファイル管理部と、
前記処理プロファイルにおける前記入力データの特性と前記検索用データプロファイルにおける前記検索用入力データの特性とに基づいて、前記既存プログラムから、前記処理プログラムの入力インタフェースの候補となる処理ステップである入力候補処理ステップを見つける入力候補処理ステップ判定部と、
前記入力候補処理ステップに前記検索用入力データを入力したときに、前記プログラム定義情報において前記入力候補処理ステップより下流にある処理ステップから出力される出力データの特性を示す出力処理プロファイルを抽出する出力処理プロファイル抽出部と、
前記出力処理プロファイルにおける前記出力データの特性と前記検索用データプロファイルにおける前記検索用期待値データの特性とに基づいて、前記既存プログラムから、前記処理プログラムの出力インタフェースの候補となる処理ステップである出力候補処理ステップを見つけ、前記既存プログラムにおける前記入力候補処理ステップから前記出力候補処理ステップまでの範囲を前記処理プログラムの抽出範囲とする抽出範囲候補判定部と、
を有するプログラム検索システム。
【請求項２】
検索者の指定によって前記検索用入力データおよび前記検索用期待値データを取得する検索要求受付部と、
前記受け付けられた前記検索用入力データおよび前記検索用期待値データから前記検索用データプロファイルを抽出するデータプロファイル抽出部とを更に有する、
請求項１に記載のプログラム検索システム。
【請求項３】
前記検索用入力データまたは前記検索用期待値データの一方あるいは両方が複数カラムを含む複数カラムデータであり、
前記データプロファイル抽出部は、前記複数カラムデータの個々のカラムの特性を示すカラム単位データプロファイルと、前記複数カラムデータにおけるカラム間の関係性を示すカラム間データプロファイルと、前記複数カラムデータ間の関係性を示すデータ間データプロファイルと、を抽出する、
請求項２に記載のプログラム検索システム。
【請求項４】
前記データプロファイル抽出部により抽出された前記検索用データプロファイルを前記検索者に提示する、データプロファイル提示部を更に有する、請求項３に記載のプログラム検索システム。
【請求項５】
前記入力候補処理ステップ判定部は、前記検索用入力データの前記カラム単位データプロファイルに基づいて前記入力候補処理ステップの候補を見つけ、１つの処理ステップが複数の前記検索用入力データの入力候補処理ステップの候補に重複している場合、前記データ間データプロファイルおよび所定のルールに基づき前記複数の検索用入力データのうちいずれか１つを選択し、選択した前記検索用入力データを前記入力候補処理ステップとする、
請求項３に記載のプログラム検索システム。
【請求項６】
前記カラム単位データプロファイルはカラムのデータ型を含み、
前記カラム間データプロファイルは、データ型が同一のカラム同士の関係性を含む、
請求項３に記載のプログラム検索システム。
【請求項７】
前記データプロファイル抽出部は、前記検索用入力データと前記検索用期待値データとの関係性を示す入出力データ間データプロファイルを更に抽出し、
前記出力処理プロファイル抽出部は、前記入力候補処理ステップに入力した前記検索用入力データと、その結果として前記入力候補処理ステップより下流にある処理ステップから出力される出力データとの関係性を示す入出力データ間出力処理プロファイルを更に抽出し、
前記抽出範囲候補判定部は、前記出力処理プロファイルにおける前記出力データの特性と前記検索用データプロファイルにおける前記検索用期待値データの特性との適合性と、前記入出力データ間データプロファイルと前記入出力データ間出力処理プロファイルとの適合性と、に基づいて、前記出力候補処理ステップを見つける、
請求項３に記載のプログラム検索システム。
【請求項８】
前記プログラム定義情報に基づいて前記既存プログラムを実行して前記各処理ステップの入力データを取得し、取得した前記各処理ステップの入力データの特性を前記処理プロファイルとして抽出する処理プロファイル抽出部を更に有する、
請求項１に記載のプログラム検索システム。
【請求項９】
蓄積された既存プログラムから所望の処理プログラムを見つけるためのプログラム検索方法であって、
定義情報保持手段が、前記既存プログラムに含まれる各処理ステップおよび前記処理ステップの接続により前記既存プログラムの処理を定義したプログラム定義情報を保持し、
処理プロファイル管理手段が、前記既存プログラムに含まれる各処理ステップの入力データの特性を示す処理プロファイルを保持し、
データプロファイル管理手段が、検索用入力データの特性と、前記検索用入力データを前記処理プログラムに入力したときに出力データとして期待する検索用期待値データの特性とを示す検索用データプロファイルを保持し、
入力候補処理ステップ判定手段が、前記処理プロファイルにおける前記入力データの特性と前記検索用データプロファイルにおける前記検索用入力データの特性とに基づいて、前記既存プログラムから、前記処理プログラムの入力インタフェースの候補となる処理ステップである入力候補処理ステップを見つけ、
出力処理プロファイル抽出手段が、前記入力候補処理ステップに前記検索用入力データを入力したときに、前記プログラム定義情報において前記入力候補処理ステップより下流にある処理ステップから出力される出力データの特性を示す出力処理プロファイルを抽出し、
抽出範囲候補判定手段が、前記出力処理プロファイルにおける前記出力データの特性と前記検索用データプロファイルにおける前記検索用期待値データの特性とに基づいて、前記既存プログラムから、前記処理プログラムの出力インタフェースの候補となる処理ステップである出力候補処理ステップを見つけ、前記既存プログラムにおける前記入力候補処理ステップから前記出力候補処理ステップまでの範囲を前記処理プログラムの抽出範囲とする、
プログラム検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、既存のソフトウェアプログラムの利用を支援する技術に関する。
【背景技術】
【０００２】
ソフトウェア開発の分野では、開発済みソフトウェアのプログラムを新規ソフトウェアの開発に利用することで、ソフトウェア開発を効率化することが検討されている。なお、利用には、既存プログラムをそのまま流用することだけでなく、既存プログラムを改造して用いることや、既存プログラムを参考にすることも含む。特許文献１には、開発済みのソフトウェア部品群の中から新規ソフトウェアの開発に利用できる可能性のあるソフトウェア部品を検索する技術が開示されている。
【０００３】
特許文献１によれば、開発済みのソフトウェア部品群の入出力定義と、検索者から指定された検索入出力定義とに基づいて、ソフトウェア部品を検索し、検索で得られたソフトウェア部品を順次動作させ、動作に基づき評価結果報告データを作成し、評価結果報告データが検索者から指定された評価結果条件を満たすソフトウェア部品を抽出することができる。この技術では、既存のソフトウェア部品群から、入出力定義（データ数とデータ型のみ）が、検索者の指定した入出力データと完全一致するソフトウェア部品が提示される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１６４２４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術では、各ソフトウェア部品の入出力定義に基づいて、提示するソフトウェア部品を選択する。そのため、ソフトウェア部品のプログラムの内部に新規ソフトウェアに利用できる可能性のある部分があったとしても、その部分を提示することはできなかった。
【０００６】
本発明の目的は、ソフトウェアプログラム内の部分を切り出して利用することを可能にする技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様によるプログラム検索システムは、蓄積された既存プログラムから所望の処理プログラムを見つけるためのプログラム検索システムであって、前記既存プログラムに含まれる各処理ステップおよび前記処理ステップの接続により前記既存プログラムの処理を定義したプログラム定義情報を保持する定義情報保持部と、前記既存プログラムに含まれる各処理ステップの入力データの特性を示す処理プロファイルを保持する処理プロファイル管理部と、検索用入力データの特性と、前記検索用入力データを前記処理プログラムに入力したときに出力データとして期待する検索用期待値データの特性とを示す検索用データプロファイルを保持するデータプロファイル管理部と、前記処理プロファイルにおける前記入力データの特性と前記検索用データプロファイルにおける前記検索用入力データの特性とに基づいて、前記既存プログラムから、前記処理プログラムの入力インタフェースの候補となる処理ステップである入力候補処理ステップを見つける入力候補処理ステップ判定部と、前記入力候補処理ステップに前記検索用入力データを入力したときに、前記プログラム定義情報において前記入力候補処理ステップより下流にある処理ステップから出力される出力データの特性を示す出力処理プロファイルを抽出する出力処理プロファイル抽出部と、前記出力処理プロファイルにおける前記出力データの特性と前記検索用データプロファイルにおける前記検索用期待値データの特性とに基づいて、前記既存プログラムから、前記処理プログラムの出力インタフェースの候補となる処理ステップである出力候補処理ステップを見つけ、前記既存プログラムにおける前記入力候補処理ステップから前記出力候補処理ステップまでの範囲を前記処理プログラムの抽出範囲とする抽出範囲候補判定部とを有する。
【発明の効果】
【０００８】
本発明によれば、ソフトウェアプログラム内の部分を切り出して利用することができるようになる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態によるプログラム検索システムのブロック図である。
【図２】図１に示したＥＴＬ定義管理サーバおよびＥＴＬ処理検索サーバに共通するハードウェア構成例を示す図である。
【図３】図１に示したプログラム検索システムにおけるデータの流れを示す図である。
【図４】図１に示したＥＴＬ定義管理サーバにおける処理を説明するためのフローチャートである。
【図５】開発用端末からＥＴＬ定義管理サーバに送信されてくるＥＴＬ定義ファイルの一例を示す図である。
【図６】開発用端末からＥＴＬ定義管理サーバに送信されてくるＥＴＬ定義入力データの一例を示す図である。
【図７】ＥＴＬ定義管理サーバのＥＴＬ定義管理部が有するテーブルの一例を示す図である。
【図８】ＥＴＬ定義管理サーバの処理プロファイル管理部が有するテーブルの一例を示す図である。
【図９】図１に示したＥＴＬ処理検索サーバにおける検索データのプロファイルの抽出から検索者への提示までの処理を説明するためのフローチャートである。
【図１０】検索用端末に入力される検索用入力データの一例を示す図である。
【図１１】検索用端末に入力される検索用期待値データの一例を示す図である。
【図１２】検索用端末のブラウザにて表示される検索画面の一例を示す図である。
【図１３】カラム単位データプロファイル管理部が有するテーブルの一例を示す図である。
【図１４】カラム間データプロファイル管理部が有するテーブルの一例を示す図である。
【図１５】データ間データプロファイル管理部が有するテーブルの一例を示す図である。
【図１６】図１に示したＥＴＬ処理検索サーバにおけるデータプロファイルの検索者への提示からデータプロファイルの確定までの処理を説明するためのフローチャートである。
【図１７】データプロファイル提示部にて提示され、検索用端末のブラウザに表示されるカラム単位データプロファイル確認画面の一例を示す図である。
【図１８】データプロファイル提示部にて提示され、検索用端末のブラウザに表示されるカラム間データプロファイル確認画面の一例を示す図である。
【図１９】データプロファイル提示部にて提示され、検索用端末のブラウザに表示されるデータ間データプロファイル確認画面の一例を示す図である。
【図２０】図１に示したＥＴＬ処理検索サーバにおける検索用入力データの既存ステップへの対応付けから検索者への提示までの処理を説明するためのフローチャートである。
【図２１】入力候補処理ステップ判定結果格納部のテーブルの一例を示す図である。
【図２２】出力処理プロファイル管理部のテーブルの一例を示す図である。
【図２３】抽出範囲候補判定結果格納部のテーブルの一例を示す図である。
【図２４】検索用端末に表示される検索結果確認画面の一例を示す図である。
【図２５】検索用端末に表示される検索結果確認画面の他の例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１１】
図１は、本発明の実施形態によるプログラム検索システムのブロック図である。本形態は図１に示すように、開発用端末１０と、検索用端末２０と、ＥＴＬ（Extract Transform Load）定義管理サーバ３０と、ＥＴＬ処理検索サーバ４０とが、ネットワーク６０を介して接続可能に構成されている。
【００１２】
ＥＴＬ（Extract Transform Load）定義管理サーバ３０は、ＥＴＬ定義受付部３１と、処理プロファイル抽出部３２と、ＥＴＬ定義管理部３３と、処理プロファイル管理部３４と、定義情報保持部となるＥＴＬ定義ファイル格納部３５とを有している。
【００１３】
ＥＴＬ処理検索サーバ４０は、検索要求受付部４１と、データプロファイル抽出部４２と、データプロファイル提示部４３と、入力候補処理ステップ判定部４４と、抽出範囲候補判定部４５と、出力処理プロファイル抽出部４６と、抽出範囲推薦部４７と、検索用データ格納部５１と、入力候補処理ステップ判定結果格納部５２と、出力処理プロファイル管理部５３と、抽出範囲候補判定結果格納部５４と、検索用データプロファイル管理データベース５５とを有している。検索用データプロファイル管理データベース５５は、カラム間データプロファイル管理部５６と、データ間データプロファイル管理部５６と、カラム単位データプロファイル管理部５７とを有している。
【００１４】
図２は、図１に示したＥＴＬ定義管理サーバ３０およびＥＴＬ処理検索サーバ４０に共通するハードウェア構成例を示す図である。図１に示したＥＴＬ定義管理サーバ３０およびＥＴＬ処理検索サーバ４０は、例えば図２に示すように、メモリ１と、ＣＰＵ２と、コントローラ３と、記憶装置４と、ネットワークインタフェース５と、周辺装置インタフェース６とを有している。このようなハードウェア構成を有するＥＴＬ定義管理サーバ３０およびＥＴＬ処理検索サーバ４０においては、ＥＴＬ定義管理サーバ３０およびＥＴＬ処理検索サーバ４０が動作するプログラムや処理結果が記憶装置４に記憶され、コントローラ３によって記憶装置４からプログラムがメモリ１上に読み出され、ＣＰＵ２がプログラムに従ってＥＴＬ定義管理サーバ３０およびＥＴＬ処理検索サーバ４０を動作させる。ＥＴＬ定義管理サーバ３０およびＥＴＬ処理検索サーバ４０は、ネットワークインタフェース５を介してネットワーク６０に接続されており、また、周辺装置インタフェース６を介して入力装置や出力装置、さらには大型の記憶装置等の周辺装置に接続される。
【００１５】
以下に、上記のように構成されたプログラム検索システムの動作について説明する。
【００１６】
図３は、図１に示したプログラム検索システムにおけるデータの流れを示す図である。まず、ＥＴＬ定義管理サーバ３０における処理について図３を参照しながら説明する。
【００１７】
図４は、図１に示したＥＴＬ定義管理サーバ３０における処理を説明するためのフローチャートである。開発用端末１０に入力または記憶されたＥＴＬ定義入力データ１１とＥＴＬ定義ファイル１２とが、ブラウザ１３によってネットワーク６０を介してＥＴＬ定義管理サーバ３０に送信されてくると、まず、ＥＴＬ定義管理サーバ３０のＥＴＬ定義受付部３１が、開発用端末１０から送信されてきたＥＴＬ定義ファイルとＥＴＬ定義入力データとを取得し、ＥＴＬ定義ファイル格納部３５に登録する（ステップ１０１）。
【００１８】
図５は、開発用端末１０からＥＴＬ定義管理サーバ３０に送信されてくるＥＴＬ定義ファイル１２の一例を示す図である。図５に示すように、開発用端末１０からＥＴＬ定義管理サーバ３０に送信されてくるＥＴＬ定義ファイル１２は、既存プログラムに含まれる各処理ステップと処理ステップの接続とにより、既存プログラムの処理を定義している。図５においては、各ブロックがそれぞれ処理ステップを示し、各ブロック間の矢印が処理ステップと処理ステップの接続を示している。矢印の元にある処理ステップの出力データがその矢印の先にある処理ステップの入力データとなる。これらが本発明におけるプログラム定義情報となる。
【００１９】
図６は、開発用端末１０からＥＴＬ定義管理サーバ３０に送信されてくるＥＴＬ定義入力データ１１の一例を示す図である。開発用端末１０からＥＴＬ定義管理サーバ３０に送信されてくるＥＴＬ定義入力データ１１は、ＥＴＬ定義ファイルで示された既存プログラムへの入力データである。既存プログラムに実際に入力されたデータであってもよいし、それを模擬するように準備したデータであってもよい。図６に示す例では、ＥＴＬ定義入力データはｃｓｖファイルである。ＥＴＬ定義入力データ１１は、複数のカラムを含む複数カラムデータである。ｉｄで示される各データの各カラムに値や文字が設定されている。bom_20170920.csvファイルのｉｄ＝１のデータは、ｐａｒｅｎｔカラムにＡＡＡが設定され、ｃｈｉｌｄにａａａが設定され、ｑｕａｎｔｉｔｙカラムに１０が設定されている。
【００２０】
ＥＴＬ定義管理サーバ３０のＥＴＬ定義受付部３１は、開発用端末１０から送信されてきたＥＴＬ定義ファイルとＥＴＬ定義入力データとをＥＴＬ定義ファイル格納部３５に登録した後、取得したＥＴＬ定義ファイルとＥＴＬ定義入力データの組合せおよび格納場所の情報をＥＴＬ定義管理部３３に登録する（ステップ１０２）。
【００２１】
図７は、ＥＴＬ定義管理サーバ３０のＥＴＬ定義管理部３３が有するテーブルの一例を示す図である。ＥＴＬ定義管理部３３が有するテーブルは、図７に示すように、ＥＴＬ定義ファイルの格納場所と、そのＥＴＬ定義ファイルへ入力される各ＥＴＬ定義入力データの格納場所と、それらＥＴＬ定義入力データを入力する既存プログラムの処理ステップと、を対応付けるテーブルである。図７に示すテーブルには、図６に示したＥＴＬ定義入力データbom_20170920.csv、bom_date_20170920.csv、bom_20170927.csv、bom_date_20170927.csvを、図５に示したＥＴＬ定義ファイルに示された“設計変更による在庫増加影響判定.ktr”という既存プログラムのどの処理ステップに入力するかが登録されている。例えば、図７に示す例における先頭には、/tmp/ETL_FILES/に格納されている“設計変更による在庫増加影響判定.ktr”という既存プログラムのInput_oldという処理ステップに、/tmp/ETL_INPUTS/に格納されているbom_20170920.csvという入力データが入力されることが示されている。
【００２２】
ＥＴＬ定義管理サーバ３０においては、取得したＥＴＬ定義ファイルとＥＴＬ定義入力データの組合せおよび格納場所の情報をＥＴＬ定義管理部３３に登録した後、処理プロファイル抽出部３２が、ＥＴＬ定義管理部３３が有するテーブルに登録されたプログラム定義情報に基づいてＥＴＬ定義ファイル格納部３５からＥＴＬ定義入力データ１１とＥＴＬ定義ファイル１２を読み込み、既存プログラムとなるＥＴＬを実行して各処理ステップに対する入力データを取得し、取得した各処理ステップの入力データの特性を処理プロファイルとして抽出し、処理プロファイル管理部３４に登録する（ステップ１０３）。
【００２３】
図８は、ＥＴＬ定義管理サーバ３０の処理プロファイル管理部３４が有するテーブルの一例を示す図である。処理プロファイル管理部３４が有するテーブルには、処理プロファイル抽出部３２が抽出した各処理ステップの処理プロファイルが格納される。各処理ステップの処理プロファイルには、各処理ステップの特性、より具体的には各処理ステップの入力データの特性が示される。図８に示すテーブルには、ＥＴＬ定義ファイル３７に定義された既存プログラムの各処理ステップの処理プロファイルが格納されている。処理プロファイルには、当該処理ステップの入力データを出力する処理ステップの名称（入力ステップ名）と、当該処理ステップへ入力される入力データのレコード数と、入力データに含まれる各カラムの名称（入力カラム名）およびデータ型（入力カラム型）と、各カラムのユニークデータ数、最頻値、平均値、最小値、および最大値と、が格納されている。
【００２４】
このように、登録者がプログラム定義情報をプログラム検索システムに与えれば、プログラム検索システムがプログラム定義情報から各処理ステップの処理プロファイルを抽出するので、登録者は自身で各処理ステップの処理プロファイルを作成する必要がない。
【００２５】
次に、ＥＴＬ処理検索サーバ４０における検索データのプロファイルの抽出から検索者への提示までの処理について図３を参照しながら説明する。
【００２６】
図９は、図１に示したＥＴＬ処理検索サーバ４０における検索データのプロファイルの抽出から検索者への提示までの処理を説明するためのフローチャートである。検索用端末２０に入力された検索用入力データ２２と検索用期待値データ２１とが、ブラウザ２３によってネットワーク６０を介してＥＴＬ処理検索サーバ４０に送信されてくると、まず、ＥＴＬ処理検索サーバ４０の検索要求受付部４１が、検索用端末２０から送信されてきた検索用入力データ２２と検索用期待値データ２１とを取得し、検索用データ格納部５１に登録する（ステップ１０１）。
【００２７】
図１０は、検索用端末２０に入力される検索用入力データ２２の一例を示す図であり、図１１は、検索用端末２０に入力される検索用期待値データ２１の一例を示す図である。検索用端末２０に入力される検索用入力データ２２としては、例えば図１０に示すように、inputA.csvとinputB.csvという２つの検索用入力データが考えられる。また、検索用端末２０に入力される検索用期待値データ２１としては、例えば図１１に示すように、output.csvという検索用期待値データが考えられる。この場合、検索者は、inputA.csvとinputB.csvという２つの検索用入力データを入力すると、output.csvという出力データが出力される処理プログラムが検索により得られることを期待している。
【００２８】
図１０に示す例では、inputA.csvとinputB.csvは、親製品、構成品目、構成数量、開始日、終了日、備考というカラムを有する共通のカラム構成である。また、図１１に示す例では、output.csvは、親製品、構成品目、構成数量（変更前）、構成数量（変更後）、開始日（変更前）、開始日（変更後）、終了日（変更前）、終了日（変更後）というカラム構成である。
【００２９】
図１２は、検索用端末２０のブラウザ２３にて表示される検索画面の一例を示す図である。検索者が検索条件を入力し、検索を実行するための画面としては、例えば図１２に示すような画面が考えられる。図１２に示す画面は検索用端末２０のブラウザ２３にて表示され、検索者は、ブラウザ２３に表示された検索画面において、「入力データ」のテキストボックスにて検索用入力データのファイルを指定し、「期待値データ」のテキストボックスにて検索用期待値データのファイルを指定し、検索開始ボタンを押下することになる。すると、所望の処理プログラムの検索が開始される。追加ボタンを押下することにより「入力データ」のテキストボックスを増やすことができる。
【００３０】
ＥＴＬ処理検索サーバ４０の検索要求受付部４１が、検索用端末２０から送信されてきた検索用入力データ２２と検索用期待値データ２１とを検索用データ格納部５１に登録すると、ＥＴＬ処理検索サーバ４０においては、まず、データプロファイル抽出部４２が検索用データ格納部５１から検索用入力データ２２と出力期待値データ２２を取得する（ステップ２０２）。
【００３１】
次に、データプロファイル抽出部４２は、ｉ個目の検索用データのカラム単位のプロファイル情報を抽出し、カラム単位データプロファイル管理部５８に登録する（ステップ２０３）。
【００３２】
図１３は、カラム単位データプロファイル管理部５８が有するテーブルの一例を示す図である。カラム単位データプロファイル管理部５８が有するテーブルは、検索用データの各カラムの単独での特性を示すテーブルである。例えば、図１３に示すテーブルの先頭には、データ区分が割り当てられ、その他、検索用データ格納場所、レコード数、カラム名、カラム型、ユニークデータ数、最頻値、平均値、最小値、最大値が設定されている。
【００３３】
また、このテーブルには、検索用データの各カラムに対して必須フラグが設定されている。必須フラグは、所望の処理プログラムにおいて当該カラムが必須か否かを示すフラグである。必須フラグ＝ＹＥＳは当該カラムが必須であることを意味し、必須フラグ＝ＮＯは当該カラムが必須でないことを意味している。必須フラグは例えば検索者が設定する。例えば、データ区分が入力であり、検索用データ格納場所が/tmp/user/input/inputA.csv、レコード数が１００、カラム名が親製品、カラム型がString、ユニークデータ数が２０のカラムに対しては必須フラグがＹＥＳと設定されている。
【００３４】
また、データプロファイル抽出部４２は、ｉ個目の検索用データのカラム間のプロファイル情報を抽出し、カラム間データプロファイル管理部５６に登録する（ステップ２０３）。
【００３５】
図１４は、カラム間データプロファイル管理部５６が有するテーブルの一例を示す図である。カラム間データプロファイル管理部５６が有するテーブルは、同一の検索用データにおける２つのカラム同士の関係性（データ内カラム間関係性）を示すテーブルである。例えば、図１４に示すテーブルの先頭には、検索用データ格納場所が割り当てられ、その他、カラム間プロファイル結果が設定されている。
【００３６】
また、このテーブルには、各データ内カラム間関係性に対して確定フラグが設定されている。確定フラグは、当該データ内カラム間関係性が確定されたものか否かを示すフラグである。確定フラグ＝ＹＥＳは当該データ内カラム間関係性が確定であることを意味し、確定フラグ＝ＮＯは当該データ内カラム間関係性が確定でないことを意味している。データプロファイル抽出部４２が自動的に抽出したカラム間データプロファイルでは、各データ内カラム間関係性の確定フラグはＮＯに初期設定され、検索者が確定操作を行うと確定フラグがＹＥＳに変化する。例えば、検索用データ格納場所が/tmp/user/input/inputA.csv、カラム間プロファイル結果が、ユニーク数（［親品目］）＜ユニーク数（［構成品目］）について確定フラグがＹＥＳと設定されている。
【００３７】
このように、複数カラムデータである検索用入力データまたは検索用期待値データのカラム単位データプロファイルをカラムのデータ型により表現し、カラム間データプロファイルをデータ型が同一のカラム同士の関係性で表現するので、容易な処理で明確なデータプロファイルを抽出し、明瞭な適合度の判断が可能となる。
【００３８】
このステップ２０４，２０５の処理は、検索用データ数分だけ繰り返し実行される（ステップ２０３，２０６）。
【００３９】
また、データプロファイル抽出部４２は、ｉ個目の検索用入力データの組合せについて、データ間単位のプロファイル情報を抽出し、データ間データプロファイル管理部５７に登録する（ステップ２０８）。
【００４０】
図１５は、データ間データプロファイル管理部５７が有するテーブルの一例を示す図である。データ間データプロファイル管理部５７が有するテーブルは、検索用データ間の関係性、言い換えれば、検索用データをまたぐカラム間の関係性（データ間カラム間関係性）を示すテーブルである。例えば、図１５に示すテーブルにおいてはデータ間プロファイル結果として、レコード数（[inputB.csv]）＜レコード数（[inputA.csv]）や、ユニークデータ数（[inputB.csv]-[親品目]）＜ユニークデータ数（[inputA.csv]−[親品目]）が設定されている。
【００４１】
また、このテーブルにも、各データ間カラム間関係性に対して確定フラグが設定されている。確定フラグは、当該データ間カラム間関係性が確定されたものか否かを示すフラグである。確定フラグ＝ＹＥＳは当該データ間カラム間関係性が確定であることを意味し、確定フラグ＝ＮＯは当該データ間カラム間関係性が確定でないことを意味している。データプロファイル抽出部が自動的に抽出したデータ間データプロファイルでは、各データ間カラム間関係性の確定フラグはＮＯに初期設定され、検索者が確定操作を行うと確定フラグがＹＥＳに変化する。例えば、レコード数（[inputB.csv]）＜レコード数（[inputA.csv]）については、ＹＥＳが設定されている。
【００４２】
このステップ２０８の処理は、検索用入力データの組み合わせ数分だけ繰り返し実行される（ステップ２０７，２０９）。
【００４３】
次に、データプロファイル抽出部４２が、ｉ個目の検索用入力データと検索用期待値データとの組合せについて、データ間単位のプロファイル情報を抽出し、データ間データプロファイル管理部５７に登録する（ステップ２１１）。
【００４４】
このステップ２１１の処理は、検索用入力データの指定数分だけ繰り返し実行される（ステップ２１０，２１２）。
【００４５】
このように、検索者が指定した検索用入力データおよび検索用期待値データから検索用データプロファイルが抽出されるため、検索者は入力データと出力として期待する期待値データとを指定することで容易に所望の処理プログラムを検索することができる。
【００４６】
また、複数カラムデータである検索用データのカラム単位、カラム間、データ間のデータプロファイルを処理プログラムの範囲の抽出に用いることができるので、所望の処理と入出力が類似する処理プログラムを取得することができる。
【００４７】
このようにして、検索用入力データの特性と、検索用入力データを処理プログラムに入力したときに出力データとして期待する検索用期待値データの特性とを示す検索用データプロファイルが検索用データプロファイル管理部５５に登録、保持されることになる。
【００４８】
検索用データプロファイルが検索用データプロファイル管理部５５に登録されると、次に、データプロファイル提示部４３が、データプロファイル抽出部４２により抽出され、検索用データプロファイル管理部５５に登録された検索用データプロファイルを検索者に提示する（ステップ２１３）。
【００４９】
次に、ＥＴＬ処理検索サーバ４０におけるデータプロファイルの検索者への提示からデータプロファイルの確定までの処理について図３を参照しながら説明する。
【００５０】
図１６は、図１に示したＥＴＬ処理検索サーバ４０におけるデータプロファイルの検索者への提示からデータプロファイルの確定までの処理を説明するためのフローチャートである。上述したように、検索用データプロファイル情報が検索用データプロファイル管理部５５に登録されると、データプロファイル提示部４３が、データプロファイル抽出部４２により抽出され、検索用データプロファイル管理部５５に登録された検索用データプロファイルを取得して検索用端末２０のブラウザ２３に表示する（ステップ３０１）。
【００５１】
図１７は、データプロファイル提示部４３にて提示され、検索用端末２０のブラウザ２３に表示されるカラム単位データプロファイル確認画面の一例を示す図である。図１７に示すように、データプロファイル提示部４３にて提示され、検索用端末２０のブラウザ２３に表示されるカラム単位データプロファイル確認画面においては、検索用データのカラム単位データプロファイルが、検索者がその内容を確認し、必須フラグを設定できるように表示される。具体的には、図１７に示すように、inputA.csv、inputB.csv、およびoutput.csvの各検索用データのカラム単位データプロファイルがそれぞれタブで選択可能に表示される。図１７に示す例では、inputA.csvが選択されている。必須フラグは検索者が必要に応じてチェックを入力するチェックボックスとなっている。
【００５２】
図１８は、データプロファイル提示部４３にて提示され、検索用端末２０のブラウザ２３に表示されるカラム間データプロファイル確認画面の一例を示す図である。図１８に示すように、データプロファイル提示部４３にて提示され、検索用端末２０のブラウザ２３に表示されるカラム間データプロファイル確認画面においては、検索用データのカラム間データプロファイルが、検索者がその内容を確認し、確定フラグを設定できるように表示される。具体的には、図１８に示すように、inputA.csv、inputB.csv、およびoutput.csvの各検索用データ内のカラム間データプロファイルがそれぞれタブで選択可能に表示される。図１８に示す例では、inputA.csvが選択されている。確定フラグは検索者が必要に応じてチェックを入力するチェックボックスとなっている。
【００５３】
カラム間データプロファイル確認画面には、さらに、修正ボタンと追加ボタンとが表示されている。検索者は、データプロファイル抽出部が自動的に抽出した、検索用入力データinputA.csvおよびinputB.csvと、検索用期待値データoutput.csvとのそれぞれのカラム間データプロファイルを確認し、修正したり、追加したりすることができる。
【００５４】
図１９は、データプロファイル提示部４３にて提示され、検索用端末２０のブラウザ２３に表示されるデータ間データプロファイル確認画面の一例を示す図である。図１９に示すように、データプロファイル提示部４３にて提示され、検索用端末２０のブラウザ２３に表示されるデータ間データプロファイル確認画面においては、検索用データのデータ間データプロファイルが、検索者がその内容を確認し、確定フラグを設定できるように表示される。具体的には、図１９に示すように、検索用入力データinputA.csvのカラムと検索用入力データoutputB.csvのカラムの関係性を示すデータ間カラム間関係性が表示される。例えば、図１９に示す例における先頭には、inputA.csvのレコード数がinputB.csvのレコード数よりも小さいということが示されている。また、確定フラグは、検索者が必要に応じてチェックを入力するチェックボックスとなっている。
【００５５】
データ間データプロファイル確認画面には、さらに、修正ボタンと追加ボタンとが表示されている。検索者は、データプロファイル抽出部が自動的に抽出した、検索用データのデータ間データプロファイルを確認し、修正したり、追加したりすることができる。
【００５６】
このようにして検索用データプロファイルが検索用端末２０のブラウザ２３に表示された後、表示されたデータプロファイル抽出結果の項目が確定されると（ステップ３０２）、データプロファイル提示部４３は、確定結果を検索用データプロファイル管理部５５のデータベースに反映し（ステップ３０３）、検索用データプロファイル確認画面の表示を終了する（ステップ３０４）。
【００５７】
このように、データプロファイル抽出部４２により抽出された検索用データプロファイルを検索者に提示することで、抽出された検索用データプロファイルを検索者に確認させることができる。
【００５８】
また、表示されたデータプロファイル抽出結果の項目が確定されない場合であって、検索用データのプロファイルが追加された場合は（ステップ３０５）、データプロファイル提示部４３は、追加されたデータプロファイル情報を、検索用データプロファイル管理部５５のデータベースに対して、確定フラグ＝ＹＥＳで追加し（ステップ３０６）、検索用データプロファイル確認画面の表示を終了する。
【００５９】
次に、ＥＴＬ処理検索サーバ４０における検索用入力データの既存ステップへの対応付けから検索者への提示までの処理について図２０を参照しながら説明する。図２０は、図１に示したＥＴＬ処理検索サーバ４０における検索用入力データの既存ステップへの対応付けから検索者への提示までの処理を説明するためのフローチャートである。
【００６０】
まず、入力候補処理ステップ判定部４４が、カラム単位データプロファイル管理部５８のテーブルから検索用入力データのプロファイル取得する（ステップ４０１）。
【００６１】
次に、入力候補処理ステップ判定部４４は、ｉ個目の検索用データのカラム単位のプロファイル情報のカラム型の組合せと、処理プロファイル管理部３４のテーブルの入力カラム型の組合せが一致する入力ステップを、対応付け候補として処理プロファイル管理部３４のテーブルから全て抽出する（ステップ４０２）。
【００６２】
このステップ４０２の処理は、検索用入力データの取得数分だけ繰り返し実行される（ステップ４０２，４０４）。
【００６３】
そして、１つの抽出された入力ステップに対して、複数の検索用入力データが対応付け候補になると（ステップ４０５）、入力候補処理ステップ判定部４４は、対応付け候補となった検索用入力データの関係を、データ間データプロファイル管理部５７のテーブルから（確定フラグ＝ＹＥＳのみ）対応付け時のルールとして取得し、対応付けを確定する（ステップ４０６）。このように、入力候補処理ステップ判定部４４は、検索用入力データのカラム単位データプロファイルに基づいて入力候補処理ステップの候補を見つけ、１つの処理ステップが複数の検索用入力データの入力候補処理ステップの候補に重複している場合、データ間データプロファイルおよび所定のルールに基づき複数の検索用入力データのうちいずれか１つを選択し、選択した検索用入力データを入力候補処理ステップとして確定する。
【００６４】
これにより、１つの処理ステップが複数の検索用入力データの入力インタフェースの候補となった場合にはデータ間データプロファイルと所定のルールに基づいて、いずれかの検索用入力データを選択し、その入力インタフェースの入力インタフェースの候補とするので、１つの処理ステップが複数の検索用入力データの入力インタフェースの候補となった場合に、いずれか適切な１つの検索用入力データの入力インタフェースの候補にすることができる。
【００６５】
入力候補処理ステップ判定部４４は、対応付けた検索用入力データと処理ステップに含まれるカラム間を、カラム型が一致するものと対応付ける（ステップ４０７）。なお、ステップ４０５にて１つの抽出された入力ステップに対して複数の検索用入力データが対応付け候補にならない場合は、ステップ４０６の処理を行わずにステップ４０７の処理を行う。
【００６６】
そして、処理ステップ内の１つのカラムに対して検索用入力データ内のカラムが複数対応付く場合は（ステップ４０８）、入力候補処理ステップ判定部４４は、対応付け候補となった検索用入力データ内の複数カラムの関係を、カラム間データプロファイル管理部５６のテーブルから（確定フラグ＝ＹＥＳのみ）対応付け時のルールとして取得し、対応付けを確定し、入力候補処理ステップ判定結果格納部５２のテーブルに登録する（ステップ４０９）。
【００６７】
このように、入力候補処理ステップ判定部４４は、処理プロファイルにおける入力データの特性と検索用データプロファイルにおける検索用入力データの特性とに基づいて、既存プログラムから、処理プログラムの入力インタフェースの候補となる処理ステップである入力候補処理ステップを見つけることになる。
【００６８】
図２１は、入力候補処理ステップ判定結果格納部５２のテーブルの一例を示す図である。入力候補処理ステップ判定結果格納部５２のテーブルは、上述したように、入力候補処理ステップ判定部４４によって、検索用入力データに適合する入力データを有する処理ステップが入力候補処理ステップとして抽出され、その処理ステップの情報が判定結果として格納されるテーブルである。
【００６９】
図２１に示すように、入力候補処理ステップ判定結果格納部５２のテーブルに登録される判定結果には、検索用入力データのそれぞれに対して適合する、既存プログラムの処理ステップの名称（処理ステップ名）と、その入力データについてその入力データを出力する処理ステップの名称（入力ステップ名）とが含まれている。さらに、検索用入力データに含まれる各カラムに適合する、既存プログラムの処理ステップへの入力データの各カラムの名称（入力カラム名）が対応付けて登録される。
【００７０】
上述したようにして入力候補処理ステップ判定部４４における判定結果が入力候補処理ステップ判定結果格納部５２に登録されると、ＥＴＬ処理検索サーバ４０においては、出力処理プロファイル抽出部４６が、入力候補処理ステップ判定結果格納部５２のテーブルに登録された情報に基いて、ＥＴＬ定義ファイル格納部３５からＥＴＬ定義ファイル１２を読み込み、さらに検索用入力データを用いて既存プログラムとなるＥＴＬを実行して各処理ステップからの出力データの特性を出力処理プロファイルとして抽出し、出力処理プロファイル管理部５３のテーブルに登録する（ステップ４１０）。このように、出力処理プロファイル抽出部４６は、検索用入力データを入力候補処理ステップに入力して、プログラム定義情報となるＥＴＬ定義ファイル１２において入力候補処理ステップより下流にある処理ステップを実行し、各処理ステップの出力データを取得し、出力データの特性を示す出力処理プロファイルを抽出し、出力処理プロファイルとして出力処理プロファイル管理部５３のテーブルに登録することになる。
【００７１】
図２２は、出力処理プロファイル管理部５３のテーブルの一例を示す図である。出力処理プロファイル管理部５３のテーブルには、入力候補処理ステップより下流にある処理ステップから出力される出力データの特性が登録される。図２２に示す例においては、Select_Valuesという処理ステップの出力データの特性が示されている。Select_Valuesの出力データは、出力レコード数が２０であり、その他、出力カラム名、出力カラム型、ユニークデータ数、最頻値、平均値、最小値、最大値が登録されている。
【００７２】
上述したようにして出力処理プロファイル抽出部４６にて出力処理プロファイルが出力処理プロファイル管理部５３のテーブルに登録されると、ＥＴＬ処理検索サーバ４０においては、抽出範囲候補判定部４５が、検索用期待値データに関する情報をカラム単位データプロファイル管理部５８のテーブルから取得し、出力処理プロファイル管理部５３のテーブルから各処理ステップにおけるプロファイル結果との出力適合度を評価し、それにより、処理プログラムの出力インタフェースの候補となる処理ステップである出力候補処理ステップを見つけ、既存プログラムにおける入力候補処理ステップから出力候補処理ステップまでの範囲を処理プログラムの抽出範囲とし、その抽出範囲候補を抽出範囲候補判定結果格納部５４に登録する（ステップ４１１）。すなわち、抽出範囲候補判定部４５は、出力処理プロファイルにおける出力データの特性と検索用データプロファイルにおける検索用期待値データの特性とに基づいて、既存プログラムから、処理プログラムの出力インタフェースの候補となる処理ステップである出力候補処理ステップを見つけ、既存プログラムにおける入力候補処理ステップから出力候補処理ステップまでの範囲を処理プログラムの抽出範囲とする。
【００７３】
図２３は、抽出範囲候補判定結果格納部５４のテーブルの一例を示す図である。上述したように、抽出範囲候補判定結果格納部５４のテーブルには、抽出範囲候補判定部４５において検索用データによる検索の結果として抽出された処理プログラムの範囲を示す情報が登録される。抽出された処理プログラムの範囲は、入力データが入力される入力インタフェースとなる処理ステップの名称（抽出開始処理ステップ名）と、出力データを出力する出力インタフェースとなる処理ステップの名称（抽出終了処理ステップ名）とで表現される。
【００７４】
図２３に示す例では、/tmp/ETL_FILES/に存在する“設計変更による在庫増加影響判定.ktr”という既存プログラムのうち、Lookup_newとLookup_oldを抽出開始処理ステップとし、Select_Valuesを抽出終了処理ステップとする範囲が抽出範囲候補として抽出されて登録されている。
【００７５】
なお、ステップ４１０において、出力処理プロファイル抽出部４６が、さらに、検索用入力データと各処理ステップの出力データとの関係性を入出力データ間出力処理プロファイルとして抽出し、ステップ４１１において、抽出範囲候補判定部４５が、さらに、上記入出力データ間出力処理プロファイルとの適合性を評価してもよい。そうすれば、出力データのプロファイルだけでなく、入力データと出力データの関係性のプロファイルも用いて、出力候補処理ステップを決めることになることで、より検索用データに適合する処理ステップを検索者に提示することが可能となる。
【００７６】
その後、ＥＴＬ抽出範囲推薦部４７が、抽出範囲候補判定結果格納部５４のテーブルの内容を読み込み、出力適合度が高い順にソートして検索用端末２０のブラウザ２３に検索結果として表示する（ステップ４１２）。
【００７７】
図２４は、検索用端末２０に表示される検索結果確認画面の一例を示す図である。検索用端末２０に表示される検索結果確認画面は、検索結果を検索者に提示するための画面である。検索結果確認画面には、処理プログラムの出力データが、検索条件である検索用期待値データに対して適合する度合い（出力適合度）に応じてソートされた、検索結果の処理プログラムの一覧（検索結果一覧）が表示される。
【００７８】
図２４に示す例においては、各処理プログラムの候補ＩＤと、その出力適合度とが表示されているとともに、出力結果や抽出範囲について確認用の画面を表示させるためのボタンと、抽出範囲や抽出元の利用例をダウンロードするためのボタンとが表示されている。
【００７９】
また、検索結果確認画面には、検索者が検索結果一覧の中で選択した部分の詳細を示すプレビュー画面が表示される。図２４に示す例では、候補ＩＤ＝１の処理プログラムの抽出範囲プレビューが選択され、その抽出範囲の詳細がプレビュー画面に表示されている。具体的には、inputA.csvとinputB.csvを入力データとする処理ステップJoin_diffを入力インタフェースとし、処理ステップoutputを出力インタフェースとする処理プログラムの処理ステップ構成が表示されている。
【００８０】
検索者は、この検索結果確認画面を見て、新規プログラムの開発に利用する処理プログラムを決定する等が考えられる。
【００８１】
図２５は、検索用端末２０に表示される検索結果確認画面の他の例を示す図である。本実施形態によるプログラム検索システムは、検索条件として検索用入力データのみを入力して検索を実行することもできる。その場合、図２５に示すように、検索用端末２０に表示される検索結果確認画面には、処理プログラムの入力データが、検索条件である検索用入力データに対して適合する度合い（入力適合度）に応じてソートされた、検索結果の処理プログラムの一覧（検索結果一覧）が表示される。具体的には、各処理プログラムの候補ＩＤと、その入力適合度とが表示されているとともに、抽出範囲について確認用の画面を表示させるためのボタンと、抽出範囲や抽出元の利用例をダウンロードするためのボタンとが表示されている。
【００８２】
本実施形態によれば、既存プログラムの処理ステップの境界を所望の処理プログラムの入力インタフェースおよび出力インタフェースとして所望の処理プログラムの抽出範囲を定めることにより、既存プログラム内に所望の処理を行う部分があれば、その部分を切り出して利用することが可能となる。
【００８３】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の範囲を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【００８４】
１０…開発用端末、２０…検索用端末、３０…ＥＴＬ定義管理サーバ、３１…ＥＴＬ定義受付部、３２…処理プロファイル抽出部、３３…ＥＴＬ定義管理部、３４…処理プロファイル管理部、３５…ＥＴＬ定義ファイル格納部、４０…ＥＴＬ処理検索サーバ、４１…検索要求受付部、４２…データプロファイル抽出部、４３…データプロファイル提示部、４４…入力候補処理ステップ判定部、４５…抽出範囲候補判定部、４６…出力処理プロファイル抽出部、４７…抽出範囲推薦部、５１…検索用データ格納部、５２…入力候補処理ステップ判定結果格納部、５３…出力処理プロファイル管理部、５４…抽出範囲候補判定結果格納部、５５…検索用データプロファイル管理部、５６…カラム間データプロファイル管理部、５７…データ間データプロファイル管理部、５８…カラム単位データプロファイル管理部
【図１】
2019159805.tif 000003
【図２】
2019159805.tif 000004
【図３】
2019159805.tif 000005
【図４】
2019159805.tif 000006
【図５】
2019159805.tif 000007
【図６】
2019159805.tif 000008
【図７】
2019159805.tif 000009
【図８】
2019159805.tif 000010
【図９】
2019159805.tif 000011
【図１０】
2019159805.tif 000012
【図１１】
2019159805.tif 000013
【図１２】
2019159805.tif 000014
【図１３】
2019159805.tif 000015
【図１４】
2019159805.tif 000016
【図１５】
2019159805.tif 000017
【図１６】
2019159805.tif 000018
【図１７】
2019159805.tif 000019
【図１８】
2019159805.tif 000020
【図１９】
2019159805.tif 000021
【図２０】
2019159805.tif 000022
【図２１】
2019159805.tif 000023
【図２２】
2019159805.tif 000024
【図２３】
2019159805.tif 000025
【図２４】
2019159805.tif 000026
【図２５】
2019159805.tif 000027