(57)【要約】【課題】内容に不具合があるファイルを精度良く特定することを図ること。【解決手段】ファイル特定装置１００は、環境Ａに含まれるサーバ群が有するファイル群の同一名称のファイルを、共通サーバ数に基づいて、階層１〜４のいずれかに区分する。同様に、ファイル特定装置１００は、環境Ｂに含まれるサーバ群が有するファイル群の同一名称のファイルを、共通サーバ数に基づいて、階層１〜４のいずれかに区分する。次に、ファイル特定装置１００は、区分される階層の異なる同一名称のファイルを抽出する。続けて、ファイル特定装置１００は、抽出したファイルが環境Ａで区分された階層および抽出したファイルが環境Ｂで区分された階層に基づいて、複数の階層の各々の階層の逸脱度合を参照して、抽出したファイルの危険度を決定する。【選択図】図１
2015018307.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行させることを特徴とするファイル評価プログラム。
【請求項２】
前記コンピュータに、
抽出した前記階層の異なる同一名称のファイルが区分された各階層に基づいて、前記複数の階層の各々の階層に区分される同一名称のファイル同士の内容の逸脱の度合を表す指標値を参照して、前記階層の異なる同一名称のファイルの内容に不具合がある可能性の度合を示す評価値を決定する、
処理を実行させることを特徴とする請求項１に記載のファイル評価プログラム。
【請求項３】
前記コンピュータに、
前記複数のサーバ群の各々のサーバ群に含まれるサーバの数を特定する構成情報に基づいて、複数の階層を生成する、処理を実行させ、
前記区分する処理は、
前記サーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度と前記複数のサーバ群の各々のサーバ群の構成情報とに基づき、生成した前記複数の階層のいずれかに区分することを特徴とする請求項２に記載のファイル評価プログラム。
【請求項４】
前記複数のサーバ群の各々のサーバ群の構成情報は、前記各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する情報であることを特徴とする請求項３に記載のファイル評価プログラム。
【請求項５】
前記コンピュータに、
前記複数のサーバ群の各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する構成情報に基づいて、前記複数の階層から前記各々のサーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する、処理を実行させ、
前記決定する処理は、
サーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層と前記サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて前記指標値を表す関数に、特定した前記同一名称のファイル同士の内容が逸脱していない階層と抽出した前記階層の異なる同一名称のファイルが区分された各階層のいずれか一方の階層とを入力して得た指標値と、前記関数に、特定した前記同一名称のファイル同士の内容が逸脱していない階層と抽出した前記階層の異なる同一名称のファイルが区分された各階層の前記いずれか一方とは異なる他方の階層とを入力して得た指標値との差分を算出することにより、前記評価値を決定することを特徴とする請求項２〜４のいずれか一つに記載のファイル評価プログラム。
【請求項６】
前記コンピュータに、
前記複数のサーバ群の各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する構成情報に基づいて、前記複数の階層から前記各々のサーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する、処理を実行させ、
前記決定する処理は、
サーバ群の構成を特定する構成情報から特定されるサーバの数と、前記サーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層と前記サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて前記指標値を表す関数に、前記複数のサーバ群のいずれかのサーバ群のサーバの数と特定した前記同一名称のファイル同士の内容が逸脱していない階層と前記いずれかのサーバ群における抽出した前記階層の異なる同一名称のファイルが区分された階層とを入力して得た指標値と、前記関数に前記複数のサーバ群の前記いずれかのサーバ群とは異なる他のサーバ群のサーバの数と特定した前記同一名称のファイル同士の内容が逸脱していない階層と前記他のサーバ群における抽出した前記階層の異なる同一名称のファイルが区分された階層とを入力して得た指標値の差分を算出することにより、前記評価値を決定することを特徴とする請求項２〜４のいずれか一つに記載のファイル評価プログラム。
【請求項７】
複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分する区分部と、
前記複数のサーバ群のうちのサーバ群間で、前記区分部によって区分される階層の異なる同一名称のファイルを抽出する抽出部と、
を有することを特徴とするファイル特定装置。
【請求項８】
コンピュータが、
複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行することを特徴とするファイル評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル評価プログラム、ファイル特定装置、およびファイル評価方法に関する。
【背景技術】
【０００２】
従来、ファイルの内容が正規であるか否かを、２つのファイルの内容を比較することにより判断する技術がある。関連する先行技術として、たとえば、原本性が保証されたファイルデータとアプリケーション動作サーバ上にリリースされたチェック対象となるファイルデータとを比較するものがある。また、アプリケーションが改修されている箇所を記述した改修タグをアプリケーションの実行結果トレースから読み込み、改修されている部分を現行システムと新システムの間の比較対象から除外する技術がある。さらに、利用者からのデプロイ指示に際して管理サーバがデプロイ元サーバ装置とデプロイ先サーバ装置とのハードウェア構成を比較し、比較した差異に応じてデプロイ方法を変化させる技術がある。（たとえば、下記特許文献１〜３を参照。）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−０５３６３５号公報
【特許文献２】特開２０１２−２０３５８０号公報
【特許文献３】特開２００９−１２２９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、サーバ群が提供するサービスに不具合が発生した際に、サーバ群が有するファイルから内容に不具合があるファイルを特定することが困難である。たとえば、サーバ群のサーバ同士でファイルの内容を比較すると、ファイルの内容が異なる場合であっても、内容に不具合があるため内容が異なるファイルと、サーバごとに内容が異なることが正規であるため内容が異なるファイルの双方が含まれ得る。したがって、ファイルの内容比較のみで、内容に不具合の可能性が高いファイルを精度良く特定することが困難である。
【０００５】
１つの側面では、本発明は、内容に不具合があるファイルを精度良く特定できるファイル評価プログラム、ファイル特定装置、およびファイル評価方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、複数のサーバ群のサーバ群ごとに、サーバ群が有する複数のファイルのうちの同一名称のファイルを、サーバ群での同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出するファイル評価プログラム、ファイル特定装置、およびファイル評価方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、内容に不具合があるファイルを精度良く特定することを図ることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかるファイル特定装置の動作例を示す説明図である。
【図２】図２は、評価対象となるクラウドシステムの一例を示す説明図である。
【図３】図３は、ファイル特定装置のハードウェア構成の一例を示すブロック図である。
【図４】図４は、ファイル特定装置の機能構成例を示すブロック図である。
【図５】図５は、ファイル集合テーブルの記憶内容の一例を示す説明図である。
【図６】図６は、ファイル集合テーブルの生成例を示す説明図（その１）である。
【図７】図７は、ファイル集合テーブルの生成例を示す説明図（その２）である。
【図８】図８は、ファイル集合テーブルの生成例を示す説明図（その３）である。
【図９】図９は、ファイル集合テーブルの生成例を示す説明図（その４）である。
【図１０】図１０は、共通サーバ数の差異があるファイルの抽出例を示す説明図である。
【図１１】図１１は、共通サーバ数の差異があるファイルにおける危険性の一例を示す説明図である。
【図１２】図１２は、構成情報と共通サーバ数との関係を示す説明図である。
【図１３】図１３は、危険性と逸脱度合との関係を示す説明図である。
【図１４】図１４は、比較対象ファイルに対する逸脱度合の説明図である。
【図１５】図１５は、環境間における比較対象ファイルに対する逸脱度合の説明図である。
【図１６】図１６は、逸脱関数の第１の例を示す説明図である。
【図１７】図１７は、逸脱関数の第２の例を示す説明図である。
【図１８】図１８は、逸脱関数による逸脱度合の値の算出例を示す説明図（その１）である。
【図１９】図１９は、逸脱関数による逸脱度合の値の算出例を示す説明図（その２）である。
【図２０】図２０は、具体例に用いる環境Ａ、Ｂと構成情報の説明図である。
【図２１】図２１は、具体例に用いる環境Ａ、Ｂが有するファイルの説明図である。
【図２２】図２２は、ファイル集合テーブルの生成の具体例を示す説明図である。
【図２３】図２３は、共通サーバ数の差異があるファイルの具体例を示す説明図である。
【図２４】図２４は、階層の生成の具体例を示す説明図である。
【図２５】図２５は、危険度の算出の具体例を示す説明図である。
【図２６】図２６は、危険度の妥当性を示す説明図である。
【図２７】図２７は、危険度の表示例を示す説明図である。
【図２８】図２８は、ファイル評価処理手順の一例を示すフローチャートである。
【図２９】図２９は、ファイル集合テーブル作成処理手順の一例を示すフローチャートである。
【図３０】図３０は、集合差異ファイル特定処理手順の一例を示すフローチャートである。
【図３１】図３１は、危険度算出処理手順の一例を示すフローチャート（その１）である。
【図３２】図３２は、危険度算出処理手順の一例を示すフローチャート（その２）である。
【図３３】図３３は、危険度算出処理手順の一例を示すフローチャート（その３）である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のファイル評価プログラム、ファイル特定装置、およびファイル評価方法の実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかるファイル特定装置の動作例を示す説明図である。ファイル特定装置１００は、サーバ群を有する環境の中で、不具合があるファイルを特定するコンピュータである。サーバ群は、クラウドサービスを提供する装置群や、クラウドサービスの開発に用いる装置群である。サーバ群と、クラウドサービスとの関係は、図２で後述する。
【００１１】
ある環境で不具合が発生した場合、環境に含まれるサーバ群のいずれかのサーバが有するファイルの内容に不具合が存在することがある。ファイルの内容には、サーバが有するハードウェアの設定値や、サーバが実行するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、アプリケーションソフトウェアといったソフトウェアの設定値、といったデータが格納されるものがある。
【００１２】
ファイルの内容に不具合が発生する理由としては、たとえば、開発者が検証のために、一時的に、あるサーバのあるファイルの内容を書き換えたのち、戻し忘れが発生した場合である。このとき、ファイルの内容の書き換えを行った開発者以外の開発者はどのファイルを変更したかを把握していないため、問題発生の原因を特定することが困難になる。
【００１３】
問題発生の原因を特定する際に、クラウドサービスを運用する管理者、または、クラウドサービスを開発する開発者は、環境内のファイルの内容を閲覧して、内容に誤りがあるか否かを確認する。具体的な確認方法の第１の例として、不具合が発生した環境に含まれるサーバ群のサーバ同士で同一名称のファイルの内容を比較して、内容に差異があるファイルの内容を確認する方法がある。また、確認方法の第２の例として、不具合が発生した環境と、不具合が発生した環境の構成が類似する環境と、に含まれるサーバ同士で同一名称のファイルの内容を比較して、内容に差異があるファイルの内容を確認する方法がある。
【００１４】
しかしながら、第１の例および第２の例ともに、内容に差異があるファイルを特定することはできるが、ファイルの内容が正規であるか否かは判断できない。たとえば、第１の例では、サーバ間でファイルの内容が異なることが正規である設定内容なのか、それとも、設定ミスによりサーバ間でファイルの内容が異なっているのか判断することが難しい。また、第２の例では、環境間でファイルの内容が異なることが正規である設定内容なのか、それとも、設定ミスにより環境間でファイルの内容が異なっているのか判断することが難しい。
【００１５】
そこで、ファイル特定装置１００は、各環境が有するファイル群の同一パスのファイルを、各環境での同一名称のファイルの内容の一致度に基づき階層に区分し、評価対象ファイルにおける２つの環境の階層に対応する逸脱度合の差を求める。これにより、ファイル特定装置１００は、内容が逸脱するファイルを特定できる。内容が逸脱するファイルの情報を利用者に提供することにより、利用者は、始めに内容が逸脱するファイルの内容を閲覧することができるため、内容に不具合があるファイルを精度良く特定することができる。
【００１６】
図１では、複数の環境のうちの、第１のサーバ群を有する環境Ａと、第２のサーバ群を有する環境Ｂに含まれるサーバ群が有するファイル群として、ファイルｆ１とファイルｆ２を示す。環境Ａと環境Ｂとは、環境の構成が類似する方が、内容に不具合があるファイルの特定の精度が良くなる。具体的に、環境Ａと環境Ｂともに、４つのサーバを有する。そして、各サーバは、ファイルｆ１とファイルｆ２とを有する。
【００１７】
環境Ａと環境Ｂとの構成が類似するか否かは、環境に含まれるサーバの数を特定する構成情報が類似するか否かと同義である。ここで、本実施の形態における構成情報は、１つの環境における構成情報であり、具体的には、環境に含まれるハードウェアの情報や、環境に含まれるサーバにインストールされるソフトウェアの情報である。たとえば、ある環境がサーバＡ、Ｂ、Ｃ、Ｄを有するとする。このとき、ある環境の構成情報は、サーバＡ〜Ｄを有し、所定のソフトウェアがサーバＡ、Ｂにインストールされている、サーバＤには、所定のハードウェアとして拡張ディスクが付与されている、といったことを特定する情報となる。構成情報が類似するか否かを判断する例としては、図２０で後述する。
【００１８】
図１では、説明の明瞭化のため、どの環境のどのファイルであるかを判断できるようにファイルに符号を付与してある。ファイルに付与された符号をアンダーバーで分割した際の先頭の文字列は、符号が付与されたファイルがファイルｆ１かファイルｆ２かを示す。また、ファイルに付与された符号をアンダーバーで分割した際の先頭の文字列が同一のファイルは、同一名称である。ファイルに付与された符号をアンダーバーで分割した際の２番目の文字列は、符号が付与されたファイルが環境Ａにあるか環境Ｂにあるかを示す。ファイルに付与された符号をアンダーバーで分割した際の３番目の文字列は、符号が付与されたファイルを有するサーバが環境内の何番目かを示す。
【００１９】
たとえば、ファイルｆ１＿Ａ＿１は、環境Ａの１番目のサーバが有するファイルｆ１であることを示す。また、ファイルｆ１＿Ａ＿１〜ファイルｆ１＿Ａ＿４、ファイルｆ１＿Ｂ＿１〜ファイルｆ１＿Ｂ＿４は、同一名称のファイルとなる。環境Ａと環境Ｂとの構成が類似するため、環境Ａと環境Ｂとで同一名称のファイルがある可能性は高い。
【００２０】
また、図１では、ファイルの内容を、ファイル内に記載した文字により模擬してある。以下、ファイル内に記載した文字を、単にファイルの内容とする。たとえば、ファイルｆ１＿Ａ＿１とファイルｆ１＿Ａ＿２とは、ファイルの内容が共に、“○”であり、内容が同一である。
【００２１】
ファイル特定装置１００は、環境Ａに含まれるサーバ群が有するファイル群の同一名称のファイルを、各環境での同一名称のファイルの内容の一致度に基づいて、複数の階層のいずれかの階層に区分する。複数の階層は、構成情報に基づいて生成される。各環境での同一名称のファイルの内容の一致度は、各環境におけるファイルの内容が一致する度合であり、たとえば、同一名称のファイルのうち同一内容となるファイルを有するサーバの数である。また、各環境におけるファイルの内容が一致する度合は、同一名称のファイルのうち、スペースの数以外は同一内容となるファイルを有するサーバの数でもよいし、改行コードの違い以外は同一内容となるファイルを有するサーバの数でもよい。複数の階層の生成例については、図１８、図２４等で後述する。図１の例では、環境に含まれるサーバの数に一致する数分の階層として、階層１〜４を生成したとする。また、同一名称のファイルのうち同一内容となるファイルを有するサーバの数を、以下、「共通サーバ数」と称する場合がある。
【００２２】
環境Ａでのファイルｆ１の内容は、全て“○”であり、同一内容となるファイルを有するサーバの数は４となる。したがって、ファイル特定装置１００は、環境Ａのファイルｆ１を、階層４に区分する。また、環境Ａでのファイルｆ２の内容は、“×”、“△”、“□”、“□”であり、共通サーバ数は２となる。したがって、ファイル特定装置１００は、環境Ａのファイルｆ２を、階層２に区分する。
【００２３】
また、環境Ｂでのファイルｆ１の内容は、全て“○”であり、同一内容となるファイルを有するサーバの数は４となる。したがって、ファイル特定装置１００は、環境Ｂのファイルｆ１を、階層４に区分する。また、環境Ｂでのファイルｆ２の内容は、“×”、“△”、“▽”、“□”であり、共通サーバの数は１となる。したがって、ファイル特定装置１００は、環境Ｂのファイルｆ２を、階層１に区分する。
【００２４】
続けて、ファイル特定装置１００は、区分される階層の異なる同一名称のファイルを抽出する。たとえば、ファイル特定装置１００が評価対象ファイルとしてファイルｆ１＿Ａ＿１を指定したとする。続けて、ファイル特定装置１００は、評価対象ファイルが環境Ａで区分された第１の階層と、評価対象ファイルと同一名称であり環境Ｂのいずれかのサーバが有するファイルが環境Ｂで区分された第２の階層とが異なるか否かを判断する。第１の階層と第２の階層とが異なる場合、ファイル特定装置１００は、区分される階層の異なる同一名称のファイルとして抽出する。ファイルｆ１＿Ａ＿１が区分された第１の階層は４であり、ファイルｆ１＿Ａ＿１と同一名称のファイルｆ１＿Ｂ＿１が区分された第２の階層は４であるから、第１の階層と第２の階層とが同一である。
【００２５】
また、ファイル特定装置１００が評価対象ファイルとしてファイルｆ２＿Ａ＿１を指定したとする。続けて、ファイル特定装置１００は、評価対象ファイルが区分された第１の階層と、評価対象ファイルと同一名称であり環境Ｂのいずれかのサーバが有するファイルが区分された第２の階層とが異なるか否かを判断する。ファイルｆ２＿Ａ＿１が区分された第１の階層は２であり、ファイルｆ２＿Ａ＿１と同一名称のファイルｆ２＿Ｂ＿１が区分された第２の階層は１であるから、第１の階層と第２の階層とが異なる。したがって、ファイル特定装置１００は、区分される階層の異なる同一名称のファイルとしてファイルｆ２＿Ａ＿１を抽出する。
【００２６】
区分される階層の異なる同一名称のファイルを抽出した後、ファイル特定装置１００は、第１の階層および第２の階層に基づいて、複数の階層の各々の階層の逸脱度合を参照して、評価対象ファイルの危険度を決定する。逸脱度合は、複数の階層の各々の階層に区分される同一名称のファイル同士の内容の逸脱の度合を表す指標値である。
【００２７】
図１の例では、階層１の逸脱度合が１であり、階層２の逸脱度合が８であり、階層３の逸脱度合が１０であり、階層４の逸脱度合が０である。各階層の逸脱度合が示すように、内容が全て同一である階層４や内容が全て異なる階層１では逸脱度合が小さくなり、２つだけ内容が同一となる階層２や内容が一つだけ異なる階層３では逸脱度合が大きくなる。逸脱度合の詳細は、図１４で後述する。
【００２８】
危険度は、ファイルの内容に不具合がある可能性の度合を示す評価値である。危険度の詳細は、図２５で後述する。また、危険度の算出例として、ファイル特定装置１００は、第１の階層の逸脱度合と第２の階層の逸脱度合との差を危険度としてもよいし、第１の階層の逸脱度合と第２の階層の逸脱度合との差の絶対値を危険度としてもよい。図１の例では、ファイル特定装置１００は、階層２の逸脱度合＝８から階層１の逸脱度合＝１を減じた７をファイルｆ２の危険度として決定する。
【００２９】
図２は、評価対象となるクラウドシステムの一例を示す説明図である。クラウドシステム２０１は、複数の環境として、運用中であるマスタ環境２０２と、マスタ環境２０２の開発環境となる環境Ａと、マスタ環境２０２のテスト環境となる環境Ｂと、マスタ環境２０２の本番環境となる環境Ｃと、ファイル特定装置１００とを有する。マスタ環境２０２と、環境Ａ〜Ｃと、ファイル特定装置１００とは、ネットワーク２１１で接続される。各環境には、複数のサーバが存在する。マスタ環境２０２との構成、環境Ａ〜Ｃとの構成は類似する。環境Ａのリソースは環境Ａ〜Ｃの中では相対的に小さく、環境Ｂのリソースは環境Ａ〜Ｃの中では中程度であり、環境Ｃのリソースは環境Ａ〜Ｃの中では大きい。
【００３０】
クラウドシステム２０１が複数の環境を有する理由は、マスタ環境２０２によるサービスの拡大に伴い、マスタ環境２０２の増築を行う際に、拡大したサービスが提供できるまでの期間を短縮化するためである。具体的に、環境Ａは、新たなサービスを提供する機能を開発するために用いられる環境である。環境Ａは、新たなサービスを提供する機能を開発するために用いられる環境である。環境Ｂは、新たなサービスをテストするために用いられる環境である。環境Ｃは、新たなサービスを運用するために用いられる環境である。
【００３１】
ファイル特定装置１００は、マスタ環境２０２と、環境Ａ〜Ｃと、にアクセス可能な装置である。
【００３２】
（ファイル特定装置１００のハードウェア）
図３は、ファイル特定装置のハードウェア構成の一例を示すブロック図である。図３において、ファイル特定装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、を含む。また、ファイル特定装置１００は、ディスクドライブ３０４と、ディスク３０５と、通信インターフェース３０６と、を含む。また、ファイル特定装置１００は、ディスプレイ３０７と、キーボード３０８と、マウス３０９とを含む。また、ＣＰＵ３０１〜マウス３０９はバス３１０によってそれぞれ接続される。
【００３３】
ＣＰＵ３０１は、ファイル特定装置１００の全体の制御を司る演算処理装置である。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００３４】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、たとえば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４が光ディスクドライブである場合、ディスク３０５には、光ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子メモリを採用することができる。
【００３５】
通信インターフェース３０６は、ネットワーク２１１と内部のインターフェースを司り、外部装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０６は、通信回線を通じてネットワーク２１１となるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどに接続され、ネットワーク２１１を介して他の装置に接続される。通信インターフェース３０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。
【００３６】
ディスプレイ３０７は、マウスカーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する装置である。ディスプレイ３０７には、たとえば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３７】
キーボード３０８は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う装置である。また、キーボード３０８は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス３０９は、マウスカーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う装置である。マウス３０９は、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
【００３８】
（ファイル特定装置１００の機能）
次に、ファイル特定装置１００の機能について説明する。図４は、ファイル特定装置の機能構成例を示すブロック図である。ファイル特定装置１００は、生成部４０１と、区分部４０２と、抽出部４０３と、特定部４０４と、決定部４０５と、を含む。制御部となる生成部４０１〜決定部４０５は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、生成部４０１〜決定部４０５の機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。または、通信インターフェース３０６を経由して他のＣＰＵが実行することにより、生成部４０１〜決定部４０５の機能を実現してもよい。
【００３９】
また、ファイル特定装置１００は、ファイル集合テーブル４１０と、構成情報４１１と、にアクセス可能である。ファイル集合テーブル４１０と、構成情報４１１とは、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納されている。
【００４０】
ファイル集合テーブル４１０は、ある環境が有するファイル群の同一名称のファイルを、同一名称のファイルのうち同一内容となるファイルを有するサーバの数を記憶するテーブルである。ファイル集合テーブル４１０は、１つの環境につき１つ存在する。ファイル集合テーブル４１０の記憶内容の一例については、図５で示す。
【００４１】
構成情報４１１は、ある環境に含まれるサーバの数を特定する情報である。具体的に、構成情報４１１は、ある環境に含まれるサーバ全ての数や、所定のハードウェアを有するサーバの数や、所定のソフトウェアがインストールされたサーバの数を記憶する情報である。所定のハードウェアとは、ファイル特定装置１００の利用者が予め指定したハードウェアである。たとえば、所定のハードウェアとしては、拡張ディスク等がある。また、所定のソフトウェアとは、ファイル特定装置１００の利用者が予め指定したソフトウェアである。たとえば、所定のソフトウェアとしては、Ｗｅｂサーバソフトウェア等がある。構成情報４１１は、１つの環境に対して１つ存在する。
【００４２】
生成部４０１は、第１のサーバ群に含まれるサーバの数を特定する第１の構成情報と、第２のサーバ群に含まれるサーバの数を特定する第２の構成情報とに基づいて、複数の階層を生成する。
【００４３】
たとえば、ある構成情報４１１が、環境Ａに含まれるサーバ全ての数が４であるという情報を有しており、別の構成情報４１１が、環境Ｂに含まれるサーバ全ての数が８であるという情報を有しているとする。このとき、生成部４０１は、環境Ａに含まれるサーバ全ての数と、環境Ｂに含まれるサーバ全ての数とのうち、少ない数となる４つの階層を生成する。階層の生成例については、図２４で後述する。生成した階層を示す情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００４４】
区分部４０２は、複数の環境の環境ごとに、環境が有するファイル群の同一名称のファイルを、ファイル集合テーブル４１０Ａに記憶された共通サーバ数に基づいて、複数の階層のいずれかの階層に区分する。たとえば、ファイル集合テーブル４１０Ａが、環境Ａが有するファイルｆ１の共通サーバ数が２であることを記憶していたとする。このとき、区分部４０２Ａは、ファイルｆ１を、階層１〜階層４のうちの階層２に区分する。
【００４５】
また、区分部４０２は、複数の環境の環境ごとに、環境が有するファイル群の同一名称のファイルを、構成情報４１１に記憶された共通サーバ数に基づいて、生成部４０１が生成した複数の階層のいずれかの階層に区分してもよい。
【００４６】
たとえば、ある構成情報４１１が、環境Ａに含まれるサーバ全ての数が４であるという情報を有しており、別の構成情報４１１が、環境Ｂに含まれるサーバ全ての数が８であるという情報を有しており、生成部４０１が４つの階層を生成したとする。このとき、区分部４０２Ｂは、ファイルの共通サーバ数を２で割った商に対応する階層にファイルを区分する。具体的には、区分部４０２Ｂは、共通サーバ数が１または２となるファイルであれば１つ目の階層に区分する。同様に、区分部４０２Ｂは、共通サーバ数が３または４となるファイルであれば２つ目の階層に区分し、共通サーバ数が５または６となるファイルを３つ目の階層に区分し、共通サーバ数が７または８となるファイルを４つ目の階層に区分する。
【００４７】
また、環境Ａに含まれるサーバ全ての数と環境Ｂに含まれるサーバ全ての数とが異なる場合、数が多い方に対応する区分部４０２は、環境に含まれるサーバ群の中から、少ない数分のサーバを指定してもよい。どのサーバを指定するかについては、環境に含まれるサーバ群の中からファイル特定装置１００の利用者等によって指定してもよいし、環境に含まれるサーバ群の中からランダムに指定してもよい。そして、数が多い方に対応する区分部４０２は、同一名称のファイルを、指定したサーバのうち同一名称のファイルのうち同一内容となるファイルを有するサーバの数に基づいて、複数の階層からいずれかの階層に区分してもよい。なお、区分した階層の情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００４８】
抽出部４０３は、複数の環境のうちの環境間で、区分される階層の異なる同一名称のファイルを抽出する。たとえば、抽出部４０３は、図１の例では、ファイルｆ２を抽出する。抽出したファイルを特定する情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００４９】
特定部４０４は、構成情報４１１に基づいて、複数の階層から環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する。特定する階層は、単数複数ともに有り得る。
【００５０】
たとえば、構成情報４１１が、ある環境に含まれるサーバ全ての数が１０であるという情報を記憶しており、階層が１０あるとする。このとき、特定部４０４は、複数の階層から、ある環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を１０番目の階層とする。また、構成情報４１１が、ある環境に含まれるサーバ全ての数が１０であり、所定のソフトウェアをインストールしたサーバの数が５であるという情報を記憶しており、階層が１０あるとする。このとき、特定部４０４は、複数の階層から、ある環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を１０番目の階層と５番目の階層とする。特定した階層の情報は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００５１】
決定部４０５は、抽出部４０３が抽出した階層の異なる同一名称のファイルが区分された各階層に基づいて、複数の階層の各々の階層の逸脱度合を参照して、評価対象ファイルの危険度を決定する。ここで、階層の異なる同一名称のファイルが区分された各階層のうち、環境Ａのいずれかのサーバが有する評価対象ファイルが区分された階層を第１の階層とし、環境Ｂのいずれかのサーバが有する評価対象ファイルが区分された階層を第２の階層とする。
【００５２】
また、決定部４０５は、逸脱度合を求める第１の逸脱関数に特定部４０４が特定した階層と第１の階層とを入力して得た第１の逸脱度合と、第１の逸脱関数に特定部４０４が特定した階層と第２の階層とを入力して得た第２の逸脱度合との差分を算出する。そして、決定部４０５は、算出した値を、評価対象ファイルの危険度として決定してもよい。第１の逸脱関数は、サーバ群が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層とサーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて逸脱度合を表す関数である。第１の逸脱関数は、図１６にて後述する逸脱関数の第１の例に相当する。
【００５３】
また、特定部４０４が複数の階層を特定した場合には、決定部４０５は、特定した階層ごとに、第１の逸脱度合と第２の逸脱度合との差分を算出する。そして、決定部４０５は、特定した階層ごとの第１の逸脱度合と第２の逸脱度合との差分の和を、評価対象ファイルの危険度として決定してもよい。
【００５４】
また、決定部４０５は、逸脱度合を求める第２の逸脱関数に、構成情報４１１によって特定されるサーバの数と特定部４０４が特定した階層と第１の階層とを入力して得た第１の逸脱度合を算出する。そして、決定部４０５は、第２の逸脱関数に構成情報４１１によって特定されるサーバの数と特定部４０４が特定した階層と第２の階層とを入力して得た第２の逸脱度合を算出する。続けて、決定部４０５は、第１の逸脱度合と第２の逸脱度合との差分を算出することにより、評価対象ファイルの危険度を決定してもよい。第２の逸脱関数は、構成情報から特定されるサーバの数と、サーバ群が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層と、サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて逸脱度合を表す関数である。第２の逸脱関数は、図１７にて後述する逸脱関数の第２の例に相当する。
【００５５】
また、決定部４０５は、第１の逸脱度合と第２の逸脱度合との差分として、第１の逸脱度合と第２の逸脱度合との差を算出してもよいし、第１の逸脱度合と第２の逸脱度合との差の絶対値を算出してもよい。なお、決定した評価対象ファイルの危険度は、ＲＡＭ３０３、ディスク３０５などの記憶領域に記憶される。
【００５６】
図５は、ファイル集合テーブルの記憶内容の一例を示す説明図である。ファイル集合テーブル４１０は、環境に含まれるファイルの共通サーバ数を記憶するテーブルである。ファイル集合テーブル４１０は、環境ごとに生成されるテーブルである。図５に示すファイル集合テーブル４１０は、レコード５０１−１、５０１−２を含む。ファイル集合テーブル４１０は、ファイルパスと、共通サーバ数と、ファイルが存在するサーバと、いう３つのフィールドを含む。ファイルパスフィールドには、ファイルのフルパスが格納される。共通サーバ数フィールドには、ファイルパスフィールドで指定されたファイルを有し、かつファイルの内容が同一となったファイルを有するサーバの数が格納される。ファイルが存在するサーバフィールドには、ファイルパスフィールドで指定されたファイルを有するサーバの識別情報が格納される。
【００５７】
たとえば、レコード５０１−１は、ファイルパスが“／ｒｏｏｔ／ｔｅｓｔ＿２０１３０１１０．ｌｏｇ”を有するサーバが、Ａ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｅ，…であり、ファイルを有するサーバのうち、１００台のサーバが内容が同一であることを示す。次に、図６〜図９を用いて、ファイル集合テーブル４１０の生成例について説明する。また、図６〜図９では、ファイルを矩形で表現する。
【００５８】
図６は、ファイル集合テーブルの生成例を示す説明図（その１）である。ファイル特定装置１００は、不具合が発生した環境に含まれるサーバ間のｄｉｆｆの結果に基づいて、ファイルを共通、変更、差分というファイル区分に分類する。
【００５９】
たとえば、ファイル特定装置１００は、まず、不具合が発生した環境Ａに含まれるサーバＡとサーバＢについて、サーバＡ、Ｂでファイルパスが同一のファイルがあるか否かを判断する。ここでは、サーバＡ、Ｂに存在する全てのファイルを処理対象とする。
【００６０】
同一のファイルがある場合、ファイル特定装置１００は、サーバＡ、Ｂが有するファイルの内容が同一であるか否かを、ｄｉｆｆツールを用いて判断する。ファイル特定装置１００は、ファイルの内容が同一となったファイルを“共通”というファイル区分に分類する。また、ファイル特定装置１００は、サーバＡ、Ｂが有するファイルの内容が異なるファイルを、“変更”というファイル区分に分類する。さらに、ファイル特定装置１００は、サーバＡに存在しサーバＢに存在しないファイルや、サーバＢに存在しサーバＡに存在しないファイルを“差分”というファイル区分に分類する。
【００６１】
集合６０１は、サーバＡ、Ｂ間でファイルパスが同一となるファイルを含む。さらに、集合ＡＢは、集合ＡＢに含まれるファイルがサーバＡ、Ｂ間で内容が同一であるため、ファイル特定装置１００によって“共通”というファイル区分に分類されたことを示す。また、集合Ａ−Ｂは、集合Ａ−Ｂに含まれるファイルがサーバＡ、Ｂ間で内容が異なるため、ファイル特定装置１００によって“変更”というファイル区分に分類されたことを示す。さらに、集合Ａは、集合Ａに含まれるファイルがサーバＡに存在しサーバＢに存在しなかったため、ファイル特定装置１００によって“差分”というファイル区分に分類されたことを示す。同様に、集合Ｂは、集合Ｂに含まれるファイルがサーバＢに存在しサーバＡに存在しなかったため、ファイル特定装置１００によって“差分”というファイル区分に分類されたことを示す。
【００６２】
図７は、ファイル集合テーブルの生成例を示す説明図（その２）である。ファイル特定装置１００は、図６で示したサーバＡ、Ｂ間のｄｉｆｆの結果と同様に、環境Ａに含まれるサーバ間のサーバＡ、Ｂ以外の全ての組合せに対して、“共通”、“変更”、“差分”に分類する。
【００６３】
図７の例では、ファイル特定装置１００は、サーバＡ、Ｃの組合せと、サーバＡ、Ｄの組合せと、サーバＢ、Ｃの組合せと、サーバＢ、Ｄの組合せと、サーバＣ、Ｄの組合せと、…に対して、“共通”、“変更”、“差分”のいずれか一つに分類する。
【００６４】
環境Ａに含まれるサーバ間の全ての組合せに対して、“共通”、“変更”、“差分”のいずれか一つに分類した後、ファイル特定装置１００は、分類結果に基づいて、ファイルパスが同一となるファイルを有するサーバの数ごとの集合を生成する。
【００６５】
具体的に、図７に示すように、ファイル特定装置１００は、ファイルパスが同一となるファイルのうち、全てのサーバの組合せにおいてファイル区分が“共通”または“変更”となったファイルを集合７０１に含める。集合７０１は、全てのサーバに存在しておりファイルパスが同一となるファイルを含む集合である。集合７０１は、ファイル区分が全て“共通”となったファイルを含む集合７０２と、ファイル区分が“変更”を含むファイルを含む集合７０３を含む。
【００６６】
また、ファイル特定装置１００は、ファイルパスが同一となるファイルのうち、あるサーバの組合せではファイル区分が“差分”となり、別のサーバの組合せではファイル区分が“共通”または“変更”となったファイルを集合７１１、集合７２１、…に含める。集合７１１、７２１は、一部のサーバに存在しておりファイルパスが同一となるファイルを含む集合である。集合７１１、７２１は、ファイルが存在するサーバの組合せが異なる。また、ファイル特定装置１００は、１つのサーバに存在するファイルを、集合７３１、７３２、７３３、７３４、…に含める。
【００６７】
以下、説明を簡略化するため、集合７１１は、サーバＡ、Ｂに存在しておりファイルパスが同一となるファイルを含む集合であり、集合７２１は、サーバＡ、Ｃに存在しておりファイルパスが同一となるファイルを含む集合であるとする。集合７１１は、サーバＡと、サーバＢ以外のサーバとの組合せと、サーバＢと、サーバＡ以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバＡ、Ｂの組合せにおいてファイル区分が“共通”となったファイルを含む集合７１２を含む。さらに、集合７１１は、サーバＡと、サーバＢ以外のサーバとの組合せと、サーバＢと、サーバＡ以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバＡ、Ｂの組合せにおいてファイル区分が“変更”となったファイルを含む集合７１３を含む。
【００６８】
また、集合７２１は、サーバＡと、サーバＣ以外のサーバとの組合せと、サーバＣと、サーバＡ以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバＡ、Ｃの組合せにおいてファイル区分が“共通”となったファイルを含む集合７２２を含む。さらに、集合７２１は、サーバＡと、サーバＣ以外のサーバとの組合せと、サーバＣと、サーバＡ以外のサーバとの組合せとにおいてファイル区分が“差分”となり、サーバＡ、Ｃの組合せにおいてファイル区分が“変更”となったファイルを含む集合７２３を含む。
【００６９】
図８は、ファイル集合テーブルの生成例を示す説明図（その３）である。ファイルパスが同一となるファイルを有するサーバの数ごとの集合を生成後、ファイル特定装置１００は、ファイルパスが同一となるファイルを有するサーバの数ごとの集合ごとに、ファイル区分に基づいて、ファイルが同一の内容となる集合に分類する。説明を簡略化するため、図８では、環境Ａが、サーバＡ、Ｂ、Ｃ、Ｄという４つのサーバを有することとする。
【００７０】
たとえば、ファイル特定装置１００は、集合７０２を集合ＡＢＣＤとする。集合ＡＢＣＤは、サーバ全ての組合せにおいて、ファイル区分が“共通”となったファイルである。言い換えれば、集合ＡＢＣＤは、全てのサーバに存在しており、ファイルパスが同一であり、内容が同一となるファイルを含む。
【００７１】
また、ファイル特定装置１００は、集合７０３が含むファイルのうち、サーバＡ，Ｂ，Ｃに存在するファイルの内容が同一であり、サーバＤに存在するファイルの内容がサーバＡ，Ｂ，Ｃに存在するファイルの内容と異なるファイルを、集合ＡＢＣ−Ｄに含める。以下、集合の符号の表記として、内容が同一のファイルが存在するサーバの識別情報同士を連結して表記し、内容が異なるファイルが存在するサーバの識別情報同士を“−”で結合して表記するものとする。たとえば、集合ＡＢ−Ｃ−Ｄは、集合７０３が含むファイルのうち、サーバＡ，Ｂに存在するファイルの内容が同一であり、サーバＡ，Ｂに存在するファイルの内容とサーバＣに存在するファイルの内容とサーバＤに存在するファイルの内容が異なるファイルを含む。
【００７２】
図８が示すように、少なくともサーバ３台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、集合ＡＢＣ−Ｄ、ＡＢＤ−Ｃ、ＡＣＤ−Ｂ、ＢＣＤ−Ａ、ＡＢＣ、ＡＢＤ、ＡＣＤ、ＢＣＤである。少なくともサーバ３台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、言い換えれば、ファイル区分が“共通”となったサーバの組合せの数が、３台のうち２台を選ぶ組合せの通り＝３となったファイルである。たとえば、集合ＡＢＣ−Ｄに含まれるファイルは、サーバＡ，Ｂ、サーバＡ，Ｃ、サーバＢ，Ｃの組合せにおけるファイル区分が“共通”となり、サーバＡ，Ｄ、サーバＢ，Ｄ、サーバＣ，Ｄの組合せにおけるファイル区分が“変更”となったファイルである。
【００７３】
また、少なくともサーバ２台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、集合ＡＢ−Ｃ−Ｄ、…、ＡＢ−ＣＤ、…、ＡＢ−Ｃ、…、ＡＢ、…である。少なくともサーバ２台に存在するファイルであり、ファイルパスが同一であり、内容が同一のファイルを含む集合は、言い換えれば、ファイル区分が“共通”となったサーバの組合せの数が、１つまたは２つとなったファイルである。たとえば、集合ＡＢ−Ｃ−Ｄに含まれるファイルは、サーバＡ，Ｂの組合せにおけるファイル区分が“共通”となり、サーバＡ，Ｃ、サーバＡ，Ｄ、サーバＢ，Ｃ、サーバＢ，Ｄ、サーバＣ，Ｄの組合せにおけるファイル区分が“変更”となったファイルである。また、集合ＡＢ−ＣＤに含まれるファイルは、サーバＡ，Ｂ、サーバＣ，Ｄの組合せにおけるファイル区分が“共通”となり、サーバＡ，Ｃ、サーバＡ，Ｄ、サーバＢ，Ｃ、サーバＢ，Ｄの組合せにおけるファイル区分が“変更”となったファイルである。
【００７４】
また、少なくともサーバ１台に存在するファイルであり、ファイルパスが同一であれば内容が異なるファイルを含む集合は、集合Ａ−Ｂ−Ｃ−Ｄ、Ａ−Ｂ−Ｃ、…、Ａ−Ｂ、…Ａ、…である。少なくともサーバ１台に存在するファイルであり、ファイルパスが同一であれば内容が異なるファイルを含む集合は、言い換えれば、ファイル区分が“共通”となったサーバの組合せの数が、０であるファイルである。たとえば、集合Ａ−Ｂ−Ｃ−Ｄに含まれるファイルは、サーバ全ての組合せにおけるファイル区分が“変更”となったファイルである。
【００７５】
図９は、ファイル集合テーブルの生成例を示す説明図（その４）である。ファイルが同一の内容となる集合に分類した後、ファイル特定装置１００は、ファイルが同一の内容となる集合から、ファイル集合テーブル４１０を生成する。図９の例では、環境に含まれるサーバ数をＮとする。また、図９の例では、図８の例と同様に、環境Ａが、サーバＡ、Ｂ、Ｃ、Ｄという４つのサーバを有することとする。
【００７６】
たとえば、ファイル特定装置１００は、集合ＡＢＣＤに含まれるファイルについて、ファイルパスにファイルのファイルパス、共通サーバ数にＮ、ファイルが存在するサーバにサーバＡ〜Ｄの識別情報を格納するレコードをファイル集合テーブル４１０に追加する。図９の例では、ファイル特定装置１００は、集合ＡＢＣＤに含まれるファイルについて、Ｎ台のサーバ共通のファイル群として、レコード９０１−１〜９０１−３をファイル集合テーブル４１０に追加したことになる。
【００７７】
また、ファイル特定装置１００は、集合ＡＢＣ−Ｄに含まれるファイルについて、ファイルパスにファイルパス、共通サーバ数にＮ−１、ファイルが存在するサーバにサーバＡ〜Ｄの識別情報を格納するレコードをファイル集合テーブル４１０に追加する。図９の例では、ファイル特定装置１００は、集合ＡＢＣ−Ｄに含まれるファイルについて、レコード９０１−４、９０１−５をファイル集合テーブル４１０に追加する。同様に、ファイル特定装置１００は、集合ＡＢＣに含まれるファイルについて、レコード９０１−８、９０１−９をファイル集合テーブル４１０に追加する。ファイル特定装置１００は、Ｎ−１台のサーバ共通のファイル群として、レコード９０１−４〜９０１−１１をファイル集合テーブル４１０に追加したことになる。
【００７８】
また、ファイル特定装置１００は、集合ＡＢ−Ｃ−Ｄに含まれるファイルについて、ファイルパスにファイルパス、共通サーバ数にＮ−２、ファイルが存在するサーバにサーバＡ〜Ｄの識別情報を格納するレコードをファイル集合テーブル４１０に追加する。図９の例では、ファイル特定装置１００は、集合ＡＢ−Ｃ−Ｄに含まれるファイルについて、レコード９０１−１２、９０１−１３をファイル集合テーブル４１０に追加する。同様に、ファイル特定装置１００は、集合ＡＢ−ＣＤに含まれるファイルについて、レコード９０１−１６、９０１−１７をファイル集合テーブル４１０に追加する。また、ファイル特定装置１００は、集合ＡＢ−Ｃに含まれるファイルについて、レコード９０１−２０、９０１−２１をファイル集合テーブル４１０に追加する。さらに、ファイル特定装置１００は、集合ＡＢに含まれるファイルについて、レコード９０１−２４、９０１−２５をファイル集合テーブル４１０に追加する。ファイル特定装置１００は、Ｎ−２台のサーバ共通のファイル群として、レコード９０１−１２〜９０１−２７をファイル集合テーブル４１０に追加したことになる。
【００７９】
また、ファイル特定装置１００は、集合Ａ−Ｂ−Ｃ−Ｄに含まれるファイルについて、ファイルパスにファイルパス、共通サーバ数に１、ファイルが存在するサーバにサーバＡ〜Ｄの識別情報を格納するレコードをファイル集合テーブル４１０に追加する。図９の例では、ファイル特定装置１００は、集合Ａ−Ｂ−Ｃ−Ｄに含まれるファイルについて、レコード９０１−２８、９０１−２９をファイル集合テーブル４１０に追加する。同様に、ファイル特定装置１００は、集合Ａ−Ｂ−Ｃに含まれるファイルについて、レコード９０１−３０、９０１−３１をファイル集合テーブル４１０に追加する。また、ファイル特定装置１００は、集合Ａ−Ｂに含まれるファイルについて、レコード９０１−３４、９０１−３５をファイル集合テーブル４１０に追加する。さらに、ファイル特定装置１００は、集合Ａに含まれるファイルについて、レコード９０１−３８、９０１−３９をファイル集合テーブル４１０に追加する。ファイル特定装置１００は、サーバ固有のファイル群として、レコード９０１−２８〜９０１−４１をファイル集合テーブル４１０に追加したことになる。
【００８０】
次に、図１０を用いて、共通サーバ数の差異があるファイルの抽出例について説明する。
【００８１】
図１０は、共通サーバ数の差異があるファイルの抽出例を示す説明図である。ファイル特定装置１００は、比較元環境となる環境Ａに対するファイル集合テーブル４１０Ａと、比較先環境となる環境Ｂに対するファイル集合テーブル４１０Ｂと、を生成し、共通サーバ数に差異のあるファイルを、危険性のあるファイルとして抽出する。環境Ｂは、環境Ａの構成情報と類似する構成情報を有する。
【００８２】
図１０では、環境Ａに対するファイル集合テーブル４１０Ａと、環境Ｂに対するファイル集合テーブル４１０Ｂと、の各レコードについて、同一のサーバ共通のファイル群を纏めて表示してある。
【００８３】
共通サーバ数に差異のあるファイルを、危険性のあるファイルと見做せる理由としては、同一のファイルパスであるにも関わらず、環境によって共通サーバ数に差異がある場合、設定変更の戻し忘れにより、差異が発生した可能性があるためである。
【００８４】
図１０の例では、ファイル１は、ファイル集合テーブル４１０ＡにおいてＮ−２台のサーバ共通のファイル群に含まれるにも関わらず、ファイル集合テーブル４１０Ｂにおいてサーバ固有のファイル群に含まれており、共通サーバ数に差異がある。このように、ファイル特定装置１００は、共通サーバ数に差異があるファイルを抽出する。
【００８５】
図１１は、共通サーバ数の差異があるファイルにおける危険性の一例を示す説明図である。図１１では、環境Ａ、環境Ｂで共通サーバ数の差異がないファイル２と、環境Ａ、環境Ｂで共通サーバ数の差異があるファイル３と、を用いて、危険性の有無を説明する。
【００８６】
ファイル２は、環境Ａでの設定値は１０２４［ＭＢ］であり、環境Ｂでの設定値は２０４８［ＭＢ］であり、環境Ａ、環境ＢともにＮ台のサーバ共通のファイル群に属する。ファイル２の設定値は環境Ａ、Ｂ間で異なるが、構成情報が類似するならばファイルが属する共通サーバ数の集合も同一になる可能性が高いため、ファイル特定装置１００は、ファイル２が危険性があるファイルではないと特定する。
【００８７】
一方、ファイル３は、環境Ａでの設定値は５１２［ＭＢ］であり、環境Ｂでの設定値は１０２４［ＭＢ］であり、環境ＡではＮ−２台のサーバ共通のファイル群に属し、環境Ｂでは、サーバ固有のファイル群に属する。ファイル３について、構成情報が類似するにも関わらずファイルが属する共通サーバ数の集合が同一になっていないため、ファイル特定装置１００は、ファイル３が危険性があるファイルであると特定する。
【００８８】
図１０、図１１の条件では、環境間で共通サーバ数の集合の差があるため、危険性があるファイルが複数特定される可能性が高い。そこで、ファイル特定装置１００は、危険性があるファイルのうち、危険性が高いファイルを判定する。まず、図１２では、危険性が高いファイルを判定する際に用いる、構成情報と共通サーバ数との関係について説明する。
【００８９】
図１２は、構成情報と共通サーバ数との関係を示す説明図である。ある環境内のファイルは、次に示す属性に応じて、共通サーバ数がある程度決まる傾向がある。全サーバ共通のファイルは、共通サーバ数が多い集合に属する可能性が高い。また、サーバ固有のファイルは、共通サーバ数が少ない集合に属する可能性が高い。そして、構成情報に関連するファイルは、構成情報に依存した共通サーバ数の集合に属する可能性が高い。
【００９０】
たとえば、ある環境がサーバＡ、Ｂ、Ｃ、Ｄを有し、ある環境の構成情報は、ソフトウェアＡがサーバＡ、Ｂにインストールされていることを特定する情報であるとする。このとき、ソフトウェアＡの設定ファイルは、ソフトウェアＡがサーバＡ、Ｂにインストールされていることから、共通サーバ数＝２の集合に属する可能性が高い。図１３〜図１９を用いて、危険性があるファイルのうち、構成情報と共通サーバ数との関係を用いて危険性が高いファイルを判定する一例について説明する。
【００９１】
図１３は、危険性と逸脱度合との関係を示す説明図である。ファイル特定装置１００は、危険性があるファイルのうち、異なる環境間における比較対象ファイルに対する逸脱度合を用いて、比較対象ファイルに危険性が高いか否かを判定する。異なる環境間において類似する構成情報となるにも関わらず比較対象ファイルに対する逸脱度合の差の絶対値が大きい場合、ファイル特定装置１００は、比較対象ファイルの危険性が高いと判定する。ここで、比較対象ファイルに対する逸脱度合は、構成情報と共通サーバ数とに依存する値であり、比較対象ファイルの同一名称であり環境内の他サーバのファイルと比較して内容がどれほど逸脱しているかを示す値である。比較対象ファイルに対する逸脱度合の詳細については、図１４で後述する。
【００９２】
図１３では、リソースが小さい環境Ａと、環境Ａに構成情報が類似し、リソースが中程度の環境Ｂとにファイル１、２がある。図１３の例では、ファイル１の逸脱度合の差の絶対値より、ファイル２の逸脱度合の差の絶対値が大きい。したがって、ファイル特定装置１００は、ファイル２の危険性が高いと判定する。
【００９３】
図１４は、比較対象ファイルに対する逸脱度合の説明図である。具体的に、比較対象ファイルに対する逸脱度合は、環境内のサーバ間で、比較対象ファイルの内容が全て同一か、全て異なる場合に小さくなり、一部のサーバが有するファイルの内容だけ異なる場合に大きくなる値である。図１４の（Ａ）では、比較対象ファイルとして、ある環境における言語設定が記述されたファイルについて示す。図１４の（Ａ）が示すように、ある環境において、全てのサーバが有するファイルの言語設定が、日本語を示す“ＪＰ”であるとする。この場合、逸脱度合が最小となる。
【００９４】
図１４の（Ｂ）でも、比較対象ファイルとして、ある環境における言語設定が記述されたファイルについて示す。図１４の（Ｂ）が示すように、ある環境において、あるサーバが有するファイルの言語設定が、英語を示す“ＥＮＧ”であり、あるサーバ以外の全てのサーバが有するファイルの言語設定が、“ＪＰ”であるとする。この場合、逸脱度合が最大となる。図１４の（Ｂ）のように、１台のサーバだけ異なる内容になる可能性として、ある環境内で全て同一の内容であったファイルのうち、１台のサーバだけ、プログラムの不具合や、管理者などによる操作等による意図せぬ設定変更、または内容の戻し忘れがある。このように、意図せぬ不具合により、１台だけ異なる内容となっている可能性があるため、逸脱度合が大きくなる。
【００９５】
図１４の（Ｃ）では、比較対象ファイルとして、ある環境におけるＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス設定が記述されたファイルについて示す。図１４の（Ｃ）が示すように、ある環境において、全てのサーバのＩＰアドレスが全て異なるとする。この場合、逸脱度合が小さい値となる。逸脱度合が小さくなる理由として、全ての値が異なる場合、ＩＰアドレスが一意に特定されるために設定されるように、意図的に異なる内容に設定された可能性があるためである。次に、図１５において、環境間における比較対象ファイルに対する逸脱度合について説明する。
【００９６】
図１５は、環境間における比較対象ファイルに対する逸脱度合の説明図である。類似する構成情報となる環境間では、比較対象ファイルに対する逸脱度合も似たような値となる可能性が高い。本実施の形態では、類似する構成情報となる環境間では、比較対象ファイルに対する逸脱度合も似たような値となる可能性が高いことを利用して、比較対象ファイルに対する逸脱度合に差があるファイルを、危険性が高いファイルとして判定する。
【００９７】
図１５の（Ａ）では、環境Ａにおいて、比較対象ファイルの言語設定が１台のサーバだけ“ＥＮＧ”であり、他のサーバが“ＪＰ”であるため、比較対象ファイルに対する逸脱度合が大きい。また、環境Ｂにおいても、比較対象ファイルの言語設定が１台のサーバだけ“ＥＮＧ”であり、他のサーバが“ＪＰ”であるため、比較対象ファイルに対する逸脱度合が大きい。したがって、図１５の（Ａ）では、環境Ａと環境Ｂとの逸脱度合の差がないため、ファイル特定装置１００は、言語設定が記述された比較対象ファイルに対して危険性がないと判断する。
【００９８】
図１５の（Ｂ）では、環境Ａにおいて、比較対象ファイルの言語設定が１台のサーバだけ“ＥＮＧ”であり、他のサーバが“ＪＰ”であるため、逸脱度合が大きい。また、環境Ｂにおいては、比較対象ファイルの言語設定が、全て異なる内容であり、逸脱度合が小さい。したがって、図１５の（Ｂ）では、環境Ａと環境Ｂとの逸脱度合の差があるため、ファイル特定装置１００は、言語設定が記述された比較対象ファイルに対して危険性があると判断する。
【００９９】
次に、図１６と図１７を用いて、逸脱度合を求める逸脱関数の第１の例と第２の例について説明する。第１の例と第２の例による逸脱関数は、逸脱関数によって求められる逸脱度合の最小値が０となり、最大値が１となるような関数である。
【０１００】
図１６は、逸脱関数の第１の例を示す説明図である。ファイル特定装置１００は、図１６の（Ａ）でも示すように、逸脱関数ｆ（Ａ）について下記（１）式を用いて算出する。
【０１０１】
【数１】
2015018307.tif 000003
【０１０２】
ここで、ｅは自然対数の底である。また、Ｎは、環境に含まれるサーバの全台数である。また、Ｘは、環境Ａが有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していないと見做す値であり、具体的には、構成情報から特定されるファイルを有するサーバの台数である。また、Ａは、共通サーバ数である。
【０１０３】
図１６の（Ｂ）は、Ａの値に対応する集合に関連付いた階層について図示してある。ファイル特定装置１００は、（１）式に、ＸとＮを設定することにより、共通サーバ数＝Ｘが特定された階層の逸脱関数を用意することになる。図１６の（Ｂ）では、ファイル特定装置１００は、Ａ＝１が特定された階層１６０１と、Ａ＝２〜Ｘ−１が特定された階層１６０２と、Ａ＝Ｘが特定された階層１６０３と、Ａ＝Ｘ＋１〜Ｎ−１が特定された階層１６０４と、Ａ＝Ｎが特定された階層１６０５とに区分する。
【０１０４】
図１６の（Ｃ）では、（１）式の算出結果として、Ａと逸脱度合の値との関係をグラフ１６１１に示した例である。グラフ１６１１の横軸は、Ａを示す。グラフ１６１１の縦軸は、逸脱度合を示す。グラフ１６１１は、Ｎ＝１００，Ｘ＝４０とした際の（１）式が描く曲線を表示したグラフである。グラフ１６１１が示すように、Ａ＝４０のときに、逸脱度合の値が０となり、Ａ＝３９または４１のときに、逸脱度合の値が最大となる。
【０１０５】
図１７は、逸脱関数の第２の例を示す説明図である。図１７の（Ａ）でも示すように、ファイル特定装置１００は、逸脱関数ｆ（Ａ）について下記（２）式を用いて算出する。
【０１０６】
【数２】
2015018307.tif 000004
【０１０７】
ｅ、Ｎ、Ｘは、（１）式と同じ定義である。（２）式は、（１）式と比較して、構成情報から特定されるサーバの台数を加えることにより、多くのサーバが関係する構成ほど危険度を高く評価することができる。
【０１０８】
図１７の（Ｂ）では、（２）式の算出結果として、Ａと逸脱度合の値との関係をグラフ１７０１に示した例である。グラフ１７０１の横軸は、Ａを示す。グラフ１７０１の縦軸は、逸脱度合を示す。グラフ１７０１内にある実線１７０２は、Ｎ＝１００，Ｘ＝４０とした際の（２）式が描く曲線である。また、グラフ１７０１内にある破線１７０３は、Ｎ＝１００，Ｘ＝８０とした際の（２）式が描く曲線である。実線１７０２と破線１７０３とが示すように、Ｎ＝１００，Ｘ＝８０とした際のＡ＝７９または８１のときの逸脱度合の値が、Ｎ＝１００，Ｘ＝４０とした際のＡ＝３９または４１のときの逸脱度合の値より大きくなる。
【０１０９】
次に、逸脱関数を用いて、逸脱度合の値を求める具体例を、図１８、図１９を用いて説明する。
【０１１０】
図１８は、逸脱関数による逸脱度合の値の算出例を示す説明図（その１）である。まず、ファイル特定装置１００は、環境における構成情報に基づいて、複数の階層を生成する。そして、ファイル特定装置１００は、共通サーバ数Ａの取り得る値１〜Ｎを、構成情報によって特定されるソフトウェアがインストールされているサーバ数の階層や、ハードウェアを使用するサーバ数の階層に関連付ける。
【０１１１】
図１８の例では、ファイル特定装置１００は、構成情報に基づいて第１の階層〜第５の階層という５つの階層を生成する。続けて、ファイル特定装置１００は、構成情報に基づいて、第１の階層〜第５の階層から、環境が有するファイル群が区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する。
【０１１２】
たとえば、環境が有するファイル群のうちサーバ固有のファイル群は、それぞれ内容が異なる可能性が高いため、ファイル特定装置１００は、サーバ固有のファイル群について、Ａ＝１である階層１８０１を特定する。同様に、環境が有するファイル群のうち、ソフトウェアＡやソフトウェアＢに関連するファイル群は、共通サーバ数がＸ１個となる可能性が高い。したがって、ファイル特定装置１００は、ソフトウェアＡやソフトウェアＢに関連するファイル群について、Ａ＝Ｘ１である階層１８０３を特定する。また、環境が有するファイル群のうちハードウェアＣに関連するファイル群は、共通サーバ数がＸ２個となる可能性が高いため、ファイル特定装置１００は、ハードウェアＣに関連するファイル群について、Ａ＝Ｘ２である階層１８０４を特定する。また、環境が有するファイル群のうち全サーバ共通のファイル群は、共通サーバ数がＮ個となる可能性が高いため、ファイル特定装置１００は、全サーバ共通のファイル群について、Ａ＝Ｎである階層１８０５を特定する。
【０１１３】
図１９は、逸脱関数による逸脱度合の値の算出例を示す説明図（その２）である。共通サーバ数Ａを階層に区分した後、ファイル特定装置１００は、各階層の逸脱関数を生成し、生成した逸脱関数から、Ａ＝１〜Ｎまでの各階層の逸脱度合の値の和を求める。そして、ファイル特定装置１００は、評価対象ファイルの危険度を、環境Ａにおける評価対象ファイルが区分される階層の逸脱度合の値の和と、環境Ｂにおける評価対象ファイルが区分される階層の逸脱度合の値の和と、の差の絶対値とする。
【０１１４】
図１９の例では、ファイル特定装置１００は、階層１８０１〜階層１８０５の逸脱関数をそれぞれ生成し、生成した逸脱関数から、Ａ＝１〜Ｎまでの各階層の逸脱度合の値の和を求める。生成した逸脱関数にＡ＝１〜Ｎを入力して得られる逸脱度合の値をプロットして描く曲線を、グラフ１９００内に示す。また、Ａ＝１〜Ｎまでの各階層の逸脱関数の和がプロットされることにより形成される曲線を、グラフ１９１０内に示す。グラフ１９００の横軸は逸脱度合を示す。グラフ１９１０の横軸は、逸脱度合の和を示す。グラフ１９００およびグラフ１９１０の縦軸は共通サーバ数Ａを示す。
【０１１５】
具体的に、ファイル特定装置１００は、階層１８０１の逸脱関数として、Ｘ＝１の逸脱関数を生成する。Ｘ＝１の逸脱関数にＡ＝１〜Ｎを入力して得られる逸脱度合の値がプロットされることにより形成される曲線は、グラフ１９００内の実線１９０１である。階層１８０２の逸脱関数は、所属する構成情報の項目がないため、ファイル特定装置１００は階層１８０２の逸脱関数を生成しない。
【０１１６】
また、ファイル特定装置１００は、階層１８０３の逸脱関数として、Ｘ＝Ｘ１の逸脱関数を生成する。Ｘ＝Ｘ１の逸脱関数にＡ＝１〜Ｎを入力して得られる逸脱度合の値をプロットして描く曲線は、グラフ１９００内の点線１９０２である。
【０１１７】
また、ファイル特定装置１００は、階層１８０４の逸脱関数として、Ｘ＝Ｘ２の逸脱関数を生成する。Ｘ＝Ｘ２の逸脱関数にＡ＝１〜Ｎを入力して得られる逸脱度合の値をプロットして描く曲線は、グラフ１９００内の一点鎖線１９０３である。
【０１１８】
また、ファイル特定装置１００は、階層１８０５の逸脱関数として、Ｘ＝Ｎの逸脱関数を生成する。Ｘ＝Ｎの逸脱関数にＡ＝１〜Ｎを入力して得られる逸脱度合の値をプロットして描く曲線は、グラフ１９００内の長二点鎖線１９０４である。
【０１１９】
各階層の逸脱関数の生成後、ファイル特定装置１００は、Ａ＝１〜Ｎまでの各階層の逸脱関数より逸脱度合の値を算出して、逸脱度合の和を求める。Ａ＝１〜Ｎまでの各階層の逸脱度合の和がプロットされることにより形成される曲線は、グラフ１９１０内の曲線１９１１となる。たとえば、ファイル１の危険度は、グラフ１９１０より、環境Ａにおける逸脱度合と環境Ｂにおける逸脱度合との差の絶対値となる。
【０１２０】
（具体例）
次に、以下、図２０〜図２７を用いて、本実施の形態の具体例を説明する。具体例では、環境Ａのあるファイルに対して意図せぬ設定変更があった場合、本実施の形態におけるファイル評価方法を用いて、あるファイルの名称を特定するところまでを説明する。
【０１２１】
図２０は、具体例に用いる環境Ａ、Ｂと構成情報の説明図である。具体例に用いる環境Ａ、環境Ｂともに、サーバＡ〜Ｄを有する。また、環境Ａの各サーバは、構成情報４１１Ａに従ったハードウェアを使用しており、ソフトウェアをインストールしてある。同様に、環境Ｂの各サーバは、構成情報４１１Ｂに従ったハードウェアを使用しており、ソフトウェアをインストールしてある。図２０に示す構成情報４１１Ａと構成情報４１１Ｂとは同一の内容であるとする。
【０１２２】
構成情報４１１Ａ、４１１Ｂは、データベース（ＤａｔａＢａｓｅ：ＤＢ）サーバソフトウェア１がサーバＡ、Ｂにインストールされており、ＤＢサーバソフトウェア２がサーバＣ、Ｄにインストールされており、ＷｅｂサーバソフトウェアがサーバＤにインストールされていることを示す。また、構成情報４１１Ａ、４１１Ｂは、サーバＡ〜Ｄを有することが特定する情報を含む。以下、ＤＢサーバソフトウェアを、単に、「ＤＢ」と呼称する。また、Ｗｅｂサーバソフトウェアを、単に、「Ｗｅｂ」と呼称する。
【０１２３】
図２０の例では、構成情報４１１Ａと構成情報４１１Ｂとが同一の内容であったため、ファイル特定装置１００は、環境Ａと環境Ｂとの構成が類似すると判断する。以降の図では、構成情報４１１Ａと構成情報４１１Ｂとのうち、構成情報４１１Ａのみを用いて説明を行う。また、構成情報４１１Ａと構成情報４１１Ｂとが異なる内容であっても、たとえば、２つの環境のサーバの数の差が所定の閾値未満であれば、ファイル特定装置１００は、類似すると判断してもよい。
【０１２４】
図２１は、具体例に用いる環境Ａ、Ｂが有するファイルの説明図である。表２１０１と表２１０２は、環境Ａと環境Ｂとが有するファイルの個数を示す。表２１０１は、ソフトウェアのインストールに伴うファイルの数を示す。具体的に、サーバＡとサーバＢとは、ＤＢ１のインストールに伴い１００個のファイルを有する。また、サーバＣとサーバＤとは、ＤＢ２のインストールに伴い１００個のファイルを有する。さらに、サーバＤは、Ｗｅｂのインストールに伴い１００個のファイルを有する。
【０１２５】
表２１０２は、サーバが固有で有するファイルの数を示す。サーバＡは、サーバＡ固有である１０個のファイルを有する。また、サーバＢは、サーバＢ固有である１０個のファイルを有する。また、サーバＣは、サーバＣ固有である１０個のファイルを有する。また、サーバＤは、サーバＤ固有である１０個のファイルを有する。
【０１２６】
環境の構築後、意図せぬ設定変更により、環境ＡのサーバＣのＤＢ２に関連する１ファイルを変更したとする。以下に、本実施の形態との比較として、環境内のサーバ間でｄｉｆｆをとった場合について説明する。
【０１２７】
環境内のサーバ間でｄｉｆｆをとる場合、環境ＡにおけるサーバＡとサーバＢとで差異のあるファイルは、表２１０２により２０ファイルである。また、環境ＡにおけるサーバＡとサーバＣとで差異のあるファイルは、表２１０１と表２１０２とにより２２０ファイルである。また、環境ＡにおけるサーバＡとサーバＤとで差異のあるファイルは、表２１０１と表２１０２とにより３２０ファイルである。また、環境ＡにおけるサーバＢとサーバＣとで差異のあるファイルは、表２１０１と表２１０２とにより２２０ファイルである。また、環境ＡにおけるサーバＢとサーバＤとで差異のあるファイルは、表２１０１と表２１０２とにより３２０ファイルである。また、環境ＡにおけるサーバＣとサーバＤとで差異のあるファイルは、表２１０１と表２１０２と、変更したファイルとにより１２１ファイルである。
【０１２８】
以上より、環境Ａにおけるｄｉｆｆ比較結果は、１２２１ファイル異なることがわかったが、異なるファイルが１２２１個もあるため、変更ファイルを特定することが難しい。
【０１２９】
また、環境Ｂについて、サーバ間の差異のあるファイルの個数は、サーバＣとサーバＤ間以外については環境Ａと同一であるため、説明を省略する。環境ＢにおけるサーバＣとサーバＤとで差異のあるファイルは、表２１０１と表２１０２とにより１２０ファイルである。
【０１３０】
以上より、環境Ｂにおけるｄｉｆｆ比較結果は、１２２０ファイル異なることがわかったが、異なるファイルが１２２０個もあるため、変更ファイルを特定することが難しい。
【０１３１】
さらに、本実施の形態との比較として、環境間でのｄｉｆｆ比較結果を比較したとする。環境Ａでは、サーバＣとサーバＤで差異のあるファイルが１２１個であり、環境Ｂでは、サーバＣとサーバＤで差異のあるファイルが１２０個であるから、１ファイル異なることがわかるが、１２１個のどれかを特定することが難しい。
【０１３２】
続けて、図２２〜図２６を用いて、本実施の形態におけるファイル評価方法を用いるところまでを説明し、図２７を用いて、ファイル評価方法の結果を表示した例を示す。
【０１３３】
図２２は、ファイル集合テーブルの生成の具体例を示す説明図である。利用者の操作等により、ファイル評価処理の実行要求を受け付けた場合、ファイル特定装置１００は、環境ごとに、任意のサーバの組合せに対して、差異があるか否かを、ｄｉｆｆを用いて判断する。判断結果が、差異結果テーブル２２０１である。図２２に示す差異結果テーブル２２０１は、レコード２２０１−１とレコード２２０１−２とを有する。
【０１３４】
差異結果テーブル２２０１は、ファイルパスと、比較サーバと、差異と、ファイルが存在するサーバと、いう２つのフィールドを含む。ファイルパスフィールドには、ファイルのフルパスが格納される。比較サーバフィールドには、比較した２つのサーバの識別情報が格納される。差異フィールドには、２つのサーバが有するファイルの内容に差異があるか否かを示す識別子が格納される。ファイルが存在するサーバフィールドには、ファイルパスフィールドで指定されるファイルを有するサーバの識別情報が格納される。
【０１３５】
たとえば、レコード２２０１−１は、ファイルパスが“／ｒｏｏｔ／ｄｂ１／ｄｅｆａｕｌｔ．ｉｎｉ”となるファイルについて、サーバＡとサーバＢともに有し、サーバＡとサーバＢとが有する内容に差異がないことを示す。
【０１３６】
ファイル特定装置１００は、環境ごとに、全てのサーバの組合せに対して差異があるか否かを判断し、１環境におけるファイル集合テーブル２２０２を作成する。図２２の例では、レコード２２０２−１は、“／ｒｏｏｔ／ｄｂ１／ｄｅｆａｕｌｔ．ｉｎｉ”を有するサーバが、Ａ、Ｂであり、ファイルを有するサーバのうち、２台のサーバが内容が同一であることを示す。また、レコード２２０２−２は、“／ｅｔｃ／…／ｉｆｃｆｇ−ｅｔｈ０”を有するサーバが、Ａ、Ｂであり、ファイルを有するサーバのうち、２台のサーバが内容が異なることを示す。
【０１３７】
図２３は、共通サーバ数の差異があるファイルの具体例を示す説明図である。ファイル特定装置１００は、環境Ａに対するファイル集合テーブル４１０Ａと、環境Ｂに対するファイル集合テーブル４１０Ｂとから、集合差異テーブル２３０１を生成する。
【０１３８】
図２３に示す環境Ａに対するファイル集合テーブル４１０Ａは、レコード４１０Ａ−１〜４１０Ａ−５を有する。図２３に示す環境Ｂに対するファイル集合テーブル４１０Ｂは、レコード４１０Ｂ−１〜４１０Ｂ−５を有する。ここで、レコード４１０Ａ−１とレコード４１０Ｂ−１とは、ＤＢ１に関連する１００個のファイルのうちの１つのファイルに対応するレコードである。レコード４１０Ａ−２、３とレコード４１０Ｂ−２、３とは、ＤＢ２に関連する１００個のファイルのうちの２つのファイルに対応するレコードである。レコード４１０Ａ−４とレコード４１０Ｂ−４とは、Ｗｅｂに関連する１００個のファイルのうちの１つのファイルに対応するレコードである。レコード４１０Ａ−５とレコード４１０Ｂ−５とは、サーバ固有で異なる１０個のファイルのうちの１つのファイルに対応するレコードである。
【０１３９】
図２３に示す集合差異テーブル２３０１は、レコード２３０１−１〜２３０１−５を有する。集合差異テーブルは、ファイルパスと、２つの共通サーバ数と、いう３つのフィールドを有する。ファイルパスフィールドは、ファイル集合テーブルのファイルパスフィールドと同一の値となる。共通サーバ数フィールドは、比較元環境と比較先環境という２つの環境における共通サーバ数が格納される。２つの共通サーバ数フィールドに格納された値が異なるファイルが、図１１で説明した共通サーバ数の差異があるファイルとなる。
【０１４０】
たとえば、レコード２３０１−１は、“／ｒｏｏｔ／ｄｂ１／ｄｅｆａｕｌｔ．ｉｎｉ”について、レコード４１０Ａ−１により得た環境Ａにおける共通サーバ数が２であり、レコード４１０Ｂ−１により得た環境Ｂにおける共通サーバ数が２であることを示す。
【０１４１】
図２３の例では、ファイル特定装置１００は、レコード２３０１−３に対して、同一名称のファイルであるのに、共通サーバ数が環境Ａと環境Ｂとで異なることを特定する。この時点で、ファイル特定装置１００は、レコード２３０１−３が示す、“／ｒｏｏｔ／ｄｂ２／ｄｂ．ｃｏｎｆ”の内容に差異があることを特定する。続けて、“／ｒｏｏｔ／ｄｂ２／ｄｂ．ｃｏｎｆ”を比較対象ファイルとして、比較対象ファイルがどの程度危険であるかを、危険度を求めることにより判定する。図２４において、階層の生成の具体例について説明する。また、図２５において、危険度の算出例について説明する。
【０１４２】
図２４は、階層の生成の具体例を示す説明図である。ファイル特定装置１００は、構成情報４１１Ａにおけるハードウェア、ソフトウェアといった項目ごとに、環境に含まれるサーバ群Ｎのうち、項目に関連するサーバ数を計数する。図２４の例では、ファイル特定装置１００は、ＤＢ１が２であり、ＤＢ２が２であり、Ｗｅｂが１であると計数する。続けて、ファイル特定装置１００は、構成情報の各項目と、全サーバ共通のファイル群と、サーバ固有のファイル群とから、構成情報の集合化テーブル２４０１を生成する。
【０１４３】
図２４に示す構成情報の集合化テーブル２４０１は、レコード２４０１−１〜２４０１−５を有する。構成情報の集合化テーブル２４０１は、構成情報項目と、共通サーバ数という２つのフィールドを有する。構成情報項目は、環境に含まれるファイル群のうち、構成情報の各項目に関連するファイル群か、全サーバ共通のファイル群か、サーバ固有のファイル群か、のいずれかが格納される。共通サーバ数は、構成情報項目に格納された情報から特定されるファイル群が階層に区分された際に、内容が逸脱していないと見做せる階層に関連付けられた共通サーバ数が格納される。ファイル特定装置１００は、ファイル群区分された際にファイル群の内容が逸脱していない階層を、構成情報４１１Ａから特定する。
【０１４４】
たとえば、レコード２４０１−１は、全サーバ共通のファイル群が階層に区分された際に内容が逸脱していない階層が、構成情報４１１Ａが示す共通サーバ数＝４に関連付いた階層であることを示す。また、レコード２４０１−２は、ＤＢ１に関連するファイル群が階層に区分された際に内容が逸脱していない階層が、構成情報４１１Ａで計数したＤＢ１＝２に関連付いた階層であることを示す。
【０１４５】
続けて、ファイル特定装置１００は、構成情報の集合化テーブル２４０１から、階層を複数生成する。図２４では、ファイル特定装置１００は、以下に示す、階層２４１１〜２４１４を生成する。
【０１４６】
階層２４１１は、共通サーバ数＝１に関連付いたサーバ固有に関連するファイルが区分される可能性が高い階層である。階層２４１２は、共通サーバ数＝２に関連付いたＤＢ１、ＤＢ２に関連するファイルが区分される可能性が高い階層である。階層２４１３は、共通サーバ数３に関連付いたどのファイルも区分される可能性が低い階層である。階層２４１４は、共通サーバ数４に関連付いた全サーバに共通するファイルが区分される階層である。
【０１４７】
階層を生成する際には、ファイル特定装置１００は、共通サーバ数の最大数分階層を生成してもよい。また、ファイル特定装置１００は、構成情報の集合化テーブル２４０１の共通サーバ数フィールドに格納された値に対応する階層を生成するとともに、構成情報の集合化テーブル２４０１の共通サーバ数フィールドにない値を纏めた階層を生成してもよい。たとえば、共通サーバ数の最大値が１０であり、構成情報の集合化テーブル２４０１の共通サーバ数フィールドに、１、５、１０という値が格納されていたとする。この場合、ファイル特定装置１００は、共通サーバ数＝１に関連付いた階層と、共通サーバ数＝２〜４に関連付いた階層と、共通サーバ数＝５に関連付いた階層と、共通サーバ数＝６〜９に関連付いた階層と、共通サーバ数＝１０に関連付いた階層とを生成する。
【０１４８】
図２５は、危険度の算出の具体例を示す説明図である。ファイル特定装置１００は、逸脱関数のＸに各階層の共通サーバ数を設定して、各階層の逸脱関数を用意する。続けて、ファイル特定装置１００は、構成情報項目ごとにＡ＝１〜Ｎまでの各階層の逸脱関数より逸脱度合の値を算出して、各階層の逸脱度合の和を求める。そして、ファイル特定装置１００は、比較元環境における比較対象ファイルが区分される階層の逸脱度合と比較先環境における比較対象ファイルが区分される階層の逸脱度合との差の絶対値を危険度として決定する。
【０１４９】
なお、階層に関連付いた共通サーバ数の値が複数あるならば、ファイル特定装置１００は、階層に関連付いた共通サーバ数の値の中央値をＸに設定して、該当の階層の逸脱関数を用意してもよい。また、図１９で説明したように、階層に区分される構成情報の項目がない場合、ファイル特定装置１００は、該当の階層の逸脱関数を用意しない。図２５の例で用いる逸脱関数は、図１６で説明した（１）式を用いる。
【０１５０】
たとえば、ファイル特定装置１００は、（１）の処理として、階層２４１４の逸脱関数として、（１）式にＮ＝４、Ｘ＝４を設定した逸脱関数を用意する。そして、ファイル特定装置１００は、用意した逸脱関数のＡに、階層２４１１〜２４１４に関連付いた共通サーバ数の値１〜４をそれぞれ代入して、逸脱度合の値として、それぞれ０．１１、０．３７、０．７８、０を得る。
【０１５１】
同様に、ファイル特定装置１００は、（２）の処理として、階層２４１２の逸脱関数として、（１）式にＮ＝４、Ｘ＝２を設定した逸脱関数を用意する。そして、ファイル特定装置１００は、用意した逸脱関数のＡに、階層２４１１〜２４１４に関連付いた共通サーバ数の値１〜４をそれぞれ代入して、逸脱度合の値として、それぞれ０．７８、０、０．７８、０．３７を得る。また、ファイル特定装置１００は、（３）の処理として、（１）式にＮ＝４、Ｘ＝２を設定した逸脱関数のＡに、階層２４１１〜２４１４に関連付いた共通サーバ数の値１〜４をそれぞれ代入して、逸脱度合の値として、それぞれ０．７８、０、０．７８、０．３７を得る。
【０１５２】
また、ファイル特定装置１００は、（４）の処理として、階層２４１１の逸脱関数として、（１）式にＮ＝４、Ｘ＝１を設定した逸脱関数を用意する。そして、ファイル特定装置１００は、用意した逸脱関数のＡに、階層２４１１〜２４１４に関連付いた共通サーバ数の値１〜４をそれぞれ代入して、逸脱度合の値として、それぞれ０、０．７８、０．３７、０．１１を得る。また、ファイル特定装置１００は、（５）の処理として、（１）式にＮ＝４、Ｘ＝１を設定した逸脱関数のＡに、階層２４１１〜２４１４に関連付いた共通サーバ数の値１〜４をそれぞれ代入して、逸脱度合の値として、それぞれ０、０．７８、０．３７、０．１１を得る。
【０１５３】
各階層の逸脱度合の値を算出した後、ファイル特定装置１００は、階層に対応する共通サーバ数の値ごとに、構成情報項目の逸脱度合の値の和を求める。たとえば、階層２４１１に対して、ファイル特定装置１００は、０．１１＋０．７８＋０．７８＋０＋０＝１．６７を算出する。同様に、階層２４１２に対して、ファイル特定装置１００は、０．３７＋０＋０＋０．７８＋０．７８＝１．９３を算出する。また、階層２４１３に対して、ファイル特定装置１００は、０．７８＋０．７８＋０．７８＋０．３７＋０．３７＝３．０８を算出する。また、階層２４１４に対して、ファイル特定装置１００は、０＋０．３７＋０．３７＋０．１１＋０．１１＝０．９６を算出する。図２５では、共通サーバ数に対応する各構成情報項目の逸脱度合の値の和を、グラフ２５０１にプロットしてある。
【０１５４】
比較対象ファイルは、環境Ａでは階層２４１２に区分され、環境Ｂでは階層２４１１に区分される。したがって、ファイル特定装置１００は、レコード２３０１−３で示したファイルの危険度を、１．９３−１．６７＝０．２６と算出する。
【０１５５】
図２６は、危険度の妥当性を示す説明図である。図２６では、図２５で求めた危険度の妥当性として、危険度が、真に危険性の高いファイルにおいて値が大きくなるかについて説明する。図２６では、図２５で求めた（第１の例）と、（第２の例）とを用いて説明を行う。（第１の例）は、ファイル特定装置１００が、比較対象ファイルを、環境Ａでは階層２４１１に区分するとともに、環境Ｂでは階層２４１２に区分した場合である。（第２の例）は、ファイル特定装置１００が、比較対象ファイルを、環境Ａでは階層２４１３に区分するとともに、環境Ｂでは階層２４１２に区分した場合である。
【０１５６】
（第１の例）で示す、危険度＝０．２６について、環境Ａにおける比較対象ファイルは、サーバ固有、およびＷｅｂが属する階層２４１１に区分されている。したがって環境Ａにおける比較対象ファイルは、サーバ固有またはＷｅｂに関連するファイルの可能性があるため、危険度が大きい値とならない。
【０１５７】
（第２の例）で示す、危険度＝１．１５について、環境Ａにおける比較対象ファイルは、構成情報項目が存在しない階層２４１３に区分されている。したがって、環境Ａにおける比較対象ファイルは、意図せぬ設定変更が行われた可能性があるため、危険度が大きい値となる。
【０１５８】
図２７は、危険度の表示例を示す説明図である。ファイル特定装置１００は、危険度の表示を行う画面２７０１をディスプレイ３０７に表示することにより、危険度の高いファイルを利用者に通知する。以下に、画面２７０１の使用例を説明する。
【０１５９】
ファイル特定装置１００は、利用者によるマウス３０９の操作によって、リストボックス２７１１とリストボックス２７１２との機能により、比較元環境と比較先環境とを指定する。続けて、利用者によるマウス３０９の操作によって抽出ボタン２７１３が押下された場合、図２２〜図２５までで説明した一連の処理を行う。処理終了後、ファイル特定装置１００は、リスト２７１４に危険度が高い順にファイルパスと危険度とを表示する。このとき、利用者によるキーボード３０８やマウス３０９の操作によって危険度下限値テキストボックス２７１５と危険度上限値テキストボックス２７１６とに値が入力されていたとする。このとき、ファイル特定装置１００は、危険度を算出したファイルのうち、危険度が危険度下限値テキストボックス２７１５に入力された値以上かつ危険度上限値テキストボックス２７１６に入力された値以下であるファイルをリスト２７１４に表示する。
【０１６０】
また、ファイル特定装置１００は、利用者によるマウス３０９の操作によって、リスト２７１４のある一項目が選択された場合、ファイル集合テーブル４１０Ａ、４１０Ｂから選択されたファイルパスに対応するレコードを抽出する。そして、ファイル特定装置１００は、抽出したレコードのファイルが存在するサーバフィールドの内容を、リスト２７１７に表示する。
【０１６１】
利用者は、リスト２７１４とリスト２７１７とを参照して、危険性が高いファイルの内容を確認する。図２７の例では、利用者は、環境ＡのサーバＡ、Ｂにある“／ｒｏｏｔ／ｄｂ２／ｄｂ．ｃｏｎｆ”の内容を閲覧して、不具合がないかを確認する。
【０１６２】
続けて、図２８〜図３３を用いて、ファイル特定装置１００が実行するファイル評価処理について説明する。
【０１６３】
図２８は、ファイル評価処理手順の一例を示すフローチャートである。ファイル評価処理は、ファイルに対して危険性の度合を示す評価値となる危険度を算出する処理である。ファイル特定装置１００は、ファイル集合テーブル作成処理を実行する（ステップＳ２８０１）。ファイル集合テーブル作成処理は、図２９で後述する。次に、ファイル特定装置１００は、集合差異ファイル特定処理を実行する（ステップＳ２８０２）。集合差異ファイル特定処理は、図３０で後述する。続けて、ファイル特定装置１００は、危険度算出処理を実行する（ステップＳ２８０３）。次に、ファイル特定装置１００は、ファイルパスと危険度とを出力する（ステップＳ２８０４）。
【０１６４】
ステップＳ２８０４の処理終了後、ファイル特定装置１００は、ファイル評価処理を終了する。ファイル評価処理を実行することにより、ファイル特定装置１００は、危険性が高いファイルを利用者に通知することができる。
【０１６５】
図２９は、ファイル集合テーブル作成処理手順の一例を示すフローチャートである。ファイル集合テーブル作成処理は、比較元環境と比較先環境のファイル集合テーブルを作成する処理である。
【０１６６】
ファイル特定装置１００は、利用者の操作により、比較対象のうちの比較元環境と比較先環境とを指定する（ステップＳ２９０１）。次に、ファイル特定装置１００は、比較元環境と比較先環境とのうちの未選択の環境を選択する（ステップＳ２９０２）。続けて、ファイル特定装置１００は、選択した環境内のサーバ群の組合せから、未選択の組合せとなるサーバＡとサーバＢとを選択する（ステップＳ２９０３）。
【０１６７】
次に、ファイル特定装置１００は、サーバＡのファイルパス一覧を作成する（ステップＳ２９０４）。続けて、ファイル特定装置１００は、サーバＢのファイルパス一覧を作成する（ステップＳ２９０５）。次に、ファイル特定装置１００は、サーバＡのファイルパス一覧とサーバＢのファイルパス一覧とを用いて、ファイルパス同士のｄｉｆｆ結果から、ファイルを“共通”、“変更”、“差分”のいずれか一つに分類する（ステップＳ２９０６）。続けて、ファイル特定装置１００は、分類結果を用いて、サーバＡとサーバＢの差異結果テーブルを作成する（ステップＳ２９０７）。次に、ファイル特定装置１００は、選択した環境内のサーバ群の組合せの全てを選択したか否かを判断する（ステップＳ２９０８）。
【０１６８】
まだ選択していない環境内のサーバ群の組合せがある場合（ステップＳ２９０８：Ｎｏ）、ファイル特定装置１００は、ステップＳ２９０３の処理に移行する。選択した環境内のサーバ群の組合せの全てを選択した場合（ステップＳ２９０８：Ｙｅｓ）、ファイル特定装置１００は、サーバ群の組合せに対応する差異結果テーブルから、選択した環境でのファイル集合テーブルを作成する（ステップＳ２９０９）。
【０１６９】
続けて、ファイル特定装置１００は、比較元環境および比較先環境を選択したか否かを判断する（ステップＳ２９１０）。比較元環境または比較先環境のいずれかを選択していない場合（ステップＳ２９１０：Ｎｏ）、ファイル特定装置１００は、ステップＳ２９０２の処理に移行する。比較元環境および比較先環境を選択した場合（ステップＳ２９１０：Ｙｅｓ）、ファイル特定装置１００は、ファイル集合テーブル作成処理を終了する。ファイル集合テーブル作成処理を実行することにより、ファイル特定装置１００は、比較元環境と比較先環境のファイル集合テーブルを作成することができる。
【０１７０】
図３０は、集合差異ファイル特定処理手順の一例を示すフローチャートである。集合差異ファイル特定処理は、集合差異テーブル２３０１を生成して、共通サーバ数に差異があるファイルを特定する処理である。
【０１７１】
ファイル特定装置１００は、比較元環境のファイル集合テーブル４１０と、比較先環境のファイル集合テーブル４１０とから、集合差異テーブル２３０１を生成する（ステップＳ３００１）。次に、ファイル特定装置１００は、集合差異テーブル２３０１の比較元環境と比較先環境とで共通サーバ数に差異があるファイルパスを抽出する（ステップＳ３００２）。ステップＳ３００２の処理終了後、ファイル特定装置１００は、集合差異ファイル特定処理を終了する。集合差異ファイル特定処理を実行することにより、ファイル特定装置１００は、共通サーバ数に差異があるファイルを特定することができる。
【０１７２】
図３１は、危険度算出処理手順の一例を示すフローチャート（その１）である。また、図３２は、危険度算出処理手順の一例を示すフローチャート（その２）である。さらに、図３３は、危険度算出処理手順の一例を示すフローチャート（その３）である。危険度算出処理は、共通サーバ数に差異があるファイルに対して危険度を算出する処理である。
【０１７３】
ファイル特定装置１００は、構成情報を読み込む（ステップＳ３１０１）。具体的に、ステップＳ３１０１の処理について、ファイル特定装置１００は、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）や、構成管理をチェックするスクリプトを使用して登録された構成情報を管理する構成管理データベース（ＣＭＤＢ：Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｄａｔａｂａｓｅ）から読み込む。スクリプトは、環境内の各サーバ上でコマンドを実行するスクリプトである。
【０１７４】
次に、ファイル特定装置１００は、構成情報の項目ごとに、環境に含まれるサーバ群Ｎのうち、項目に関連するサーバ数を計数する（ステップＳ３１０２）。続けて、ファイル特定装置１００は、構成情報の各項目と、全サーバ共通のファイル群と、サーバ固有のファイル群とから、構成情報の集合化テーブル２４０１を生成する（ステップＳ３１０３）。次に、ファイル特定装置１００は、構成情報の集合化テーブル２４０１に基づいて、階層を複数生成する（ステップＳ３１０４）。
【０１７５】
続けて、ファイル特定装置１００は、構成情報の集合化テーブル２４０１の先頭のレコードを選択する（ステップＳ３１０５）。次に、ファイル特定装置１００は、構成情報４１１に基づいて、選択したレコードに対応するファイル群が区分された際に内容が逸脱していない階層を特定する（ステップＳ３１０６）。
【０１７６】
続けて、ファイル特定装置１００は、逸脱関数のＸに特定した階層に関連付いた共通サーバ数を設定する（ステップＳ３１０７）。次に、ファイル特定装置１００は、逸脱関数のＡに、各階層に関連付いた共通サーバ数を代入して、各階層の逸脱度合の値を算出する（ステップＳ３１０８）。
【０１７７】
続けて、ファイル特定装置１００は、構成情報の集合化テーブル２４０１の全てのレコードを選択したか否かを判断する（ステップＳ３１０９）。まだ選択していない構成情報の集合化テーブル２４０１のレコードがある場合（ステップＳ３１０９：Ｎｏ）、ファイル特定装置１００は、構成情報の集合化テーブル２４０１の次のレコードを選択する（ステップＳ３１１０）。ステップＳ３１１０の処理終了後、ファイル特定装置１００は、ステップＳ３１０６の処理に移行する。構成情報の集合化テーブル２４０１の全てのレコードを選択した場合（ステップＳ３１０９：Ｙｅｓ）、ファイル特定装置１００は、図３２に示すステップＳ３２０１に移行する。
【０１７８】
図３２において、ステップＳ３１０９：Ｙｅｓとなった場合、ファイル特定装置１００は、複数の階層のうちの先頭の階層を選択する（ステップＳ３２０１）。次に、ファイル特定装置１００は、選択した階層に関連付いた共通サーバ数に対して、各構成情報のレコードの逸脱関数の値の和を算出する（ステップＳ３２０２）。続けて、ファイル特定装置１００は、全ての階層を選択したか否かを判断する（ステップＳ３２０３）。まだ選択していない階層がある場合（ステップＳ３２０３：Ｎｏ）、ファイル特定装置１００は、複数の階層の次の階層を選択する（ステップＳ３２０４）。ステップＳ３２０４の処理終了後、ファイル特定装置１００は、ステップＳ３２０２の処理に移行する。全ての階層を選択した場合（ステップＳ３２０３：Ｙｅｓ）、ファイル特定装置１００は、図３３に示すステップＳ３３０１に移行する。
【０１７９】
図３３において、ステップＳ３２０３：Ｙｅｓとなった場合、ファイル特定装置１００は、比較元環境と比較先環境とで共通サーバ数の差異がある同一名称のファイルのうち、先頭のファイルを評価対象ファイルとして選択する（ステップＳ３３０１）。次に、ファイル特定装置１００は、複数の階層の中から、評価対象ファイルを、比較元環境の共通サーバ数に対応する階層に区分する（ステップＳ３３０２）。続けて、ファイル特定装置１００は、複数の階層の中から、評価対象ファイルを、比較先環境の共通サーバ数に対応する階層に区分する（ステップＳ３３０３）。次に、ファイル特定装置１００は、ファイルに対する危険度を、比較元環境の階層に対応する逸脱度合の値と、比較先環境の階層に対応する逸脱度合の値と、の差として決定する（ステップＳ３３０４）。
【０１８０】
続けて、ファイル特定装置１００は、比較元環境と比較先環境とで共通サーバ数の差異があるファイルパスの全てを選択したか否かを判断する（ステップＳ３３０５）。共通サーバ数の差異があるファイルパスの全てを選択していない場合（ステップＳ３３０５：Ｎｏ）、ファイル特定装置１００は、次のファイルパスを選択する（ステップＳ３３０６）。ステップＳ３３０６の処理終了後、ファイル特定装置１００は、ステップＳ３３０２の処理に移行する。
【０１８１】
共通サーバ数の差異があるファイルパスの全てを選択した場合（ステップＳ３３０５：Ｙｅｓ）、ファイル特定装置１００は、共通サーバ数の差異があるファイルパスを、危険度の降順に並び替える（ステップＳ３３０７）。ファイル特定装置１００は、ファイル集合テーブル４１０とともに、共通サーバ数の差異があるファイルパスと危険度とを出力する（ステップＳ３３０８）。ステップＳ３３０８の処理終了後、ファイル特定装置１００は、危険度算出処理を終了する。危険度算出処理を実行することにより、ファイル特定装置１００は、共通サーバ数に差異があるファイルに対する危険度を算出することができる。
【０１８２】
なお、ステップＳ３１０６について、ファイル特定装置１００は、比較元環境に含まれるファイル群について階層を特定した後、比較先環境に含まれるファイル群について階層を特定してもよい。比較元環境と比較先環境との構成が類似するため、特定される階層は、比較元環境と比較先環境とで同一になる可能性が高い。
【０１８３】
また、比較元環境と比較先環境とで特定された階層が同一にならない場合、次に示す方法により、危険度を算出してもよい。まず、ステップＳ３１０７とステップＳ３１０８において、ファイル特定装置１００は、逸脱関数のＸに、比較元環境について特定した階層に関連付いた共通サーバ数を設定し、各階層の逸脱度合の値を算出する。同様に、ファイル特定装置１００は、逸脱関数のＸに、比較先環境について特定した階層に関連付いた共通サーバ数を設定し、各階層の逸脱度合の値を算出する。
【０１８４】
次に、ステップＳ３２０２において、ファイル特定装置１００は、選択した階層に関連付いた共通サーバ数に対して、比較元環境における各構成情報のレコードの逸脱関数の値の和と、比較先環境における各構成情報のレコードの逸脱関数の値の和とを算出する。続けて、ステップＳ３３０４において、ファイル特定装置１００は、「比較元環境の階層に対応する逸脱度合の値」について、比較元環境における各構成情報のレコードの逸脱関数の値の和から取得する。同様に、ファイル特定装置１００は、「比較先環境の階層に対応する逸脱度合の値」について、比較先環境における各構成情報のレコードの逸脱関数の値の和から取得する。
【０１８５】
以上説明したように、ファイル特定装置１００によれば、各環境が有するファイル群の同一パスのファイルを共通サーバ数に応じて階層に区分し、区分される階層の異なる同一名称のファイルを抽出する。これにより、ファイルの内容に不具合がある可能性があるファイルを精度良く特定して利用者にファイルの情報を提供できる。利用者は、提供されたファイルから順にファイルの内容を確認することにより、問題発生の解決を早く行える可能性が高まる。
【０１８６】
また、ファイル特定装置１００によれば、区分される階層の異なる同一名称のファイルにおける２つの環境の階層に対応する逸脱度合の差を、同一名称のファイルの危険度を求める。
【０１８７】
これにより、ファイル特定装置１００は、区分される階層の異なる同一名称のファイルが複数ある場合、さらに精度良くファイルの内容に不具合がある可能性が高いファイルを特定して利用者にファイルの情報を提供できる。精度良く可能性が高いファイルを特定できる理由として、区分される階層の異なる同一名称のファイルにも、内容が正規である可能性もあり、このような同一名称のファイルを除いて特定することができるためである。
【０１８８】
また、ファイル特定装置１００によれば、構成情報４１１とに基づいて複数の階層を生成し、環境Ａと環境Ｂとのファイル群を、共通サーバ数と構成情報４１１とに基づいて複数の階層のうちのいずれかに区分してもよい。構成情報４１１には、サーバの数が特定できる情報を有する。
【０１８９】
たとえば、サーバの数Ｎに一致する数分階層を生成した場合、サーバの数Ｎに一致する階層は、ファイル群が区分された際に同一名称のファイル同士の内容が逸脱していなく、他の階層は、内容が逸脱していることになる。このように、ファイルの内容の逸脱度合に応じて階層を生成することにより、ファイルの内容に不具合がある可能性の度合である危険度を正しく算出することができる。また、サーバの数Ｎに対応する階層と、サーバの数Ｎ−１、Ｎ−２、…に対応する階層と、いうように階層を生成してもよい。これにより、ファイルの内容に不具合がある可能性の度合である危険度を正しく算出することができることを維持しつつ、階層数が減少した分、ファイル評価処理の処理量を抑制することができる。
【０１９０】
また、構成情報４１１は、環境における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する情報でもよい。環境に含まれるファイル群のうち、共通サーバ数が所定のハードウェアを有するサーバの数や所定のソフトウェアがインストールされたサーバの数に一致するファイル群がある可能性が高い。したがって、共通サーバ数が所定のハードウェアを有するサーバの数や所定のソフトウェアがインストールされたサーバの数に一致する階層を生成しておけば、ファイルの内容の逸脱度合に応じて階層を生成することになる。また、ファイル特定装置１００は、ファイルの内容に不具合がある可能性の度合である危険度を正しく算出することができる。
【０１９１】
また、ファイル特定装置１００によれば、第１の逸脱関数を用いて逸脱度合を算出してもよい。第１の逸脱関数は、Ａ＝Ｘの場合と、ＡがＸから離れた値となる場合に値が小さくなり、ＡがＸから近い値となる場合に値が大きくなる関数である。第１の逸脱関数を用いることにより、複数の階層の各々の階層の逸脱度合を記憶しなくてよくなるため、ファイル特定装置１００は、記憶量を少なくすることができる。
【０１９２】
また、ファイル特定装置１００によれば、第２の逸脱関数を用いて逸脱度合を算出してもよい。第２の逸脱関数は、第１の逸脱関数から、サーバの数の観点を加えた関数である。第２の逸脱関数を用いることにより、ファイル特定装置１００は、構成情報の各項目のうち、多くのサーバが関係する項目の危険度を高くすることができる。
【０１９３】
なお、本実施の形態で説明したファイル評価方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ファイル評価プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ファイル評価プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１９４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１９５】
（付記１）コンピュータに、
複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行させることを特徴とするファイル評価プログラム。
【０１９６】
（付記２）前記コンピュータに、
抽出した前記階層の異なる同一名称のファイルが区分された各階層に基づいて、前記複数の階層の各々の階層に区分される同一名称のファイル同士の内容の逸脱の度合を表す指標値を参照して、前記階層の異なる同一名称のファイルの内容に不具合がある可能性の度合を示す評価値を決定する、
処理を実行させることを特徴とする付記１に記載のファイル評価プログラム。
【０１９７】
（付記３）前記コンピュータに、
前記複数のサーバ群の各々のサーバ群に含まれるサーバの数を特定する構成情報に基づいて、複数の階層を生成する、処理を実行させ、
前記区分する処理は、
前記サーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度と前記複数のサーバ群の各々のサーバ群の構成情報とに基づき、生成した前記複数の階層のいずれかに区分することを特徴とする付記２に記載のファイル評価プログラム。
【０１９８】
（付記４）前記複数のサーバ群の各々のサーバ群の構成情報は、前記各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する情報であることを特徴とする付記３に記載のファイル評価プログラム。
【０１９９】
（付記５）前記コンピュータに、
前記複数のサーバ群の各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する構成情報に基づいて、前記複数の階層から前記各々のサーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する、処理を実行させ、
前記決定する処理は、
サーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層と前記サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて前記指標値を表す関数に、特定した前記同一名称のファイル同士の内容が逸脱していない階層と抽出した前記階層の異なる同一名称のファイルが区分された各階層のいずれか一方の階層とを入力して得た指標値と、前記関数に、特定した前記同一名称のファイル同士の内容が逸脱していない階層と抽出した前記階層の異なる同一名称のファイルが区分された各階層の前記いずれか一方とは異なる他方の階層とを入力して得た指標値との差分を算出することにより、前記評価値を決定することを特徴とする付記２〜４のいずれか一つに記載のファイル評価プログラム。
【０２００】
（付記６）前記コンピュータに、
前記複数のサーバ群の各々のサーバ群における所定のハードウェアを有するサーバの数または所定のソフトウェアがインストールされたサーバの数を特定する構成情報に基づいて、前記複数の階層から前記各々のサーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層を特定する、処理を実行させ、
前記決定する処理は、
サーバ群の構成を特定する構成情報から特定されるサーバの数と、前記サーバ群が有する複数のファイルが区分された際に同一名称のファイル同士の内容が逸脱していない階層と前記サーバ群のいずれかのサーバが有するファイルを区分した階層とを用いて前記指標値を表す関数に、前記複数のサーバ群のいずれかのサーバ群のサーバの数と特定した前記同一名称のファイル同士の内容が逸脱していない階層と前記いずれかのサーバ群における抽出した前記階層の異なる同一名称のファイルが区分された階層とを入力して得た指標値と、前記関数に前記複数のサーバ群の前記いずれかのサーバ群とは異なる他のサーバ群のサーバの数と特定した前記同一名称のファイル同士の内容が逸脱していない階層と前記他のサーバ群における抽出した前記階層の異なる同一名称のファイルが区分された階層とを入力して得た指標値の差分を算出することにより、前記評価値を決定することを特徴とする付記２〜４のいずれか一つに記載のファイル評価プログラム。
【０２０１】
（付記７）複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行させるファイル評価プログラムを記録したことを特徴とする記録媒体。
【０２０２】
（付記８）複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分する区分部と、
前記複数のサーバ群のうちのサーバ群間で、前記区分部によって区分される階層の異なる同一名称のファイルを抽出する抽出部と、
を有することを特徴とするファイル特定装置。
【０２０３】
（付記９）複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分する区分部と、
前記複数のサーバ群のうちのサーバ群間で、前記区分部によって区分される階層の異なる同一名称のファイルを抽出する抽出部と、
を有するコンピュータを含むことを特徴とするファイル特定装置。
【０２０４】
（付記１０）コンピュータが、
複数のサーバ群のサーバ群ごとに、前記サーバ群が有する複数のファイルのうちの同一名称のファイルを、前記サーバ群での前記同一名称のファイルの内容の一致度に基づき、複数の階層のいずれかに区分し、
前記複数のサーバ群のうちのサーバ群間で、区分される階層の異なる同一名称のファイルを抽出する、
処理を実行することを特徴とするファイル評価方法。
【符号の説明】
【０２０５】
Ａ、Ｂ、Ｃ  環境
１００  ファイル特定装置
４０１  生成部
４０２  区分部
４０３  抽出部
４０４  特定部
４０５  決定部
４１０  ファイル集合テーブル
４１１  構成情報
【図１】
2015018307.tif 000005
【図２】
2015018307.tif 000006
【図３】
2015018307.tif 000007
【図４】
2015018307.tif 000008
【図５】
2015018307.tif 000009
【図６】
2015018307.tif 000010
【図７】
2015018307.tif 000011
【図８】
2015018307.tif 000012
【図９】
2015018307.tif 000013
【図１０】
2015018307.tif 000014
【図１１】
2015018307.tif 000015
【図１２】
2015018307.tif 000016
【図１３】
2015018307.tif 000017
【図１４】
2015018307.tif 000018
【図１５】
2015018307.tif 000019
【図１６】
2015018307.tif 000020
【図１７】
2015018307.tif 000021
【図１８】
2015018307.tif 000022
【図１９】
2015018307.tif 000023
【図２０】
2015018307.tif 000024
【図２１】
2015018307.tif 000025
【図２２】
2015018307.tif 000026
【図２３】
2015018307.tif 000027
【図２４】
2015018307.tif 000028
【図２５】
2015018307.tif 000029
【図２６】
2015018307.tif 000030
【図２７】
2015018307.tif 000031
【図２８】
2015018307.tif 000032
【図２９】
2015018307.tif 000033
【図３０】
2015018307.tif 000034
【図３１】
2015018307.tif 000035
【図３２】
2015018307.tif 000036
【図３３】
2015018307.tif 000037