(57)【要約】  システムの構成変更にかかる作業の効率化を促進させることができるようにする。  抽出部（１ｂ）は、システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出する。置換部（１ｅ）は、変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する変更対象のシステムの固有情報を取得し、手順情報内の該変数名を、該固有情報に置換する。
2012124018.tif 000002
【特許請求の範囲】
【請求項１】
システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出する抽出部と、
前記変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する前記変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する置換部と、
を有する情報処理装置。
【請求項２】
前記置換部は、手順情報の集合に含まれる変数名と、該変数名に対応する固有情報の構成情報内での位置を示す位置情報との対応関係を記憶する記憶装置を参照し、抽出された手順情報に含まれる変数名に対応する固有情報の、前記変更対象のシステムの構成が定義された構成情報内での位置を判断し、該位置から該固有情報を取得することを特徴とする請求の範囲第１項記載の情報処理装置。
【請求項３】
管理対象のシステムに対して入力された構成変更の一連の操作内容を示す手順ログを取得し、該手順ログ内の固有情報を変数名に置き換えて手順情報の集合に含める正規化部をさらに有することを特徴とする請求の範囲第１項または第２項のいずれかに記載の情報処理装置。
【請求項４】
前記正規化部は、手順ログ内の予め定義された文字列のパターンに適合する文字列を検出し、該文字列を属性として設定された値を固有情報と判定することを特徴とする請求の範囲第３項記載の情報処理装置。
【請求項５】
前記正規化部は、管理対象のシステムの構成を示す構成情報から、手順ログ内の変数名に置き換えられた固有情報が設定された属性を検出し、該構成情報内での該属性の出現場所を定義した位置情報を生成する、
ことを特徴とする請求の範囲第３項または第４項のいずれかに記載の情報処理装置。
【請求項６】
前記正規化部は、生成する位置情報に、構成情報内の構成変更に応じて変更される情報までの相対位置を含める、
ことを特徴とする請求の範囲第５項記載の情報処理装置。
【請求項７】
前記正規化部は、複数の手順ログそれぞれから、手順ログに示される一連の操作で変更される構成の変更前の情報と変更後の情報との間を、該手順ログ内の操作に対応するノードを介してエッジで接続した有向グラフを生成し、同じ操作を１つにまとめることで複数の有向グラフを合成した手順グラフによって、手順情報の集合を表現する、
ことを特徴とする請求の範囲第３項乃至第６項のいずれかに記載の情報処理装置。
【請求項８】
前記抽出部は、前記変更対象のシステムに施す構成変更内容に応じた構成変更操作を行った場合の変更前の構成と変更後の構成とを特定し、前記手順グラフをエッジの向きにそって辿ることで該変更前の構成から該変更後の構成となる経路を抽出し、抽出した経路上のノードに対応する一連の操作を、手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた手順情報として抽出することを特徴とする請求の範囲第７項記載の情報処理装置。
【請求項９】
前記抽出部により複数の手順情報が抽出されると、所定の条件に従って、抽出された手順情報を整列させる整列部をさらに有する、
ことを特徴とする請求の範囲第１項乃至第８項のいずれかに記載の情報処理装置。
【請求項１０】
前記整列部は、不特定のユーザから利用された回数が多い操作を含む手順情報ほど上位に整列させる、
ことを特徴とする請求の範囲第９項記載の情報処理装置。
【請求項１１】
前記整列部は、前記変更対象のシステムを管理するユーザから利用された回数が多い操作を含む手順情報ほど上位に整列させる、
ことを特徴とする請求の範囲第９項記載の情報処理装置。
【請求項１２】
前記整列部は、含まれる操作の数が少ない手順情報ほど上位に整列させる、
ことを特徴とする請求の範囲第９項記載の情報処理装置。
【請求項１３】
前記整列部は、含まれる操作に応じた処理の所要時間が短い手順情報ほど上位に整列させる、
ことを特徴とする請求の範囲第９項記載の情報処理装置。
【請求項１４】
前記整列部は、含まれる操作に占める、前記変更対象のシステムで実行可能な操作の割合が多い手順情報ほど上位に整列させる、
ことを特徴とする請求の範囲第９項記載の情報処理装置。
【請求項１５】
システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出し、
前記変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する前記変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する、
ことを特徴とする情報処理方法。
【請求項１６】
コンピュータに、
システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出し、
前記変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する前記変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する、
処理を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムを管理する情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【０００２】
ＩＣＴ（Information and Communication Technology）システムなどのシステムの運用管理では、システムの構成を変更する場合、例えばシステムの起動・停止、システムの設定値変更、ソフトウェア更新などの作業が行われる。このとき、作業が発生するたびに、作業手順を管理者が一から考えていたのでは、作業効率が悪く、間違いも起こりやすい。【０００３】
そこで、システムの運用管理による作業を支援する技術として、例えば、利用者が計算機システムのアプリケーションを利用した操作履歴から、利用者の意図に即した操作手順知識をエキスパートシステムに取り込む技術が考えられている。また、過去の実行履歴からテンプレートを検出する技術も考えられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２４３１１８号公報
【非特許文献】
【０００５】
【非特許文献１】Cordeiro, W. Machado et al.,“CHANGEMINER: A solution for discovering IT change templates from past execution traces”,Integrated Network Management, 2009. IM '09. IFIP/IEEE International Symposium,2009, p97-104
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、システムの構成変更のために行われる作業内容にはシステムの構成に依存する部分が含まれており、過去の操作履歴やテンプレートをそのまま別構成のシステムに利用することはできない。そのため、過去の操作履歴の手順やテンプレートに対して、管理対象のシステムの構成に合わせた変更を加えるために、変更部分の特定や、適切な変更内容の検討作業が行われており、システムの構成変更作業の効率化が十分ではなかった。【０００７】
１つの側面では、本発明は、システムの構成変更作業の効率化を促進させることができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、抽出部と置換部とを有する情報処理装置が提供される。抽出部は、システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出する。置換部は、変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する。【０００９】
別の案では、上記情報処理装置と同様の処理をコンピュータで実行する情報処理方法が提供される。
さらに別の案では、上記情報処理装置と同様の処理をコンピュータに実行させる情報処理プログラムが提供される。
【発明の効果】
【００１０】
システムの構成変更作業の効率化を促進させることができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る装置の機能構成例を示す図である。
【図２】第１の実施の形態の処理手順の一例を示すフローチャートである。
【図３】第１の実施の形態における手順情報生成例を示す図である。
【図４】第２の実施の形態のシステム構成例を示す図である。
【図５】管理サーバのハードウェアの一構成例を示す図である。
【図６】管理サーバの機能の一例を示すブロック図である。
【図７】手順ログＤＢのデータ構造の一例を示す図である。
【図８】ＣＭＤＢのデータ構造の一例を示す図である。
【図９】変更ログＤＢのデータ構造の一例を示す図である。
【図１０】固有情報パターン記憶部のデータ構造の一例を示す図である。
【図１１】変数情報記憶部のデータ構造の一例を示す図である。
【図１２】手順グラフＤＢのデータ構造の一例を示す第１の図である。
【図１３】実行可能コマンド記憶部のデータ構造の一例を示す図である。
【図１４】実績記憶部のデータ構造の一例を示す図である。
【図１５】手順グラフ作成処理の手順の一例を示すフローチャートである。
【図１６】変更ログの生成例を示す図である。
【図１７】固有情報抽出処理の手順の一例を示すフローチャートの前半である。
【図１８】固有情報抽出処理の手順の一例を示すフローチャートの後半である。
【図１９】置換対象表のデータ構造の一例を示す図である。
【図２０】マッチパターン生成処理の手順の一例を示すフローチャートである。
【図２１】子要素解析処理の手順の一例を示すフローチャートである。
【図２２】マッチパターン生成の一例を示す図である。
【図２３】変数名の設定例を示す図である。
【図２４】変換表の一例を示す図である。
【図２５】固有情報置換処理の手順の一例を示すフローチャートである。
【図２６】変更ログの正規化の例を示す図である。
【図２７】手順ログの正規化の例を示す図である。
【図２８】正規化後の手順ログＤＢの例を示す図である。
【図２９】正規化後の変更ログＤＢの例を示す図である。
【図３０】入出力情報の抽出例を示す図である。
【図３１】有向グラフ作成処理の手順の一例を示すフローチャートである。
【図３２】有向グラフの第１の例を示す図である。
【図３３】有向グラフの第２の例を示す図である。
【図３４】有向グラフの第３の例を示す図である。
【図３５】有向グラフ合成処理の手順の一例を示すフローチャートである。
【図３６】入力情報合成処理の手順の一例を示すフローチャートである。
【図３７】出力情報合成処理の手順の一例を示すフローチャートである。
【図３８】ノード合成処理の手順の一例を示すフローチャートである。
【図３９】エッジ合成処理の手順の一例を示すフローチャートである。
【図４０】手順候補提供処理の手順の一例を示すフローチャートである。
【図４１】システム構成管理画面の一例を示す図である。
【図４２】手順候補抽出処理の手順の一例を示すフローチャートである。
【図４３】手順要求に応じた変更前情報と変更後情報との抽出および正規化例を示す図である。
【図４４】手順候補の抽出状況を示す図である。
【図４５】手順候補群の例を示す図である。
【図４６】手順候補具体化処理の手順の一例を示すフローチャートである。
【図４７】具体化後の手順候補の例を示す図である。
【図４８】手順候補整列処理の第１の例を示すフローチャートである。
【図４９】手順候補整列処理の第２の例を示すフローチャートである。
【図５０】手順候補整列処理の第３の例を示すフローチャートである。
【図５１】手順候補整列処理の第４の例を示すフローチャートである。
【図５２】手順候補整列処理の第５の例を示すフローチャートである。
【図５３】各手順候補に含まれる操作の操作数の例を示す図である。
【図５４】整列された手順候補リストの一例を示す図である。
【図５５】各手順候補に含まれる操作に対応するコマンドの有無の例を示す図である。
【図５６】コマンドカバーで整理された手順候補リストの一例を示す図である。
【図５７】手順候補提示処理の手順の一例を示すフローチャートである。
【図５８】端末装置に表示される手順候補リストの第１の例を示す図である。
【図５９】端末装置に表示される手順候補リストの第２の例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る装置の機能構成例を示す図である。情報処理装置１は、手順情報記憶部１ａ、抽出部１ｂ、構成情報記憶部１ｃ、位置情報記憶部１ｄ、および置換部１ｅを有している。
【００１３】
手順情報記憶部１ａは、システムの構成変更内容に応じた構成変更の操作手順が示された手順情報の集合を記憶する。なお手順情報は、操作手順内で設定するシステムの固有情報が変数名に置き換えられている。また手順情報は、例えば有向グラフで表現することができる。また、共通する操作を含む複数の手順情報を合成しておくこともできる。
【００１４】
抽出部１ｂは、手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出する。例えば抽出部１ｂは、端末装置２から、変更対象システムに施す構成変更内容を示す手順要求が入力された場合に、手順要求に応じた手順情報を抽出する。
【００１５】
構成情報記憶部１ｃは、システムの構成が定義された構成情報４ａ，４ｂ，・・・を記憶する。
位置情報記憶部１ｄは、手順情報の集合に含まれる変数名と、該変数名に対応する固有情報の構成情報内での出現場所を示す位置情報５ａ，５ｂ，・・・を記憶する。
【００１６】
置換部１ｅは、変更対象のシステムの構成が定義された構成情報から、抽出部１ｂで抽出された手順情報に含まれる変数名に対応する変更対象のシステムの固有情報を取得する。例えば置換部１ｅは、位置情報５ａ，５ｂ，・・・を参照し、構成情報内の固有情報の位置を判断し、該当する位置に設定されている文字列を固有情報として取得する。そして置換部１ｅは、抽出部１ｂで抽出された手順情報内の変数名を、構成情報から取得した固有情報に置換する。置換部１ｅは、例えば、変数名を固有情報に置換後の手順情報を端末装置２に送信する。
【００１７】
なお、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
このような情報処理装置１により、以下のような手順で処理が実行される。
【００１８】
図２は、第１の実施の形態の処理手順の一例を示すフローチャートである。以下、図２に示す処理をステップ番号に沿って説明する。
［ステップＳ１］抽出部１ｂは、変更対象のシステムに施す構成変更内容を取得する。例えば抽出部１ｂは、端末装置２から受信した手順要求から構成変更内容を取得する。
【００１９】
［ステップＳ２］抽出部１ｂは、手順情報記憶部１ａから、構成変更内容に応じた手順情報を抽出する。例えば抽出部１ｂは、構成変更内容に応じて、変更対象のシステムの構成を変更した場合の変更前の構成と変更後の構成とを特定する。次に抽出部１ｂは、変更前の構成と変更後の構成との組に対応する手順情報を手順情報記憶部１ａから抽出する。
【００２０】
［ステップＳ３］置換部１ｅは、変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する変更対象のシステムの固有情報を取得し、手順情報内の該変数名を、取得した固有情報に置換する。例えば置換部１ｅは、位置情報記憶部１ｄを参照し、抽出された手順情報に含まれる変数名に対応する位置情報を取得する。次に置換部１ｅは、構成情報記憶部１ｃ内の変更対象のシステムの構成情報における取得した位置情報に対応する位置から固有情報を取得する。そして置換部１ｅは、抽出部１ｂで抽出された手順情報内の変数を、構成情報記憶部１ｃから取得した位置情報に置換する。
【００２１】
［ステップＳ４］置換部１ｅは、変数を位置情報に置換後の手順情報を出力する。例えば置換部１ｅは、手順要求を出力した端末装置２に、手順情報を出力する。
このようにして、変更対象のシステムの固有情報を反映させた手順情報を得ることができる。以下、具体的な動作例を説明する。
【００２２】
図３は、第１の実施の形態における手順情報生成例を示す図である。図３には、識別情報が「システム＃１」のシステムのＷｅｂサーバソフトウェアを、版数「2.2.15」から「2.2.16」に更新する場合の例が示されている。図３の例では、手順要求６が入力されている。手順要求６には、変更対象のシステムの識別情報と、構成の変更内容とが示されている。
【００２３】
手順要求６が入力されると、抽出部１ｂが、システムの構成の変更内容に応じた手順情報を、手順情報記憶部１ａから抽出する。図３の例では、Ｗｅｂサーバソフトウェアの版数を「2.2.15」から「2.2.16」に更新する手順情報３ａが抽出されている。抽出された手順情報３ａは、抽出部１ｂから置換部１ｅに渡される。
【００２４】
置換部１ｅは、抽出された手順情報３ａに含まれる変数名を取得する。図３の例では、変数名「$var1」が取得される。次に、置換部１ｅは、取得した変数名「$var1」に対応する位置情報を、位置情報記憶部１ｄから取得する。図３の例では、「Server/@ipaddress」という位置情報５ａが取得される。この位置情報５ａは、「Server」という要素の下の「ipaddress」という属性の値が、固有情報であることを示している。そこで置換部１ｅは、構成情報記憶部１ｃの変更対象のシステムの構成情報４ａを参照し、構成情報４ａ内の位置情報５ａで示される位置の値「5.6.7.8」を取得する。次に置換部１ｅは、抽出された手順情報３ａ内の変数名「$var1」を固有情報「5.6.7.8」に置換した手順情報７を生成する。
【００２５】
そして置換部１ｅは、生成した手順情報７を出力する。例えば、手順要求６が端末装置２から出されたのであれば、手順情報７は端末装置２に送信される。すると端末装置２で手順情報７の内容が表示される。
【００２６】
手順情報は、変更対象のシステムに合わせた固有情報が設定されているため、端末装置２を使用するユーザは、手順情報７に示された操作をそのまま端末装置２に入力することで、変更対象のシステムの所望の構成変更を行うことができる。
【００２７】
端末装置２を使用するユーザが未実施の手順であっても、迷わず実施することができ、作業効率が向上する。
なお、抽出部１ｂと置換部１ｅは、情報処理装置１が有するＣＰＵ（Central Processing Unit）が備える機能により実現することができる。また、手順情報記憶部１ａ、構成情報記憶部１ｃ、および位置情報記憶部１ｄは、情報処理装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）などにより実現することができる。
【００２８】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、複数のユーザそれぞれが使用するサーバを統括管理する管理サーバで、ユーザに操作手順を提示し、ユーザのサーバ運用にかかる管理負荷の低減を図るものである。
【００２９】
図４は、第２の実施の形態のシステム構成例を示す図である。管理サーバ１００には、ネットワーク１０を介して複数のＩＣＴシステム４１〜４４が接続されている。またネットワーク１０には、複数のユーザ２１〜２４それぞれが使用する端末装置３１〜３４が接続されている。ＩＣＴシステム４１〜４４は、それぞれ別個のユーザが管理している。またＩＣＴシステム４１〜４４は、それぞれ１以上のサーバで構成されている。
【００３０】
図４の例では、ユーザ２１は、端末装置３１を使用してＩＣＴシステム４１を管理する。またユーザ２２は、端末装置３２を使用してＩＣＴシステム４２を管理する。またユーザ２３は、端末装置３３を使用してＩＣＴシステム４３を管理する。またユーザ２４は、端末装置３４を使用してＩＣＴシステム４４を管理する。
【００３１】
管理サーバ１００は、ユーザ２１〜２４による端末装置３１〜３４を介したＩＣＴシステム４１〜４４に対する操作内容をＩＣＴシステム４１〜４４から取得し、操作履歴として保持する。また管理サーバ１００は、保持している操作履歴に基づいて、作業内容に応じた操作手順を示す手順グラフを生成する。さらに管理サーバ１００は、ユーザ２１〜２４による端末装置３１〜３４からの手順要求に応じて、手順要求を操作するユーザが使用するサーバの構成に適合する操作手順を生成し、手順要求を出力した端末装置に応答する。
【００３２】
ここでユーザ２１の識別情報（ユーザＩＤ）は「ユーザ＃１」、ユーザ２２の識別情報（ユーザＩＤ）は「ユーザ＃２」、ユーザ２３の識別情報（ユーザＩＤ）は「ユーザ＃３」、ユーザ２４の識別情報（ユーザＩＤ）は「ユーザ＃４」であるものとする。またユーザ２１〜２４それぞれが管理するＩＣＴシステム４１〜４４は、そのＩＣＴシステムを管理しているユーザのユーザＩＤによって管理サーバ１００内で識別するものとする。すなわち第２の実施の形態では、ＩＣＴシステムを管理しているユーザのユーザＩＤが、そのＩＣＴシステムの識別情報として用いられる。
【００３３】
図５は、管理サーバのハードウェアの一構成例を示す図である。管理サーバ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２と複数の周辺機器が接続されている。
【００３４】
ＲＡＭ１０２は、管理サーバ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に利用される各種データが格納される。
【００３５】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００３６】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、管理サーバ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００３７】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３８】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３９】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４０】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４１】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお図５には管理サーバ１００のハードウェア構成を示したが、端末装置３１〜３４およびＩＣＴシステム４１〜４４を構成するサーバも、管理サーバ１００と同様のハードウェアで実現することができる。また第１の実施の形態に示した情報処理装置１も、図５に示した管理サーバ１００と同様のハードウェアにより実現することができる。
【００４２】
図６は、管理サーバの機能の一例を示すブロック図である。管理サーバ１００は、情報の記憶機能として、手順ログＤＢ（Database）１１０、構成管理データベース（ＣＭＤＢ：Configuration Management Database）１２０、変更ログＤＢ１３０、固有情報パターン記憶部１４０、変数情報記憶部１５０、手順グラフＤＢ１６０、実行可能コマンド記憶部１７０、および実績記憶部１８０を有する。
【００４３】
手順ログＤＢ１１０は、複数のＩＣＴシステム４１〜４４それぞれに対して行われた操作履歴のうち、サーバの構成を変更させる操作の履歴を示す手順ログを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、手順ログＤＢ１１０として使用される。なお手順ログは、第１の実施の形態に示す手順情報の一例である。
【００４４】
ＣＭＤＢ１２０は、ＩＣＴシステム４１〜４４それぞれの構成情報を記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、ＣＭＤＢ１２０として使用される。
【００４５】
変更ログＤＢ１３０は、ユーザによる一連の操作によってＩＣＴシステムの構成が変更された場合の変更内容を記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、変更ログＤＢ１３０として使用される。
【００４６】
固有情報パターン記憶部１４０は、手順ログに含まれる操作内容のうち、ＩＣＴシステムまたはＩＣＴシステムに含まれるサーバに固有の情報の検出基準を示す固有情報パターンを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、固有情報パターン記憶部１４０として使用される。
【００４７】
変数情報記憶部１５０は、固有情報の種別を示す変数と、ＩＣＴシステムの構成情報内にその変数に対応する固有情報が出現する位置を示すマッチパターンとの対応関係を記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、変数情報記憶部１５０として使用される。
【００４８】
手順グラフＤＢ１６０は、ユーザによって行われた一連の操作をグラフで表した手順グラフを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、手順グラフＤＢ１６０として使用される。なお手順グラフは、手順ログに示された情報を含んでおり、第１の実施の形態に示した手順情報の一例である。
【００４９】
実行可能コマンド記憶部１７０は、ＩＣＴシステム４１〜４４それぞれにおいて実行可能なコマンドのリストを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、実行可能コマンド記憶部１７０として使用される。
【００５０】
実績記憶部１８０は、各コマンドの実行実績が記憶される。コマンドの実行実績としては、例えばそのコマンドが構成変更の操作に用いられた回数や、コマンドの実行に要した時間である。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、実績記憶部１８０として使用される。
【００５１】
管理サーバ１００には、管理機能として、情報取得部１９１、正規化部１９２、グラフ生成部１９３、候補生成部１９４、整列部１９５、および手順実行部１９６を有する。
情報取得部１９１は、ＩＣＴシステム４１〜４４の構成を管理する。例えば情報取得部１９１は、ＩＣＴシステム４１〜４４それぞれから構成情報を取得し、ＣＭＤＢ１２０に格納する。また情報取得部１９１は、ＩＣＴシステム４１〜４４それぞれの構成の変更操作および変更操作に応じた処理実行状況を示す情報を取得する。例えばＩＣＴシステム４１〜４４は、端末装置３１〜３４から入力されたコマンドの情報、およびコマンドの実行に要した時間（所要時間）を、管理サーバ１００に送信する。情報取得部１９１は、ＩＣＴシステム４１〜４４から送信されたコマンドの情報に基づいて、手順ログを生成し、手順ログＤＢ１１０に格納する。また情報取得部１９１は、ＩＣＴシステム４１〜４４から送信されたコマンドの情報と、コマンドの所要時間とに基づいて、実績記憶部１８０内の実績情報を更新する。また情報取得部１９１は、一連の操作に関する手順ログＤＢ１１０や、その操作による構成の変更内容に基づいて変更ログを生成し、変更ログＤＢ１３０に格納する。
【００５２】
正規化部１９２は、生成した変更ログの正規化を行う。変更ログの正規化とは、変更ログ内に含まれる、各ＩＣＴシステムの固有情報を、その固有情報の種別に応じた変数に置き換える処理である。手順ログや変更ログ内に含まれるＩＰアドレスなどの固有情報は、ユーザごとに様々である。そこで、正規化部１９２は、再利用可能な表現に変換する。固有情報を再利用可能な表現に直すため、正規化部１９２は、固有情報を抽出するステップと、再利用可能な表現に変換するステップとの２ステップの処理を実行する。そして正規化部１９２は、正規化された変更ログをグラフ生成部１９３に渡す。また正規化部１９２は、正規化された固有情報に対応する変数に関し、変数とマッチパターンとの対応関係を変数情報記憶部１５０に格納する。
【００５３】
グラフ生成部１９３は、正規化された変更ログに基づいて手順グラフを作成する。グラフ生成部１９３は、作成した手順グラフを手順グラフＤＢ１６０に格納する。
候補生成部１９４は、端末装置３１〜３４のいずれかから送信された手順要求に応じて、手順グラフＤＢ１６０から手順候補を抽出する。候補生成部１９４は、抽出した手順候補を、整列部１９５に送信する。なお候補生成部１９４は、第１の実施の形態に示した抽出部１ｂと置換部１ｅとの機能を有している。
【００５４】
整列部１９５は、抽出された手順候補を、所定の基準で並べ替える。整列部１９５は、手順要求を並べ替える際には、例えば実行可能コマンド記憶部１７０、実績記憶部１８０などを参照する。整列部１９５は、整列させた手順候補を、手順要求を送信した端末装置に対して送信する。
【００５５】
手順実行部１９６は、端末装置３１〜３４のいずれかから、実行する操作手順が入力されると、入力された操作手順に従って、操作手順を入力した端末装置を使用するユーザに対応するサーバに対して、操作手順通りのコマンドを実行する。手順実行部１９６は、操作手順の実行結果に基づいて、実績記憶部１８０の情報を更新する。
【００５６】
なお、図６に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
次に、管理サーバ１００で記憶されている各種情報のデータ構造について説明する。まず手順ログＤＢ１１０のデータ構造について説明する。
【００５７】
図７は、手順ログＤＢのデータ構造の一例を示す図である。手順ログＤＢ１１０には、ユーザごとの手順ログ１１１〜１１３が格納されている。手順ログ１１１〜１１３には、例えばユーザの識別情報（ユーザＩＤ）に対応付けて、そのユーザが端末装置を用いてサーバに対して入力した一連のコマンドが格納されている。
【００５８】
図７の例では、各手順ログ１１１〜１１３には、Ｗｅｂサーバソフトウェアのアップデートを行う際に入力された一連の操作情報が示されている。操作情報には、例えば操作手順内で入力されたコマンドと、そのコマンド入力時の引数（パラメータ）が含まれる。手順ログ１１１〜１１３は、入力された操作情報の少なくとも一部が異なる。
【００５９】
例えばユーザＩＤ「ユーザ＃１」のユーザ２１の手順ログ１１１には、「telnet 192.168.1.10」、「apache2ctl stop」、「yum update apache2」、「apache2ctl start」というコマンドが順に入力されたことが示されている。一方、ユーザＩＤ「ユーザ＃２」のユーザ２２の手順ログ１１２には、手順ログ１１１と同様のコマンドの後に、ロードバランサの設定を行い、使用しなくなったＷｅｂサーバの機能を停止する操作手順が示されている。またユーザＩＤ「ユーザ＃３」のユーザ２３の手順ログ１１３には、手順ログ１１１の「telnet」コマンドに代えて、「ssh」コマンドによってサーバにリモートログインし、Ｗｅｂサーバソフトウェアのアップデートを行った操作手順が示されている。
【００６０】
次にＣＭＤＢ１２０のデータ構造について説明する。
図８は、ＣＭＤＢのデータ構造の一例を示す図である。ＣＭＤＢ１２０には、ＩＣＴシステムごとの構成情報１２１，１２２，・・・が格納されている。
【００６１】
ＣＭＤＢ１２０の構成情報１２１は、複数の構成アイテム（ＣＩ：Configuration Item）１２１−１，１２１−２，・・・を有する。ここで、１つのＣＩは１つのアイテム（item）に対応する。アイテムは複数のレコード（record）を持つ。レコードの下に、サーバやネットワークなどの構成情報を任意の形式で持つ。
【００６２】
例えばＣＩ１２１−１は、アイテムのＩＤやタイプが設定された要素１２１ａの下に、レコードを示す要素１２１ｂ，１２１ｅ，・・・が設定されている。レコードを示す要素１２１ｂの下には、階層構造で複数の要素１２１ｃ，１２１ｄが設定されている。各要素１２１ｃ，１２１ｄ内の先頭の１行は、要素名である。例えば要素１２１ｃの要素名は、「Server」である。また各要素内の要素名の下の各行の文字列が属性を表している。例えば要素１２１ｃ内の「ipaddress=“192.168.1.10”」が１つの属性であり、このうち“192.168.1.10”がその属性の値である。
【００６３】
なお、ＣＭＤＢ１２０内の構成情報が更新された場合、例えば更新時に行われた操作の操作手順に応じた手順グラフを作成するまでは、更新前の情報もＣＭＤＢ１２０内またはＲＡＭ１０２内に保持される。
【００６４】
図８の構成情報１２１は、ユーザ＃１のユーザ２１が管理するＩＣＴシステム４１の構成情報の例である。ＣＭＤＢ１２０内のデータの位置は、例えばＸＰａｔｈ（XML Path Language）で指定できる。ここでＸＰａｔｈは、Ｗ３Ｃ（World Wide Web Consortium）で策定された、ＸＭＬ（Extensible Markup Language）に準拠した文書の特定の部分を指定する言語構文である。
【００６５】
次に変更ログＤＢ１３０のデータ構造について説明する。
図９は、変更ログＤＢのデータ構造の一例を示す図である。変更ログＤＢ１３０には、変更ログ１３１〜１３３が格納されている。変更ログ１３１〜１３３には、ユーザＩＤに対応付けて、ＣＭＤＢの変更箇所と変更内容を示す情報が設定されている。図９の例では、変更箇所がＸＰａｔｈによって示されている。また変更内容が、変更前の情報から変更後の情報へ矢印で指し示すことで表されている。
【００６６】
例えば変更ログ１３１では、構成情報１２１における「%Server/#*/Server[@ipaddress=“192.168.1.10” and …]/Software[@name=“Apache”  and …]/@version=“2.2.15”」で示される位置の“2.2.15”が、“2.2.16”に変更されたことが示されている。
【００６７】
このような変更ログを保持しておくことで、ＣＭＤＢ内の構成情報が変更された場合の変更部分の変更前情報と変更後情報とを、変更ログに基づいて再現することができる。
次に固有情報パターン記憶部１４０のデータ構造について説明する。
【００６８】
図１０は、固有情報パターン記憶部のデータ構造の一例を示す図である。固有情報パターン記憶部１４０には、固有情報表１４１が格納されている。固有情報表１４１には、固有情報とパターンとの欄が設けられている。固有情報の欄には、固有情報の種別名が設定される。パターンの欄には、固有情報の欄に示される種別の情報が変更ログ内で記述されるときのパターンが設定される。
【００６９】
このように固有情報の抽出用に、予め、固有情報とみなすデータのパターンが固有情報表１４１に登録される。固有情報としては、ＩＰアドレス、ユーザ情報、マシン名、などがある。図１０の例では、ＩＰアドレスを固有情報とし、ＣＭＤＢ内のデータにマッチするＸＰａｔｈがパターンとして登録されている。例えば種別がＩＰアドレスである固有情報のパターンとして、「%*[@ipaddress]」が設定されている。これは、変更ログ内の「%*[@ipaddress]」に合致する部分（変数「@ipaddress」）に設定されている値が、固有情報「ＩＰアドレス」であることを示している。
【００７０】
次に変数情報記憶部１５０のデータ構造について説明する。
図１１は、変数情報記憶部のデータ構造の一例を示す図である。変数情報記憶部１５０には、変数対応表１５１が格納されている。変数対応表１５１には、変数名とマッチパターンとの欄が設けられている。
【００７１】
変数名の欄には、正規化処理によって生成された変数名が設定される。マッチパターンの欄には、変数名で示される変数に対応する固有情報が出現する位置を示すマッチパターンが設定される。例えば変数名「$var1」に対応する固有情報が、「%Server/#observed/Server[./Software/@version=“2.2.15”]/@ipaddress」で示される位置のパラメータの値として設定されることが示されている。
【００７２】
なお変数名「$var2」に対応付けられたマッチパターンは、そのマッチパターン内に別の変数名「$var3」を含んでいる。これは、マッチパターン内に固有情報が含まれていたため、マッチパターン生成時に、固有情報から変数名への置換が行われたことを表す。
【００７３】
次に、手順グラフＤＢ１６０のデータ構造について説明する。
図１２は、手順グラフＤＢのデータ構造の一例を示す第１の図である。手順グラフＤＢ１６０には、手順グラフ１６１が格納されている。図１２に示す手順グラフ１６１は、３つの入力情報１６１ａ，１６１ｂ，１６１ｃのいずれかから、３つの出力情報１６１ｄ，１６１ｅ，１６１ｆのいずれかに構成を遷移させる操作手順が、有向グラフによって示されている。操作手順は、複数のノード１６１ｇ，１６１ｈ，１６１ｉ，１６１ｊ，１６１ｋ，１６１ｌ，１６１ｍ，１６１ｎ，１６１ｏ，１６１ｐをエッジで接続することによって表現されている。各ノードは、操作手順内の行われた各操作を示す操作情報に対応する。ノードを接続するエッジは、操作が行われた順番を矢印で示している。エッジは、ある操作に対応するノードから、その操作の次に行われた操作に対応するノードを指している。
【００７４】
次に実行可能コマンド記憶部１７０のデータ構造について説明する。
図１３は、実行可能コマンド記憶部のデータ構造の一例を示す図である。実行可能コマンド記憶部１７０には、ＩＣＴシステムごとのコマンドリスト１７１，１７２，・・・が格納されている。コマンドリスト１７１，１７２，・・・には、ＩＣＴシステムを管理するユーザのユーザＩＤに対応付けて、管理対象のＩＣＴシステムで実行可能なコマンドのリストが登録されている。ＩＣＴシステムで実行可能なコマンドは、例えばＩＣＴシステムに対してインストールされたプログラムを呼び出すコマンドである。
【００７５】
次に実績記憶部１８０のデータ構造について説明する。
図１４は、実績記憶部のデータ構造の一例を示す図である。実績記憶部１８０には、ユーザごとの操作実績表１８１，１８２，・・・と所要時間実績表１８０ａとが格納されている。
【００７６】
操作実績表１８１，１８２，・・・それぞれには、ユーザＩＤが設定されている。また操作実績表１８１，１８２，・・・には、操作と実績との欄が設けられている。操作の欄には、ユーザＩＤで示されるユーザが管理するＩＣＴシステムにおいて実行されたコマンドが設定される。実績の欄には、対応するコマンドが実行された回数が設定される。
【００７７】
所要時間実績表１８０ａには、操作と所要時間との欄が設けられている。操作の欄には、いずれかのＩＣＴシステムにおいて実行されたコマンドが設定される。所要時間の欄には、対応するコマンドを実行した際の実行の所要時間の平均値が、秒単位で設定される。なお、各コマンドの所要時間は、例えばＩＣＴシステムでコマンドが実行されるごとに更新される。また各コマンドの所要時間は、例えば、予め計測した値を固定的に設定しておいてもよい。
【００７８】
以上のような構成の管理サーバ１００において、手順グラフの作成処理および、作成された手順グラフに基づく手順候補提供処理が行われる。
＜＜手順グラフ作成処理＞＞
まず手順グラフ作成処理について詳細に説明する。
【００７９】
図１５は、手順グラフ作成処理の手順の一例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］情報取得部１９１は、ＩＣＴシステムによる操作の実行状況を取得し、手順ログＤＢ１１０、ＣＭＤＢ１２０、および実績記憶部１８０内の情報を更新する。また情報取得部１９１は、ＣＭＤＢ１２０に格納された構成情報の変更に伴い、変更ログを生成し、変更ログＤＢ１３０に格納する。
【００８０】
［ステップＳ１２］正規化部１９２は、変更ログＤＢ１３０に格納された変更ログに基づいて、ＩＣＴシステムまたはＩＣＴシステムに含まれるサーバの固有情報の抽出処理を実行する。この処理の詳細は後述する（図１７、図１８参照）。
【００８１】
［ステップＳ１３］正規化部１９２は、固有情報の種別ごとに、その種別の固有情報が出現する位置を示すマッチパターンを生成する。この処理の詳細は後述する（図２０参照）。
【００８２】
［ステップＳ１４］正規化部１９２は、マッチパターンに適合する位置の固有情報の正規化を行う。正規化処理では、例えば正規化部１９２は、固有情報を、その固有情報の種別に対応する変数に置き換える。この処理の詳細は後述する（図２５参照）。
【００８３】
［ステップＳ１５］グラフ生成部１９３は、入出力情報を抽出する。例えばグラフ生成部１９３は、手順ログで示される操作手順によりＩＣＴシステムで処理が実行されたことで構成情報が変更されたときの変更部分の変更前情報を入力情報とし、変更部分の変更後情報を出力情報とする。
【００８４】
［ステップＳ１６］グラフ生成部１９３は、入力情報から出力情報へ構成情報を遷移させる有向グラフを作成する。この処理の詳細は後述する（図３１参照）。
［ステップＳ１７］グラフ生成部１９３は、有向グラフを合成し、手順グラフ１６１を生成する。グラフ生成部１９３は、生成した手順グラフ１６１を手順グラフＤＢ１６０に格納する。この処理の詳細は後述する（図３５〜３９参照）。
【００８５】
このような手順で、手順グラフ１６１が作成される。以下、図１５に示す各処理を詳細に説明する。
＜操作の実行状況に応じた情報の更新処理＞
まず操作の実行状況に応じた情報の更新処理（図１５のステップＳ１１）について説明する。
【００８６】
例えば情報取得部１９１は、ＩＣＴシステムから、ユーザが使用する端末装置から入力された一連の操作を取得する。一連の操作は、例えばＩＣＴシステムに入力されたコマンドとそのコマンドの引数とで表される。また情報取得部１９１は、例えば所定の期間内に入力された複数の操作を、一連の操作と認識する。情報取得部１９１は、取得した一連の操作を含む手順ログを生成する。そして情報取得部１９１は、生成した手順ログを、操作されたＩＣＴシステムを管理するユーザのユーザＩＤに対応付けて、手順ログＤＢ１１０に格納する。
【００８７】
なお情報取得部１９１は、例えばＩＣＴシステムの識別情報と、そのＩＣＴシステムを管理しているユーザのユーザＩＤとの対応関係を、予めメモリなどの記憶装置に記憶させている。そして情報取得部１９１は、一連の操作の取得元のＩＣＴシステムに対応するユーザＩＤを、その一連の操作に基づいて生成した手順ログに付与する。
【００８８】
また情報取得部１９１は、取得した一連の操作に応じて、実績記憶部１８０内の実績情報を更新する。例えば情報取得部１９１は、一連の操作を行ったユーザのユーザＩＤに対応する操作実績表に対して、一連の操作に含まれる各コマンドの実績の値を、操作により実行されたコマンドの数だけカウントアップする。
【００８９】
また情報取得部１９１は、一連の操作に含まれるコマンドの所要時間を、ＩＣＴシステムから取得する。そして情報取得部１９１は、実行されたコマンドの所要時間に基づいて、所要時間実績表１８０ａにおけるそのコマンドの所要時間を更新する。
【００９０】
また情報取得部１９１は、ＩＣＴシステムに一連の操作が行われたことにより、ＩＣＴシステムの構成が変更された場合、変更後の構成情報をＩＣＴシステムから取得し、ＣＭＤＢ１２０に格納する。
【００９１】
ここで、ＩＣＴシステムに対して構成変更を伴う一連の操作が行われ、そのＩＣＴシステムの構成が変更されると、ＣＭＤＢ１２０内の構成情報も変更される。構成情報の内容が変更されると、情報取得部１９１により変更内容を示す変更ログが生成される。
【００９２】
図１６は、変更ログの生成例を示す図である。図１６には、ユーザＩＤ「ユーザ＃１」のユーザ２１により、手順ログ１１１で示された操作が行われた場合の変更ログ１３１の例が示されている。
【００９３】
手順ログ１１１で示された操作が行われた場合、ＩＣＴシステム４１では、Ｗｅｂサーバソフトウェアのアップデート処理が行われる。例えば、Ｗｅｂサーバソフトウェアのバージョンが、“２．２．１５”から“２．２．１６”に更新されたものとする。この場合、情報取得部１９１は、ＣＭＤＢ１２０内のユーザ２１に対応する更新前の構成情報１２１から、Ｗｅｂサーバソフトウェアのバージョンを示す位置のＸＰａｔｈとバージョン番号とを含む変更前情報５１を生成する。また情報取得部１９１は、ＣＭＤＢ１２０内のユーザ２１に対応する構成情報１２１を更新し、更新後の構成情報１２１から、Ｗｅｂサーバソフトウェアのバージョンを示す位置のＸＰａｔｈとバージョン番号とを含む変更後情報５２を生成する。
【００９４】
そして、情報取得部１９１は、変更前情報５１に対する変更後情報５２の変更内容を示す変更ログ１３１を生成する。変更ログ１３１では、変更前情報５１における変更された部分について、「変更前の値→変更後の値」という記載に置き換えることで、変更内容が表されている。例えば図１６の例では、変更ログ１３１では、バージョン番号が記載された部分が「“2.2.15”→“2.2.16”」とされている。これにより、バーションが、“２．２．１５”から“２．２．１６”に更新されたことが示されている。
【００９５】
このようにして生成された変更ログ１３１は、情報取得部１９１により変更ログＤＢ１３０に格納される。
＜固有情報の抽出処理＞
次に固有情報の抽出処理（図１５のステップＳ１２）について説明する。
【００９６】
図１７は、固有情報抽出処理の手順の一例を示すフローチャートの前半である。固有情報抽出処理の前半では、変更ログから固有情報が抽出される。以下、図１７に示す処理をステップ番号に沿って説明する。
【００９７】
［ステップＳ２１］正規化部１９２は、変更ログＤＢ１３０内に未処理の変更ログがあるか否かを判断する。未処理の変更があれば、正規化部１９２は処理をステップＳ２２に進める。すべての変更ログに対してステップＳ２２〜Ｓ２４の処理が完了していれば、正規化部１９２は、処理をステップＳ３１（図１８参照）に進める。
【００９８】
［ステップＳ２２］正規化部１９２は、変更ログＤＢ１３０内の未処理の変更ログを１つ選択する。
［ステップＳ２３］正規化部１９２は、選択した変更ログが、固有情報パターン記憶部１４０内の固有情報表１４１に設定されているパターンに適合する情報が含まれるか否かを判断する。例えば正規化部１９２は、変更ログ内のデータの位置が、固有情報表１４１にあるパターンに合致すれば、そのデータを固有情報とみなし、変換の対象とする。
【００９９】
図９に示した変更ログ１３１の場合、「%Server/#*/Server[@ipaddress=“192.168.1.10” and …]/Software[@name=“Apache”  and …]/  @version=“2.2.15”  →  “2.2.16”」というＸＰａｔｈがある。正規化部１９２は、この変更ログ１３１のうち、固有情報表１４１のパターン「%*[@ipaddress]」が合致する部分の値“192.168.1.10”を、固有情報と判断する。
【０１００】
適合する情報があれば、正規化部１９２は処理をステップＳ２４に進める。適合する情報がなければ、正規化部１９２は処理をステップＳ２１に進める。
［ステップＳ２４］正規化部１９２は、選択した変更ログ内の適合する場所の文字列を抽出し、置換対象表に追加する。例えば正規化部１９２は、文字列の抽出元の変更ログに対応するユーザＩＤと文字列との組を、置換対象表に追加する。その後、正規化部１９２は処理をステップＳ２１に進める。
【０１０１】
このようにして、変更ログから固有情報が抽出される。例えば図９に示した変更ログ１３１〜１３３には、各ＩＣＴシステムに含まれるサーバのＩＰアドレスが、固有情報として含まれている。そこで、変更ログ１３１〜１３３から固有情報としてＩＰアドレスが抽出される。
【０１０２】
図１８は、固有情報抽出処理の手順の一例を示すフローチャートの後半である。固有情報抽出処理の後半では、手順ログから固有情報が抽出される。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１０３】
［ステップＳ３１］正規化部１９２は、手順ログＤＢ１１０内の手順ログのうち、ステップＳ３２〜Ｓ４１の処理が未処理の手順ログがあるか否かを判断する。未処理の手順ログがあれば、正規化部１９２は処理をステップＳ３２に進める。未処理の手順ログがなければ、正規化部１９２は固有情報抽出処理を終了する。
【０１０４】
［ステップＳ３２］正規化部１９２は、未処理の手順ログのうちの１つを選択する。
［ステップＳ３３］正規化部１９２は、ステップＳ３２で選択した手順ログ内に、ステップＳ３４〜Ｓ４１の処理が未処理の操作情報があるか否かを判断する。正規化部１９２は、未処理の操作情報があれば処理をステップＳ３４に進める。正規化部１９２は、未処理の操作情報がなければ、処理をステップＳ３１に進める。
【０１０５】
［ステップＳ３４］正規化部１９２は、ステップＳ３２で選択した手順ログから、未処理の操作情報を１つ選択する。
［ステップＳ３５］正規化部１９２は、選択した操作情報から文字列群を抽出する。例えば正規化部１９２は、スペースを区切りとして、操作情報を複数の文字列に分割する。そして正規化部１９２は、分割して得られた文字列を抽出する。
【０１０６】
［ステップＳ３６］正規化部１９２は、ステップＳ３５で抽出した文字列のうち、ステップＳ３７〜Ｓ４１の処理が未処理の文字列があるか否かを判断する。正規化部１９２は、未処理の文字列があれば処理をステップＳ３７に進める。また正規化部１９２は、未処理の文字列がなければ処理をステップＳ３３に進める。
【０１０７】
［ステップＳ３７］正規化部１９２は、ステップＳ３５で抽出した文字列のうち、未処理の文字列を１つ選択し、変数Ｘに設定する。
［ステップＳ３８］正規化部１９２は、選択した変更ログに対応するユーザと同じユーザのＣＭＤＢ１２０内の構成情報を参照し、その構成情報に変数Ｘに設定された文字列があるか否かを判断する。正規化部１９２は、変数Ｘに設定された文字列があれば、処理をステップＳ３９に進める。また正規化部１９２は、変数Ｘに設定された文字列がなければ、処理をステップＳ３６に進める。
【０１０８】
［ステップＳ３９］正規化部１９２は、構成情報における、変数Ｘの文字列と一致する文字列が出現した場所と、固有情報表１４１のパターンとを比較する。
［ステップＳ４０］正規化部１９２は、比較の結果、変数Ｘの文字列の構成情報内での出現場所が、固有情報表のパターンに適合するか否かを判断する。正規化部１９２は、パターンに適合する場合、処理をステップＳ４１に進める。また正規化部１９２は、パターンに適合しない場合、処理をステップＳ３６に進める。
【０１０９】
［ステップＳ４１］正規化部１９２は、変数Ｘに設定した文字列を、置換対象表に追加する。例えば正規化部１９２は、文字列の抽出元の手順ログに対応するユーザＩＤと文字列との組を、置換対象表に追加する。その後、正規化部１９２は処理をステップＳ３６に進める。
【０１１０】
このように、手順ログ内の操作情報ごとに、スペース区切りなどで文字列が抽出され、ＣＭＤＢ内の構成情報が探索される。そして構成情報内の一致した文字列の場所が固有情報表のパターンに示されるＸＰａｔｈに適合するか判断される。パターンにも一致した場合、その文字列が固有情報と判断される。
【０１１１】
例えば、図７に示した手順ログ１１１を見ると、最初の操作情報内に「192.168.1.10」という文字列がある。ユーザＩＤ「ユーザ＃１」のユーザ２１に対応するＣＭＤＢ１２０内の構成情報１２１を調べると、「Server ipaddress=“192.168.1.10”」というＣＩに合致する。このＣＩの「ipaddress」は、固有情報表１４１のＸＰａｔｈ「%*[@ipaddress]」に合致する。そこで、「192.168.1.10」が固有情報であると判断される。
【０１１２】
このようにして、手順ログや変更ログから抽出された固有情報の文字列が、置換対象表に登録される。以下、置換対象表に登録された文字列を、元文字列と呼ぶ。
図１９は、置換対象表のデータ構造の一例を示す図である。図１９には、図７に示す手順ログ１１１〜１１３のそれぞれに対応する操作手順が行われた場合に生成される置換対象表５３ａ，５３ｂ，５３ｃが示されている。置換対象表５３ａ，５３ｂ，５３ｃには、ユーザと文字列との欄が設けられている。ユーザの欄には、固有情報の抽出元の手順ログまたは変更ログに対応するユーザのユーザＩＤが設定される。文字列の欄には、固有情報として抽出された文字列が設定される。このような置換対象表５３ａ，５３ｂ，５３ｃは、例えば正規化部１９２が管理するＲＡＭ１０２内の記憶領域に格納される。
【０１１３】
＜マッチパターン生成処理＞
次にマッチパターン生成処理（図１５のステップＳ１３）について説明する。
固有情報が抽出されると、ＣＭＤＢ１２０内の各構成情報から抽出された固有情報が再利用可能な表現に変換される。固有情報を再利用可能な表現に変換する際、同種の構成を同様に表現できるパターンに変換する。
【０１１４】
ここでは、ＣＭＤＢ１２０を用いる例で説明する。ＣＭＤＢでは、構成情報を共通のデータ記述形式（スキーマ）で表現できるため、同種の構成を同様に表現できる。例えば、図７に示した手順ログ１１１には、固有情報としてＩＰアドレス「192.168.1.10」がある。このＩＰアドレスは、ユーザＩＤ「ユーザ＃１」のユーザ２１の構成情報１２１（図８参照）に存在するサーバ（type=“Server”）の要素のＩＰアドレス（ipaddress=）の要素の値“192.168.1.10”に対応する。このＩＰアドレスの位置は、ＣＭＤＢ１２０を用いれば「%Server//@ipaddress」のようにＸＰａｔｈで表現できる。これは、異なるユーザの構成情報に対しても用いることのできる表現である。
【０１１５】
このような固有情報の値が出現するＣＭＤＢ上の位置を表すＸＰａｔｈが、マッチパターンの一例である。マッチパターンは、構成要素の種別名（例:Server, Software）、アプリケーション名（例:Apache)など、操作手順を抽象化し再利用することのできるパターンであれば、ＣＭＤＢ上で表すＸＰａｔｈ以外の形式で表現してもよい。
【０１１６】
以下の説明では一例として、ＣＭＤＢ１２０上で表すＸＰａｔｈを用いたマッチパターンで置換対象を表現するものとする。
図２０は、マッチパターン生成処理の手順の一例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
【０１１７】
［ステップＳ５１］正規化部１９２は、置換対象表に、ステップＳ５２〜Ｓ５８の処理が未処理の置換対象があるか否かを判断する。正規化部１９２は、未処理の置換対象があれば処理をステップ５２に進める。また正規化部１９２は、未処理の置換対象がなければマッチパターン生成処理を終了する。
【０１１８】
［ステップＳ５２］正規化部１９２は、置換対象表から未処理の置換対象を１つ選択し、変数Ｘに設定する。
［ステップＳ５３］正規化部１９２は、選択した置換対象に対応するユーザＩＤに対応する構成情報のＣＩのうち、置換対象の元文字列を含むＣＩを取得する。
【０１１９】
［ステップＳ５４］正規化部１９２は、取得したＣＩのitemのtypeの文字列を変数Ａに設定する。
［ステップＳ５５］正規化部１９２は、取得したＣＩのrecordのtypeの文字列を変数Ｂに設定する。
【０１２０】
［ステップＳ５６］正規化部１９２は、recordの下の要素を変数Ｅに設定する。また変数Ｃと変数Ｄとの内容を空にする。
［ステップＳ５７］正規化部１９２は、変数Ｅで示される子要素に関して、子要素解析処理を行う。この処理の詳細は後述する（図２１参照）。
【０１２１】
［ステップＳ５８］正規化部１９２は、変数Ｍに、「“％”＋Ａ＋“／＃”＋Ｂ＋Ｃ＋“／＠”＋Ｄ」という値を設定する。ここで“”で囲まれた文字は、その文字が変数Ｍに設定される。Ａ，Ｂ，Ｃ，Ｄの位置には、それぞれの変数の値が設定される。その後、正規化部１９２は、処理をステップＳ５１に進める。
【０１２２】
図２１は、子要素解析処理の手順の一例を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］正規化部１９２は、変数Ｃに設定されている値に対して、文字“／”と変数Ｅの値とを後方に追加する。この処理は、式「Ｃ＋＝“／”＋Ｅの要素名」で表される。この式の「＋＝」は複合代入演算子であり、この式は、現在の変数Ｃの値の後に、右辺に示された値を追加し、新たに変数Ｃの値とすることを示している。
【０１２３】
［ステップＳ６２］正規化部１９２は、変数Ｅで示される要素内の属性のうち、ステップＳ６３の処理が未処理の属性があるか否かを判断する。正規化部１９２は、未処理の属性があれば処理をステップＳ６３に進める。また正規化部１９２は、未処理の属性がなければ、処理をステップＳ６７に進める。
【０１２４】
［ステップＳ６３］正規化部１９２は、変数Ｅで示される要素内の未処理の属性を１つ取得し、変数Ｙに設定する。
［ステップＳ６４］正規化部１９２は、変数Ｙに設定した属性の値が、置換対象の元文字列を示す変数Ｘの値と等しいか否かを判断する。正規化部１９２は、等しい場合、処理をステップＳ６５に進める。正規化部１９２は、等しくない場合、処理をステップＳ６２に進める。
【０１２５】
［ステップＳ６５］正規化部１９２は、変数Ｃに設定されている値に対して、「相対位置／＠Ｙ＝“Ｙの属性値”」を後方に追加する。この処理は、式「Ｃ＋＝[相対位置／＠Ｙ＝“Ｙの属性値”]で表される。この式の「＋＝」は複合代入演算子である。ここで相対位置とは、置換対象の元文字列と等しい値の属性の位置から、置換対象の抽出元となった操作手順に対応する変更ログの変更前情報（変更された位置を示すＸＰａｔｈ）で示される位置までの相対的な位置を示すＸＰａｔｈである。
【０１２６】
［ステップＳ６６］正規化部１９２は、変数Ｙの値を変数Ｄに設定する。その後、子要素解析処理を終了する。
［ステップＳ６７］現在の変数Ｅで示される要素内に変数Ｘと同じ属性値の属性がない場合（ステップＳ６２でＮＯ）、正規化部１９２は、変数Ｄの値が空であり、かつ変数Ｅで示される要素の子要素があるか否かを判断する。変数Ｄが空であり、かつ子要素があれば、正規化部１９２は、処理をステップＳ６８に進める。また変数Ｄが空でないか、もしくは子要素がない場合、正規化部１９２は、子要素解析処理を終了する。
【０１２７】
［ステップＳ６８］正規化部１９２は、現在の変数Ｅで示される要素の子要素のうち、未選択の子要素を１つ取得し、新たに変数Ｅに設定する。
［ステップＳ６９］正規化部１９２は、再帰的に子要素解析処理を行う。正規化部１９２は、再帰呼び出しにより実行した子要素解析処理が終了すると、処理をステップＳ６７に進める。
【０１２８】
このようにして、抽出された置換対象ごとに、置換対象の元文字列を有するＣＩに基づいてマッチパターンが生成される。特に、変更についての相対位置を示すＸＰａｔｈをマッチパターンに含めることで、より変更内容と連携したマッチパターンとなる。
【０１２９】
以下、具体的なマッチパターンの生成例を説明する。
図２２は、マッチパターン生成の一例を示す図である。図２２では、ユーザ２１（ユーザＩＤ「ユーザ＃１」）の操作に基づく手順ログから抽出されたＩＰアドレス「192.168.1.10」が置換対象５４である場合のマッチパターン５６の生成例である。
【０１３０】
置換対象５４は、ユーザＩＤ「ユーザ＃１」に対応付けられている。そのため、「ユーザ＃１」に対応する構成情報１２１内のＣＩのうち、置換対象５４の元文字列を有するＣＩ１２１−１が取得される。
【０１３１】
ＣＩ１２１−１の情報から、要素１２１ａ内のitemのtypeの文字列「Server」が取得され、変数Ａに設定される。また要素１２１ｂ内のrecordのtypeの文字列（observed）が取得され、変数Ｂに設定される。さらに変数Ｃと変数Ｄとの値を空（Ｃ＝Ｄ＝“”）にして、要素１２１ｂの下の要素１２１ｃの属性群について以下の処理が行われる。
【０１３２】
まず、変数Ｃに要素１２１ｃの要素名（Server）が設定される（C+=“/”+要素名）。その後、属性ごとに、値が置換対象５４の元文字列（192.168.1.10）に等しいか調べられる。そして置換対象５４の元文字列と等しい値を有する属性（ipaddress）が、変数Ｄに設定される。
【０１３３】
さらに、変数Ｄに設定された属性から、変更ログの変更前情報５１における変更対象の属性の位置までの相対位置（./Software）、その変更対象の変数（version）、変更対象の属性の値（“2.2.15”）が「[相対位置/@属性=値]」として、変数Ｃに追加される。もしD=“”かつ、子要素があれば、再帰的に子の要素が処理される。
【０１３４】
そして、変数Ａ，Ｂ，Ｃ，Ｄを「“％”＋Ａ＋“／＃”＋Ｂ＋Ｃ＋“／＠”＋Ｄ」という形式で組み合わせたＸＰａｔｈが、マッチパターン５６となる。
このようにして、置換対象の元文字列に対するマッチパターンが生成される。
【０１３５】
＜固有情報置換処理＞
次に固有情報置換処理（図１５のステップＳ１４）について説明する。
マッチパターンが生成されたとき、変数対応表１５１（図１１参照）に該当するマッチパターンが既に存在すれば、それに対応する変数名が用いられる。存在しなければ、新たな変数名が一意に作成され、マッチパターンと共に変数対応表１５１に追加される。
【０１３６】
例えば正規化部１９２は、マッチパターンに対する変数名を、元文字列を置換する変数名とし、変換表に登録する。
図２３は、変数名の設定例を示す図である。図２３の例では、元文字列「192.168.1.10」に対して変数名「$var1」が対応付けられており、元文字列と変数名との組が変換表５８ａに登録されている。また、登録された元文字列「192.168.1.10」に基づいて生成されたマッチパターンに、その元文字列と同じ変数名「$var1」が対応付けられており、変数名とマッチパターンとの組が変数対応表１５１に登録されている。
【０１３７】
変換表は、手順ログが取得されるごとに生成される。
図２４は、変換表の一例を示す図である。変換表５８ａは、ユーザＩＤ「ユーザ＃１」に対応する変更ログ１３１および手順ログ１１１に基づいて生成されたものである。変換表５８ｂは、ユーザＩＤ「ユーザ＃２」に対応する変更ログ１３２および手順ログ１１２に基づいて生成されたものである。変換表５８ｃは、ユーザＩＤ「ユーザ＃３」に対応する変更ログ１３３および手順ログ１１３に基づいて生成されたものである。
【０１３８】
正規化部１９２は、変換表５８ａに基づいて、手順ログ内の固有情報を、変数名で変換する。
ここで、マッチパターン内に固有情報が含まれている場合もある。そこで正規化部１９２は、マッチパターン内に固有情報が含まれているか否かを、固有情報の抽出時に確認する。もし含まれていれば、正規化部１９２は、上記のフローで変数対応表や変換表への登録と置換を行う。
【０１３９】
図２５は、固有情報置換処理の手順の一例を示すフローチャートである。以下、図２５に示す処理をステップ番号に沿って説明する。なお図２５に示す処理は、マッチパターンが生成されるごとに行われる。
【０１４０】
［ステップＳ７１］正規化部１９２は、生成されたマッチパターンを変数Ｍに設定し、と、そのマッチパターンの生成元となった元文字列を変数Ｏに設定する。
［ステップＳ７２］正規化部１９２は、変数対応表１５１に、変数Ｍに設定されたマッチパターンと同じマッチパターンが存在するか否かを判断する。同じマッチパターンが存在すれば、正規化部１９２は、処理をステップＳ７３に進める。同じマッチパターンが存在しなければ、処理をステップＳ７４に進める。
【０１４１】
［ステップＳ７３］正規化部１９２は、変数Ｍのマッチパターンに対して変数対応表１５１で対応付けられている変数名を、変数Ｖに設定する。正規化部１９２は、その後、処理をステップＳ７６に進める。このとき、正規化部１９２は、変数Ｏに設定された元文字列と、変数Ｖに設定された変数名との組を変換表に追加登録する。
【０１４２】
［ステップＳ７４］正規化部１９２は、新たな変数名を作成し、変数Ｖに設定する。新たに作成する変数名は、変数対応表１５１に既に設定されている変数名と異なる名称である。このとき、正規化部１９２は、変数Ｏに設定された元文字列と、変数Ｖに設定された変数名との組を変換表に追加登録する。
【０１４３】
［ステップＳ７５］正規化部１９２は、変数Ｖに設定された変数名と、変数Ｍに設定されたマッチパターンとの組を、変数対応表１５１に追加登録する。
［ステップＳ７６］正規化部１９２は、マッチパターンの生成元となった手順ログおよび変更ログ内の、変数Ｏに設定された元文字列と同じ文字列を、変数Ｖに設定された変数名に置換する。
【０１４４】
このようにして、固有情報が置換される。
図２６は、変更ログの正規化の例を示す図である。図２６の例では、変更ログ１３１内の「192.168.1.10」という文字列が、置換対象の元文字列である。正規化部１９２は、変更前情報５１やＣＭＤＢ１２０を参照し、変換表５８ａや変数対応表１５１を用いて、元文字列を「$var1」という変数名に置換している。そして、元文字列が置換された正規化変更ログ１３１ａが生成される。
【０１４５】
変更ログ内の固有情報を変数名に置換したのと同様に、対応する手順ログの固有情報が変数名に置換される。
図２７は、手順ログの正規化の例を示す図である。図２７の例では、手順ログ１１１内の「192.168.1.10」という文字列が、置換対象の元文字列である。正規化部１９２は、変更前情報５１やＣＭＤＢ１２０を参照し、変換表５８ａや変数対応表１５１を用いて、元文字列を「$var1」という変数名に置換している。そして、元文字列が置換された正規化手順ログ１１１ａが生成される。
【０１４６】
なお、手順ログの正規化に先立って変更ログの正規化が行われている場合、変更ログの置換処理によって変数対応表や変換表に既に登録されている情報を流用することができる。例えば、手順ログ１１１の場合、「192.168.1.10」が固有情報として抽出される。これにマッチするマッチパターンの変数名は、既に変数対応表に「$var1」として登録されている。また、変換表にも既に「$var1」として登録されている。よって、特にこれらの表に変更はなく、手順ログ１１１内の元文字列が、変数名に置換される。
【０１４７】
図２８は、正規化後の手順ログＤＢの例を示す図である。図２８に示すように、正規化手順ログ１１１ａ，１１２ａ，１１３ａでは、各ＩＣＴシステムに固有のＩＰアドレスが、すべて変数名に変更されている。
【０１４８】
図２９は、正規化後の変更ログＤＢの例を示す図である。図２９に示すように、正規化変更ログ１３１ａ，１３２ａ，１３３ａでは、各ＩＣＴシステムに固有のＩＰアドレスが、すべて変数名に変更されている。
【０１４９】
また、図２８、図２９に示した手順ログと変更ログの正規化に伴って、図１１に示したような変数対応表１５１が生成される。
＜入出力情報の抽出＞
次に、入出力情報の抽出処理（図１５のステップＳ１５）について説明する。
【０１５０】
グラフ生成部１９３は、手順ログに示される一連の操作に応じた処理をＩＣＴシステムが実行した場合における、構成情報の変更部分の変更前情報を入力情報とし、変更部分の変更後情報を出力情報として抽出する。
【０１５１】
図３０は、入出力情報の抽出例を示す図である。図３０の例は、手順ログ１１１に示された一連の操作が実行された場合の入力情報と出力情報との抽出例である。この例では、構成情報におけるＷｅｂサーバのバーション番号が変更されているため、変更前のバージョン番号と、そのバージョン番号の位置を示す変更前情報５１が入力情報として抽出される。また変更後のバージョン番号と、そのバージョン番号の位置を示す変更後情報５２が出力情報として抽出される。
【０１５２】
このような入出力情報の抽出処理が、すべての手順ログに応じて行われる。
＜有向グラフの作成＞
次に有向グラフの作成処理（図１５のステップＳ１６）について説明する。
【０１５３】
有向グラフの作成処理では、グラフ生成部１９３は、手順ログ内の操作それぞれを示す操作情報をノードとして分解し、エッジで接続する。そしてグラフ生成部１９３は、最初の操作情報を入力情報とエッジで接続し、最後の操作を出力情報とエッジで接続する。
【０１５４】
図３１は、有向グラフ作成処理の手順の一例を示すフローチャートである。以下、図３１に示す処理をステップ番号に沿って説明する。なお、以下の処理は、手順ログの正規化が行われるごとに、正規化手順ログに対して実行される。
【０１５５】
［ステップＳ８１］グラフ生成部１９３は、正規化手順ログから、最初の操作を示す操作情報を抽出し、変数ｏに代入する。またグラフ生成部１９３は、変数ｏに設定された操作情報を、変数ｏｓに代入する。このときグラフ生成部１９３は、変数ｏに設定された操作情報に対応するノードを生成する。
【０１５６】
［ステップＳ８２］グラフ生成部１９３は、正規化手順ログ内に、ステップＳ８３〜Ｓ８５の処理が未処理の操作情報があるか否かを判断する。未処理の操作情報があれば、グラフ生成部１９３は、処理をステップＳ８３に進める。また未処理の操作情報がなければ、グラフ生成部１９３は、処理をステップＳ８６に進める。
【０１５７】
［ステップＳ８３］グラフ生成部１９３は、次の操作情報を抽出し、変数ｏｎに代入する。
［ステップＳ８４］グラフ生成部１９３は、変数ｏｎに設定された操作情報に対応するノードを生成し、変数ｏのノードから変数ｏｎのノードに向けてエッジを接続する。
【０１５８】
［ステップＳ８５］グラフ生成部１９３は、変数ｏｎに設定されている操作情報を、変数ｏに代入する。その後、グラフ生成部１９３は、処理をステップＳ８２に進める。
［ステップＳ８６］グラフ生成部１９３は、すべての操作情報に対するステップＳ８３〜Ｓ８５の処理が終了すると、変数ｏｎの操作情報を、変数ｏｅに代入する。
【０１５９】
［ステップＳ８７］グラフ生成部１９３は、入力情報から変数ｏｓに設定された操作情報に対応するノードに向け、エッジを接続する。
［ステップＳ８８］グラフ生成部１９３は、変数ｏｅに設定された操作情報に対応するノードから出力情報に向け、エッジを接続する。
【０１６０】
このような処理が各正規化手順ログについて実行されることで、正規化手順ログごとの有向グラフが生成される。
図３２は、有向グラフの第１の例を示す図である。図３２には、図２８に示した正規化手順ログ１１１ａに対応する有向グラフ６１が示されている。
【０１６１】
有向グラフ６１は、入力情報６１ａ、出力情報６１ｂ、および複数のノード６１ｃ，６１ｄ，６１ｅ，６１ｆを有している。各ノード６１ｃ，６１ｄ，６１ｅ，６１ｆには、それぞれ正規化手順ログ１１１ａに含まれる操作情報が対応付けられている。各ノード６１ｃ，６１ｄ，６１ｅ，６１ｆは、対応する操作情報で示される操作が行われた順に、エッジで接続されている。
【０１６２】
また入力情報６１ａから最初の操作情報に対応するノード６１ｃに向けて、エッジが接続されている。さらに最後の操作情報に対応するノード６１ｆから出力情報６１ｂに向けて、エッジが接続されている。
【０１６３】
図３３は、有向グラフの第２の例を示す図である。図３３には、図２８に示した正規化手順ログ１１２ａに対応する有向グラフ６２が示されている。有向グラフ６２は、３つの入力情報６２ａ，６２ｂ，６２ｃ、３つの出力情報６２ｄ，６２ｅ，６２ｆ、および複数のノード６２ｇ，６２ｈ，６２ｉ，６２ｊ，６２ｋ，６２ｌ，６２ｍ，６２ｎを有している。正規化手順ログ１１２ａに対応する操作手順で操作が行われたとき、ＣＭＤＢ１２０内の構成情報において３箇所の変更があったため、有向グラフ６２は、入力情報と出力情報とが３つずつとなっている。
【０１６４】
図３４は、有向グラフの第３の例を示す図である。図３４には、図２８に示した正規化手順ログ１１３ａに対応する有向グラフ６３が示されている。有向グラフ６３は、入力情報６３ａ、出力情報６３ｂ、および複数のノード６３ｃ，６３ｄ，６３ｅ，６３ｆを有している。
【０１６５】
図３２〜図３４に示した有向グラフ６１〜６３は、例えばグラフ生成部１９３が管理するＲＡＭ１０２内の記憶領域に一時的に格納される。
＜有向グラフの合成＞
次に有向グラフの合成処理について説明する。
【０１６６】
グラフ生成部１９３は、生成した有向グラフ６１〜６３を、１つの有向グラフに合成する。合成処理によって得られた有向グラフが、図１２に示した手順グラフ１６１となる。
図３５は、有向グラフ合成処理の手順の一例を示すフローチャートである。以下、図３５に示す処理をステップ番号に沿って説明する。
【０１６７】
［ステップＳ９１］グラフ生成部１９３は、手順グラフＥの初期状態を定義する。初期状態の手順グラフＥは、空の状態である。すなわち入力情報、出力情報、およびノードを有していない手順グラフＥが定義される。
【０１６８】
［ステップＳ９２］グラフ生成部１９３は、入力情報合成処理を行う。この処理の詳細は後述する（図３６参照）。
［ステップＳ９３］グラフ生成部１９３は、出力情報合成処理を行う。この処理の詳細は後述する（図３７参照）。
【０１６９】
［ステップＳ９４］グラフ生成部１９３は、ノード合成処理を行う。この処理の詳細は後述する（図３８参照）。
［ステップＳ９５］グラフ生成部１９３は、エッジ合成処理を行う。この処理の詳細は後述する（図３９参照）。
【０１７０】
以下、図３５に示した各ステップの詳細について説明する。
図３６は、入力情報合成処理の手順の一例を示すフローチャートである。以下、図３６に示す処理をステップ番号に沿って説明する。
【０１７１】
［ステップＳ１０１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１０２〜Ｓ１０６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１０２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、入力情報合成処理を終了する。
【０１７２】
［ステップＳ１０２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１０３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１０４〜Ｓ１０６の処理が未処理の入力情報があるか否かを判断する。グラフ生成部１９３は、未処理の入力情報があれば処理をステップＳ１０４に進める。またグラフ生成部１９３は、未処理の入力情報がなければ、処理をステップＳ１０１に進める。
【０１７３】
［ステップＳ１０４］グラフ生成部１９３は、対象グラフＧから、未処理の入力情報を１つ抽出し、変数ｉｎに設定する。
［ステップＳ１０５］グラフ生成部１９３は、手順グラフＥに変数ｉｎに設定された入力情報と同じ入力情報が存在するか否かを判断する。グラフ生成部１９３は、該当する入力情報が存在する場合、処理をステップＳ１０３に進める。またグラフ生成部１９３は、該当する入力情報が存在しない場合、処理をステップＳ１０６に進める。
【０１７４】
［ステップＳ１０６］グラフ生成部１９３は、手順グラフＥに変数ｉｎに設定されている入力情報を追加する。その後、グラフ生成部１９３は処理をステップＳ１０３に進める。
【０１７５】
図３７は、出力情報合成処理の手順の一例を示すフローチャートである。以下、図３７に示す処理をステップ番号に沿って説明する。
［ステップＳ１１１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１１２〜Ｓ１１６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１１２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、出力情報合成処理を終了する。
【０１７６】
［ステップＳ１１２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１１３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１１４〜Ｓ１１６の処理が未処理の出力情報があるか否かを判断する。グラフ生成部１９３は、未処理の出力情報があれば処理をステップＳ１１４に進める。またグラフ生成部１９３は、未処理の出力情報がなければ、処理をステップＳ１１１に進める。
【０１７７】
［ステップＳ１１４］グラフ生成部１９３は、対象グラフＧから、未処理の出力情報を１つ抽出し、変数ｏｕｔに設定する。
［ステップＳ１１５］グラフ生成部１９３は、手順グラフＥに変数ｏｕｔに設定された出力情報と同じ出力情報が存在するか否かを判断する。グラフ生成部１９３は、該当する出力情報が存在する場合、処理をステップＳ１１３に進める。またグラフ生成部１９３は、該当する出力情報が存在しない場合、処理をステップＳ１１６に進める。
【０１７８】
［ステップＳ１１６］グラフ生成部１９３は、手順グラフＥに変数ｏｕｔに設定されている出力情報を追加する。その後、グラフ生成部１９３は処理をステップＳ１１３に進める。
【０１７９】
図３８は、ノード合成処理の手順の一例を示すフローチャートである。以下、図３８に示す処理をステップ番号に沿って説明する。
［ステップＳ１２１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１２２〜Ｓ１２６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１２２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、ノード合成処理を終了する。
【０１８０】
［ステップＳ１２２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１２３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１２４〜Ｓ１２６の処理が未処理のノードがあるか否かを判断する。グラフ生成部１９３は、未処理のノードがあれば処理をステップＳ１２４に進める。またグラフ生成部１９３は、未処理のノードがなければ、処理をステップＳ１２１に進める。
【０１８１】
［ステップＳ１２４］グラフ生成部１９３は、対象グラフから、未処理のノードを１つ抽出し、変数ｎに設定する。
［ステップＳ１２５］グラフ生成部１９３は、手順グラフＥに変数ｎに設定されたノードと同じノードが存在するか否かを判断する。グラフ生成部１９３は、該当するノードが存在する場合、処理をステップＳ１２３に進める。またグラフ生成部１９３は、該当するノードが存在しない場合、処理をステップＳ１２６に進める。
【０１８２】
［ステップＳ１２６］グラフ生成部１９３は、手順グラフＥに変数ｎに設定されているノードを追加する。その後、グラフ生成部１９３は処理をステップＳ１２３に進める。
図３９は、エッジ合成処理の手順の一例を示すフローチャートである。以下、図３９に示す処理をステップ番号に沿って説明する。
【０１８３】
［ステップＳ１３１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１３２〜Ｓ１３６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１３２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、エッジ合成処理を終了する。
【０１８４】
［ステップＳ１３２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１３３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１３４〜Ｓ１３６の処理が未処理のエッジがあるか否かを判断する。グラフ生成部１９３は、未処理のエッジがあれば処理をステップＳ１３４に進める。またグラフ生成部１９３は、未処理のエッジがなければ、処理をステップＳ１３１に進める。
【０１８５】
［ステップＳ１３４］グラフ生成部１９３は、対象グラフから、未処理のエッジを１つ抽出し、変数ｅに設定する。
［ステップＳ１３５］グラフ生成部１９３は、手順グラフＥに変数ｅに設定されたエッジと同じエッジが存在するか否かを判断する。ここで同じエッジとは、接続する要素（入力情報、出力情報またはノード）が同じであり、向きも同じエッジである。グラフ生成部１９３は、該当するエッジが存在する場合、処理をステップＳ１３３に進める。またグラフ生成部１９３は、該当するエッジが存在しない場合、処理をステップＳ１３６に進める。
【０１８６】
［ステップＳ１３６］グラフ生成部１９３は、手順グラフＥに変数ｅに設定されているエッジを追加する。エッジを追加する場合、元のエッジと同じ要素間を、同じ向きで接続する。その後、グラフ生成部１９３は処理をステップＳ１３３に進める。
【０１８７】
以上のようにして有向グラフを合成することができる。例えば、図３２〜図３４に示した有向グラフ６１〜６３を合成することで、図１２に示した手順グラフ１６１が生成される。生成された手順グラフ１６１は、手順グラフＤＢ１６０に格納される。
【０１８８】
＜＜手順候補提供処理＞＞
次に手順候補提供処理について説明する。手順候補提供処理は、入力情報と出力情報とを指定したユーザからの手順要求に応じて実行される。
【０１８９】
図４０は、手順候補提供処理の手順の一例を示すフローチャートである。以下、図４０に示す処理をステップ番号に沿って説明する。
［ステップＳ２０１］候補生成部１９４は、ユーザが使用する端末装置から手順要求を取得する。手順要求には、例えばＩＣＴシステムの更新対象のソフトウェア資源の名称が含まれる。
【０１９０】
［ステップＳ２０２］候補生成部１９４は、手順グラフ１６１から手順候補を抽出する手順候補抽出処理を行う。この処理の詳細は後述する（図４２参照）。
［ステップＳ２０３］候補生成部１９４は、抽出した手順候補を、手順要求を入力したユーザに応じた内容に具体化する、手順候補具体化処理を行う。この処理の詳細は後述する（図４６参照）。
【０１９１】
［ステップＳ２０４］整列部１９５は、所定の基準に沿って手順候補を並べ替える手順候補整列処理を行う。この処理の詳細は後述する（図４８〜図５２参照）。
［ステップＳ２０５］整列部１９５は、整列された手順候補の上位の手順候補を端末装置に送信する手順候補提示処理を行う。この処理の詳細は後述する（図５７参照）。
【０１９２】
このようにして、ユーザに対して手順候補が提供される。以下、図４０に示す各ステップの処理を詳細に説明する。
＜手順要求取得処理＞
まず手順要求取得処理（図４０のステップＳ２０１）について説明する。なお以下の説明では、ユーザ２４が端末装置３４を用いて手順要求を管理サーバ１００に送信するものとする。例えばユーザ２４は端末装置３４の構成管理ソフトウェアが、ＩＣＴシステム４４内のソフトウェア資源の最新版を見知すると、システム構成管理画面に表示し、ソフトウェア資源の更新を促す。
【０１９３】
図４１は、システム構成管理画面の一例を示す図である。システム構成管理画面３００には、ＩＣＴシステム４４に含まれるサーバのサーバ名３０１〜３０３が表示されている。いずれかのサーバ名をユーザ２４が選択すると、サーバ名に対応するソフトウェア資源の構成が表示される。図４１の例では、「サーバ１」の構成が表示されている。
【０１９４】
サーバの構成としては、そのサーバのＩＰアドレス３０４、ステータス３０５、バージョン番号３０６などが表示される。また、そのサーバに対応するソフトウェア資源のバージョンが最新版でない場合、最新版のバージョン３０７が表示される。最新版のバージョン３０７が表示される場合、最新版への更新の意思を確認するＯＫボタン３０８とキャンセルボタン３０９とが表示される。
【０１９５】
ユーザ２４によりＯＫボタン３０８が選択されると、端末装置３４は、管理サーバ１００に対して、該当するソフトウェア資源の最新版への更新をした場合の手順要求を送信する。図４１の例では、Ｗｅｂサーバソフトウェアのバージョンを「2.2.15」から「2.2.16」に更新する場合の手順要求が送信される。このようにして、送信された手順情報を管理サーバ１００が受信し、候補生成部１９４が、手順要求に応じた更新処理を行う場合の手順候補を抽出する。
【０１９６】
＜手順候補抽出処理＞
次に手順候補抽出処理（図４０のステップＳ２０２）について説明する。
図４２は、手順候補抽出処理の手順の一例を示すフローチャートである。以下、図４２に示す処理をステップ番号に沿って説明する。
【０１９７】
［ステップＳ２１１］候補生成部１９４は、変更後情報に対応する出力情報があるか否かを判断する。例えば候補生成部１９４は、手順要求で示された更新処理を行った場合のＩＣＴシステムの構成情報の変更部分を判断し、その変更が行われた場合の変更後情報を生成する。変更後情報は、変更部分の変更後の値と、ＣＭＤＢ１２０内の構成情報における変更部分の位置とをＸＰａｔｈで表したものである。候補生成部１９４は、生成した変更後情報のうち、変数対応表１５１に登録されているマッチパターンに合致する文字列を、そのマッチパターンに対応する変数名に置換する。そして候補生成部１９４は、このような正規化後の変更後情報と同じ出力情報が、手順グラフ１６１に含まれているか否かを判断する。該当する出力情報がある場合、候補生成部１９４は、変更後情報に対応する出力情報があると判断する。
【０１９８】
候補生成部１９４は、変更後情報に対応する出力情報がある場合、処理をステップＳ２１２に進める。また候補生成部１９４は、変更後情報に対応する出力情報がない場合、処理をステップＳ２１３に進める。
【０１９９】
［ステップＳ２１２］候補生成部１９４は、変更前情報に対応する入力情報があるか否かを判断する。例えば候補生成部１９４は、手順要求で示された更新処理を行った場合のＩＣＴシステムの構成情報の変更部分を判断し、その変更が行われた場合の変更前情報を生成する。変更前情報は、変更部分の変更前の値と、ＣＭＤＢ１２０内の構成情報における変更部分の位置とをＸＰａｔｈで表したものである。候補生成部１９４は、生成した変更前情報のうち、変数対応表１５１に登録されているマッチパターンに合致する文字列を、そのマッチパターンに対応する変数名に置換する。そして候補生成部１９４は、このような正規化後の変更前情報と同じ入力情報が、手順グラフ１６１に含まれているか否かを判断する。該当する入力情報がある場合、候補生成部１９４は、変更前情報に対応する入力情報があると判断する。
【０２００】
候補生成部１９４は、変更前情報に対応する入力情報がある場合、処理をステップＳ２１４に進める。また候補生成部１９４は、変更前情報に対応する入力情報がない場合、処理をステップＳ２１３に進める。
【０２０１】
［ステップＳ２１３］候補生成部１９４は、変更後情報に対応する出力情報と、変更前情報に対応する入力情報との少なくともいずれか一方がない場合、手順候補なしと判定し、手順候補抽出処理を終了する。なお手順候補がない場合、図４０に示した手順候補提供処理も終了する。
【０２０２】
［ステップＳ２１４］候補生成部１９４は、変更後情報に対応する出力情報と変更前情報に対応する入力情報との両方が見つかった場合、手順グラフ１６１において、出力情報から手順グラフ１６１を遡り、入力情報に到達する経路を１つ選択する。
【０２０３】
［ステップＳ２１５］候補生成部１９４は、選択した経路中のノードの名前に含まれる変数名に対応するデータが、処理対象のＩＣＴシステムの構成情報内にあるか否かを判断する。候補生成部１９４は、対応するデータがある場合、処理をステップＳ２１６に進める。また候補生成部１９４は、対応するデータがない場合、処理をステップＳ２１７に進める。
【０２０４】
［ステップＳ２１６］候補生成部１９４は、選択した経路上のノードにより手順候補を生成し、手順候補群を示す集合Ｈに追加する。
［ステップＳ２１７］候補生成部１９４は、出力情報から入力情報への未選択の経路があるか否かを判断する。候補生成部１９４は、未選択の経路があれば処理をステップＳ２１４に進める。また候補生成部１９４は、未選択の経路がなければ、手順候補抽出処理を終了する。
【０２０５】
このようにして、手順候補が抽出される。以下、手順候補の抽出処理を、具体例を用いて説明する。
図４３は、手順要求に応じた変更前情報と変更後情報との抽出および正規化例を示す図である。例えば端末装置３４から、Ｗｅｂサーバソフトウェアのバージョンを「2.2.15」から「2.2.16」に更新することを示す手順要求７０が入力されたものとする。例えば手順要求７０には、手順要求を送信した端末装置３４を使用するユーザ２４のユーザＩＤと、そのユーザ２４が管理するＩＣＴシステム４４へ施す構成変更内容とが含まれる。この場合、ＣＭＤＢ１２０内の端末装置３４を使用しているユーザ２４が管理するＩＣＴシステム４４の構成情報に基づいて、指定されたＷｅｂサーバソフトウェアに関する変更前情報７１と変更後情報７２とが生成される。
【０２０６】
生成された変更前情報７１と変更後情報７２とには、ＩＣＴシステム内のサーバのＩＰアドレス「5.6.7.8」が含まれている。このＩＰアドレスは、固有情報であり、変数対応表１５１のマッチパターンに適合する。そこで、固有情報であるＩＰアドレスは、適合するマッチパターンに対応する変数名「$var1」に置換される。置換処理に応じ、元文字列「5.6.7.8」と変数名「$var1」との組からなる変数・データ表７５が生成される。変数・データ表７５は、例えば候補生成部１９４が管理するＲＡＭ１０２内の記憶領域に格納される。
【０２０７】
このようにして正規化された変換前情報７３と変換後情報７４との組と、手順グラフ１６１とが比較され、手順候補が抽出される。
図４４は、手順候補の抽出状況を示す図である。図４３に示す正規化された変換前情報７３と変換後情報７４との組と手順グラフ１６１とを比較すると、変換前情報７３と入力情報１６１ａとが一致する。また変更後情報７４と出力情報１６１ｄとが一致する。そこで出力情報１６１ｄから入力情報１６１ａまでの経路８１〜８５について、問題なく到達可能かどうかが検証される。すなわち、各経路８１〜８５上のノードの名称に設定されている操作情報に含まれる変数名に対応するデータが、ＩＣＴシステム４４の構成情報に含まれるか否かが検証される。すなわち、経路上のノードに示される変数名に対応するデータが構成情報に含まれていない場合、操作対象の資源（ハードウェア資源またはソフトウェア資源）がＩＣＴシステム４４に含まれていないこととなる。この場合、そのノードに対応する操作情報に示される操作は、今の構成のままではＩＣＴシステム４４に対して実行することができない。
【０２０８】
図４４の例では、経路８１〜８４については、経路上の各ノードの名前に設定された制御情報内の変数名に対応するデータが、ＩＣＴシステム４４の構成情報に存在している。しかし経路８５上のノード１６１ｏの名前「telnet $var3」に含まれる変数名「$var3」に対応するデータが存在しない。変数名「$var3」に対応するデータとは、変数名「$var3」に対応するマッチパターンに適合するデータである。
【０２０９】
従って、図４４の例では、経路８１〜８４のそれぞれから、手順候補が生成される。生成される手順候補は、入力情報から経路を通り出力情報に到達するまでのノードをエッジで接続した有向グラフである。
【０２１０】
図４５は、手順候補群の例を示す図である。図４５の例では、４つの手順候補９１〜９４を有する手順候補群が生成されている。手順候補９１は、図４４に示した経路８１に基づいて生成されている。手順候補９２は、図４４に示した経路８２に基づいて生成されている。手順候補９３は、図４４に示した経路８３に基づいて生成されている。手順候補９４は、図４４に示した経路８４に基づいて生成されている。
【０２１１】
各手順候補９１〜９４には、手順候補番号が付与されている。手順候補９１の手順候補番号は「１」である。手順候補９２の手順候補番号は「２」である。手順候補９３の手順候補番号は「３」である。手順候補９４の手順候補番号は「４」である。
【０２１２】
生成された手順候補群は、例えばＲＡＭ１０２、ＨＤＤ１０３などの記憶装置に格納される。
＜手順候補具体化処理＞
次に手順候補具体化処理（図４０のステップＳ２０３）について説明する。
【０２１３】
図４６は、手順候補具体化処理の手順の一例を示すフローチャートである。以下、図４６に示す処理をステップ番号に沿って説明する。
［ステップＳ２２１］候補生成部１９４は、手順候補群を示す集合Ｈが空か否かを判断する。手順候補群を示す集合Ｈが空の場合、候補生成部１９４は手順候補具体化処理を終了する。手順候補群を示す集合Ｈが空でない場合は、候補生成部１９４は処理をステップＳ２２２に進める。
【０２１４】
［ステップＳ２２２］候補生成部１９４は、手順候補群を示す集合Ｈから手順候補を１つ取り出し、変数Ｚとする。
［ステップＳ２２３］候補生成部１９４は、変数Ｌに０を設定する。
【０２１５】
［ステップＳ２２４］候補生成部１９４は、変数Ｌの値が、変数・データ表７５（図４３参照）の行数より小さいか否かを判断する。変数Ｌの方が小さい場合、候補生成部１９４は処理をステップＳ２２５に進める。変数Ｌが変数・データ表７５の行数以上の場合、候補生成部１９４は処理をステップＳ２２１に進める。
【０２１６】
［ステップＳ２２５］候補生成部１９４は、変数・データ表７５からＬ行目のレコードを取得する。そして候補生成部１９４は、取得したレコードの変数名を変数Ｖに代入し、データを変数Ｄに代入する。
【０２１７】
［ステップＳ２２６］候補生成部１９４は、変数Ｚに設定された手順候補内の各ノードの名前の文字列に対し、変数Ｖに設定された変数名から、変数Ｄに設定されたデータへの置換処理を行う。
【０２１８】
［ステップＳ２２７］候補生成部１９４は、変数Ｌの値を１だけカウントアップする。その後、候補生成部１９４は処理をステップＳ２２４に進める。
このようにして、手順候補に含まれていた変数名が、特定のＩＣＴシステムの固有情報に置換される。
【０２１９】
図４７は、具体化後の手順候補の例を示す図である。図４５に示した各手順候補９１〜９４には、「$var1」という変数名が含まれている。図４３に示す変数・データ表７５を参照すると、変数名「$var1」には、データ「5.6.7.8」が対応する。そこで、手順候補９１〜９４の「$var1」の文字列が「5.6.7.8」に置換されている。具体化された手順候補群は、例えばＲＡＭ１０２、ＨＤＤ１０３などの記憶装置に格納される。
【０２２０】
このような具体化処理を施した手順候補であれば、その手順候補に示される操作を、そのまま実行することで、ＩＣＴシステムの所望の構成変更を行うことが可能である。
＜手順候補整列処理＞
次に手順候補整列処理（図４０のステップＳ２０４）について説明する。手順候補の整列処理としては、例えば以下のような基準で整列させることができる。
１．様々なユーザ（不特定のユーザ）からより多く利用されている手順候補を上位にする。
２．手順要求を行ったユーザによる利用実績がより多い手順候補を上位にする。
３．より少ない操作数の手順候補を上位にする。
４．より所要時間が短い手順候補を上位にする。
５．よりユーザの操作環境に合致する手順候補を上位にする。
【０２２１】
なお、整列部１９５は、これらの整列基準のうち、例えば予め設定された整列基準に基づいて手順候補を整列させる。また整列部１９５は、例えば、手順要求を行ったユーザから任意の基準の指定があった場合、指定された基準に従った手順候補を整列させる。
【０２２２】
これらの基準それぞれにおける手順候補整列処理を以下に示す。
まず、様々なユーザからより多く利用されている手順候補を上位にする場合の整列処理について説明する。
【０２２３】
図４８は、手順候補整列処理の第１の例を示すフローチャートである。手順候補整列処理の第１の例は、様々なユーザからより多く利用されている手順候補を上位にする場合の整列処理手順である。以下、図４８に示す処理をステップ番号に沿って説明する。
【０２２４】
［ステップＳ２３１］整列部１９５は、具体化された手順候補群を集合Ｈに設定する。
［ステップＳ２３２］整列部１９５は、手順候補群を含む集合Ｈが空か否かを判断する。手順候補群を含む集合Ｈが空の場合、整列部１９５は処理をステップＳ２３８に進める。手順候補群が空でない場合は、整列部１９５は処理をステップＳ２３３に進める。
【０２２５】
［ステップＳ２３３］整列部１９５は、手順候補群を含む集合Ｈから手順候補を１つ取り出し、取り出した手順候補の手順候補番号を変数Ｚに設定する。このとき整列部１９５は、合計を示す変数ｓの値に０を設定する。
【０２２６】
［ステップＳ２３４］整列部１９５は、変数Ｚに設定された手順候補番号で示される手順候補の先頭のノードから調査し、未処理の次の操作を示すノードがあるか否かを判断する。整列部１９５は、次の操作を示すノードがある場合、そのノードの名前に設定されている操作の操作情報を変数ｐに設定し、処理をステップＳ２３５に進める。また整列部１９５は、次の操作を示すノードがない場合、処理をステップＳ２３７に進める。
【０２２７】
［ステップＳ２３５］整列部１９５は、変数ｐに設定された操作の実績回数を実績記憶部１８０内の操作実績表（図１４参照）から取得する。このとき、整列部１９５は、ユーザ毎の操作実績表１８１，１８２，・・・内の変数ｐに設定された操作に対応する実績回数の値を合計し、変数ｑに設定する。
【０２２８】
［ステップＳ２３６］整列部１９５は、変数ｓの値に変数ｐの値を加算し、加算結果を新たに変数ｓの値とする。その後、整列部１９５は処理をステップＳ２３４に進める。
［ステップＳ２３７］整列部１９５は、手順候補リストに、変数ｓの値をキーとし、変数Ｚに設定された手順候補番号を値としたレコードを追加する。その後、整列部１９５は処理をステップＳ２３２に進める。
【０２２９】
［ステップＳ２３８］整列部１９５は、手順候補リストのレコードを、キーの大きい順に整列させる。
［ステップＳ２３９］整列部１９５は、手順候補リストのレコードの値の集合を、手順候補リスト内でのレコードの順を崩さずに、整列結果を示す集合Ｒに設定する。
【０２３０】
このようにして、様々なユーザからより多く利用された手順候補が上位になるように、手順候補を整列させることができる。
次に、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように、手順候補を整列させる処理について説明する。
【０２３１】
図４９は、手順候補整列処理の第２の例を示すフローチャートである。手順候補整列処理の第２の例は、手順要求を行ったユーザによる利用実績がより多い手順候補を上位にする場合の整列処理手順である。図４９に示した各ステップＳ２４１〜Ｓ２４９の処理のうち、ステップＳ２４１〜Ｓ２４４，Ｓ２４６〜Ｓ２４９の処理は、それぞれ図４８に示したフローチャートのステップＳ２３１〜Ｓ２３４，Ｓ２３６〜Ｓ２３９の処理と同じである。ステップＳ２４５の処理は、以下の通りである。
【０２３２】
［ステップＳ２４５］整列部１９５は、手順要求を行ったユーザの操作実績表のみから、変数ｐに設定された操作の実績回数を取得する。そして整列部１９５は、手順要求を行ったユーザの操作の実績回数を、変数ｑに設定する。
【０２３３】
このようにして、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように、手順候補を整列させることができる。
次に、より少ない操作数の手順候補が上位になるように、手順候補を整列させる処理について説明する。
【０２３４】
図５０は、手順候補整列処理の第３の例を示すフローチャートである。手順候補整列処理の第３の例は、より少ない操作数の手順候補を上位にする場合の整列処理手順である。以下、図５０に示す処理をステップ番号に沿って説明する。
【０２３５】
［ステップＳ２５１］整列部１９５は、具体化された手順候補群を集合Ｈに設定する。
［ステップＳ２５２］整列部１９５は、手順候補群を含む集合Ｈが空か否かを判断する。手順候補群を含む集合Ｈが空の場合、整列部１９５は処理をステップＳ２５６に進める。手順候補群が空でない場合は、整列部１９５は処理をステップＳ２５３に進める。
【０２３６】
［ステップＳ２５３］整列部１９５は、手順候補群を含む集合Ｈから手順候補を１つ取り出し、取り出した手順候補の手順候補番号を変数Ｚに設定する。
［ステップＳ２５４］整列部１９５は、変数Ｚに設定された手順候補番号で示される手順候補の操作の数（手順候補のノードの数）をカウントし、カウント結果を変数ｒに設定する。
【０２３７】
［ステップＳ２５５］整列部１９５は、手順候補リストに、変数ｒの値をキーとし、変数Ｚに設定された手順候補番号を値としたレコードを追加する。その後、整列部１９５は処理をステップＳ２５２に進める。
【０２３８】
［ステップＳ２５６］整列部１９５は、手順候補リストのレコードを、キーの小さい順に整列させる。
［ステップＳ２５７］整列部１９５は、手順候補リストのレコードの値の集合を、手順候補リスト内でのレコードの順を崩さずに、整列結果を示す集合Ｒに設定する。
【０２３９】
このようにして、より少ない操作数の手順候補が上位になるように、手順候補を整列させることができる。
次に、より所要時間が短い手順候補が上位になるように、手順候補を整列させる処理について説明する。
【０２４０】
図５１は、手順候補整列処理の第４の例を示すフローチャートである。手順候補整列処理の第４の例は、より所要時間が短い手順候補を上位にする場合の整列処理手順である。図５１に示した各ステップＳ２６１〜Ｓ２６９の処理のうち、ステップＳ２６１〜Ｓ２６４，Ｓ２６７，Ｓ２６９の処理は、それぞれ図４８に示したフローチャートのステップＳ２３１〜Ｓ２３４，Ｓ２３７，Ｓ２３９の処理と同じである。ステップＳ２６５、ステップＳ２６６、ステップＳ２６８の処理は、以下の通りである。
【０２４１】
［ステップＳ２６５］整列部１９５は、変数ｐに設定された操作の所要時間を所要時間実績表１８０ａ（図１４参照）から取得する。そして整列部１９５は、取得した所要時間を、変数ｅｔに設定する。
【０２４２】
［ステップＳ２６６］整列部１９５は、変数ｓの値に変数ｅｔの値を加算し、換算結果を新たに変数ｓの値とする。その後、整列部１９５は処理をステップＳ２６４に進める。
［ステップＳ２６８］整列部１９５は、手順候補リストのレコードを、キーの小さい順に整列させる。
【０２４３】
このようにして、所要時間が短い手順候補が上位になるように、手順候補を整列させることができる。
次に、よりユーザの操作環境に合致する手順候補が上位になるように、手順候補を整列させる処理について説明する。なおユーザの操作環境に合致する手順候補とは、手順候補内の操作で入力されたコマンドの、ＩＣＴシステムでのカバー率が高い手順候補である。
【０２４４】
図５２は、手順候補整列処理の第５の例を示すフローチャートである。手順候補整列処理の第５の例は、よりユーザの操作環境に合致する手順候補を上位にする場合の整列処理手順である。以下、図５２に示す処理をステップ番号に沿って説明する。
【０２４５】
［ステップＳ２７１］整列部１９５は、具体化された手順候補群を集合Ｈに設定する。
［ステップＳ２７２］整列部１９５は、手順候補群を含む集合Ｈが空か否かを判断する。手順候補群を含む集合Ｈが空の場合、整列部１９５は処理をステップＳ２８０に進める。手順候補群が空でない場合は、整列部１９５は処理をステップＳ２７３に進める。
【０２４６】
［ステップＳ２７３］整列部１９５は、手順候補群を含む集合Ｈから手順候補を１つ取り出し、取り出した手順候補の手順候補番号を変数Ｚに設定する。このとき整列部１９５は、合計を示す変数ｓと操作数を示す変数ｔとの値を共に０に設定する。
【０２４７】
［ステップＳ２７４］整列部１９５は、変数Ｚに設定された手順候補番号で示される手順候補の先頭のノードから調査し、未処理の次の操作を示すノードがあるか否かを判断する。整列部１９５は、次の操作を示すノードがある場合、そのノードの名前に設定されている操作を変数ｐに設定し、処理をステップＳ２７５に進める。また整列部１９５は、次の操作を示すノードがない場合、処理をステップＳ２７８に進める。
【０２４８】
［ステップＳ２７５］整列部１９５は、変数ｔの値を１だけカウントアップする。
［ステップＳ２７６］整列部１９５は、変数ｐに設定された操作で入力されたコマンドが、実行可能コマンド記憶部１７０内の手順要求を行ったユーザに対応するコマンドリスト（図１３参照）にあるか否かを判断する。コマンドがコマンドリストにある場合、整列部１９５は処理をステップＳ２７７に進める。コマンドがコマンドリストにない場合、整列部１９５は処理をステップＳ２７４に進める。
【０２４９】
［ステップＳ２７７］整列部１９５は、変数ｓの値を１だけカウントアップする。その後、整列部１９５は処理をステップＳ２７４に進める。
［ステップＳ２７８］整列部１９５は、変数ｓの値を変数ｔの値で除算し、カバー率を示す変数ｕに設定する。
【０２５０】
［ステップＳ２７９］整列部１９５は、手順候補リストに、変数ｕの値をキーとし、変数Ｚに設定された手順候補番号を値としたレコードを追加する。その後、整列部１９５は処理をステップＳ２７２に進める。
【０２５１】
［ステップＳ２８０］整列部１９５は、手順候補リストのレコードを、キーの大きい順に整列させる。
［ステップＳ２８１］整列部１９５は、手順候補リストのレコードの値の集合を、手順候補リスト内でのレコードの順を崩さずに、整列結果を示す集合Ｒに設定する。
【０２５２】
このようにして、ユーザの操作環境に合致する手順候補が上位になるように、手順候補を整列させることができる。
次に、第２の例と第５の例とに示した手順候補整列処理による整列例を具体的に説明する。なお以下の例では、ユーザＩＤ「ユーザ＃４」のユーザ２４が手順要求を行ったものとする。
【０２５３】
まず第２の例で示した、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように手順候補を整列させた場合について説明する。
図５３は、各手順候補に含まれる操作の操作数の例を示す図である。図５３に示した操作数は、図１４に示した操作実績表１８１に基づいている。操作実績表１８１では、ユーザ２１による操作実績は、「ssh」が２０回、「yum update」が１５回、「apache2ctl start」が１０回、「apache2ctl stop」が１０回である。「telnet」と「apt-get install apache2」とについては、操作実績表１８１に登録されておらず、操作実績が０回であるものとする。このような操作実績に基づいて、各手順候補９１〜９４の操作実績の合計が計算される。その結果、手順候補９１の操作実績の合計が５５回、手順候補９２の操作実績の合計が４０回、手順候補９３の操作実績の合計が３５回、手順候補９４の操作実績の合計が２０回となる。
【０２５４】
そこで、操作実績の合計値が大きい順に、手順候補リスト内の手順候補が並べられる。
図５４は、整列された手順候補リストの一例を示す図である。手順候補リスト９５には、手順候補番号と合計値との欄が設けられている。手順候補番号の欄には、手順候補の手順候補番号が設定される。合計値の欄には、手順候補の操作実績の合計値が設定される。図５４に示すように、手順候補リスト９５は、操作実績の合計値が大きいほど上位に設定されている。これにより、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になる。
【０２５５】
次に第５の例で示した、よりユーザの操作環境に合致する手順候補が上位になるように手順候補を整列させた場合について説明する。
図５５は、各手順候補に含まれる操作に対応するコマンドの有無の例を示す図である。図５５に示したコマンドの有無は、図１３に示したコマンドリスト１７１に基づいている。コマンドリスト１７１には、「ssh」、「yum」、「apache2ctl」、「telnet」のコマンドが登録されている。しかしコマンドリスト１７１には、「apt-get」のコマンドは登録されていないものとする。この場合、手順候補９１，９３については、すべての操作に対応するコマンドが存在するが、手順候補９２，９４についてはそれぞれ１つずつの操作について、対応するコマンドが存在しない。
【０２５６】
このようなコマンドの有無の調査結果に基づいて、各手順候補のコマンドのカバー率が計算され、手順候補リストに登録される。そして、コマンドのカバー率が多い順に手順候補が並べられる。なお、コマンドカバー率は、手順候補に含まれる操作のうち、操作で入力されたコマンドがＩＣＴシステム実行可能な操作の数を、手順候補に含まれる全操作数で除算した値である。
【０２５７】
図５６は、コマンドカバーで整理された手順候補リストの一例を示す図である。図５６に示す手順候補リスト９６は、手順候補番号とコマンドカバー率との欄が設けられている。手順候補番号の欄には、手順候補の手順候補番号が設定される。コマンドカバー率の欄には、手順候補のコマンドカバー率が設定される。そして手順候補リスト９６は、コマンドカバー率が高いほど上位に設定されている。図５６の例では、  手順候補番号「１」と「３」の各手順候補９１，９３は、コマンドカバー率が「１」であり、上位に並べられている。手順候補番号「２」と「４」の各手順候補９２，９４は、コマンドカバー率が「０．７５」であり、下位に並べられている。
【０２５８】
＜手順候補提示処理＞
次に手順候補提示処理（図４０のステップＳ２０５）について説明する。
図５７は、手順候補提示処理の手順の一例を示すフローチャートである。以下、図５７に示す処理をステップ番号に沿って説明する。
【０２５９】
［ステップＳ２９１］整列部１９５は、手順要求を送信した端末装置へ、手順候補リストの内容を送信する。
［ステップＳ２９２］手順実行部１９６は、端末装置からの手順候補選択入力を受け付ける。
【０２６０】
［ステップＳ２９３］手順実行部１９６は、手順候補選択入力を行った端末装置に対応するＩＣＴシステムに対して、選択された手順候補に示される操作手順で、操作情報に示される一連の操作をＩＣＴシステムに対して実行する。
【０２６１】
［ステップＳ２９４］情報取得部１９１は、実行された一連の操作に基づいて、手順候補を選択したユーザに対応する操作実績を更新する。例えば情報取得部１９１は、手順候補を選択したユーザの操作実績表に対して、実行された一連の操作に含まれる操作情報に対応する実績の値をカウントアップする。
【０２６２】
［ステップＳ２９５］情報取得部１９１は、実行された一連の操作の各操作に応じた処理の所要時間に基づいて、所要時間実績を更新する。例えば情報取得部１９１は、操作情報の内容がＩＣＴシステムに入力された、その入力に対する応答が帰ってくる時間を計測し、その操作の所要時間とする。そして情報取得部１９１は、計測した所要時間により、既に所要時間実績表１８０ａに登録されている該当操作の所要時間を更新する。
【０２６３】
このようにして、手順要求に応じて手順候補のリストをユーザに提示することができると共に、選択された手順候補に示された一連の操作をＩＣＴシステムに対して実行させることができる。なお、図５７の例では、管理サーバ１００が一連の操作を実行しているが、ユーザが端末装置を用いて提示された手順候補を参照しながら、ＩＣＴシステムに対して手順候補に示される操作を順に入力することもできる。
【０２６４】
図５８は、端末装置に表示される手順候補リストの第１の例を示す図である。図５８には、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように手順候補を整列させた場合に、端末装置に表示される手順候補表示画面３１０が画示されている。
【０２６５】
手順候補表示画面３１０には、手順候補リスト３１１が表示されている。手順候補リストの各手順候補の横には、選択ボタン３１２が設けられている。ユーザは、複数の選択ボタン３１２の１つを選択することで、手順候補の内容を参照することができる。選択された手順候補の内容は、手順候補表示部３１３に表示される。
【０２６６】
また手順候補表示画面３１０には、ＯＫボタン３１４とキャンセルボタン３１５とが設けられている。ＯＫボタン３１４は、選択した手順候補に示される手順で操作を行う場合に選択するボタンである。ＯＫボタン３１４が押下されると、端末装置から管理サーバ１００へ、ＯＫボタンが押下されたときに選択されていた手順候補の手順候補番号と、その手順候補が選択された旨の情報とが送信される。キャンセルボタン３１５が押下されると、管理サーバ１００への手順候補選択の送信を行わずに、手順候補表示画面３１０が閉じる。
【０２６７】
図５９は、端末装置に表示される手順候補リストの第２の例を示す図である。図５９には、よりユーザの操作環境に合致する手順候補が上位になるように手順候補を整列させた場合に、端末装置に表示される手順候補表示画面３２０が画示されている。
【０２６８】
手順候補表示画面３２０には、図５８の手順候補表示画面３１０と同様に、手順候補リスト３２１、選択ボタン３２２、手順候補表示部３２３、ＯＫボタン３２４、およびキャンセルボタン３２５が設けられている。
【０２６９】
このように手順候補リストと手順候補の内容が端末装置に表示されることで、ユーザは、適切な操作手順を容易に判断することができると共に、表示された操作手順に従って容易にＩＣＴシステムへの操作を行うことができる。その結果、ユーザによるＩＣＴシステムの管理に関する作業効率が向上する。
【０２７０】
しかも、ユーザが端末装置からＩＣＴシステムにアクセスし、ＩＣＴシステムに対する操作を行う場合であっても、手順候補表示画面に表示された手順通りの操作を行えばよいため、操作ミスの発生が抑止される。
【０２７１】
しかも、第２の実施の形態では、管理サーバ１００は、あるユーザが実行した操作手順を手順ログとして保存し、その手順ログを正規化した上で手順グラフを作成している。これにより、各ユーザ２１〜２４がＩＣＴシステム４１〜４４に対して行った操作手順を再利用することができる。すなわち、管理サーバ１００の管理者が、テンプレートの形で手順グラフを作成せずにすむ。そのため管理サーバ１００の管理負担が軽減される。
【０２７２】
さらに第２の実施の形態では、管理サーバ１００や、操作手順を保存するときに、ユーザの複数の手順ログを、構成情報を利用し正規化して重ねあわせた有向グラフを、手順グラフとする。この際、管理サーバ１００は、操作手順内の各操作のうち、異なるＩＣＴシステムに対する操作であっても、同じ要素（物理的なハードウェア資源または仮想マシンのＯＳやアプリケーションなどのソフトウェア資源）に対する同じ操作は、同じ操作とみなす。そして管理サーバ１００は、その手順グラフから、手順要求を行ったユーザの入出力情報を元に操作手順を抽出し、そのユーザの構成情報を埋め込む。これにより、手順ログに示された操作手順のみではなく、複数の手順ログに示された操作を組み合わせた手順候補を生成することが可能である。その結果、手順要求を行ったユーザに対して、より適切な手順候補を提示することが可能となる。
【０２７３】
さらに、管理サーバ１００は、一連の操作が実行された対象の要素（物理的なハードウェア資源または仮想マシンのＯＳやアプリケーションなどのソフトウェア資源）を、ＩＣＴシステムの構成情報から取得し、変更対象を表すマッチパターンを生成している。このマッチパターンを用いることで、手順グラフに含まれる変数を、手順要求を行ったユーザが管理するＩＣＴシステムの固有情報に変換することが可能となる。しかも手順ログを正規化する際にマッチパターンが自動生成されるため、管理サーバがマッチパターンを登録する手間が省け、管理負担が軽減される。
【０２７４】
さらに、第２の実施の形態では、手順要求に応じて抽出された操作手順を手順候補とし、所定の基準に基づいて手順候補を整列させた後、ユーザに提示する。これにより、ユーザは、ユーザの求めるＩＣＴシステムの構成変更を実現可能な複数の手順の中から、適切な手順を容易に判断することができる。
【０２７５】
なお手順候補を整列させる基準は、手順要求を行ったユーザが、任意に選択することができる。これにより、ユーザの目的に沿った手順候補を優先的にユーザに提示することが可能となる。
【０２７６】
以上のように、第２の実施の形態によれば、管理サーバ１００の管理者の管理負担を増加させずに、利用者の操作手順の作成工数と運用工数の多大な削減効果を得ることができる。
【０２７７】
〔その他の実施の形態〕
上記の第２の実施の形態は、ＩＣＴシステムの構成の変更に係る手順候補を提示する例であるが、ＩＣＴシステムに限らず、第２の実施の形態に示す管理サーバ１００は、様々なシステムに対する操作手順の手順候補を生成可能である。例えば、内蔵されたコンピュータによって動作制御される装置に対する設定内容の変更に係る操作手順を、管理サーバと同様の機能を有する装置で取得し、取得した手順ログに基づいて手順候補を提示することも可能である。
【０２７８】
また上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１や管理サーバ１００が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０２７９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２８０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２８１】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０２８２】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０２８３】
１  情報処理装置
１ａ  手順情報記憶部
１ｂ  抽出部
１ｃ  構成情報記憶部
１ｄ  位置情報記憶部
１ｅ  置換部
２  端末装置
３ａ，３ｂ，・・・  手順情報
４ａ，４ｂ，・・・  構成情報
５ａ，５ｂ，・・・  位置情報
【図１】
2012124018.tif 000003
【図２】
2012124018.tif 000004
【図３】
2012124018.tif 000005
【図４】
2012124018.tif 000006
【図５】
2012124018.tif 000007
【図６】
2012124018.tif 000008
【図７】
2012124018.tif 000009
【図８】
2012124018.tif 000010
【図９】
2012124018.tif 000011
【図１０】
2012124018.tif 000012
【図１１】
2012124018.tif 000013
【図１２】
2012124018.tif 000014
【図１３】
2012124018.tif 000015
【図１４】
2012124018.tif 000016
【図１５】
2012124018.tif 000017
【図１６】
2012124018.tif 000018
【図１７】
2012124018.tif 000019
【図１８】
2012124018.tif 000020
【図１９】
2012124018.tif 000021
【図２０】
2012124018.tif 000022
【図２１】
2012124018.tif 000023
【図２２】
2012124018.tif 000024
【図２３】
2012124018.tif 000025
【図２４】
2012124018.tif 000026
【図２５】
2012124018.tif 000027
【図２６】
2012124018.tif 000028
【図２７】
2012124018.tif 000029
【図２８】
2012124018.tif 000030
【図２９】
2012124018.tif 000031
【図３０】
2012124018.tif 000032
【図３１】
2012124018.tif 000033
【図３２】
2012124018.tif 000034
【図３３】
2012124018.tif 000035
【図３４】
2012124018.tif 000036
【図３５】
2012124018.tif 000037
【図３６】
2012124018.tif 000038
【図３７】
2012124018.tif 000039
【図３８】
2012124018.tif 000040
【図３９】
2012124018.tif 000041
【図４０】
2012124018.tif 000042
【図４１】
2012124018.tif 000043
【図４２】
2012124018.tif 000044
【図４３】
2012124018.tif 000045
【図４４】
2012124018.tif 000046
【図４５】
2012124018.tif 000047
【図４６】
2012124018.tif 000048
【図４７】
2012124018.tif 000049
【図４８】
2012124018.tif 000050
【図４９】
2012124018.tif 000051
【図５０】
2012124018.tif 000052
【図５１】
2012124018.tif 000053
【図５２】
2012124018.tif 000054
【図５３】
2012124018.tif 000055
【図５４】
2012124018.tif 000056
【図５５】
2012124018.tif 000057
【図５６】
2012124018.tif 000058
【図５７】
2012124018.tif 000059
【図５８】
2012124018.tif 000060
【図５９】
2012124018.tif 000061
【手続補正書】
【提出日】平成25年9月6日(2013.9.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出する抽出部と、
前記変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する前記変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する置換部と、
を有する情報処理装置。
【請求項２】
前記置換部は、手順情報の集合に含まれる変数名と、該変数名に対応する固有情報の構成情報内での位置を示す位置情報との対応関係を記憶する記憶装置を参照し、抽出された手順情報に含まれる変数名に対応する固有情報の、前記変更対象のシステムの構成が定義された構成情報内での位置を判断し、該位置から該固有情報を取得することを特徴とする請求項１記載の情報処理装置。
【請求項３】
管理対象のシステムに対して入力された構成変更の一連の操作内容を示す手順ログを取得し、該手順ログ内の固有情報を変数名に置き換えて手順情報の集合に含める正規化部をさらに有することを特徴とする請求項１または２のいずれかに記載の情報処理装置。
【請求項４】
前記正規化部は、手順ログ内の予め定義された文字列のパターンに適合する文字列を検出し、該文字列を属性として設定された値を固有情報と判定することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記正規化部は、管理対象のシステムの構成を示す構成情報から、手順ログ内の変数名に置き換えられた固有情報が設定された属性を検出し、該構成情報内での該属性の出現場所を定義した位置情報を生成する、
ことを特徴とする請求項３または４のいずれかに記載の情報処理装置。
【請求項６】
前記正規化部は、生成する位置情報に、構成情報内の構成変更に応じて変更される情報までの相対位置を含める、
ことを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記正規化部は、複数の手順ログそれぞれから、手順ログに示される一連の操作で変更される構成の変更前の情報と変更後の情報との間を、該手順ログ内の操作に対応するノードを介してエッジで接続した有向グラフを生成し、同じ操作を１つにまとめることで複数の有向グラフを合成した手順グラフによって、手順情報の集合を表現する、
ことを特徴とする請求項３乃至６のいずれかに記載の情報処理装置。
【請求項８】
前記抽出部は、前記変更対象のシステムに施す構成変更内容に応じた構成変更操作を行った場合の変更前の構成と変更後の構成とを特定し、前記手順グラフをエッジの向きにそって辿ることで該変更前の構成から該変更後の構成となる経路を抽出し、抽出した経路上のノードに対応する一連の操作を、操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた手順情報として抽出することを特徴とする請求項７記載の情報処理装置。
【請求項９】
前記抽出部により複数の手順情報が抽出されると、所定の条件に従って、抽出された手順情報を整列させる整列部をさらに有する、
ことを特徴とする請求項１乃至８のいずれかに記載の情報処理装置。
【請求項１０】
システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出し、
前記変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する前記変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する、
ことを特徴とする情報処理方法。
【請求項１１】
コンピュータに、
システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出し、
前記変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する前記変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する、
処理を実行させることを特徴とする情報処理プログラム。
【手続補正書】
【提出日】平成26年5月12日(2014.5.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムを管理する情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【０００２】
ＩＣＴ（Information and Communication Technology）システムなどのシステムの運用管理では、システムの構成を変更する場合、例えばシステムの起動・停止、システムの設定値変更、ソフトウェア更新などの作業が行われる。このとき、作業が発生するたびに、作業手順を管理者が一から考えていたのでは、作業効率が悪く、間違いも起こりやすい。
【０００３】
そこで、システムの運用管理による作業を支援する技術として、例えば、利用者が計算機システムのアプリケーションを利用した操作履歴から、利用者の意図に即した操作手順知識をエキスパートシステムに取り込む技術が考えられている。また、過去の実行履歴からテンプレートを検出する技術も考えられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２４３１１８号公報
【非特許文献】
【０００５】
【非特許文献１】Cordeiro, W. Machado et al.,“CHANGEMINER: A solution for discovering IT change templates from past execution traces”,Integrated Network Management, 2009. IM '09. IFIP/IEEE International Symposium,2009, p97-104
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、システムの構成変更のために行われる作業内容にはシステムの構成に依存する部分が含まれており、過去の操作履歴やテンプレートをそのまま別構成のシステムに利用することはできない。そのため、過去の操作履歴の手順やテンプレートに対して、管理対象のシステムの構成に合わせた変更を加えるために、変更部分の特定や、適切な変更内容の検討作業が行われており、システムの構成変更作業の効率化が十分ではなかった。
【０００７】
１つの側面では、本発明は、システムの構成変更作業の効率化を促進させることができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、抽出部と置換部とを有する情報処理装置が提供される。抽出部は、システムの構成変更内容に応じた構成変更の操作手順が示され、該操作手順内で設定する該システムの固有情報が変数名に置き換えられた手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出する。置換部は、変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する変更対象のシステムの固有情報を取得し、抽出された手順情報内の該変数名を、該固有情報に置換する。
【０００９】
別の案では、上記情報処理装置と同様の処理をコンピュータで実行する情報処理方法が提供される。
さらに別の案では、上記情報処理装置と同様の処理をコンピュータに実行させる情報処理プログラムが提供される。
【発明の効果】
【００１０】
システムの構成変更作業の効率化を促進させることができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る装置の機能構成例を示す図である。
【図２】第１の実施の形態の処理手順の一例を示すフローチャートである。
【図３】第１の実施の形態における手順情報生成例を示す図である。
【図４】第２の実施の形態のシステム構成例を示す図である。
【図５】管理サーバのハードウェアの一構成例を示す図である。
【図６】管理サーバの機能の一例を示すブロック図である。
【図７】手順ログＤＢのデータ構造の一例を示す図である。
【図８】ＣＭＤＢのデータ構造の一例を示す図である。
【図９】変更ログＤＢのデータ構造の一例を示す図である。
【図１０】固有情報パターン記憶部のデータ構造の一例を示す図である。
【図１１】変数情報記憶部のデータ構造の一例を示す図である。
【図１２】手順グラフＤＢのデータ構造の一例を示す第１の図である。
【図１３】実行可能コマンド記憶部のデータ構造の一例を示す図である。
【図１４】実績記憶部のデータ構造の一例を示す図である。
【図１５】手順グラフ作成処理の手順の一例を示すフローチャートである。
【図１６】変更ログの生成例を示す図である。
【図１７】固有情報抽出処理の手順の一例を示すフローチャートの前半である。
【図１８】固有情報抽出処理の手順の一例を示すフローチャートの後半である。
【図１９】置換対象表のデータ構造の一例を示す図である。
【図２０】マッチパターン生成処理の手順の一例を示すフローチャートである。
【図２１】子要素解析処理の手順の一例を示すフローチャートである。
【図２２】マッチパターン生成の一例を示す図である。
【図２３】変数名の設定例を示す図である。
【図２４】変換表の一例を示す図である。
【図２５】固有情報置換処理の手順の一例を示すフローチャートである。
【図２６】変更ログの正規化の例を示す図である。
【図２７】手順ログの正規化の例を示す図である。
【図２８】正規化後の手順ログＤＢの例を示す図である。
【図２９】正規化後の変更ログＤＢの例を示す図である。
【図３０】入出力情報の抽出例を示す図である。
【図３１】有向グラフ作成処理の手順の一例を示すフローチャートである。
【図３２】有向グラフの第１の例を示す図である。
【図３３】有向グラフの第２の例を示す図である。
【図３４】有向グラフの第３の例を示す図である。
【図３５】有向グラフ合成処理の手順の一例を示すフローチャートである。
【図３６】入力情報合成処理の手順の一例を示すフローチャートである。
【図３７】出力情報合成処理の手順の一例を示すフローチャートである。
【図３８】ノード合成処理の手順の一例を示すフローチャートである。
【図３９】エッジ合成処理の手順の一例を示すフローチャートである。
【図４０】手順候補提供処理の手順の一例を示すフローチャートである。
【図４１】システム構成管理画面の一例を示す図である。
【図４２】手順候補抽出処理の手順の一例を示すフローチャートである。
【図４３】手順要求に応じた変更前情報と変更後情報との抽出および正規化例を示す図である。
【図４４】手順候補の抽出状況を示す図である。
【図４５】手順候補群の例を示す図である。
【図４６】手順候補具体化処理の手順の一例を示すフローチャートである。
【図４７】具体化後の手順候補の例を示す図である。
【図４８】手順候補整列処理の第１の例を示すフローチャートである。
【図４９】手順候補整列処理の第２の例を示すフローチャートである。
【図５０】手順候補整列処理の第３の例を示すフローチャートである。
【図５１】手順候補整列処理の第４の例を示すフローチャートである。
【図５２】手順候補整列処理の第５の例を示すフローチャートである。
【図５３】各手順候補に含まれる操作の操作数の例を示す図である。
【図５４】整列された手順候補リストの一例を示す図である。
【図５５】各手順候補に含まれる操作に対応するコマンドの有無の例を示す図である。
【図５６】コマンドカバー率で整理された手順候補リストの一例を示す図である。
【図５７】手順候補提示処理の手順の一例を示すフローチャートである。
【図５８】端末装置に表示される手順候補リストの第１の例を示す図である。
【図５９】端末装置に表示される手順候補リストの第２の例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る装置の機能構成例を示す図である。情報処理装置１は、手順情報記憶部１ａ、抽出部１ｂ、構成情報記憶部１ｃ、位置情報記憶部１ｄ、および置換部１ｅを有している。
【００１３】
手順情報記憶部１ａは、システムの構成変更内容に応じた構成変更の操作手順が示された手順情報３ａ，３ｂ，・・・の集合を記憶する。なお手順情報は、操作手順内で設定するシステムの固有情報が変数名に置き換えられている。また手順情報は、例えば有向グラフで表現することができる。また、共通する操作を含む複数の手順情報を合成しておくこともできる。
【００１４】
抽出部１ｂは、手順情報の集合から、変更対象のシステムに施す構成変更内容に応じた操作手順を示す手順情報を抽出する。例えば抽出部１ｂは、端末装置２から、変更対象システムに施す構成変更内容を示す手順要求が入力された場合に、手順要求に応じた手順情報を抽出する。
【００１５】
構成情報記憶部１ｃは、システムの構成が定義された構成情報４ａ，４ｂ，・・・を記憶する。
位置情報記憶部１ｄは、手順情報の集合に含まれる変数名と、該変数名に対応する固有情報の構成情報内での出現場所を示す位置情報５ａ，５ｂ，・・・を記憶する。
【００１６】
置換部１ｅは、変更対象のシステムの構成が定義された構成情報から、抽出部１ｂで抽出された手順情報に含まれる変数名に対応する変更対象のシステムの固有情報を取得する。例えば置換部１ｅは、位置情報５ａ，５ｂ，・・・を参照し、構成情報内の固有情報の位置を判断し、該当する位置に設定されている文字列を固有情報として取得する。そして置換部１ｅは、抽出部１ｂで抽出された手順情報内の変数名を、構成情報から取得した固有情報に置換する。置換部１ｅは、例えば、変数名を固有情報に置換後の手順情報を端末装置２に送信する。
【００１７】
なお、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
このような情報処理装置１により、以下のような手順で処理が実行される。
【００１８】
図２は、第１の実施の形態の処理手順の一例を示すフローチャートである。以下、図２に示す処理をステップ番号に沿って説明する。
［ステップＳ１］抽出部１ｂは、変更対象のシステムに施す構成変更内容を取得する。例えば抽出部１ｂは、端末装置２から受信した手順要求から構成変更内容を取得する。
【００１９】
［ステップＳ２］抽出部１ｂは、手順情報記憶部１ａから、構成変更内容に応じた手順情報を抽出する。例えば抽出部１ｂは、構成変更内容に応じて、変更対象のシステムの構成を変更した場合の変更前の構成と変更後の構成とを特定する。次に抽出部１ｂは、変更前の構成と変更後の構成との組に対応する手順情報を手順情報記憶部１ａから抽出する。
【００２０】
［ステップＳ３］置換部１ｅは、変更対象のシステムの構成が定義された構成情報から、抽出された手順情報に含まれる変数名に対応する変更対象のシステムの固有情報を取得し、手順情報内の該変数名を、取得した固有情報に置換する。例えば置換部１ｅは、位置情報記憶部１ｄを参照し、抽出された手順情報に含まれる変数名に対応する位置情報を取得する。次に置換部１ｅは、構成情報記憶部１ｃ内の変更対象のシステムの構成情報における取得した位置情報に対応する位置から固有情報を取得する。そして置換部１ｅは、抽出部１ｂで抽出された手順情報内の変数名を、構成情報記憶部１ｃから取得した固有情報に置換する。
【００２１】
［ステップＳ４］置換部１ｅは、変数名を固有情報に置換後の手順情報を出力する。例えば置換部１ｅは、手順要求を出力した端末装置２に、手順情報を出力する。
このようにして、変更対象のシステムの固有情報を反映させた手順情報を得ることができる。以下、具体的な動作例を説明する。
【００２２】
図３は、第１の実施の形態における手順情報生成例を示す図である。図３には、識別情報が「システム＃１」のシステムのＷｅｂサーバソフトウェアを、版数「2.2.15」から「2.2.16」に更新する場合の例が示されている。図３の例では、手順要求６が入力されている。手順要求６には、変更対象のシステムの識別情報と、構成の変更内容とが示されている。
【００２３】
手順要求６が入力されると、抽出部１ｂが、システムの構成の変更内容に応じた手順情報を、手順情報記憶部１ａから抽出する。図３の例では、Ｗｅｂサーバソフトウェアの版数を「2.2.15」から「2.2.16」に更新する手順情報３ａが抽出されている。抽出された手順情報３ａは、抽出部１ｂから置換部１ｅに渡される。
【００２４】
置換部１ｅは、抽出された手順情報３ａに含まれる変数名を取得する。図３の例では、変数名「$var1」が取得される。次に、置換部１ｅは、取得した変数名「$var1」に対応する位置情報を、位置情報記憶部１ｄから取得する。図３の例では、「Server/@ipaddress」という位置情報５ａが取得される。この位置情報５ａは、「Server」という要素の下の「ipaddress」という属性の値が、固有情報であることを示している。そこで置換部１ｅは、構成情報記憶部１ｃの変更対象のシステムの構成情報４ａを参照し、構成情報４ａ内の位置情報５ａで示される位置の値「5.6.7.8」を取得する。次に置換部１ｅは、抽出された手順情報３ａ内の変数名「$var1」を固有情報「5.6.7.8」に置換した手順情報７を生成する。
【００２５】
そして置換部１ｅは、生成した手順情報７を出力する。例えば、手順要求６が端末装置２から出されたのであれば、手順情報７は端末装置２に送信される。すると端末装置２で手順情報７の内容が表示される。
【００２６】
手順情報７は、変更対象のシステムに合わせた固有情報が設定されているため、端末装置２を使用するユーザは、手順情報７に示された操作をそのまま端末装置２に入力することで、変更対象のシステムの所望の構成変更を行うことができる。
【００２７】
端末装置２を使用するユーザが未実施の手順であっても、迷わず実施することができ、作業効率が向上する。
なお、抽出部１ｂと置換部１ｅは、情報処理装置１が有するＣＰＵ（Central Processing Unit）が備える機能により実現することができる。また、手順情報記憶部１ａ、構成情報記憶部１ｃ、および位置情報記憶部１ｄは、情報処理装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）などにより実現することができる。
【００２８】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、複数のユーザそれぞれが使用するサーバを統括管理する管理サーバで、ユーザに操作手順を提示し、ユーザのサーバ運用にかかる管理負荷の低減を図るものである。
【００２９】
図４は、第２の実施の形態のシステム構成例を示す図である。管理サーバ１００には、ネットワーク１０を介して複数のＩＣＴシステム４１〜４４が接続されている。またネットワーク１０には、複数のユーザ２１〜２４それぞれが使用する端末装置３１〜３４が接続されている。ＩＣＴシステム４１〜４４は、それぞれ別個のユーザが管理している。またＩＣＴシステム４１〜４４は、それぞれ１以上のサーバで構成されている。
【００３０】
図４の例では、ユーザ２１は、端末装置３１を使用してＩＣＴシステム４１を管理する。またユーザ２２は、端末装置３２を使用してＩＣＴシステム４２を管理する。またユーザ２３は、端末装置３３を使用してＩＣＴシステム４３を管理する。またユーザ２４は、端末装置３４を使用してＩＣＴシステム４４を管理する。
【００３１】
管理サーバ１００は、ユーザ２１〜２４による端末装置３１〜３４を介したＩＣＴシステム４１〜４４に対する操作内容をＩＣＴシステム４１〜４４から取得し、操作履歴として保持する。また管理サーバ１００は、保持している操作履歴に基づいて、作業内容に応じた操作手順を示す手順グラフを生成する。さらに管理サーバ１００は、ユーザ２１〜２４による端末装置３１〜３４からの手順要求に応じて、手順要求を操作するユーザが使用するサーバの構成に適合する操作手順を生成し、手順要求を出力した端末装置に応答する。
【００３２】
ここでユーザ２１の識別情報（ユーザＩＤ）は「ユーザ＃１」、ユーザ２２の識別情報（ユーザＩＤ）は「ユーザ＃２」、ユーザ２３の識別情報（ユーザＩＤ）は「ユーザ＃３」、ユーザ２４の識別情報（ユーザＩＤ）は「ユーザ＃４」であるものとする。またユーザ２１〜２４それぞれが管理するＩＣＴシステム４１〜４４は、そのＩＣＴシステムを管理しているユーザのユーザＩＤによって管理サーバ１００内で識別するものとする。すなわち第２の実施の形態では、ＩＣＴシステムを管理しているユーザのユーザＩＤが、そのＩＣＴシステムの識別情報として用いられる。
【００３３】
図５は、管理サーバのハードウェアの一構成例を示す図である。管理サーバ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２と複数の周辺機器が接続されている。
【００３４】
ＲＡＭ１０２は、管理サーバ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に利用される各種データが格納される。
【００３５】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００３６】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、管理サーバ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００３７】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３８】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３９】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４０】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４１】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお図５には管理サーバ１００のハードウェア構成を示したが、端末装置３１〜３４およびＩＣＴシステム４１〜４４を構成するサーバも、管理サーバ１００と同様のハードウェアで実現することができる。また第１の実施の形態に示した情報処理装置１も、図５に示した管理サーバ１００と同様のハードウェアにより実現することができる。
【００４２】
図６は、管理サーバの機能の一例を示すブロック図である。管理サーバ１００は、情報の記憶機能として、手順ログＤＢ（Database）１１０、構成管理データベース（ＣＭＤＢ：Configuration Management Database）１２０、変更ログＤＢ１３０、固有情報パターン記憶部１４０、変数情報記憶部１５０、手順グラフＤＢ１６０、実行可能コマンド記憶部１７０、および実績記憶部１８０を有する。
【００４３】
手順ログＤＢ１１０は、複数のＩＣＴシステム４１〜４４それぞれに対して行われた操作履歴のうち、サーバの構成を変更させる操作の履歴を示す手順ログを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、手順ログＤＢ１１０として使用される。なお手順ログは、第１の実施の形態に示す手順情報の一例である。
【００４４】
ＣＭＤＢ１２０は、ＩＣＴシステム４１〜４４それぞれの構成情報を記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、ＣＭＤＢ１２０として使用される。
【００４５】
変更ログＤＢ１３０は、ユーザによる一連の操作によってＩＣＴシステムの構成が変更された場合の変更内容を記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、変更ログＤＢ１３０として使用される。
【００４６】
固有情報パターン記憶部１４０は、手順ログに含まれる操作内容のうち、ＩＣＴシステムまたはＩＣＴシステムに含まれるサーバに固有の情報の検出基準を示す固有情報パターンを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、固有情報パターン記憶部１４０として使用される。
【００４７】
変数情報記憶部１５０は、固有情報の種別を示す変数名と、ＩＣＴシステムの構成情報内にその変数名に対応する固有情報が出現する位置を示すマッチパターンとの対応関係を記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、変数情報記憶部１５０として使用される。
【００４８】
手順グラフＤＢ１６０は、ユーザによって行われた一連の操作をグラフで表した手順グラフを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、手順グラフＤＢ１６０として使用される。なお手順グラフは、手順ログに示された情報を含んでおり、第１の実施の形態に示した手順情報の一例である。
【００４９】
実行可能コマンド記憶部１７０は、ＩＣＴシステム４１〜４４それぞれにおいて実行可能なコマンドのリストを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、実行可能コマンド記憶部１７０として使用される。
【００５０】
実績記憶部１８０は、各コマンドの実行実績が記憶される。コマンドの実行実績としては、例えばそのコマンドが構成変更の操作に用いられた回数や、コマンドの実行に要した時間である。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、実績記憶部１８０として使用される。
【００５１】
管理サーバ１００には、管理機能として、情報取得部１９１、正規化部１９２、グラフ生成部１９３、候補生成部１９４、整列部１９５、および手順実行部１９６を有する。
情報取得部１９１は、ＩＣＴシステム４１〜４４の構成を管理する。例えば情報取得部１９１は、ＩＣＴシステム４１〜４４それぞれから構成情報を取得し、ＣＭＤＢ１２０に格納する。また情報取得部１９１は、ＩＣＴシステム４１〜４４それぞれの構成の変更操作および変更操作に応じた処理実行状況を示す情報を取得する。例えばＩＣＴシステム４１〜４４は、端末装置３１〜３４から入力されたコマンドの情報、およびコマンドの実行に要した時間（所要時間）を、管理サーバ１００に送信する。情報取得部１９１は、ＩＣＴシステム４１〜４４から送信されたコマンドの情報に基づいて、手順ログを生成し、手順ログＤＢ１１０に格納する。また情報取得部１９１は、ＩＣＴシステム４１〜４４から送信されたコマンドの情報と、コマンドの所要時間とに基づいて、実績記憶部１８０内の実績情報を更新する。また情報取得部１９１は、一連の操作に関する手順ログＤＢ１１０や、その操作による構成の変更内容に基づいて変更ログを生成し、変更ログＤＢ１３０に格納する。
【００５２】
正規化部１９２は、生成した変更ログの正規化を行う。変更ログの正規化とは、変更ログ内に含まれる、各ＩＣＴシステムの固有情報を、その固有情報の種別に応じた変数名に置き換える処理である。手順ログや変更ログ内に含まれるＩＰアドレスなどの固有情報は、ユーザごとに様々である。そこで、正規化部１９２は、再利用可能な表現に変換する。固有情報を再利用可能な表現に直すため、正規化部１９２は、固有情報を抽出するステップと、再利用可能な表現に変換するステップとの２ステップの処理を実行する。そして正規化部１９２は、正規化された変更ログをグラフ生成部１９３に渡す。また正規化部１９２は、正規化された固有情報に対応する変数名に関し、変数名とマッチパターンとの対応関係を変数情報記憶部１５０に格納する。
【００５３】
グラフ生成部１９３は、正規化された変更ログに基づいて手順グラフを作成する。グラフ生成部１９３は、作成した手順グラフを手順グラフＤＢ１６０に格納する。
候補生成部１９４は、端末装置３１〜３４のいずれかから送信された手順要求に応じて、手順グラフＤＢ１６０から手順候補を抽出する。候補生成部１９４は、抽出した手順候補を、整列部１９５に送信する。なお候補生成部１９４は、第１の実施の形態に示した抽出部１ｂと置換部１ｅとの機能を有している。
【００５４】
整列部１９５は、抽出された手順候補を、所定の基準で並べ替える。整列部１９５は、手順候補を並べ替える際には、例えば実行可能コマンド記憶部１７０、実績記憶部１８０などを参照する。整列部１９５は、整列させた手順候補を、手順要求を送信した端末装置に対して送信する。
【００５５】
手順実行部１９６は、端末装置３１〜３４のいずれかから、実行する操作手順が入力されると、入力された操作手順に従って、操作手順を入力した端末装置を使用するユーザに対応するサーバに対して、操作手順通りのコマンドを実行する。手順実行部１９６は、操作手順の実行結果に基づいて、実績記憶部１８０の情報を更新する。
【００５６】
なお、図６に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
次に、管理サーバ１００で記憶されている各種情報のデータ構造について説明する。まず手順ログＤＢ１１０のデータ構造について説明する。
【００５７】
図７は、手順ログＤＢのデータ構造の一例を示す図である。手順ログＤＢ１１０には、ユーザごとの手順ログ１１１〜１１３が格納されている。手順ログ１１１〜１１３には、例えばユーザの識別情報（ユーザＩＤ）に対応付けて、そのユーザが端末装置を用いてサーバに対して入力した一連のコマンドが格納されている。
【００５８】
図７の例では、各手順ログ１１１〜１１３には、Ｗｅｂサーバソフトウェアのアップデートを行う際に入力された一連の操作情報が示されている。操作情報には、例えば操作手順内で入力されたコマンドと、そのコマンド入力時の引数（パラメータ）が含まれる。手順ログ１１１〜１１３は、入力された操作情報の少なくとも一部が異なる。
【００５９】
例えばユーザＩＤ「ユーザ＃１」のユーザ２１の手順ログ１１１には、「telnet 192.168.1.10」、「apache2ctl stop」、「yum update apache2」、「apache2ctl start」というコマンドが順に入力されたことが示されている。一方、ユーザＩＤ「ユーザ＃２」のユーザ２２の手順ログ１１２には、手順ログ１１１と同様のコマンドの後に、ロードバランサの設定を行い、使用しなくなったＷｅｂサーバの機能を停止する操作手順が示されている。またユーザＩＤ「ユーザ＃３」のユーザ２３の手順ログ１１３には、手順ログ１１１の「telnet」コマンドに代えて、「ssh」コマンドによってサーバにリモートログインし、Ｗｅｂサーバソフトウェアのアップデートを行った操作手順が示されている。
【００６０】
次にＣＭＤＢ１２０のデータ構造について説明する。
図８は、ＣＭＤＢのデータ構造の一例を示す図である。ＣＭＤＢ１２０には、ＩＣＴシステムごとの構成情報１２１，１２２，・・・が格納されている。
【００６１】
ＣＭＤＢ１２０の構成情報１２１は、複数の構成アイテム（ＣＩ：Configuration Item）１２１−１，１２１−２，・・・を有する。ここで、１つのＣＩは１つのアイテム（item）に対応する。アイテムは複数のレコード（record）を持つ。レコードの下に、サーバやネットワークなどの構成情報を任意の形式で持つ。
【００６２】
例えばＣＩ１２１−１は、アイテムのＩＤやタイプが設定された要素１２１ａの下に、レコードを示す要素１２１ｂ，１２１ｅ，・・・が設定されている。レコードを示す要素１２１ｂの下には、階層構造で複数の要素１２１ｃ，１２１ｄが設定されている。各要素１２１ｃ，１２１ｄ内の先頭の１行は、要素名である。例えば要素１２１ｃの要素名は、「Server」である。また各要素内の要素名の下の各行の文字列が属性を表している。例えば要素１２１ｃ内の「ipaddress=“192.168.1.10”」が１つの属性であり、このうち“192.168.1.10”がその属性の値である。
【００６３】
なお、ＣＭＤＢ１２０内の構成情報が更新された場合、例えば更新時に行われた操作の操作手順に応じた手順グラフを作成するまでは、更新前の情報もＣＭＤＢ１２０内またはＲＡＭ１０２内に保持される。
【００６４】
図８の構成情報１２１は、ユーザ＃１のユーザ２１が管理するＩＣＴシステム４１の構成情報の例である。ＣＭＤＢ１２０内のデータの位置は、例えばＸＰａｔｈ（XML Path Language）で指定できる。ここでＸＰａｔｈは、Ｗ３Ｃ（World Wide Web Consortium）で策定された、ＸＭＬ（Extensible Markup Language）に準拠した文書の特定の部分を指定する言語構文である。
【００６５】
次に変更ログＤＢ１３０のデータ構造について説明する。
図９は、変更ログＤＢのデータ構造の一例を示す図である。変更ログＤＢ１３０には、変更ログ１３１〜１３３が格納されている。変更ログ１３１〜１３３には、ユーザＩＤに対応付けて、ＣＭＤＢ１２０の変更箇所と変更内容を示す情報が設定されている。図９の例では、変更箇所がＸＰａｔｈによって示されている。また変更内容が、変更前の情報から変更後の情報へ矢印で指し示すことで表されている。
【００６６】
例えば変更ログ１３１では、構成情報１２１における「%Server/#*/Server[@ipaddress=“192.168.1.10” and …]/Software[@name=“Apache”  and …]/@version=“2.2.15”」で示される位置の“2.2.15”が、“2.2.16”に変更されたことが示されている。
【００６７】
このような変更ログを保持しておくことで、ＣＭＤＢ１２０内の構成情報が変更された場合の変更部分の変更前情報と変更後情報とを、変更ログに基づいて再現することができる。
【００６８】
次に固有情報パターン記憶部１４０のデータ構造について説明する。
図１０は、固有情報パターン記憶部のデータ構造の一例を示す図である。固有情報パターン記憶部１４０には、固有情報表１４１が格納されている。固有情報表１４１には、固有情報とパターンとの欄が設けられている。固有情報の欄には、固有情報の種別名が設定される。パターンの欄には、固有情報の欄に示される種別の情報が変更ログ内で記述されるときのパターンが設定される。
【００６９】
このように固有情報の抽出用に、予め、固有情報とみなすデータのパターンが固有情報表１４１に登録される。固有情報としては、ＩＰアドレス、ユーザ情報、マシン名、などがある。図１０の例では、ＩＰアドレスを固有情報とし、ＣＭＤＢ１２０内のデータにマッチするＸＰａｔｈがパターンとして登録されている。例えば種別がＩＰアドレスである固有情報のパターンとして、「%*[@ipaddress]」が設定されている。これは、変更ログ内の「%*[@ipaddress]」に合致する部分（属性「@ipaddress」）に設定されている値が、固有情報「ＩＰアドレス」であることを示している。
【００７０】
次に変数情報記憶部１５０のデータ構造について説明する。
図１１は、変数情報記憶部のデータ構造の一例を示す図である。変数情報記憶部１５０には、変数対応表１５１が格納されている。変数対応表１５１には、変数名とマッチパターンとの欄が設けられている。
【００７１】
変数名の欄には、正規化処理によって生成された変数名が設定される。マッチパターンの欄には、変数名で示される変数に対応する固有情報が出現する位置を示すマッチパターンが設定される。例えば変数名「$var1」に対応する固有情報が、「%Server/#observed/Server[./Software/@version=“2.2.15”]/@ipaddress」で示される位置のパラメータの値として設定されることが示されている。
【００７２】
なお変数名「$var2」に対応付けられたマッチパターンは、そのマッチパターン内に別の変数名「$var3」を含んでいる。これは、マッチパターン内に固有情報が含まれていたため、マッチパターン生成時に、固有情報から変数名への置換が行われたことを表す。
【００７３】
次に、手順グラフＤＢ１６０のデータ構造について説明する。
図１２は、手順グラフＤＢのデータ構造の一例を示す第１の図である。手順グラフＤＢ１６０には、手順グラフ１６１が格納されている。図１２に示す手順グラフ１６１は、３つの入力情報１６１ａ，１６１ｂ，１６１ｃのいずれかから、３つの出力情報１６１ｄ，１６１ｅ，１６１ｆのいずれかに構成を遷移させる操作手順が、有向グラフによって示されている。操作手順は、複数のノード１６１ｇ，１６１ｈ，１６１ｉ，１６１ｊ，１６１ｋ，１６１ｌ，１６１ｍ，１６１ｎ，１６１ｏ，１６１ｐをエッジで接続することによって表現されている。各ノードは、操作手順内の行われた各操作を示す操作情報に対応する。ノードを接続するエッジは、操作が行われた順番を矢印で示している。エッジは、ある操作に対応するノードから、その操作の次に行われた操作に対応するノードを指している。
【００７４】
次に実行可能コマンド記憶部１７０のデータ構造について説明する。
図１３は、実行可能コマンド記憶部のデータ構造の一例を示す図である。実行可能コマンド記憶部１７０には、ＩＣＴシステムごとのコマンドリスト１７１，１７２，・・・が格納されている。コマンドリスト１７１，１７２，・・・には、ＩＣＴシステムを管理するユーザのユーザＩＤに対応付けて、管理対象のＩＣＴシステムで実行可能なコマンドのリストが登録されている。ＩＣＴシステムで実行可能なコマンドは、例えばＩＣＴシステムに対してインストールされたプログラムを呼び出すコマンドである。
【００７５】
次に実績記憶部１８０のデータ構造について説明する。
図１４は、実績記憶部のデータ構造の一例を示す図である。実績記憶部１８０には、ユーザごとの操作実績表１８１，１８２，・・・と所要時間実績表１８０ａとが格納されている。
【００７６】
操作実績表１８１，１８２，・・・それぞれには、ユーザＩＤが設定されている。また操作実績表１８１，１８２，・・・には、操作と実績との欄が設けられている。操作の欄には、ユーザＩＤで示されるユーザが管理するＩＣＴシステムにおいて実行されたコマンドが設定される。実績の欄には、対応するコマンドが実行された回数が設定される。
【００７７】
所要時間実績表１８０ａには、操作と所要時間との欄が設けられている。操作の欄には、いずれかのＩＣＴシステムにおいて実行されたコマンドが設定される。所要時間の欄には、対応するコマンドを実行した際の実行の所要時間の平均値が、秒単位で設定される。なお、各コマンドの所要時間は、例えばＩＣＴシステムでコマンドが実行されるごとに更新される。また各コマンドの所要時間は、例えば、予め計測した値を固定的に設定しておいてもよい。
【００７８】
以上のような構成の管理サーバ１００において、手順グラフの作成処理および、作成された手順グラフに基づく手順候補提供処理が行われる。
＜＜手順グラフ作成処理＞＞
まず手順グラフ作成処理について詳細に説明する。
【００７９】
図１５は、手順グラフ作成処理の手順の一例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］情報取得部１９１は、ＩＣＴシステムによる操作の実行状況を取得し、手順ログＤＢ１１０、ＣＭＤＢ１２０、および実績記憶部１８０内の情報を更新する。また情報取得部１９１は、ＣＭＤＢ１２０に格納された構成情報の変更に伴い、変更ログを生成し、変更ログＤＢ１３０に格納する。
【００８０】
［ステップＳ１２］正規化部１９２は、変更ログＤＢ１３０に格納された変更ログに基づいて、ＩＣＴシステムまたはＩＣＴシステムに含まれるサーバの固有情報の抽出処理を実行する。この処理の詳細は後述する（図１７、図１８参照）。
【００８１】
［ステップＳ１３］正規化部１９２は、固有情報の種別ごとに、その種別の固有情報が出現する位置を示すマッチパターンを生成する。この処理の詳細は後述する（図２０参照）。
【００８２】
［ステップＳ１４］正規化部１９２は、マッチパターンに適合する位置の固有情報の正規化を行う。正規化処理では、例えば正規化部１９２は、固有情報を、その固有情報の種別に対応する変数名に置き換える。この処理の詳細は後述する（図２５参照）。
【００８３】
［ステップＳ１５］グラフ生成部１９３は、入出力情報を抽出する。例えばグラフ生成部１９３は、手順ログで示される操作手順によりＩＣＴシステムで処理が実行されたことで構成情報が変更されたときの変更部分の変更前情報を入力情報とし、変更部分の変更後情報を出力情報とする。
【００８４】
［ステップＳ１６］グラフ生成部１９３は、入力情報から出力情報へ構成情報を遷移させる有向グラフを作成する。この処理の詳細は後述する（図３１参照）。
［ステップＳ１７］グラフ生成部１９３は、有向グラフを合成し、手順グラフ１６１を生成する。グラフ生成部１９３は、生成した手順グラフ１６１を手順グラフＤＢ１６０に格納する。この処理の詳細は後述する（図３５〜３９参照）。
【００８５】
このような手順で、手順グラフ１６１が作成される。以下、図１５に示す各処理を詳細に説明する。
＜操作の実行状況に応じた情報の更新処理＞
まず操作の実行状況に応じた情報の更新処理（図１５のステップＳ１１）について説明する。
【００８６】
例えば情報取得部１９１は、ＩＣＴシステムから、ユーザが使用する端末装置から入力された一連の操作を取得する。一連の操作は、例えばＩＣＴシステムに入力されたコマンドとそのコマンドの引数とで表される。また情報取得部１９１は、例えば所定の期間内に入力された複数の操作を、一連の操作と認識する。情報取得部１９１は、取得した一連の操作を含む手順ログを生成する。そして情報取得部１９１は、生成した手順ログを、操作されたＩＣＴシステムを管理するユーザのユーザＩＤに対応付けて、手順ログＤＢ１１０に格納する。
【００８７】
なお情報取得部１９１は、例えばＩＣＴシステムの識別情報と、そのＩＣＴシステムを管理しているユーザのユーザＩＤとの対応関係を、予めメモリなどの記憶装置に記憶させている。そして情報取得部１９１は、一連の操作の取得元のＩＣＴシステムに対応するユーザＩＤを、その一連の操作に基づいて生成した手順ログに付与する。
【００８８】
また情報取得部１９１は、取得した一連の操作に応じて、実績記憶部１８０内の実績情報を更新する。例えば情報取得部１９１は、一連の操作を行ったユーザのユーザＩＤに対応する操作実績表に対して、一連の操作に含まれる各コマンドの実績の値を、操作により実行されたコマンドの数だけカウントアップする。
【００８９】
また情報取得部１９１は、一連の操作に含まれるコマンドの所要時間を、ＩＣＴシステムから取得する。そして情報取得部１９１は、実行されたコマンドの所要時間に基づいて、所要時間実績表１８０ａにおけるそのコマンドの所要時間を更新する。
【００９０】
また情報取得部１９１は、ＩＣＴシステムに一連の操作が行われたことにより、ＩＣＴシステムの構成が変更された場合、変更後の構成情報をＩＣＴシステムから取得し、ＣＭＤＢ１２０に格納する。
【００９１】
ここで、ＩＣＴシステムに対して構成変更を伴う一連の操作が行われ、そのＩＣＴシステムの構成が変更されると、ＣＭＤＢ１２０内の構成情報も変更される。構成情報の内容が変更されると、情報取得部１９１により変更内容を示す変更ログが生成される。
【００９２】
図１６は、変更ログの生成例を示す図である。図１６には、ユーザＩＤ「ユーザ＃１」のユーザ２１により、手順ログ１１１で示された操作が行われた場合の変更ログ１３１の例が示されている。
【００９３】
手順ログ１１１で示された操作が行われた場合、ＩＣＴシステム４１では、Ｗｅｂサーバソフトウェアのアップデート処理が行われる。例えば、Ｗｅｂサーバソフトウェアのバージョンが、“２．２．１５”から“２．２．１６”に更新されたものとする。この場合、情報取得部１９１は、ＣＭＤＢ１２０内のユーザ２１に対応する更新前の構成情報１２１から、Ｗｅｂサーバソフトウェアのバージョンを示す位置のＸＰａｔｈとバージョン番号とを含む変更前情報５１を生成する。また情報取得部１９１は、ＣＭＤＢ１２０内のユーザ２１に対応する構成情報１２１を更新し、更新後の構成情報１２１から、Ｗｅｂサーバソフトウェアのバージョンを示す位置のＸＰａｔｈとバージョン番号とを含む変更後情報５２を生成する。
【００９４】
そして、情報取得部１９１は、変更前情報５１に対する変更後情報５２の変更内容を示す変更ログ１３１を生成する。変更ログ１３１では、変更前情報５１における変更された部分について、「変更前の値→変更後の値」という記載に置き換えることで、変更内容が表されている。例えば図１６の例では、変更ログ１３１では、バージョン番号が記載された部分が「“2.2.15”→“2.2.16”」とされている。これにより、バーションが、“２．２．１５”から“２．２．１６”に更新されたことが示されている。
【００９５】
このようにして生成された変更ログ１３１は、情報取得部１９１により変更ログＤＢ１３０に格納される。
＜固有情報の抽出処理＞
次に固有情報の抽出処理（図１５のステップＳ１２）について説明する。
【００９６】
図１７は、固有情報抽出処理の手順の一例を示すフローチャートの前半である。固有情報抽出処理の前半では、変更ログから固有情報が抽出される。以下、図１７に示す処理をステップ番号に沿って説明する。
【００９７】
［ステップＳ２１］正規化部１９２は、変更ログＤＢ１３０内に未処理の変更ログがあるか否かを判断する。未処理の変更ログがあれば、正規化部１９２は処理をステップＳ２２に進める。すべての変更ログに対してステップＳ２２〜Ｓ２４の処理が完了していれば、正規化部１９２は、処理をステップＳ３１（図１８参照）に進める。
【００９８】
［ステップＳ２２］正規化部１９２は、変更ログＤＢ１３０内の未処理の変更ログを１つ選択する。
［ステップＳ２３］正規化部１９２は、選択した変更ログが、固有情報パターン記憶部１４０内の固有情報表１４１に設定されているパターンに適合する情報が含まれるか否かを判断する。例えば正規化部１９２は、変更ログ内のデータの位置が、固有情報表１４１にあるパターンに合致すれば、そのデータを固有情報とみなし、変換の対象とする。
【００９９】
図９に示した変更ログ１３１の場合、「%Server/#*/Server[@ipaddress=“192.168.1.10” and …]/Software[@name=“Apache”  and …]/  @version=“2.2.15”  →  “2.2.16”」というＸＰａｔｈがある。正規化部１９２は、この変更ログ１３１のうち、固有情報表１４１のパターン「%*[@ipaddress]」が合致する部分の値“192.168.1.10”を、固有情報と判断する。
【０１００】
適合する情報があれば、正規化部１９２は処理をステップＳ２４に進める。適合する情報がなければ、正規化部１９２は処理をステップＳ２１に進める。
［ステップＳ２４］正規化部１９２は、選択した変更ログ内の適合する場所の文字列を抽出し、置換対象表に追加する。例えば正規化部１９２は、文字列の抽出元の変更ログに対応するユーザＩＤと文字列との組を、置換対象表に追加する。その後、正規化部１９２は処理をステップＳ２１に進める。
【０１０１】
このようにして、変更ログから固有情報が抽出される。例えば図９に示した変更ログ１３１〜１３３には、各ＩＣＴシステムに含まれるサーバのＩＰアドレスが、固有情報として含まれている。そこで、変更ログ１３１〜１３３から固有情報としてＩＰアドレスが抽出される。
【０１０２】
図１８は、固有情報抽出処理の手順の一例を示すフローチャートの後半である。固有情報抽出処理の後半では、手順ログから固有情報が抽出される。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１０３】
［ステップＳ３１］正規化部１９２は、手順ログＤＢ１１０内の手順ログのうち、ステップＳ３２〜Ｓ４１の処理が未処理の手順ログがあるか否かを判断する。未処理の手順ログがあれば、正規化部１９２は処理をステップＳ３２に進める。未処理の手順ログがなければ、正規化部１９２は固有情報抽出処理を終了する。
【０１０４】
［ステップＳ３２］正規化部１９２は、未処理の手順ログのうちの１つを選択する。
［ステップＳ３３］正規化部１９２は、ステップＳ３２で選択した手順ログ内に、ステップＳ３４〜Ｓ４１の処理が未処理の操作情報があるか否かを判断する。正規化部１９２は、未処理の操作情報があれば処理をステップＳ３４に進める。正規化部１９２は、未処理の操作情報がなければ、処理をステップＳ３１に進める。
【０１０５】
［ステップＳ３４］正規化部１９２は、ステップＳ３２で選択した手順ログから、未処理の操作情報を１つ選択する。
［ステップＳ３５］正規化部１９２は、選択した操作情報から文字列群を抽出する。例えば正規化部１９２は、スペースを区切りとして、操作情報を複数の文字列に分割する。そして正規化部１９２は、分割して得られた文字列を抽出する。
【０１０６】
［ステップＳ３６］正規化部１９２は、ステップＳ３５で抽出した文字列のうち、ステップＳ３７〜Ｓ４１の処理が未処理の文字列があるか否かを判断する。正規化部１９２は、未処理の文字列があれば処理をステップＳ３７に進める。また正規化部１９２は、未処理の文字列がなければ処理をステップＳ３３に進める。
【０１０７】
［ステップＳ３７］正規化部１９２は、ステップＳ３５で抽出した文字列のうち、未処理の文字列を１つ選択し、変数Ｘに設定する。
［ステップＳ３８］正規化部１９２は、ステップＳ３２で選択した手順ログに対応するユーザと同じユーザのＣＭＤＢ１２０内の構成情報を参照し、その構成情報に変数Ｘに設定された文字列があるか否かを判断する。正規化部１９２は、変数Ｘに設定された文字列があれば、処理をステップＳ３９に進める。また正規化部１９２は、変数Ｘに設定された文字列がなければ、処理をステップＳ３６に進める。
【０１０８】
［ステップＳ３９］正規化部１９２は、構成情報における、変数Ｘの文字列と一致する文字列が出現した場所と、固有情報表１４１のパターンとを比較する。
［ステップＳ４０］正規化部１９２は、比較の結果、変数Ｘの文字列の構成情報内での出現場所が、固有情報表のパターンに適合するか否かを判断する。正規化部１９２は、パターンに適合する場合、処理をステップＳ４１に進める。また正規化部１９２は、パターンに適合しない場合、処理をステップＳ３６に進める。
【０１０９】
［ステップＳ４１］正規化部１９２は、変数Ｘに設定した文字列を、置換対象表に追加する。例えば正規化部１９２は、文字列の抽出元の手順ログに対応するユーザＩＤと文字列との組を、置換対象表に追加する。その後、正規化部１９２は処理をステップＳ３６に進める。
【０１１０】
このように、手順ログ内の操作情報ごとに、スペース区切りなどで文字列が抽出され、ＣＭＤＢ１２０内の構成情報が探索される。そして構成情報内の一致した文字列の場所が固有情報表のパターンに示されるＸＰａｔｈに適合するか判断される。パターンに一致した場合、その文字列が固有情報と判断される。
【０１１１】
例えば、図７に示した手順ログ１１１を見ると、最初の操作情報内に「192.168.1.10」という文字列がある。ユーザＩＤ「ユーザ＃１」のユーザ２１に対応するＣＭＤＢ１２０内の構成情報１２１を調べると、「Server ipaddress=“192.168.1.10”」というＣＩに合致する。このＣＩの「ipaddress」は、固有情報表１４１のＸＰａｔｈ「%*[@ipaddress]」に合致する。そこで、「192.168.1.10」が固有情報であると判断される。
【０１１２】
このようにして、手順ログや変更ログから抽出された固有情報の文字列が、置換対象表に登録される。以下、置換対象表に登録された文字列を、元文字列と呼ぶ。
図１９は、置換対象表のデータ構造の一例を示す図である。図１９には、図７に示す手順ログ１１１〜１１３のそれぞれに対応する操作手順が行われた場合に生成される置換対象表５３ａ，５３ｂ，５３ｃが示されている。置換対象表５３ａ，５３ｂ，５３ｃには、ユーザと文字列との欄が設けられている。ユーザの欄には、固有情報の抽出元の手順ログまたは変更ログに対応するユーザのユーザＩＤが設定される。文字列の欄には、固有情報として抽出された文字列が設定される。このような置換対象表５３ａ，５３ｂ，５３ｃは、例えば正規化部１９２が管理するＲＡＭ１０２内の記憶領域に格納される。
【０１１３】
＜マッチパターン生成処理＞
次にマッチパターン生成処理（図１５のステップＳ１３）について説明する。
固有情報が抽出されると、ＣＭＤＢ１２０内の各構成情報から抽出された固有情報が再利用可能な表現に変換される。固有情報を再利用可能な表現に変換する際、同種の構成を同様に表現できるパターンに変換する。
【０１１４】
ここでは、ＣＭＤＢ１２０を用いる例で説明する。ＣＭＤＢ１２０では、構成情報を共通のデータ記述形式（スキーマ）で表現できるため、同種の構成を同様に表現できる。例えば、図７に示した手順ログ１１１には、固有情報としてＩＰアドレス「192.168.1.10」がある。このＩＰアドレスは、ユーザＩＤ「ユーザ＃１」のユーザ２１の構成情報１２１（図８参照）に存在するサーバ（type=“Server”）の要素のＩＰアドレス（ipaddress=）の要素の値“192.168.1.10”に対応する。このＩＰアドレスの位置は、ＣＭＤＢ１２０を用いれば「%Server//@ipaddress」のようにＸＰａｔｈで表現できる。これは、異なるユーザの構成情報に対しても用いることのできる表現である。
【０１１５】
このような固有情報の値が出現するＣＭＤＢ１２０上の位置を表すＸＰａｔｈが、マッチパターンの一例である。マッチパターンは、構成要素の種別名（例:Server, Software）、アプリケーション名（例:Apache)など、操作手順を抽象化し再利用することのできるパターンであれば、ＣＭＤＢ上で表すＸＰａｔｈ以外の形式で表現してもよい。
【０１１６】
以下の説明では一例として、ＣＭＤＢ１２０上で表すＸＰａｔｈを用いたマッチパターンで置換対象を表現するものとする。
図２０は、マッチパターン生成処理の手順の一例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
【０１１７】
［ステップＳ５１］正規化部１９２は、置換対象表に、ステップＳ５２〜Ｓ５８の処理が未処理の置換対象があるか否かを判断する。正規化部１９２は、未処理の置換対象があれば処理をステップ５２に進める。また正規化部１９２は、未処理の置換対象がなければマッチパターン生成処理を終了する。
【０１１８】
［ステップＳ５２］正規化部１９２は、置換対象表から未処理の置換対象を１つ選択し、変数Ｘに設定する。
［ステップＳ５３］正規化部１９２は、選択した置換対象に対応するユーザＩＤに対応する構成情報のＣＩのうち、置換対象の元文字列を含むＣＩを取得する。
【０１１９】
［ステップＳ５４］正規化部１９２は、取得したＣＩのitemのtypeの文字列を変数Ａに設定する。
［ステップＳ５５］正規化部１９２は、取得したＣＩのrecordのtypeの文字列を変数Ｂに設定する。
【０１２０】
［ステップＳ５６］正規化部１９２は、recordの下の要素を変数Ｅに設定する。また変数Ｃと変数Ｄとの内容を空にする。
［ステップＳ５７］正規化部１９２は、変数Ｅで示される子要素に関して、子要素解析処理を行う。この処理の詳細は後述する（図２１参照）。
【０１２１】
［ステップＳ５８］正規化部１９２は、変数Ｍに、「“％”＋Ａ＋“／＃”＋Ｂ＋Ｃ＋“／＠”＋Ｄ」という値を設定する。ここで“”で囲まれた文字は、その文字が変数Ｍに設定される。Ａ，Ｂ，Ｃ，Ｄの位置には、それぞれの変数の値が設定される。その後、正規化部１９２は、処理をステップＳ５１に進める。
【０１２２】
図２１は、子要素解析処理の手順の一例を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］正規化部１９２は、変数Ｃに設定されている値に対して、文字“／”と変数Ｅの値とを後方に追加する。この処理は、式「Ｃ＋＝“／”＋Ｅの要素名」で表される。この式の「＋＝」は複合代入演算子であり、この式は、現在の変数Ｃの値の後に、右辺に示された値を追加し、新たに変数Ｃの値とすることを示している。
【０１２３】
［ステップＳ６２］正規化部１９２は、変数Ｅで示される要素内の属性のうち、ステップＳ６３の処理が未処理の属性があるか否かを判断する。正規化部１９２は、未処理の属性があれば処理をステップＳ６３に進める。また正規化部１９２は、未処理の属性がなければ、処理をステップＳ６７に進める。
【０１２４】
［ステップＳ６３］正規化部１９２は、変数Ｅで示される要素内の未処理の属性を１つ取得し、変数Ｙに設定する。
［ステップＳ６４］正規化部１９２は、変数Ｙに設定した属性の値が、置換対象の元文字列を示す変数Ｘの値と等しいか否かを判断する。正規化部１９２は、等しい場合、処理をステップＳ６５に進める。正規化部１９２は、等しくない場合、処理をステップＳ６２に進める。
【０１２５】
［ステップＳ６５］正規化部１９２は、変数Ｃに設定されている値に対して、「相対位置／＠Ｙ＝“Ｙの属性値”」を後方に追加する。この処理は、式「Ｃ＋＝[相対位置／＠属性＝値]」で表される。この式の「＋＝」は複合代入演算子である。ここで相対位置とは、置換対象の元文字列と等しい値の属性の位置から、置換対象の抽出元となった操作手順に対応する変更ログの変更前情報（変更された位置を示すＸＰａｔｈ）で示される位置までの相対的な位置を示すＸＰａｔｈである。
【０１２６】
［ステップＳ６６］正規化部１９２は、変数Ｙの値を変数Ｄに設定する。その後、子要素解析処理を終了する。
［ステップＳ６７］現在の変数Ｅで示される要素内に変数Ｘと同じ属性値の属性がない場合（ステップＳ６２でＮＯ）、正規化部１９２は、変数Ｄの値が空であり、かつ変数Ｅで示される要素の子要素があるか否かを判断する。変数Ｄが空であり、かつ子要素があれば、正規化部１９２は、処理をステップＳ６８に進める。また変数Ｄが空でないか、もしくは子要素がない場合、正規化部１９２は、子要素解析処理を終了する。
【０１２７】
［ステップＳ６８］正規化部１９２は、現在の変数Ｅで示される要素の子要素のうち、未選択の子要素を１つ取得し、新たに変数Ｅに設定する。
［ステップＳ６９］正規化部１９２は、再帰的に子要素解析処理を行う。正規化部１９２は、再帰呼び出しにより実行した子要素解析処理が終了すると、処理をステップＳ６７に進める。
【０１２８】
このようにして、抽出された置換対象ごとに、置換対象の元文字列を有するＣＩに基づいてマッチパターンが生成される。特に、変更についての相対位置を示すＸＰａｔｈをマッチパターンに含めることで、より変更内容と連携したマッチパターンとなる。
【０１２９】
以下、具体的なマッチパターンの生成例を説明する。
図２２は、マッチパターン生成の一例を示す図である。図２２では、ユーザ２１（ユーザＩＤ「ユーザ＃１」）の操作に基づく手順ログから抽出されたＩＰアドレス「192.168.1.10」が置換対象５４である場合のマッチパターン５６の生成例である。
【０１３０】
置換対象５４は、ユーザＩＤ「ユーザ＃１」に対応付けられている。そのため、「ユーザ＃１」に対応する構成情報１２１内のＣＩのうち、置換対象５４の元文字列を有するＣＩ１２１−１が取得される。
【０１３１】
ＣＩ１２１−１の情報から、要素１２１ａ内のitemのtypeの文字列「Server」が取得され、変数Ａに設定される。また要素１２１ｂ内のrecordのtypeの文字列（observed）が取得され、変数Ｂに設定される。さらに変数Ｃと変数Ｄとの値を空（Ｃ＝Ｄ＝“”）にして、要素１２１ｂの下の要素１２１ｃの属性群について以下の処理が行われる。
【０１３２】
まず、変数Ｃに要素１２１ｃの要素名（Server）が設定される（C+=“/”+要素名）。その後、属性ごとに、値が置換対象５４の元文字列（192.168.1.10）に等しいか調べられる。そして置換対象５４の元文字列と等しい値を有する属性（ipaddress）が、変数Ｄに設定される。
【０１３３】
さらに、変数Ｄに設定された属性から、変更ログ１３１の変更前情報５１における変更対象の属性の位置までの相対位置（./Software）、その変更対象の属性（version）、変更対象の属性の値（“2.2.15”）が「[相対位置/@属性=値]」として、変数Ｃに追加される。もしD=“”かつ、子要素があれば、再帰的に子の要素が処理される。
【０１３４】
そして、変数Ａ，Ｂ，Ｃ，Ｄを「“％”＋Ａ＋“／＃”＋Ｂ＋Ｃ＋“／＠”＋Ｄ」という形式で組み合わせたＸＰａｔｈが、マッチパターン５６となる。
このようにして、置換対象の元文字列に対するマッチパターンが生成される。
【０１３５】
＜固有情報置換処理＞
次に固有情報置換処理（図１５のステップＳ１４）について説明する。
マッチパターンが生成されたとき、変数対応表１５１（図１１参照）に該当するマッチパターンが既に存在すれば、それに対応する変数名が用いられる。存在しなければ、新たな変数名が一意に作成され、マッチパターンと共に変数対応表１５１に追加される。
【０１３６】
例えば正規化部１９２は、マッチパターンに対する変数名を、元文字列を置換する変数名とし、変換表に登録する。
図２３は、変数名の設定例を示す図である。図２３の例では、元文字列「192.168.1.10」に対して変数名「$var1」が対応付けられており、元文字列と変数名との組が変換表５８ａに登録されている。また、登録された元文字列「192.168.1.10」に基づいて生成されたマッチパターンに、その元文字列と同じ変数名「$var1」が対応付けられており、変数名とマッチパターンとの組が変数対応表１５１に登録されている。
【０１３７】
変換表は、手順ログが取得されるごとに生成される。
図２４は、変換表の一例を示す図である。変換表５８ａは、ユーザＩＤ「ユーザ＃１」に対応する変更ログ１３１および手順ログ１１１に基づいて生成されたものである。変換表５８ｂは、ユーザＩＤ「ユーザ＃２」に対応する変更ログ１３２および手順ログ１１２に基づいて生成されたものである。変換表５８ｃは、ユーザＩＤ「ユーザ＃３」に対応する変更ログ１３３および手順ログ１１３に基づいて生成されたものである。
【０１３８】
正規化部１９２は、変換表５８ａに基づいて、手順ログ１１１内の固有情報を、変数名で変換する。
ここで、マッチパターン内に固有情報が含まれている場合もある。そこで正規化部１９２は、マッチパターン内に固有情報が含まれているか否かを、固有情報の抽出時に確認する。もし含まれていれば、正規化部１９２は、上記のフローで変数対応表１５１や変換表５８ａへの登録と置換を行う。
【０１３９】
図２５は、固有情報置換処理の手順の一例を示すフローチャートである。以下、図２５に示す処理をステップ番号に沿って説明する。なお図２５に示す処理は、マッチパターンが生成されるごとに行われる。
【０１４０】
［ステップＳ７１］正規化部１９２は、生成されたマッチパターンを変数Ｍに設定し、そのマッチパターンの生成元となった元文字列を変数Ｏに設定する。
［ステップＳ７２］正規化部１９２は、変数対応表１５１に、変数Ｍに設定されたマッチパターンと同じマッチパターンが存在するか否かを判断する。同じマッチパターンが存在すれば、正規化部１９２は、処理をステップＳ７３に進める。同じマッチパターンが存在しなければ、処理をステップＳ７４に進める。
【０１４１】
［ステップＳ７３］正規化部１９２は、変数Ｍのマッチパターンに対して変数対応表１５１で対応付けられている変数名を、変数Ｖに設定する。正規化部１９２は、その後、処理をステップＳ７６に進める。このとき、正規化部１９２は、変数Ｏに設定された元文字列と、変数Ｖに設定された変数名との組を変換表に追加登録する。
【０１４２】
［ステップＳ７４］正規化部１９２は、新たな変数名を作成し、変数Ｖに設定する。新たに作成する変数名は、変数対応表１５１に既に設定されている変数名と異なる名称である。このとき、正規化部１９２は、変数Ｏに設定された元文字列と、変数Ｖに設定された変数名との組を変換表に追加登録する。
【０１４３】
［ステップＳ７５］正規化部１９２は、変数Ｖに設定された変数名と、変数Ｍに設定されたマッチパターンとの組を、変数対応表１５１に追加登録する。
［ステップＳ７６］正規化部１９２は、マッチパターンの生成元となった手順ログおよび変更ログ内の、変数Ｏに設定された元文字列と同じ文字列を、変数Ｖに設定された変数名に置換する。
【０１４４】
このようにして、固有情報が置換される。
図２６は、変更ログの正規化の例を示す図である。図２６の例では、変更ログ１３１内の「192.168.1.10」という文字列が、置換対象の元文字列である。正規化部１９２は、変更前情報５１やＣＭＤＢ１２０を参照し、変換表５８ａや変数対応表１５１を用いて、元文字列を「$var1」という変数名に置換している。そして、元文字列が置換された正規化変更ログ１３１ａが生成される。
【０１４５】
変更ログ内の固有情報を変数名に置換したのと同様に、対応する手順ログの固有情報が変数名に置換される。
図２７は、手順ログの正規化の例を示す図である。図２７の例では、手順ログ１１１内の「192.168.1.10」という文字列が、置換対象の元文字列である。正規化部１９２は、変更前情報５１やＣＭＤＢ１２０を参照し、変換表５８ａや変数対応表１５１を用いて、元文字列を「$var1」という変数名に置換している。そして、元文字列が置換された正規化手順ログ１１１ａが生成される。
【０１４６】
なお、手順ログの正規化に先立って変更ログの正規化が行われている場合、変更ログの置換処理によって変数対応表１５１や変換表５８ａに既に登録されている情報を流用することができる。例えば、手順ログ１１１の場合、「192.168.1.10」が固有情報として抽出される。これにマッチするマッチパターンの変数名は、既に変数対応表１５１に「$var1」として登録されている。また、変換表５８ａにも既に「$var1」として登録されている。よって、特にこれらの表に変更はなく、手順ログ１１１内の元文字列が、変数名に置換される。
【０１４７】
図２８は、正規化後の手順ログＤＢの例を示す図である。図２８に示すように、正規化手順ログ１１１ａ，１１２ａ，１１３ａでは、各ＩＣＴシステムに固有のＩＰアドレスが、すべて変数名に変更されている。
【０１４８】
図２９は、正規化後の変更ログＤＢの例を示す図である。図２９に示すように、正規化変更ログ１３１ａ，１３２ａ，１３３ａでは、各ＩＣＴシステムに固有のＩＰアドレスが、すべて変数名に変更されている。
【０１４９】
また、図２８、図２９に示した手順ログ１１０と変更ログ１３０の正規化に伴って、図１１に示したような変数対応表１５１が生成される。
＜入出力情報の抽出＞
次に、入出力情報の抽出処理（図１５のステップＳ１５）について説明する。
【０１５０】
グラフ生成部１９３は、手順ログに示される一連の操作に応じた処理をＩＣＴシステムが実行した場合における、構成情報の変更部分の変更前情報を入力情報とし、変更部分の変更後情報を出力情報として抽出する。
【０１５１】
図３０は、入出力情報の抽出例を示す図である。図３０の例は、手順ログ１１１に示された一連の操作が実行された場合の入力情報と出力情報との抽出例である。この例では、構成情報におけるＷｅｂサーバソフトウェアのバーション番号が変更されているため、変更前のバージョン番号と、そのバージョン番号の位置を示す変更前情報５１が入力情報として抽出される。また変更後のバージョン番号と、そのバージョン番号の位置を示す変更後情報５２が出力情報として抽出される。
【０１５２】
このような入出力情報の抽出処理が、すべての手順ログに応じて行われる。
＜有向グラフの作成＞
次に有向グラフの作成処理（図１５のステップＳ１６）について説明する。
【０１５３】
有向グラフの作成処理では、グラフ生成部１９３は、手順ログ内の操作それぞれを示す操作情報をノードとして分解し、エッジで接続する。そしてグラフ生成部１９３は、最初の操作情報を入力情報とエッジで接続し、最後の操作情報を出力情報とエッジで接続する。
【０１５４】
図３１は、有向グラフ作成処理の手順の一例を示すフローチャートである。以下、図３１に示す処理をステップ番号に沿って説明する。なお、以下の処理は、手順ログの正規化が行われるごとに、正規化手順ログに対して実行される。
【０１５５】
［ステップＳ８１］グラフ生成部１９３は、正規化手順ログから、最初の操作を示す操作情報を抽出し、変数ｏに代入する。またグラフ生成部１９３は、変数ｏに設定された操作情報を、変数ｏｓに代入する。このときグラフ生成部１９３は、変数ｏに設定された操作情報に対応するノードを生成する。
【０１５６】
［ステップＳ８２］グラフ生成部１９３は、正規化手順ログ内に、ステップＳ８３〜Ｓ８５の処理が未処理の操作情報があるか否かを判断する。未処理の操作情報があれば、グラフ生成部１９３は、処理をステップＳ８３に進める。また未処理の操作情報がなければ、グラフ生成部１９３は、処理をステップＳ８６に進める。
【０１５７】
［ステップＳ８３］グラフ生成部１９３は、次の操作情報を抽出し、変数ｏｎに代入する。
［ステップＳ８４］グラフ生成部１９３は、変数ｏｎに設定された操作情報に対応するノードを生成し、変数ｏのノードから変数ｏｎのノードに向けてエッジを接続する。
【０１５８】
［ステップＳ８５］グラフ生成部１９３は、変数ｏｎに設定されている操作情報を、変数ｏに代入する。その後、グラフ生成部１９３は、処理をステップＳ８２に進める。
［ステップＳ８６］グラフ生成部１９３は、すべての操作情報に対するステップＳ８３〜Ｓ８５の処理が終了すると、変数ｏｎの操作情報を、変数ｏｅに代入する。
【０１５９】
［ステップＳ８７］グラフ生成部１９３は、入力情報から変数ｏｓに設定された操作情報に対応するノードに向け、エッジを接続する。
［ステップＳ８８］グラフ生成部１９３は、変数ｏｅに設定された操作情報に対応するノードから出力情報に向け、エッジを接続する。
【０１６０】
このような処理が各正規化手順ログについて実行されることで、正規化手順ログごとの有向グラフが生成される。
図３２は、有向グラフの第１の例を示す図である。図３２には、図２８に示した正規化手順ログ１１１ａに対応する有向グラフ６１が示されている。
【０１６１】
有向グラフ６１は、入力情報６１ａ、出力情報６１ｂ、および複数のノード６１ｃ，６１ｄ，６１ｅ，６１ｆを有している。各ノード６１ｃ，６１ｄ，６１ｅ，６１ｆには、それぞれ正規化手順ログ１１１ａに含まれる操作情報が対応付けられている。各ノード６１ｃ，６１ｄ，６１ｅ，６１ｆは、対応する操作情報で示される操作が行われた順に、エッジで接続されている。
【０１６２】
また入力情報６１ａから最初の操作情報に対応するノード６１ｃに向けて、エッジが接続されている。さらに最後の操作情報に対応するノード６１ｆから出力情報６１ｂに向けて、エッジが接続されている。
【０１６３】
図３３は、有向グラフの第２の例を示す図である。図３３には、図２８に示した正規化手順ログ１１２ａに対応する有向グラフ６２が示されている。有向グラフ６２は、３つの入力情報６２ａ，６２ｂ，６２ｃ、３つの出力情報６２ｄ，６２ｅ，６２ｆ、および複数のノード６２ｇ，６２ｈ，６２ｉ，６２ｊ，６２ｋ，６２ｌ，６２ｍ，６２ｎを有している。正規化手順ログ１１２ａに対応する操作手順で操作が行われたとき、ＣＭＤＢ１２０内の構成情報において３箇所の変更があったため、有向グラフ６２は、入力情報と出力情報とが３つずつとなっている。
【０１６４】
図３４は、有向グラフの第３の例を示す図である。図３４には、図２８に示した正規化手順ログ１１３ａに対応する有向グラフ６３が示されている。有向グラフ６３は、入力情報６３ａ、出力情報６３ｂ、および複数のノード６３ｃ，６３ｄ，６３ｅ，６３ｆを有している。
【０１６５】
図３２〜図３４に示した有向グラフ６１〜６３は、例えばグラフ生成部１９３が管理するＲＡＭ１０２内の記憶領域に一時的に格納される。
＜有向グラフの合成＞
次に有向グラフの合成処理について説明する。
【０１６６】
グラフ生成部１９３は、生成した有向グラフ６１〜６３を、１つの有向グラフに合成する。合成処理によって得られた有向グラフが、図１２に示した手順グラフ１６１となる。
図３５は、有向グラフ合成処理の手順の一例を示すフローチャートである。以下、図３５に示す処理をステップ番号に沿って説明する。
【０１６７】
［ステップＳ９１］グラフ生成部１９３は、手順グラフＥの初期状態を定義する。初期状態の手順グラフＥは、空の状態である。すなわち入力情報、出力情報、およびノードを有していない手順グラフＥが定義される。
【０１６８】
［ステップＳ９２］グラフ生成部１９３は、入力情報合成処理を行う。この処理の詳細は後述する（図３６参照）。
［ステップＳ９３］グラフ生成部１９３は、出力情報合成処理を行う。この処理の詳細は後述する（図３７参照）。
【０１６９】
［ステップＳ９４］グラフ生成部１９３は、ノード合成処理を行う。この処理の詳細は後述する（図３８参照）。
［ステップＳ９５］グラフ生成部１９３は、エッジ合成処理を行う。この処理の詳細は後述する（図３９参照）。
【０１７０】
以下、図３５に示した各ステップの詳細について説明する。
図３６は、入力情報合成処理の手順の一例を示すフローチャートである。以下、図３６に示す処理をステップ番号に沿って説明する。
【０１７１】
［ステップＳ１０１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１０２〜Ｓ１０６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１０２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、入力情報合成処理を終了する。
【０１７２】
［ステップＳ１０２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１０３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１０４〜Ｓ１０６の処理が未処理の入力情報があるか否かを判断する。グラフ生成部１９３は、未処理の入力情報があれば処理をステップＳ１０４に進める。またグラフ生成部１９３は、未処理の入力情報がなければ、処理をステップＳ１０１に進める。
【０１７３】
［ステップＳ１０４］グラフ生成部１９３は、対象グラフＧから、未処理の入力情報を１つ抽出し、変数ｉｎに設定する。
［ステップＳ１０５］グラフ生成部１９３は、手順グラフＥに変数ｉｎに設定された入力情報と同じ入力情報が存在するか否かを判断する。グラフ生成部１９３は、該当する入力情報が存在する場合、処理をステップＳ１０３に進める。またグラフ生成部１９３は、該当する入力情報が存在しない場合、処理をステップＳ１０６に進める。
【０１７４】
［ステップＳ１０６］グラフ生成部１９３は、手順グラフＥに変数ｉｎに設定されている入力情報を追加する。その後、グラフ生成部１９３は処理をステップＳ１０３に進める。
【０１７５】
図３７は、出力情報合成処理の手順の一例を示すフローチャートである。以下、図３７に示す処理をステップ番号に沿って説明する。
［ステップＳ１１１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１１２〜Ｓ１１６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１１２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、出力情報合成処理を終了する。
【０１７６】
［ステップＳ１１２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１１３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１１４〜Ｓ１１６の処理が未処理の出力情報があるか否かを判断する。グラフ生成部１９３は、未処理の出力情報があれば処理をステップＳ１１４に進める。またグラフ生成部１９３は、未処理の出力情報がなければ、処理をステップＳ１１１に進める。
【０１７７】
［ステップＳ１１４］グラフ生成部１９３は、対象グラフＧから、未処理の出力情報を１つ抽出し、変数ｏｕｔに設定する。
［ステップＳ１１５］グラフ生成部１９３は、手順グラフＥに変数ｏｕｔに設定された出力情報と同じ出力情報が存在するか否かを判断する。グラフ生成部１９３は、該当する出力情報が存在する場合、処理をステップＳ１１３に進める。またグラフ生成部１９３は、該当する出力情報が存在しない場合、処理をステップＳ１１６に進める。
【０１７８】
［ステップＳ１１６］グラフ生成部１９３は、手順グラフＥに変数ｏｕｔに設定されている出力情報を追加する。その後、グラフ生成部１９３は処理をステップＳ１１３に進める。
【０１７９】
図３８は、ノード合成処理の手順の一例を示すフローチャートである。以下、図３８に示す処理をステップ番号に沿って説明する。
［ステップＳ１２１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１２２〜Ｓ１２６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１２２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、ノード合成処理を終了する。
【０１８０】
［ステップＳ１２２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１２３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１２４〜Ｓ１２６の処理が未処理のノードがあるか否かを判断する。グラフ生成部１９３は、未処理のノードがあれば処理をステップＳ１２４に進める。またグラフ生成部１９３は、未処理のノードがなければ、処理をステップＳ１２１に進める。
【０１８１】
［ステップＳ１２４］グラフ生成部１９３は、対象グラフＧから、未処理のノードを１つ抽出し、変数ｎに設定する。
［ステップＳ１２５］グラフ生成部１９３は、手順グラフＥに変数ｎに設定されたノードと同じノードが存在するか否かを判断する。グラフ生成部１９３は、該当するノードが存在する場合、処理をステップＳ１２３に進める。またグラフ生成部１９３は、該当するノードが存在しない場合、処理をステップＳ１２６に進める。
【０１８２】
［ステップＳ１２６］グラフ生成部１９３は、手順グラフＥに変数ｎに設定されているノードを追加する。その後、グラフ生成部１９３は処理をステップＳ１２３に進める。
図３９は、エッジ合成処理の手順の一例を示すフローチャートである。以下、図３９に示す処理をステップ番号に沿って説明する。
【０１８３】
［ステップＳ１３１］グラフ生成部１９３は、処理対象の複数の有向グラフのうち、ステップＳ１３２〜Ｓ１３６の処理が未処理の有向グラフがあるか否かを判断する。グラフ生成部１９３は、未処理の有向グラフがあれば処理をステップＳ１３２に進める。またグラフ生成部１９３は、未処理の有向グラフがなければ、エッジ合成処理を終了する。
【０１８４】
［ステップＳ１３２］グラフ生成部１９３は、未処理の有向グラフのうちの１つを選択し、対象グラフＧとする。
［ステップＳ１３３］グラフ生成部１９３は、対象グラフＧに、ステップＳ１３４〜Ｓ１３６の処理が未処理のエッジがあるか否かを判断する。グラフ生成部１９３は、未処理のエッジがあれば処理をステップＳ１３４に進める。またグラフ生成部１９３は、未処理のエッジがなければ、処理をステップＳ１３１に進める。
【０１８５】
［ステップＳ１３４］グラフ生成部１９３は、対象グラフＧから、未処理のエッジを１つ抽出し、変数ｅに設定する。
［ステップＳ１３５］グラフ生成部１９３は、手順グラフＥに変数ｅに設定されたエッジと同じエッジが存在するか否かを判断する。ここで同じエッジとは、接続する要素（入力情報、出力情報またはノード）が同じであり、向きも同じエッジである。グラフ生成部１９３は、該当するエッジが存在する場合、処理をステップＳ１３３に進める。またグラフ生成部１９３は、該当するエッジが存在しない場合、処理をステップＳ１３６に進める。
【０１８６】
［ステップＳ１３６］グラフ生成部１９３は、手順グラフＥに変数ｅに設定されているエッジを追加する。エッジを追加する場合、元のエッジと同じ要素間を、同じ向きで接続する。その後、グラフ生成部１９３は処理をステップＳ１３３に進める。
【０１８７】
以上のようにして有向グラフを合成することができる。例えば、図３２〜図３４に示した有向グラフ６１〜６３を合成することで、図１２に示した手順グラフ１６１が生成される。生成された手順グラフ１６１は、手順グラフＤＢ１６０に格納される。
【０１８８】
＜＜手順候補提供処理＞＞
次に手順候補提供処理について説明する。手順候補提供処理は、入力情報と出力情報とを指定したユーザからの手順要求に応じて実行される。
【０１８９】
図４０は、手順候補提供処理の手順の一例を示すフローチャートである。以下、図４０に示す処理をステップ番号に沿って説明する。
［ステップＳ２０１］候補生成部１９４は、ユーザが使用する端末装置から手順要求を取得する。手順要求には、例えばＩＣＴシステムの更新対象のソフトウェア資源の名称が含まれる。
【０１９０】
［ステップＳ２０２］候補生成部１９４は、手順グラフ１６１から手順候補を抽出する手順候補抽出処理を行う。この処理の詳細は後述する（図４２参照）。
［ステップＳ２０３］候補生成部１９４は、抽出した手順候補を、手順要求を入力したユーザに応じた内容に具体化する、手順候補具体化処理を行う。この処理の詳細は後述する（図４６参照）。
【０１９１】
［ステップＳ２０４］整列部１９５は、所定の基準に沿って手順候補を並べ替える手順候補整列処理を行う。この処理の詳細は後述する（図４８〜図５２参照）。
［ステップＳ２０５］整列部１９５は、整列された手順候補の上位の手順候補を端末装置に送信する手順候補提示処理を行う。この処理の詳細は後述する（図５７参照）。
【０１９２】
このようにして、ユーザに対して手順候補が提供される。以下、図４０に示す各ステップの処理を詳細に説明する。
＜手順要求取得処理＞
まず手順要求取得処理（図４０のステップＳ２０１）について説明する。なお以下の説明では、ユーザ２４が端末装置３４を用いて手順要求を管理サーバ１００に送信するものとする。例えばユーザ２４は端末装置３４の構成管理ソフトウェアが、ＩＣＴシステム４４内のソフトウェア資源の最新版を見知すると、システム構成管理画面に表示し、ソフトウェア資源の更新を促す。
【０１９３】
図４１は、システム構成管理画面の一例を示す図である。システム構成管理画面３００には、ＩＣＴシステム４４に含まれるサーバのサーバ名３０１〜３０３が表示されている。いずれかのサーバ名をユーザ２４が選択すると、サーバ名に対応するソフトウェア資源の構成が表示される。図４１の例では、「サーバ１」の構成が表示されている。
【０１９４】
サーバの構成としては、そのサーバのＩＰアドレス３０４、ステータス３０５、バージョン番号３０６などが表示される。また、そのサーバに対応するソフトウェア資源のバージョンが最新版でない場合、最新版のバージョン３０７が表示される。最新版のバージョン３０７が表示される場合、最新版への更新の意思を確認するＯＫボタン３０８とキャンセルボタン３０９とが表示される。
【０１９５】
ユーザ２４によりＯＫボタン３０８が選択されると、端末装置３４は、管理サーバ１００に対して、該当するソフトウェア資源の最新版への更新をした場合の手順要求を送信する。図４１の例では、Ｗｅｂサーバソフトウェアのバージョンを「2.2.15」から「2.2.16」に更新する場合の手順要求が送信される。このようにして、送信された手順情報を管理サーバ１００が受信し、候補生成部１９４が、手順要求に応じた更新処理を行う場合の手順候補を抽出する。
【０１９６】
＜手順候補抽出処理＞
次に手順候補抽出処理（図４０のステップＳ２０２）について説明する。
図４２は、手順候補抽出処理の手順の一例を示すフローチャートである。以下、図４２に示す処理をステップ番号に沿って説明する。
【０１９７】
［ステップＳ２１１］候補生成部１９４は、変更後情報に対応する出力情報があるか否かを判断する。例えば候補生成部１９４は、手順要求で示された更新処理を行った場合のＩＣＴシステム４４の構成情報の変更部分を判断し、その変更が行われた場合の変更後情報を生成する。変更後情報は、変更部分の変更後の値と、ＣＭＤＢ１２０内の構成情報における変更部分の位置とをＸＰａｔｈで表したものである。候補生成部１９４は、生成した変更後情報のうち、変数対応表１５１に登録されているマッチパターンに合致する文字列を、そのマッチパターンに対応する変数名に置換する。そして候補生成部１９４は、このような正規化後の変更後情報と同じ出力情報が、手順グラフ１６１に含まれているか否かを判断する。該当する出力情報がある場合、候補生成部１９４は、変更後情報に対応する出力情報があると判断する。
【０１９８】
候補生成部１９４は、変更後情報に対応する出力情報がある場合、処理をステップＳ２１２に進める。また候補生成部１９４は、変更後情報に対応する出力情報がない場合、処理をステップＳ２１３に進める。
【０１９９】
［ステップＳ２１２］候補生成部１９４は、変更前情報に対応する入力情報があるか否かを判断する。例えば候補生成部１９４は、手順要求で示された更新処理を行った場合のＩＣＴシステムの構成情報の変更部分を判断し、その変更が行われた場合の変更前情報を生成する。変更前情報は、変更部分の変更前の値と、ＣＭＤＢ１２０内の構成情報における変更部分の位置とをＸＰａｔｈで表したものである。候補生成部１９４は、生成した変更前情報のうち、変数対応表１５１に登録されているマッチパターンに合致する文字列を、そのマッチパターンに対応する変数名に置換する。そして候補生成部１９４は、このような正規化後の変更前情報と同じ入力情報が、手順グラフ１６１に含まれているか否かを判断する。該当する入力情報がある場合、候補生成部１９４は、変更前情報に対応する入力情報があると判断する。
【０２００】
候補生成部１９４は、変更前情報に対応する入力情報がある場合、処理をステップＳ２１４に進める。また候補生成部１９４は、変更前情報に対応する入力情報がない場合、処理をステップＳ２１３に進める。
【０２０１】
［ステップＳ２１３］候補生成部１９４は、変更後情報に対応する出力情報と、変更前情報に対応する入力情報との少なくともいずれか一方がない場合、手順候補なしと判定し、手順候補抽出処理を終了する。なお手順候補がない場合、図４０に示した手順候補提供処理も終了する。
【０２０２】
［ステップＳ２１４］候補生成部１９４は、変更後情報に対応する出力情報と変更前情報に対応する入力情報との両方が見つかった場合、手順グラフ１６１において、出力情報から手順グラフ１６１を遡り、入力情報に到達する経路を１つ選択する。
【０２０３】
［ステップＳ２１５］候補生成部１９４は、選択した経路中のノードの名前に含まれる変数名に対応するデータが、処理対象のＩＣＴシステムの構成情報内にあるか否かを判断する。候補生成部１９４は、対応するデータがある場合、処理をステップＳ２１６に進める。また候補生成部１９４は、対応するデータがない場合、処理をステップＳ２１７に進める。
【０２０４】
［ステップＳ２１６］候補生成部１９４は、選択した経路上のノードにより手順候補を生成し、手順候補群を示す集合Ｈに追加する。
［ステップＳ２１７］候補生成部１９４は、出力情報から入力情報への未選択の経路があるか否かを判断する。候補生成部１９４は、未選択の経路があれば処理をステップＳ２１４に進める。また候補生成部１９４は、未選択の経路がなければ、手順候補抽出処理を終了する。
【０２０５】
このようにして、手順候補が抽出される。以下、手順候補の抽出処理を、具体例を用いて説明する。
図４３は、手順要求に応じた変更前情報と変更後情報との抽出および正規化例を示す図である。例えば端末装置３４から、Ｗｅｂサーバソフトウェアのバージョンを「2.2.15」から「2.2.16」に更新することを示す手順要求７０が入力されたものとする。例えば手順要求７０には、手順要求７０を送信した端末装置３４を使用するユーザ２４のユーザＩＤと、そのユーザ２４が管理するＩＣＴシステム４４へ施す構成変更内容とが含まれる。この場合、ＣＭＤＢ１２０内の端末装置３４を使用しているユーザ２４が管理するＩＣＴシステム４４の構成情報に基づいて、指定されたＷｅｂサーバソフトウェアに関する変更前情報７１と変更後情報７２とが生成される。
【０２０６】
生成された変更前情報７１と変更後情報７２とには、ＩＣＴシステム４４内のサーバのＩＰアドレス「5.6.7.8」が含まれている。このＩＰアドレスは、固有情報であり、変数対応表１５１のマッチパターンに適合する。そこで、固有情報であるＩＰアドレスは、適合するマッチパターンに対応する変数名「$var1」に置換される。置換処理に応じ、元文字列「5.6.7.8」と変数名「$var1」との組からなる変数・データ表７５が生成される。変数・データ表７５は、例えば候補生成部１９４が管理するＲＡＭ１０２内の記憶領域に格納される。
【０２０７】
このようにして正規化された変換前情報７３と変換後情報７４との組と、手順グラフ１６１とが比較され、手順候補が抽出される。
図４４は、手順候補の抽出状況を示す図である。図４３に示す正規化された変換前情報７３と変換後情報７４との組と手順グラフ１６１とを比較すると、変換前情報７３と入力情報１６１ａとが一致する。また変更後情報７４と出力情報１６１ｄとが一致する。そこで出力情報１６１ｄから入力情報１６１ａまでの経路８１〜８５について、問題なく到達可能かどうかが検証される。すなわち、各経路８１〜８５上のノードの名称に設定されている操作情報に含まれる変数名に対応するデータが、ＩＣＴシステム４４の構成情報に含まれるか否かが検証される。すなわち、経路上のノードに示される変数名に対応するデータが構成情報に含まれていない場合、操作対象の資源（ハードウェア資源またはソフトウェア資源）がＩＣＴシステム４４に含まれていないこととなる。この場合、そのノードに対応する操作情報に示される操作は、今の構成のままではＩＣＴシステム４４に対して実行することができない。
【０２０８】
図４４の例では、経路８１〜８４については、経路上の各ノードの名前に設定された操作情報内の変数名に対応するデータが、ＩＣＴシステム４４の構成情報に存在している。しかし経路８５上のノード１６１ｏの名前「telnet $var3」に含まれる変数名「$var3」に対応するデータが存在しない。変数名「$var3」に対応するデータとは、変数名「$var3」に対応するマッチパターンに適合するデータである。
【０２０９】
従って、図４４の例では、経路８１〜８４のそれぞれから、手順候補が生成される。生成される手順候補は、入力情報１６１ａから経路を通り出力情報１６１ｄに到達するまでのノードをエッジで接続した有向グラフである。
【０２１０】
図４５は、手順候補群の例を示す図である。図４５の例では、４つの手順候補９１〜９４を有する手順候補群が生成されている。手順候補９１は、図４４に示した経路８１に基づいて生成されている。手順候補９２は、図４４に示した経路８２に基づいて生成されている。手順候補９３は、図４４に示した経路８３に基づいて生成されている。手順候補９４は、図４４に示した経路８４に基づいて生成されている。
【０２１１】
各手順候補９１〜９４には、手順候補番号が付与されている。手順候補９１の手順候補番号は「１」である。手順候補９２の手順候補番号は「２」である。手順候補９３の手順候補番号は「３」である。手順候補９４の手順候補番号は「４」である。
【０２１２】
生成された手順候補群は、例えばＲＡＭ１０２、ＨＤＤ１０３などの記憶装置に格納される。
＜手順候補具体化処理＞
次に手順候補具体化処理（図４０のステップＳ２０３）について説明する。
【０２１３】
図４６は、手順候補具体化処理の手順の一例を示すフローチャートである。以下、図４６に示す処理をステップ番号に沿って説明する。
［ステップＳ２２１］候補生成部１９４は、手順候補群を示す集合Ｈが空か否かを判断する。手順候補群を示す集合Ｈが空の場合、候補生成部１９４は手順候補具体化処理を終了する。手順候補群を示す集合Ｈが空でない場合は、候補生成部１９４は処理をステップＳ２２２に進める。
【０２１４】
［ステップＳ２２２］候補生成部１９４は、手順候補群を示す集合Ｈから手順候補を１つ取り出し、変数Ｚとする。
［ステップＳ２２３］候補生成部１９４は、変数Ｌに０を設定する。
【０２１５】
［ステップＳ２２４］候補生成部１９４は、変数Ｌの値が、変数・データ表７５（図４３参照）の行数より小さいか否かを判断する。変数Ｌの方が小さい場合、候補生成部１９４は処理をステップＳ２２５に進める。変数Ｌが変数・データ表７５の行数以上の場合、候補生成部１９４は処理をステップＳ２２１に進める。
【０２１６】
［ステップＳ２２５］候補生成部１９４は、変数・データ表７５からＬ行目のレコードを取得する。そして候補生成部１９４は、取得したレコードの変数名を変数Ｖに代入し、データを変数Ｄに代入する。
【０２１７】
［ステップＳ２２６］候補生成部１９４は、変数Ｚに設定された手順候補内の各ノードの名前の文字列に対し、変数Ｖに設定された変数名から、変数Ｄに設定されたデータへの置換処理を行う。
【０２１８】
［ステップＳ２２７］候補生成部１９４は、変数Ｌの値を１だけカウントアップする。その後、候補生成部１９４は処理をステップＳ２２４に進める。
このようにして、手順候補に含まれていた変数名が、特定のＩＣＴシステムの固有情報に置換される。
【０２１９】
図４７は、具体化後の手順候補の例を示す図である。図４５に示した各手順候補９１〜９４には、「$var1」という変数名が含まれている。図４３に示す変数・データ表７５を参照すると、変数名「$var1」には、データ「5.6.7.8」が対応する。そこで、手順候補９１〜９４の「$var1」の文字列が「5.6.7.8」に置換されている。具体化された手順候補群は、例えばＲＡＭ１０２、ＨＤＤ１０３などの記憶装置に格納される。
【０２２０】
このような具体化処理を施した手順候補であれば、その手順候補に示される操作を、そのまま実行することで、ＩＣＴシステムの所望の構成変更を行うことが可能である。
＜手順候補整列処理＞
次に手順候補整列処理（図４０のステップＳ２０４）について説明する。手順候補の整列処理としては、例えば以下のような基準で整列させることができる。
１．様々なユーザ（不特定のユーザ）からより多く利用されている手順候補を上位にする。
２．手順要求を行ったユーザによる利用実績がより多い手順候補を上位にする。
３．より少ない操作数の手順候補を上位にする。
４．より所要時間が短い手順候補を上位にする。
５．よりユーザの操作環境に合致する手順候補を上位にする。
【０２２１】
なお、整列部１９５は、これらの整列基準のうち、例えば予め設定された整列基準に基づいて手順候補を整列させる。また整列部１９５は、例えば、手順要求を行ったユーザから任意の基準の指定があった場合、指定された基準に従った手順候補を整列させる。
【０２２２】
これらの基準それぞれにおける手順候補整列処理を以下に示す。
まず、様々なユーザからより多く利用されている手順候補を上位にする場合の整列処理について説明する。
【０２２３】
図４８は、手順候補整列処理の第１の例を示すフローチャートである。手順候補整列処理の第１の例は、様々なユーザからより多く利用されている手順候補を上位にする場合の整列処理手順である。以下、図４８に示す処理をステップ番号に沿って説明する。
【０２２４】
［ステップＳ２３１］整列部１９５は、具体化された手順候補群を集合Ｈに設定する。
［ステップＳ２３２］整列部１９５は、手順候補群を含む集合Ｈが空か否かを判断する。手順候補群を含む集合Ｈが空の場合、整列部１９５は処理をステップＳ２３８に進める。集合Ｈが空でない場合は、整列部１９５は処理をステップＳ２３３に進める。
【０２２５】
［ステップＳ２３３］整列部１９５は、手順候補群を含む集合Ｈから手順候補を１つ取り出し、取り出した手順候補の手順候補番号を変数Ｚに設定する。このとき整列部１９５は、合計を示す変数ｓの値に０を設定する。
【０２２６】
［ステップＳ２３４］整列部１９５は、変数Ｚに設定された手順候補番号で示される手順候補の先頭のノードから調査し、未処理の次の操作を示すノードがあるか否かを判断する。整列部１９５は、次の操作を示すノードがある場合、そのノードの名前に設定されている操作の操作情報を変数ｐに設定し、処理をステップＳ２３５に進める。また整列部１９５は、次の操作を示すノードがない場合、処理をステップＳ２３７に進める。
【０２２７】
［ステップＳ２３５］整列部１９５は、変数ｐに設定された操作の実績回数を実績記憶部１８０内の操作実績表（図１４参照）から取得する。このとき、整列部１９５は、ユーザ毎の操作実績表１８１，１８２，・・・内の変数ｐに設定された操作に対応する実績回数の値を合計し、変数ｑに設定する。
【０２２８】
［ステップＳ２３６］整列部１９５は、変数ｓの値に変数ｐの値を加算し、加算結果を新たに変数ｓの値とする。その後、整列部１９５は処理をステップＳ２３４に進める。
［ステップＳ２３７］整列部１９５は、手順候補リストに、変数ｓの値をキーとし、変数Ｚに設定された手順候補番号を値としたレコードを追加する。その後、整列部１９５は処理をステップＳ２３２に進める。
【０２２９】
［ステップＳ２３８］整列部１９５は、手順候補リストのレコードを、キーの大きい順に整列させる。
［ステップＳ２３９］整列部１９５は、手順候補リストのレコードの値の集合を、手順候補リスト内でのレコードの順を崩さずに、整列結果を示す集合Ｒに設定する。
【０２３０】
このようにして、様々なユーザからより多く利用された手順候補が上位になるように、手順候補を整列させることができる。
次に、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように、手順候補を整列させる処理について説明する。
【０２３１】
図４９は、手順候補整列処理の第２の例を示すフローチャートである。手順候補整列処理の第２の例は、手順要求を行ったユーザによる利用実績がより多い手順候補を上位にする場合の整列処理手順である。図４９に示した各ステップＳ２４１〜Ｓ２４９の処理のうち、ステップＳ２４１〜Ｓ２４４，Ｓ２４６〜Ｓ２４９の処理は、それぞれ図４８に示したフローチャートのステップＳ２３１〜Ｓ２３４，Ｓ２３６〜Ｓ２３９の処理と同じである。ステップＳ２４５の処理は、以下の通りである。
【０２３２】
［ステップＳ２４５］整列部１９５は、手順要求を行ったユーザの操作実績表のみから、変数ｐに設定された操作の実績回数を取得する。そして整列部１９５は、手順要求を行ったユーザの操作の実績回数を、変数ｑに設定する。
【０２３３】
このようにして、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように、手順候補を整列させることができる。
次に、より少ない操作数の手順候補が上位になるように、手順候補を整列させる処理について説明する。
【０２３４】
図５０は、手順候補整列処理の第３の例を示すフローチャートである。手順候補整列処理の第３の例は、より少ない操作数の手順候補を上位にする場合の整列処理手順である。以下、図５０に示す処理をステップ番号に沿って説明する。
【０２３５】
［ステップＳ２５１］整列部１９５は、具体化された手順候補群を集合Ｈに設定する。
［ステップＳ２５２］整列部１９５は、手順候補群を含む集合Ｈが空か否かを判断する。手順候補群を含む集合Ｈが空の場合、整列部１９５は処理をステップＳ２５６に進める。手順候補群が空でない場合は、整列部１９５は処理をステップＳ２５３に進める。
【０２３６】
［ステップＳ２５３］整列部１９５は、手順候補群を含む集合Ｈから手順候補を１つ取り出し、取り出した手順候補の手順候補番号を変数Ｚに設定する。
［ステップＳ２５４］整列部１９５は、変数Ｚに設定された手順候補番号で示される手順候補の操作の数（手順候補のノードの数）をカウントし、カウント結果を変数ｒに設定する。
【０２３７】
［ステップＳ２５５］整列部１９５は、手順候補リストに、変数ｒの値をキーとし、変数Ｚに設定された手順候補番号を値としたレコードを追加する。その後、整列部１９５は処理をステップＳ２５２に進める。
【０２３８】
［ステップＳ２５６］整列部１９５は、手順候補リストのレコードを、キーの小さい順に整列させる。
［ステップＳ２５７］整列部１９５は、手順候補リストのレコードの値の集合を、手順候補リスト内でのレコードの順を崩さずに、整列結果を示す集合Ｒに設定する。
【０２３９】
このようにして、より少ない操作数の手順候補が上位になるように、手順候補を整列させることができる。
次に、より所要時間が短い手順候補が上位になるように、手順候補を整列させる処理について説明する。
【０２４０】
図５１は、手順候補整列処理の第４の例を示すフローチャートである。手順候補整列処理の第４の例は、より所要時間が短い手順候補を上位にする場合の整列処理手順である。図５１に示した各ステップＳ２６１〜Ｓ２６９の処理のうち、ステップＳ２６１〜Ｓ２６４，Ｓ２６７，Ｓ２６９の処理は、それぞれ図４８に示したフローチャートのステップＳ２３１〜Ｓ２３４，Ｓ２３７，Ｓ２３９の処理と同じである。ステップＳ２６５、ステップＳ２６６、ステップＳ２６８の処理は、以下の通りである。
【０２４１】
［ステップＳ２６５］整列部１９５は、変数ｐに設定された操作の所要時間を所要時間実績表１８０ａ（図１４参照）から取得する。そして整列部１９５は、取得した所要時間を、変数ｅｔに設定する。
【０２４２】
［ステップＳ２６６］整列部１９５は、変数ｓの値に変数ｅｔの値を加算し、加算結果を新たに変数ｓの値とする。その後、整列部１９５は処理をステップＳ２６４に進める。
［ステップＳ２６８］整列部１９５は、手順候補リストのレコードを、キーの小さい順に整列させる。
【０２４３】
このようにして、所要時間が短い手順候補が上位になるように、手順候補を整列させることができる。
次に、よりユーザの操作環境に合致する手順候補が上位になるように、手順候補を整列させる処理について説明する。なおユーザの操作環境に合致する手順候補とは、手順候補内の操作で入力されたコマンドの、ＩＣＴシステムでのカバー率が高い手順候補である。
【０２４４】
図５２は、手順候補整列処理の第５の例を示すフローチャートである。手順候補整列処理の第５の例は、よりユーザの操作環境に合致する手順候補を上位にする場合の整列処理手順である。以下、図５２に示す処理をステップ番号に沿って説明する。
【０２４５】
［ステップＳ２７１］整列部１９５は、具体化された手順候補群を集合Ｈに設定する。
［ステップＳ２７２］整列部１９５は、手順候補群を含む集合Ｈが空か否かを判断する。手順候補群を含む集合Ｈが空の場合、整列部１９５は処理をステップＳ２８０に進める。手順候補群が空でない場合は、整列部１９５は処理をステップＳ２７３に進める。
【０２４６】
［ステップＳ２７３］整列部１９５は、手順候補群を含む集合Ｈから手順候補を１つ取り出し、取り出した手順候補の手順候補番号を変数Ｚに設定する。このとき整列部１９５は、合計を示す変数ｓと操作数を示す変数ｔとの値を共に０に設定する。
【０２４７】
［ステップＳ２７４］整列部１９５は、変数Ｚに設定された手順候補番号で示される手順候補の先頭のノードから調査し、未処理の次の操作を示すノードがあるか否かを判断する。整列部１９５は、次の操作を示すノードがある場合、そのノードの名前に設定されている操作を変数ｐに設定し、処理をステップＳ２７５に進める。また整列部１９５は、次の操作を示すノードがない場合、処理をステップＳ２７８に進める。
【０２４８】
［ステップＳ２７５］整列部１９５は、変数ｔの値を１だけカウントアップする。
［ステップＳ２７６］整列部１９５は、変数ｐに設定された操作で入力されたコマンドが、実行可能コマンド記憶部１７０内の手順要求を行ったユーザに対応するコマンドリスト（図１３参照）にあるか否かを判断する。コマンドがコマンドリストにある場合、整列部１９５は処理をステップＳ２７７に進める。コマンドがコマンドリストにない場合、整列部１９５は処理をステップＳ２７４に進める。
【０２４９】
［ステップＳ２７７］整列部１９５は、変数ｓの値を１だけカウントアップする。その後、整列部１９５は処理をステップＳ２７４に進める。
［ステップＳ２７８］整列部１９５は、変数ｓの値を変数ｔの値で除算し、カバー率を示す変数ｕに設定する。
【０２５０】
［ステップＳ２７９］整列部１９５は、手順候補リストに、変数ｕの値をキーとし、変数Ｚに設定された手順候補番号を値としたレコードを追加する。その後、整列部１９５は処理をステップＳ２７２に進める。
【０２５１】
［ステップＳ２８０］整列部１９５は、手順候補リストのレコードを、キーの大きい順に整列させる。
［ステップＳ２８１］整列部１９５は、手順候補リストのレコードの値の集合を、手順候補リスト内でのレコードの順を崩さずに、整列結果を示す集合Ｒに設定する。
【０２５２】
このようにして、ユーザの操作環境に合致する手順候補が上位になるように、手順候補を整列させることができる。
次に、第２の例と第５の例とに示した手順候補整列処理による整列例を具体的に説明する。なお以下の例では、ユーザＩＤ「ユーザ＃４」のユーザ２４が手順要求を行ったものとする。
【０２５３】
まず第２の例で示した、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように手順候補を整列させた場合について説明する。
図５３は、各手順候補に含まれる操作の操作数の例を示す図である。図５３に示した操作数は、図１４に示した操作実績表１８１に基づいている。操作実績表１８１では、ユーザ２４による操作実績は、「ssh」が２０回、「yum update」が１５回、「apache2ctl start」が１０回、「apache2ctl stop」が１０回である。「telnet」と「apt-get install apache2」とについては、操作実績表１８１に登録されておらず、操作実績が０回であるものとする。このような操作実績に基づいて、各手順候補９１〜９４の操作実績の合計が計算される。その結果、手順候補９１の操作実績の合計が５５回、手順候補９２の操作実績の合計が４０回、手順候補９３の操作実績の合計が３５回、手順候補９４の操作実績の合計が２０回となる。
【０２５４】
そこで、操作実績の合計値が大きい順に、手順候補リスト内の手順候補が並べられる。
図５４は、整列された手順候補リストの一例を示す図である。手順候補リスト９５には、手順候補番号と合計値との欄が設けられている。手順候補番号の欄には、手順候補の手順候補番号が設定される。合計値の欄には、手順候補の操作実績の合計値が設定される。図５４に示すように、手順候補リスト９５は、操作実績の合計値が大きいほど上位に設定されている。これにより、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になる。
【０２５５】
次に第５の例で示した、よりユーザの操作環境に合致する手順候補が上位になるように手順候補を整列させた場合について説明する。
図５５は、各手順候補に含まれる操作に対応するコマンドの有無の例を示す図である。図５５に示したコマンドの有無は、図１３に示したコマンドリスト１７１に基づいている。コマンドリスト１７１には、「ssh」、「yum」、「apache2ctl」、「telnet」のコマンドが登録されている。しかしコマンドリスト１７１には、「apt-get」のコマンドは登録されていないものとする。この場合、手順候補９１，９３については、すべての操作に対応するコマンドが存在するが、手順候補９２，９４についてはそれぞれ１つずつの操作について、対応するコマンドが存在しない。
【０２５６】
このようなコマンドの有無の調査結果に基づいて、各手順候補のコマンドのカバー率が計算され、手順候補リストに登録される。そして、コマンドのカバー率が多い順に手順候補が並べられる。なお、コマンドカバー率は、手順候補に含まれる操作のうち、操作で入力されたコマンドがＩＣＴシステム実行可能な操作の数を、手順候補に含まれる全操作数で除算した値である。
【０２５７】
図５６は、コマンドカバー率で整理された手順候補リストの一例を示す図である。図５６に示す手順候補リスト９６は、手順候補番号とコマンドカバー率との欄が設けられている。手順候補番号の欄には、手順候補の手順候補番号が設定される。コマンドカバー率の欄には、手順候補のコマンドカバー率が設定される。そして手順候補リスト９６は、コマンドカバー率が高いほど上位に設定されている。図５６の例では、  手順候補番号「１」と「３」の各手順候補９１，９３は、コマンドカバー率が「１」であり、上位に並べられている。手順候補番号「２」と「４」の各手順候補９２，９４は、コマンドカバー率が「０．７５」であり、下位に並べられている。
【０２５８】
＜手順候補提示処理＞
次に手順候補提示処理（図４０のステップＳ２０５）について説明する。
図５７は、手順候補提示処理の手順の一例を示すフローチャートである。以下、図５７に示す処理をステップ番号に沿って説明する。
【０２５９】
［ステップＳ２９１］整列部１９５は、手順要求を送信した端末装置へ、手順候補リストの内容を送信する。
［ステップＳ２９２］手順実行部１９６は、端末装置からの手順候補選択入力を受け付ける。
【０２６０】
［ステップＳ２９３］手順実行部１９６は、手順候補選択入力を行った端末装置に対応するＩＣＴシステムに対して、選択された手順候補に示される操作手順で、操作情報に示される一連の操作をＩＣＴシステムに対して実行する。
【０２６１】
［ステップＳ２９４］情報取得部１９１は、実行された一連の操作に基づいて、手順候補を選択したユーザに対応する操作実績を更新する。例えば情報取得部１９１は、手順候補を選択したユーザの操作実績表に対して、実行された一連の操作に含まれる操作情報に対応する実績の値をカウントアップする。
【０２６２】
［ステップＳ２９５］情報取得部１９１は、実行された一連の操作の各操作に応じた処理の所要時間に基づいて、所要時間実績を更新する。例えば情報取得部１９１は、操作情報の内容がＩＣＴシステムに入力された、その入力に対する応答が返ってくる時間を計測し、その操作の所要時間とする。そして情報取得部１９１は、計測した所要時間により、既に所要時間実績表１８０ａに登録されている該当操作の所要時間を更新する。
【０２６３】
このようにして、手順要求に応じて手順候補のリストをユーザに提示することができると共に、選択された手順候補に示された一連の操作をＩＣＴシステムに対して実行させることができる。なお、図５７の例では、管理サーバ１００が一連の操作を実行しているが、ユーザが端末装置を用いて提示された手順候補を参照しながら、ＩＣＴシステムに対して手順候補に示される操作を順に入力することもできる。
【０２６４】
図５８は、端末装置に表示される手順候補リストの第１の例を示す図である。図５８には、手順要求を行ったユーザによる利用実績がより多い手順候補が上位になるように手順候補を整列させた場合に、端末装置に表示される手順候補表示画面３１０が画示されている。
【０２６５】
手順候補表示画面３１０には、手順候補リスト３１１が表示されている。手順候補リスト３１１の各手順候補の横には、選択ボタン３１２が設けられている。ユーザは、複数の選択ボタン３１２の１つを選択することで、手順候補の内容を参照することができる。選択された手順候補の内容は、手順候補表示部３１３に表示される。
【０２６６】
また手順候補表示画面３１０には、ＯＫボタン３１４とキャンセルボタン３１５とが設けられている。ＯＫボタン３１４は、選択した手順候補に示される手順で操作を行う場合に選択するボタンである。ＯＫボタン３１４が押下されると、端末装置から管理サーバ１００へ、ＯＫボタン３１４が押下されたときに選択されていた手順候補の手順候補番号と、その手順候補が選択された旨の情報とが送信される。キャンセルボタン３１５が押下されると、管理サーバ１００への手順候補選択の送信を行わずに、手順候補表示画面３１０が閉じる。
【０２６７】
図５９は、端末装置に表示される手順候補リストの第２の例を示す図である。図５９には、よりユーザの操作環境に合致する手順候補が上位になるように手順候補を整列させた場合に、端末装置に表示される手順候補表示画面３２０が画示されている。
【０２６８】
手順候補表示画面３２０には、図５８の手順候補表示画面３１０と同様に、手順候補リスト３２１、選択ボタン３２２、手順候補表示部３２３、ＯＫボタン３２４、およびキャンセルボタン３２５が設けられている。
【０２６９】
このように手順候補リストと手順候補の内容が端末装置に表示されることで、ユーザは、適切な操作手順を容易に判断することができると共に、表示された操作手順に従って容易にＩＣＴシステムへの操作を行うことができる。その結果、ユーザによるＩＣＴシステムの管理に関する作業効率が向上する。
【０２７０】
しかも、ユーザが端末装置からＩＣＴシステムにアクセスし、ＩＣＴシステムに対する操作を行う場合であっても、手順候補表示画面に表示された手順通りの操作を行えばよいため、操作ミスの発生が抑止される。
【０２７１】
しかも、第２の実施の形態では、管理サーバ１００は、あるユーザが実行した操作手順を手順ログとして保存し、その手順ログを正規化した上で手順グラフを作成している。これにより、各ユーザ２１〜２４がＩＣＴシステム４１〜４４に対して行った操作手順を再利用することができる。すなわち、管理サーバ１００の管理者が、テンプレートの形で手順グラフを作成せずにすむ。そのため管理サーバ１００の管理負担が軽減される。
【０２７２】
さらに第２の実施の形態では、管理サーバ１００が、操作手順を保存するときに、ユーザの複数の手順ログを、構成情報を利用し正規化して重ねあわせた有向グラフを、手順グラフとする。この際、管理サーバ１００は、操作手順内の各操作のうち、異なるＩＣＴシステムに対する操作であっても、同じ要素（物理的なハードウェア資源または仮想マシンのＯＳやアプリケーションなどのソフトウェア資源）に対する同じ操作は、同じ操作とみなす。そして管理サーバ１００は、その手順グラフから、手順要求を行ったユーザの入出力情報を元に操作手順を抽出し、そのユーザの構成情報を埋め込む。これにより、手順ログに示された操作手順のみではなく、複数の手順ログに示された操作を組み合わせた手順候補を生成することが可能である。その結果、手順要求を行ったユーザに対して、より適切な手順候補を提示することが可能となる。
【０２７３】
さらに、管理サーバ１００は、一連の操作が実行された対象の要素（物理的なハードウェア資源または仮想マシンのＯＳやアプリケーションなどのソフトウェア資源）を、ＩＣＴシステムの構成情報から取得し、変更対象を表すマッチパターンを生成している。このマッチパターンを用いることで、手順グラフに含まれる変数名を、手順要求を行ったユーザが管理するＩＣＴシステムの固有情報に変換することが可能となる。しかも手順ログを正規化する際にマッチパターンが自動生成されるため、管理サーバ１００がマッチパターンを登録する手間が省け、管理負担が軽減される。
【０２７４】
さらに、第２の実施の形態では、手順要求に応じて抽出された操作手順を手順候補とし、所定の基準に基づいて手順候補を整列させた後、ユーザに提示する。これにより、ユーザは、ユーザの求めるＩＣＴシステムの構成変更を実現可能な複数の手順の中から、適切な手順を容易に判断することができる。
【０２７５】
なお手順候補を整列させる基準は、手順要求を行ったユーザが、任意に選択することができる。これにより、ユーザの目的に沿った手順候補を優先的にユーザに提示することが可能となる。
【０２７６】
以上のように、第２の実施の形態によれば、管理サーバ１００の管理者の管理負担を増加させずに、利用者の操作手順の作成工数と運用工数の多大な削減効果を得ることができる。
【０２７７】
〔その他の実施の形態〕
上記の第２の実施の形態は、ＩＣＴシステムの構成の変更に係る手順候補を提示する例であるが、ＩＣＴシステムに限らず、第２の実施の形態に示す管理サーバ１００は、様々なシステムに対する操作手順の手順候補を生成可能である。例えば、内蔵されたコンピュータによって動作制御される装置に対する設定内容の変更に係る操作ログを、管理サーバ１００と同様の機能を有する装置で取得し、取得した手順ログに基づいて手順候補を提示することも可能である。
【０２７８】
また上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１や管理サーバ１００が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０２７９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２８０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２８１】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０２８２】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０２８３】
１  情報処理装置
１ａ  手順情報記憶部
１ｂ  抽出部
１ｃ  構成情報記憶部
１ｄ  位置情報記憶部
１ｅ  置換部
２  端末装置
３ａ，３ｂ，・・・  手順情報
４ａ，４ｂ，・・・  構成情報
５ａ，５ｂ，・・・  位置情報
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2012124018.tif 000062
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2012124018.tif 000063
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2012124018.tif 000064
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図１８
【補正方法】変更
【補正の内容】
【図１８】
2012124018.tif 000065
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図３０
【補正方法】変更
【補正の内容】
【図３０】
2012124018.tif 000066
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図４２
【補正方法】変更
【補正の内容】
【図４２】
2012124018.tif 000067
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図４６
【補正方法】変更
【補正の内容】
【図４６】
2012124018.tif 000068
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図４８
【補正方法】変更
【補正の内容】
【図４８】
2012124018.tif 000069
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図４９
【補正方法】変更
【補正の内容】
【図４９】
2012124018.tif 000070
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図５１
【補正方法】変更
【補正の内容】
【図５１】
2012124018.tif 000071
【手続補正１２】
【補正対象書類名】図面
【補正対象項目名】図５２
【補正方法】変更
【補正の内容】
【図５２】
2012124018.tif 000072
【国際調査報告】
2012124018.tif 000073
2012124018.tif 000074
2012124018.tif 000075
2012124018.tif 000076