(57)【要約】【課題】操作対象のシステムに合わせた操作手順を自動生成できる可能性を高める。【解決手段】判断手段１１は、過去に実施された作業の作業ログ２，３に基づいて、操作に応じた処理を実行するシステムに期待される状態を示す事前条件と、操作に応じた処理を実行したシステムに期待される状態を示す事後条件とを判断する。関連付け手段１２は、複数の操作それぞれを、当該操作の事後条件を事前条件とする操作に関連付ける。探索手段１４は、操作対象システム１が満たしている初期条件を事前条件とする操作から、関連付けられた操作を辿り、作業後の操作対象システム１の目標とする状態を示す目標条件を事後条件とする操作に到達する経路を探索する。生成手段１５は、探索された当該経路上の操作を並べた操作手順８を生成する。【選択図】図１
2015170283.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
過去に実施されたシステムの変更作業で行われた複数の操作と、前記複数の操作に応じて実行された処理とを記録した作業ログに基づいて、前記複数の操作それぞれについて、操作に応じた処理を実行するシステムに期待される状態を示す事前条件と、操作に応じた処理を実行したシステムに期待される状態を示す事後条件とを判断し、
前記複数の操作それぞれを、当該操作の事後条件を事前条件とする操作に関連付け、
操作対象システムが満たしている初期条件を事前条件とする操作から、関連付けられた操作を辿り、作業後の前記操作対象システムの目標とする状態を示す目標条件を事後条件とする操作に到達する経路を探索し、
探索された当該経路上の操作を並べた操作手順を生成する、
処理を実行させる操作探索プログラム。
【請求項２】
操作間の関連付けでは、前記複数の操作それぞれを遷移元とし、遷移元の操作の事後条件を事前条件とする操作を遷移先とし、遷移元の操作から遷移先の操作への遷移を定義したグラフを作成し、
経路の探索では、前記操作対象システムが満たしている前記初期条件と、作業によって前記操作対象システムが満たすこととなる前記目標条件とに基づき、前記初期条件を事前条件とする操作から、既に辿った操作の事後条件または前記初期条件を事前条件とする操作への遷移を辿って、前記目標条件を事後条件とする操作に到達する、前記グラフ上での経路を探索する、
ことを特徴とする請求項１記載の操作探索プログラム。
【請求項３】
前記コンピュータに、さらに、前記作業ログに基づいて、前記複数の操作それぞれに応じた処理を実行可能な、システムの状態を求める処理を実行させ、
経路の探索では、前記操作対象システムの状態において実行可能な操作への遷移を辿ることを特徴とする請求項１または２に記載の操作探索プログラム。
【請求項４】
前記コンピュータに、さらに、事前条件または事後条件において、システム内に存在すると定義された情報について、前記作業ログに基づいて、当該情報を使用可能なシステムの状態を求める処理を実行させ、
経路の探索では、前記グラフに含まれる操作のうち、事前条件と事後条件とのそれぞれで使用する情報が前記操作対象システムで使用可能である操作への遷移を辿ることを特徴とする請求項１乃至３のいずれかに記載の操作探索プログラム。
【請求項５】
前記コンピュータに、さらに、生成された操作手順にしたがって、前記操作対象システムを操作する処理を実行させることを特徴とする請求項１乃至４のいずれかに記載の操作探索プログラム。
【請求項６】
前記コンピュータに、さらに、
操作手順が生成されるごとに、当該操作手順に示された最初の操作を、前記操作対象システムに対して実行し、
操作が実行されるごとに、当該操作の実行によって前記操作対象システムが満たした条件を、当該操作の事後条件に加えて前記グラフを更新し、
前記グラフが更新されるごとに、当該操作の実行によって前記操作対象システムが満たした条件を前記初期条件に加え、前記初期条件を事前条件とする未実行の操作から、既に辿った操作の事後条件または前記初期条件を事前条件とする操作への遷移を辿って、前記目標条件を事後条件とする操作に到達する、前記グラフ上での経路を探索し、
経路が探索されるごとに、探索された当該経路上の操作を並べた操作手順を生成する、
処理を実行させることを特徴とする請求項１乃至４のいずれかに記載の操作探索プログラム。
【請求項７】
コンピュータが、
過去に実施されたシステムの変更作業で行われた複数の操作と、前記複数の操作に応じて実行された処理とを記録した作業ログに基づいて、前記複数の操作それぞれについて、操作に応じた処理を実行するシステムに期待される状態を示す事前条件と、操作に応じた処理を実行したシステムに期待される状態を示す事後条件とを判断し、
前記複数の操作それぞれを、当該操作の事後条件を事前条件とする操作に関連付け、
操作対象システムが満たしている初期条件を事前条件とする操作から、関連付けられた操作を辿り、作業後の前記操作対象システムの目標とする状態を示す目標条件を事後条件とする操作に到達する経路を探索し、
探索された当該経路上の操作を並べた操作手順を生成する、
操作探索方法。
【請求項８】
過去に実施されたシステムの変更作業で行われた複数の操作と、前記複数の操作に応じて実行された処理とを記録した作業ログに基づいて、前記複数の操作それぞれについて、操作に応じた処理を実行するシステムに期待される状態を示す事前条件と、操作に応じた処理を実行したシステムに期待される状態を示す事後条件とを判断する判断手段と、
前記複数の操作それぞれを、当該操作の事後条件を事前条件とする操作に関連付ける関連付け手段と、
操作対象システムが満たしている初期条件を事前条件とする操作から、関連付けられた操作を辿り、作業後の前記操作対象システムの目標とする状態を示す目標条件を事後条件とする操作に到達する経路を探索する探索手段と、
探索された当該経路上の操作を並べた操作手順を生成する生成手段と、
を有する操作探索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作探索プログラム、操作探索方法、および操作探索装置に関する。
【背景技術】
【０００２】
ＩＣＴ（Information and Communication Technology）システムなどのシステムの運用管理では、ＯＳ（Operating System）やミドルウェアのインストール、バージョンアップなどにより、システムの構成を変更することがある。
【０００３】
システムの構成を変更する場合に有用な技術として、例えば、新たに導入するソフトウェアの信頼性を確保するために、モジュール単体試験を効率的に行うことができるモジュール試験支援装置が考えられている。また、バッチファイルの実行環境正当性、整合性、及び連続実行性を効率的に検証する技術も考えられている。
【０００４】
また、システムの構成を変更する場合、構成変更作業を効率化することも重要である。システムの構成を変更する場合、例えばシステムの起動・停止、システムの設定値変更、ソフトウェア更新などの作業が行われる。このとき、作業が発生するたびに、作業手順を管理者が一から考えていたのでは、作業効率が悪く、間違いも起こりやすい。
【０００５】
そこで、既にある操作手順を流用して、操作対象のシステムに合わせた操作手順を作成することが考えられている。例えば、システムの構成変更内容に応じた構成変更の操作手順が示された手順情報の集合に基づいて、変更対象のシステムに合わせた固有情報が設定された手順情報を出力する技術がある。これにより、システムの構成変更作業の効率化を促進させることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０６−２５０８８４号公報
【特許文献２】特開２００６−１４６５０３号公報
【特許文献３】国際公開第２０１２／１２４０１８号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来の技術は、過去に実際に実行された一連の操作手順をひとまとまりとして再利用するものであり、操作対象のシステムがその一連の操作手順全体を実行できる環境になければ再利用できず、再利用の条件が厳しい。例えば一連の操作手順のうちの、一部の操作でも操作対象のシステムが対応できなければ、その一連の操作手順を再利用して、操作対象システムに対する操作手順を作成することはできない。そのため、過去に実行された作業の操作手順を再利用して作成できる操作手順のパターンに限りがあり、目的に合った操作手順を生成ができないことがある。
【０００８】
１つの側面では、本件は、操作対象のシステムを所望の状態にするための操作手順を自動生成できる可能性を高めることを目的とする。
【課題を解決するための手段】
【０００９】
１態様では、コンピュータに以下の処理を実行させる操作探索プログラムが提供される。コンピュータは、過去に実施されたシステムの変更作業で行われた複数の操作と、複数の操作に応じて実行された処理とを記録した作業ログに基づいて、事前条件と事後条件とを判断する。事前条件は、操作に応じた処理を実行するシステムに期待される状態を示す。事後条件は、操作に応じた処理を実行したシステムに期待される状態を示す。次にコンピュータは、複数の操作それぞれを、当該操作の事後条件を事前条件とする操作に関連付ける。さらにコンピュータは、操作対象システムが満たしている初期条件を事前条件とする操作から、関連付けられた操作を辿り、作業後の操作対象システムの目標とする状態を示す目標条件を事後条件とする操作に到達する経路を探索する。そしてコンピュータは、探索された経路上の操作を並べた操作手順を生成する。
【発明の効果】
【００１０】
１態様によれば、操作対象のシステムに合わせた操作手順を自動生成できる可能性が高まる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る操作探索装置の機能構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いる管理サーバのハードウェアの一構成例を示す図である。
【図４】第２の実施の形態に係るＩＣＴシステムおよび管理サーバの機能を示すブロック図である。
【図５】ログＤＢに格納される作業ログの一例を示す図である。
【図６】ＣＭＤＢの一例を示す図である。
【図７】条件判定辞書の一例を示す図である。
【図８】グラフＤＢの一例を示す図である。
【図９】操作手順の自動生成の処理手順を示すフローチャートである。
【図１０】グラフ作成処理の手順の一例を示すフローチャートである。
【図１１】操作の属性の取得方法の一例を示す図である。
【図１２】事前／事後条件の判断例を示す図である。
【図１３】条件の属性の取得方法の一例を示す図である。
【図１４】マージ処理の一例を示す図である。
【図１５】手順探索の処理手順の一例を示すフローチャートである。
【図１６】手順探索の一例を示す図である。
【図１７】第３の実施の形態に係るＩＣＴシステムの構成例を示す図である。
【図１８】第３の実施の形態における操作手順の自動生成処理の一例を示すフローチャートである。
【図１９】手順探索・実行処理の手順の一例を示すフローチャートである。
【図２０】第３の実施の形態の手順探索の一例を示す第１の図である。
【図２１】第３の実施の形態の手順探索の一例を示す第２の図である。
【図２２】第３の実施の形態の手順探索の一例を示す第３の図である。
【図２３】第３の実施の形態の手順探索の一例を示す第４の図である。
【図２４】第３の実施の形態の手順探索の一例を示す第５の図である。
【図２５】第３の実施の形態の手順探索の一例を示す第６の図である。
【図２６】第３の実施の形態の手順探索の一例を示す第７の図である。
【図２７】第３の実施の形態の手順探索の一例を示す第８の図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず、第１の実施の形態について説明する。
【００１３】
図１は、第１の実施の形態に係る操作探索装置の機能構成例を示す図である。操作探索装置１０は、操作対象システム１を所望の状態にするための操作手順を自動生成するものである。そのために操作探索装置１０は、判断手段１１、関連付け手段１２、記憶手段１３、探索手段１４、生成手段１５、および操作手段１６を有する。
【００１４】
判断手段１１は、過去に実施されたシステムの変更作業で行われた複数の操作と、複数の操作に応じて実行された処理とを記録した作業ログ２，３を取得する。作業ログ２，３には、システムの変更作業時に、そのシステムに対して実施された操作内容と、その操作に応じてシステムで実行された処理とが記録されている。操作内容は、例えばシステムに入力されたコマンドである。操作に応じて実行された処理とは、例えばコマンドに応じたファイルの読み込み処理、ファイルの書き込み処理などである。
【００１５】
そして判断手段１１は、取得した作業ログ２，３に基づいて、複数の操作それぞれについて、操作に応じた処理を実行するシステムに期待される状態を示す事前条件と、操作に応じた処理を実行したシステムに期待される状態を示す事後条件とを判断する。以下、単に「条件」といった場合、事前条件と事後条件とを包含するものとする。
【００１６】
事前条件は、例えば操作に応じて実行される処理ごとに存在する。事前条件としては、例えば「操作に応じた処理の実行時に読み込むファイルをシステムが有している。」という条件がある。この場合、操作に応じた処理の実行時に読み込むファイルのリストが事前条件内に定義される。
【００１７】
事後条件は、例えば操作に応じた処理ごとに存在する。事後条件としては、例えば「操作に応じた処理の実行により生成されたファイルをシステムが有している。」という条件がある。この場合、操作に応じた処理の実行により生成されたファイルのリストが事後条件内に定義される。
【００１８】
操作ごとの事前条件と事後条件とを判断した判断手段１１は、例えば各操作に事前条件と事後条件とを関連付けた条件定義情報４を生成し、関連付け手段１２に送信する。
関連付け手段１２は、複数の操作それぞれを、その操作の事後条件を事前条件とする操作に関連付ける。例えば関連付け手段１２は、条件定義情報４に基づいてグラフ５を作成する。グラフ５は、複数の操作それぞれを遷移元とし、遷移元の操作の事後条件を事前条件とする操作を遷移先とし、遷移元の操作から遷移先の操作への遷移を定義したものである。ある操作から別の操作への遷移は、グラフ５上では、例えば事前条件または事後条件を示す条件を経由した遷移として定義される。関連付け手段１２は、作成したグラフ５を記憶手段１３に格納する。
【００１９】
記憶手段１３は、グラフ５を記憶する。例えば記憶手段１３として、不揮発性の記憶媒体を用いることができる。なおグラフ５を作成後、すぐにグラフ５を用いた経路探索が実行される場合、記憶手段１３として主記憶装置としてのメモリを用いてもよい。
【００２０】
探索手段１４は、操作対象システム１が満たしている初期条件を事前条件とする操作から、関連付けられた操作を辿り、作業後の操作対象システム１の目標とする状態を示す目標条件を事後条件とする操作に到達する経路を探索する。例えば探索手段１４は、探索条件６に基づいて、グラフ５内の経路を探索する。探索条件６には、操作対象システム１が満たしている初期条件と、作業によって操作対象システム１が満たすこととなる目標条件とが含まれている。例えば探索手段１４は、初期条件を事前条件とする操作から、既に辿った操作の事後条件または初期条件を事前条件とする操作への遷移を辿って、目標条件を事後条件とする操作に到達する、グラフ５上での経路を探索する。探索手段１４は、探索結果７を生成手段１５に送信する。
【００２１】
生成手段１５は、探索結果７に基づいて、探索された経路上の操作を並べた操作手順８を生成する。そして生成手段１５は、生成した操作手順８を操作手段１６に送信する。
操作手段１６は、操作手順８にしたがって、操作対象システム１に対する操作を行う。
【００２２】
このような操作探索装置１０によれば、作業ログ２，３が入力されると、判断手段１１により、取得した作業ログ２，３に基づいて、複数の操作それぞれについて事前条件と事後条件とが判断される。図１の例では、作業ログ２には「操作１」と「操作２」とが含まれており、作業ログ３には「操作３」と「操作４」とが含まれている。そこで４つの操作それぞれについて、事前条件と事後条件とが判断される。そして判断手段１１は、各操作の事前条件と事後条件とを示す条件定義情報４を生成する。
【００２３】
条件定義情報４は、例えば事前条件または事後条件を示すノード、操作それぞれをノードとしてグラフで表すことができる。この場合、事前条件のノードと操作のノードとがエッジで接続され、操作と事後条件とがエッジで接続される。
【００２４】
次に関連付け手段１２により、操作ごとの事前条件と事後条件とが定義された条件定義情報４に基づいて、グラフ５が作成される。図１の例では、「操作１」の事後条件に「条件２」があり、「操作２」の事前条件に「条件２」がある。そこで関連付け手段１２は、条件定義情報４において個別に存在する「操作１」と「操作２」とのグラフを統合する。例えば「操作１」のノードにエッジで接続された「条件２」のノードに、「操作２」のノードをエッジで接続する。同様に、条件の同一性に基づいて、条件定義情報４内の操作ごとのグラフが統合され、最終的なグラフ５となる。作成されたグラフ５は、記憶手段１３に格納される。
【００２５】
その後、探索条件６が入力されると、探索手段１４によって、グラフ５から、探索条件６に応じた経路が探索される。図１の例では、初期条件を「条件１」、目標条件を「条件６」とする探索条件６が入力されている。グラフ５では、初期条件である「条件１」を事前条件とするのは「操作１」である。「操作１」の事後条件として「条件３」が存在し、その「条件３」は「操作４」の事前条件でもある。すなわち「操作１」から「操作４」へ、「条件３」を介した遷移が存在する。「操作４」の事後条件としては、目標条件である「条件６」が存在する。その結果、グラフ５上で「操作１」と「操作４」とを通る遷移経路が、探索結果７として出力される。
【００２６】
探索結果７に基づいて、生成手段１５により操作手順８が生成される。図１の例では、「操作１」、「操作４」の順で操作することを示す操作手順８が生成されている。そして操作手順８にしたがって、操作手段１６により操作対象システム１に対する操作が行われる。その結果、操作対象システム１では操作に応じた処理が実行され、操作対象システム１において目標条件が満たされるようになる。
【００２７】
このように第１の実施の形態に示す操作探索装置１０によれば、過去に実施された作業を個々の操作単位で再利用した操作手順８を作成することができ、その結果、操作対象のシステムに合わせた操作手順を自動生成できる可能性が高まる。
【００２８】
例えば図１の例では、作業ログ２，３のいずれも、初期条件「条件１」を満たすシステムが、目標条件「条件６」を満たすように変更する作業ではない。そのため、過去に実施された操作手順を表す作業ログ２，３に基づいて、過去に実施された操作手順の一部を再利用しようとしても、探索条件６を満たす操作手順は作成できない。第１の実施の形態では、過去に実施された作業の操作手順を操作ごとに分解し、条件の共通性によって作業を組み合わせて、探索条件６に合致する操作手順８を作成することができる。換言すると、過去に実行された作業の操作手順を、細かい粒度で再利用することができる。その結果、生成可能な操作手順の種類の豊富化が図られ、操作対象システム１が目標条件を満たすようにするための操作手順を、高い確率で自動生成できるようになる。
【００２９】
ところで、生成した操作手順８に沿って操作対象システム１を操作したときに、目的通りの処理が実行されない場合があり得る。例えば処理を実行するプログラムの版数の違いにより、処理結果が異なる場合がある。そこで操作探索装置１０において、操作手順８に応じた処理が実行できるかどうかを、予め判断するようにしてもよい。
【００３０】
例えば、各操作に応じた処理を実行可能なシステムの状態を求め、操作対象システム１の状態で動作可能な操作により操作手順８を作成するようにしてもよい。その場合、例えば判断手段１１が、作業ログ２，３に基づいて、複数の操作それぞれに応じた処理を実行可能な、システムの状態を求める。そして関連付け手段１２は、操作対象システム１の状態において動作可能な操作への遷移を辿ることで経路を探索する。これにより、生成された操作手順８が操作対象システムに適用できることに関する信頼性を向上させることができる。
【００３１】
また操作に応じた処理で使用する情報について、操作対象システム１で使用可能であることを確認済みの操作手順８を作成するようにしてもよい。その場合、判断手段１１は、事前情報または事後条件において、システム内に存在すると定義された情報について、作業ログ２，３に基づいて、その情報を使用可能なシステムの状態を求める。そして関連付け手段１２は、グラフ５に含まれる操作のうち、事前条件と事後条件とのそれぞれで使用する情報が操作対象システム１で使用可能である操作への遷移を辿ることで、経路を探索する。これにより、生成された操作手順が操作対象システムに適用できることに関する信頼性を向上させることができる。
【００３２】
上記説明では、過去に実行された作業ログ２，３の内容のみをグラフ５に反映させているが、操作対象システム１への操作結果に応じて、逐次グラフ５を更新することもできる。この場合、操作探索装置１０は、例えば、操作手順８を作成後に、以下の処理を繰り返し実行する。
［手順１］操作手段１６が、操作手順が生成されるごとに、その操作手順に示された最初の操作を、操作対象システム１に対して実行する。
［手順２］関連付け手段１２が、操作が実行されるごとに、その操作の実行によって操作対象システム１が満たした条件を、その操作の事後条件に加えてグラフ５を更新する。
［手順３］探索手段１４が、操作が実行されるごとに、操作の実行によって操作対象システム１に生じた条件を初期条件に加え、初期条件を事前条件とする未実行の操作から、既に辿った操作の事後条件または初期条件を事前条件とする操作への遷移を辿って、目標条件を事後条件とする操作に到達する、グラフ５上での経路を探索する。
［手順４］生成手段１５が、経路が探索されるごとに、探索された経路上の操作を並べた操作手順を生成する。
【００３３】
以上の［手順１］〜［手順４］の処理が、目標条件を事後条件とする操作が実行されるまで繰り返される。これにより、過去に行われた作業の作業ログ２，３だけでは構築できない操作手順を生成することができ、操作対象システム１が目標条件を満たすようにするための操作手順を、高い確率で自動生成できるようになる。
【００３４】
なお、図１に示す判断手段１１、関連付け手段１２、探索手段１４、生成手段１５、および操作手段１６は、例えば操作探索装置１０が有するプロセッサにより実現することができる。また、記憶手段１３は、例えば操作探索装置１０が有するメモリにより実現することができる。また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【００３５】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、多数のＩＣＴシステムから作業ログを収集して、特定のＩＣＴシステムに対する操作手順を自動生成できるようにしたものである。
【００３６】
図２は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態では、図１に示した第１の実施の形態の操作探索装置１０の一例として、管理サーバ１００が設けられている。管理サーバ１００には、ネットワーク２０を介して複数のＩＣＴシステム４１〜４４が接続されている。複数のＩＣＴシステム４１〜４４は、それぞれサーバ、ストレージ装置、ネットワークスイッチなどを含んでいる。
【００３７】
またネットワーク２０には、複数のユーザ５１〜５４それぞれが使用する端末装置３１〜３４が接続されている。ＩＣＴシステム４１〜４４は、それぞれ別個のユーザが管理している。またＩＣＴシステム４１〜４４は、それぞれ１以上のサーバで構成されている。
【００３８】
図２の例では、ユーザ５１は、端末装置３１を使用してＩＣＴシステム４１を管理する。またユーザ５２は、端末装置３２を使用してＩＣＴシステム４２を管理する。またユーザ５３は、端末装置３３を使用してＩＣＴシステム４３を管理する。またユーザ５４は、端末装置３４を使用してＩＣＴシステム４４を管理する。
【００３９】
管理サーバ１００は、ユーザ５１〜５４によるＩＣＴシステム４１〜４４の運用管理を支援するコンピュータである。管理サーバ１００は、ユーザ５１〜５４による端末装置３１〜３４を介したＩＣＴシステム４１〜４４に対する操作内容をＩＣＴシステム４１〜４４から取得し、作業ログとして保持する。また管理サーバ１００は、保持している作業ログに基づいて、作業内容に応じた操作手順を示すグラフを生成する。さらに管理サーバ１００は、ユーザ５１〜５４による端末装置３１〜３４からの手順要求に応じて、手順要求を操作するユーザが使用するＩＣＴシステムに適合する操作手順を生成し、手順要求を出力した端末装置に応答する。
【００４０】
管理サーバ１００は、多様な操作手順を生成可能とするため、沢山の作業者の手順の作業ログを操作単位に細切れにし、各操作の動作条件を明らかにしておき、操作をつなぎあわせて操作手順を生成する。
【００４１】
図３は、第２の実施の形態に用いる管理サーバのハードウェアの一構成例を示す図である。管理サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００４２】
メモリ１０２は、管理サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００４３】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００４４】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、管理サーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００４５】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４６】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４７】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４８】
機器接続インタフェース１０７は、管理サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４９】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００５０】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した操作探索装置１０も、図３に示した管理サーバ１００と同様のハードウェアにより実現することができる。
【００５１】
管理サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。管理サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理サーバ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また管理サーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５２】
図４は、第２の実施の形態に係るＩＣＴシステムおよび管理サーバの機能を示すブロック図である。ＩＣＴシステム４１〜４４は、それぞれ情報提供部４１ａ，４２ａ，４３ａ，４４ａを有している。情報提供部４１ａ，４２ａ，４３ａ，４４ａは、ＩＣＴシステム４１〜４４に対して実施された操作のログを取得し、管理サーバ１００に送信する。また情報提供部４１ａ，４２ａ，４３ａ，４４ａは、ＩＣＴシステム４１〜４４の構成情報を管理サーバ１００に送信する。ＩＣＴシステム４１〜４４の構成情報には、ハードウェアの状態を示す情報とソフトウェアの状態を示す情報とが含まれる。ハードウェアの状態には、ハードウェア構成と、各ハードウェアの現在の動作状態が含まれる。ソフトウェアの状態には、ソフトウェア構成と、各ソフトウェアの動作状態とが含まれる。
【００５３】
管理サーバ１００は、ユーザインタフェース（ＵＩ）１１０、情報収集部１２０、ログＤＢ１３０、ＣＭＤＢ１４０、条件判定辞書記憶部１５０、グラフ作成部１６０、グラフＤＢ１７０、手順探索部１８０、およびスクリプト実行部１９０を有する。
【００５４】
ＵＩ１１０は、端末装置３１〜３４からの入力を受け付ける。そして、ＵＩ１１０は、端末装置３１〜３４からの入力内容を、情報収集部１２０、グラフ作成部１６０、手順探索部１８０、またはスクリプト実行部１９０に送信する。また、ＵＩ１１０は、情報収集部１２０、グラフ作成部１６０、手順探索部１８０、またはスクリプト実行部１９０から受信した出力内容を、端末装置３１〜３４に送信する。
【００５５】
情報収集部１２０は、ＩＣＴシステム４１〜４４から作業ログや構成情報を収集する。情報収集部１２０は、収集した作業ログを、ログＤＢ１３０に格納する。また情報収集部１２０は、収集した構成情報を、構成管理データベース（ＣＭＤＢ：Configuration Management Database）１４０に格納する。
【００５６】
ログＤＢ１３０は、作業ログを記憶する。例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が、ログＤＢ１３０として使用される。
ＣＭＤＢ１４０は、ＩＣＴシステム４１〜４４の構成情報を記憶する。例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が、ＣＭＤＢ１４０として使用される。
【００５７】
条件判定辞書記憶部１５０は、作業ログから、操作の事前条件または事後条件を判定するための定義である、条件判定辞書を記憶する。例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が、条件判定辞書記憶部１５０として使用される。
【００５８】
グラフ作成部１６０は、ログＤＢ１３０と条件判定辞書記憶部１５０とを参照し、過去の作業で行われた操作間の関係を示すグラフを生成する。例えばグラフ作成部１６０は、作業ログを１操作ごとに分解し、それぞれのログを調査する。グラフ作成部１６０は、操作を、その操作により変化したシステム構成と結びつけ、「事前条件→操作→事後条件」という関係を集めた操作ごとのグラフを作成する。
【００５９】
「変化したシステム構成」には、ファイルの状態の変化、プロセスの状態の変化、通信状態の変化、資源の状態の変化などがある。ファイルの状態の変化には、ファイルの有無の変化、ファイルの内容の変更などがある。プロセスの状態の変化には、実行中プロセスの有無の変化、そのプロセスの内容の変化などがある。通信の状態の変化には、ＴＣＰ（Transmission Control Protocol）／ＵＤＰ（User Datagram Protocol）ポートの状態変化などがある。資源の状態の変化には、ＣＰＵ／メモリ／ＨＤＤ利用量の変化などがある。
【００６０】
またグラフ作成部１６０は、操作に関するログから、操作の条件（事前条件または事後条件）の属性を抽出し、グラフの条件のノードに付与する。条件の属性は、例えばファイルに関するファイルパス／所有者／アクセス権／バージョン／サイズ／ハッシュ値／日付など、プロセスに関する名前や引数などである。条件の属性により、その条件に示される情報を利用できるＩＣＴシステムの状態（動作環境）が分かる。例えばファイルのアクセス権により、そのファイルに対するアクセス権を有するユーザのプロセスでなければ、その条件を事前条件とする操作を実行できないことが分かる。
【００６１】
さらにグラフ作成部１６０は、操作に関するログから、操作の属性を抽出し、グラフの操作のノードに付与する。操作の属性には、実行時の権限（例：管理者）、実行システム構成の情報（ＯＳ種別、操作内のコマンドのファイルパス／バージョン／サイズ／ハッシュ値など）がある。操作の属性により、その操作に応じた処理を実行できるＩＣＴシステムの状態が分かる。例えば実行時の権限により、その操作を実行するための権限を有するユーザアカウントでなければ、ＩＣＴシステムの操作を実行できないことが分かる。
【００６２】
グラフ作成部１６０は、作成したグラフを、グラフＤＢ１７０に格納する。またグラフ作成部１６０は、ログＤＢ１３０を解析し、操作を実行するためのシステム環境や、事前条件または事後条件に示されるファイルを使用するためのシステム環境を判断することもできる。このようなシステム環境を判断した場合、グラフ作成部１６０は、操作、事前条件、事後条件に応じたシステム環境に関する情報を、属性としてグラフＤＢ１７０に格納する。
【００６３】
グラフＤＢ１７０は、作成されたグラフを記憶する。例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が、グラフＤＢ１７０として使用される。
手順探索部１８０は、初期条件（操作対象のシステムの現在の状態）と目標条件（操作対象のシステム上に作りたい状態）に基づいてグラフＤＢ１７０に格納されたグラフから、操作対象となるＩＣＴシステムが目標条件を満たすようにするための操作を探索する。例えば手順探索部１８０は、グラフＤＢ１７０に格納されたグラフから、初期条件と目標条件とをつなぐサブグラフを探索する。その際、手順探索部１８０は、例えばＣＭＤＢ１４０を参照し、操作対象のＩＣＴシステムで実行できる操作のみを探索対象とすることができる。例えば手順探索部１８０は、操作対象のシステム構成と、条件や操作の属性を比べ、操作対象のシステムにおいて適合している条件または操作のみを、探索対象とする。手順探索部１８０は、探索により得られた操作の配列から、操作手順を作成する。
【００６４】
スクリプト実行部１９０は、受け取った操作手順に基づいて、その操作を実行するためのスクリプトを作成する。例えばスクリプト実行部１９０は、探索処理により得られたサブグラフに含まれる操作を、トポロジカルソートなどで操作を順序に配慮しながら取り出して並べ、スクリプトとする。トポロジカルソートでは、ある操作Ａの事後条件を事前条件とする操作Ｂがあるとき、操作Ａが操作Ｂよりも前にあるという位置関係を保ったまま、探索によって見つけられた操作が一列に並べられる。そしてスクリプト実行部１９０は、作成したスクリプトに基づいて、操作対象のＩＣＴシステムに対して遠隔操作を実行する。
【００６５】
なお図４に示したグラフ作成部１６０は、図１に示した第１の実施の形態の判断手段１１と関連付け手段１２とを包含する機能の一例である。図４に示したログＤＢ１３０は、図１に示した第１の実施の形態の記憶手段１３の一例である。図４に示した手順探索部１８０は、図１に示した第１の実施の形態の探索手段１４と生成手段１５とを包含する機能の一例である。図４に示したスクリプト実行部１９０は、図１に示した第１の実施の形態の操作手段１６の一例である。
【００６６】
また、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。さらに、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００６７】
次に、ログＤＢ１３０に格納される情報について詳細に説明する。
図５は、ログＤＢに格納される作業ログの一例を示す図である。ログＤＢ１３０には、ＩＣＴシステム４１〜４４から収集した複数の作業ログ１３１，１３２，・・・が格納されている。作業ログ１３１，１３２，・・・には、システム構成変更作業においてＩＣＴシステムに対して行われた操作と、その操作によりＩＣＴシステムで実行された処理とが記述されている。
【００６８】
図５に示した作業ログ１３１は、Linux（登録商標）ディストリビューションの１つであるＣｅｎｔＯＳ（Community ENTerprise Operating System）上で“yum install mysql”などの操作を実行した時のログ（straceログ）の抜粋である。作業ログ１３１の例では、操作を実行するときに、execveシステムコールが実行されている。この場合、作業ログ１３１において「execve」の記述から次の「execve」の記述まで、または「execve」の記述から作業ログ１３１の終端まで（図５中の破線の枠内）が、個々の操作に関するログとなる。
【００６９】
操作に関するログには、その操作に応じて実行された処理が記述されている。操作に応じた実行された処理は、例えば操作がＩＣＴシステムにもたらした作用である。操作による作用には、ファイルの読み出し、ファイルの書き込みなどのファイル操作などが含まれる。図５の例では、「open」で始まる行が、操作がＩＣＴシステムにもたらした作用を示している。
【００７０】
次にＣＭＤＢ１４０のデータ構造について説明する。
図６は、ＣＭＤＢの一例を示す図である。ＣＭＤＢ１４０には、ＩＣＴシステムごとの構成情報１４１，１４２，・・・が格納されている。
【００７１】
ＣＭＤＢ１４０の構成情報１４１は、複数の構成アイテム（ＣＩ：Configuration Item）１４１−１，１４１−２，・・・を有する。ここで、１つのＣＩは１つのアイテム（item）に対応する。アイテムは複数のレコード（record）を持つ。レコードの下に、サーバやネットワークなどの構成情報を任意の形式で持つ。
【００７２】
例えばＣＩ１４１−１は、アイテムのＩＤやタイプが設定された要素１４１ａの下に、レコードを示す要素１４１ｂ，１４１ｅ，・・・が設定されている。レコードを示す要素１４１ｂの下には、階層構造で複数の要素１４１ｃ，１４１ｄが設定されている。各要素１４１ｃ，１４１ｄ内の先頭の１行は、要素名である。例えば要素１４１ｃの要素名は、「Server」である。また各要素内の要素名の下の各行の文字列が属性を表している。例えば要素１４１ｃ内の「ipaddress=“192.168.1.10”」が１つの属性であり、このうち“192.168.1.10”がその属性の値である。
【００７３】
次に条件判定辞書記憶部１５０に格納されている条件判定辞書について具体的に説明する。
図７は、条件判定辞書の一例を示す図である。条件判定辞書記憶部１５０に格納された条件判定辞書１５１には、文字列のパターンに対応付けて、事前条件または事後条件に関する判定内容が定義されている。図７の例では、「O＿RDONLY」の記述がある行は、事前条件が示されているものと判定される。「O＿RONLY」の記述がある行は、事後条件が示されているものと判定される。「O＿RDWR」の記述がある行は、事前条件かつ事後条件が示されているものと判定される。
【００７４】
次に、グラフＤＢ１７０のデータ構造について具体的に説明する。
図８は、グラフＤＢの一例を示す図である。グラフＤＢ１７０には、操作テーブル１７１と条件テーブル１７２とが格納されている。
【００７５】
操作テーブル１７１は、操作に関する情報を管理するデータテーブルである。操作テーブル１７１には、操作ＩＤ、事前条件、事後条件、および属性の欄が設けられている。操作ＩＤの欄には、操作の識別情報（操作ＩＤ）が設定される。事前条件の欄には、対応する操作における事前条件の識別情報（条件ＩＤ）が設定される。事後条件の欄には、対応する操作における事後条件の識別情報（条件ＩＤ）が設定される。属性の欄には、操作を実行するためのシステム環境を示す属性が設定される。操作に関する属性は、属性名と属性値とを含んでいる。操作ＩＤ「操作ｉ」（ｉは１以上の整数）の属性についての属性名と属性値は、「属性１＝属性ｉ１」，・・・，「属性ｍ＝属性ｉｍ」（左辺が属性名、右辺が属性値、ｍは１以上の整数）と表される。
【００７６】
図８に示す操作テーブル１７１には、以下のような操作および条件が登録されている。
・発見した操作は４つ：操作ＩＤ「操作１」、「操作２」、「操作３」、「操作４」
・操作ＩＤ「操作１」の操作の事前条件の条件ＩＤは「条件１１」と「条件１２」、事後条件の条件ＩＤは「条件１３」と「条件１４」
・操作ＩＤ「操作２」の操作の事前条件の条件ＩＤは「条件１２」と「条件２１」、事後条件の条件ＩＤは「条件１４」と「条件２２」
・操作ＩＤ「操作３」の操作の事前条件の条件ＩＤは「条件１３」、事後条件の条件ＩＤは「条件３１」
・操作ＩＤ「操作４」の操作の事前条件の条件ＩＤは「条件２２」、事後条件の条件ＩＤは「条件３１」
条件テーブル１７２は、事前条件または事後条件として用いられる条件に関する情報を管理するデータテーブルである。条件テーブル１７２には、条件ＩＤと属性との欄が設けられている。条件ＩＤの欄には、条件の識別情報（条件ＩＤ）が設定される。属性の欄には、システムに期待される状態を示す属性が設定される。条件に関する属性は、属性名と属性値とを含んでいる。条件ＩＤ「条件ｉｊ」の属性についての属性名と属性値は、「属性１＝属性ｉｊ１」，・・・，「属性ｎ＝属性ｉｊｎ」（左辺が属性名、右辺が属性値、ｎは１以上の整数）と表される。
【００７７】
以上のような構成の管理サーバ１００により、ＩＣＴシステム４１〜４４に対する過去のシステム構築作業の内容に基づいて、任意のＩＣＴシステムに対して実施しようとするシステム構築作業における操作手順が自動生成される。
【００７８】
図９は、操作手順の自動生成の処理手順を示すフローチャートである。
［ステップＳ１０１］情報収集部１２０は、ＩＣＴシステム４１〜４４それぞれから、作業ログと構成情報とを収集する。例えば情報収集部１２０は、ユーザからの情報収集指示に応じて情報収集を行う。情報収集の際には、例えば情報収集部１２０は、ＩＣＴシステム４１〜４４に対して、情報提供要求を送信する。ＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａは、情報提供要求に応じて、予め蓄積してある作業ログと構成情報とを管理サーバ１００に送信する。情報収集部１２０は、収集した作業ログをログＤＢ１３０に格納する。また情報収集部１２０は、収集した構成情報をＣＭＤＢ１４０に格納する。
【００７９】
［ステップＳ１０２］グラフ作成部１６０は、ログＤＢ１３０に格納された作業ログ１３１，１３２，・・・に基づいて、操作間の事前条件または事後条件の共通性によりグラフを作成する。例えばグラフ作成部１６０は、ユーザからのグラフ作成指示に応じてグラフを作成する。またグラフ作成部１６０は、情報収集部１２０による情報収集が完了したときに、グラフを作成してもよい。なおグラフ作成の際には、条件判定辞書記憶部１５０内の条件判定辞書１５１が参照される。グラフ作成部１６０は、作成したグラフをグラフＤＢ１７０に格納する。この処理の詳細は後述する（図１０参照）。
【００８０】
［ステップＳ１０３］手順探索部１８０は、グラフＤＢ１７０に格納されたグラフから、操作対象のＩＣＴシステムに対する操作手順を探索する。例えば手順探索部１８０は、ユーザからの操作手順作成指示に応じて、操作手順の探索を行う。手順探索部１８０は、探索して得られた操作手順を、スクリプト実行部１９０に送信する。なお手順探索処理の詳細は後述する（図１５参照）。
【００８１】
［ステップＳ１０４］スクリプト実行部１９０は、取得した操作手順をスクリプト化し、スクリプトを実行することで、操作対象のＩＣＴシステムの遠隔操作を行う。
このようにして、操作手順を生成し、その操作手順にしたがってＩＣＴシステムを操作することができる。次に、グラフ作成処理について詳細に説明する。
【００８２】
図１０は、グラフ作成処理の手順の一例を示すフローチャートである。
［ステップＳ１１１］グラフ作成部１６０は、ログＤＢ１３０から作業ログを読み出し、読み出した作業ログを操作ごとに分割する。例えば図５に示したような作業ログ１３１，１３２，・・・であれば、execveシステムコールの記述の直前を境界として、作業ログを分割する。
【００８３】
［ステップＳ１１２］グラフ作成部１６０は、操作単位に分割したログごとに、以下のステップＳ１１３〜Ｓ１１７の処理を行うことで、操作の動作条件を抽出する。
［ステップＳ１１３］グラフ作成部１６０は、操作に関するログを解析し、操作と操作の属性とを抽出する。例えばグラフ作成部１６０は、操作のログから、execveで実行されるコマンドのファイルパスと引数を抽出する。抽出した文字列がＩＣＴシステムに対して行われた操作であり、この文字列を操作の名前を示す属性とする。操作のログから抽出される操作の属性としては、名前以外に、例えば、操作の実行者、ＯＳ種別、コマンドのファイルパス、コマンドのバージョン、コマンドのサイズ、コマンドのハッシュ値などがある。
【００８４】
図１１は、操作の属性の取得方法の一例を示す図である。属性名「名前」の属性値は、例えばコマンドのファイルパスと引数とを結合することで取得できる。例えば図５に示した作業ログ１３１の最初の操作であれば、“/usr/bin/yum [yum, install, mysql]”が操作の名前を示す属性値となる。
【００８５】
属性名「実行者」の属性値は、例えば“whoami”などのコマンドを実行することで取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“whoami”などのコマンドにより、その操作を行っているプロセスのユーザ名などの情報を取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したユーザ名などの情報を、属性名「実行者」の属性値として作業ログに含める。例えば“root”という属性値が取得される。
【００８６】
属性名「ＯＳ種別」の属性値は、例えば“uname -srvi”などのコマンドを実行することで取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“uname -srvi”などのコマンドにより、操作に応じた処理を制御しているＯＳの種別を取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したＯＳの種別を、「ＯＳ種別」属性の属性値として、作業ログに含める。例えば“Linux 2.6.32-358.23.2.el6.x86＿64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86＿64”という属性値が取得される。
【００８７】
属性名「コマンドのファイルパス」の属性値は、例えば、execveシステムコールに示されているコマンドの引数から取得することができる。例えば“/usr/bin/yum”という属性値が取得される。
【００８８】
属性名「コマンドのバージョン」の属性値は、実行するコマンドのバージョンである。例えば、ソフトウェアパッケージのバージョンをコマンドのバージョンとする。属性名「コマンドのバージョン」の属性値は、例えば“rpm -qa | grep コマンド名”などのコマンドを実行することで取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“rpm -qa | grep コマンド名”などのコマンドにより、コマンドのバージョンを取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したコマンドのバージョンを、属性名「コマンドのバージョン」の属性値として作業ログに含める。例えば、“yum-3.2.29-40.el6.centos.noarch”という属性値が取得される。
【００８９】
属性名「コマンドのサイズ」の属性値は、例えば、“ls -l コマンドのファイルパス”などのコマンドを実行することで取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“ls -l コマンドのファイルパス”などのコマンドにより、コマンドのサイズを取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したコマンドのサイズを、属性名「コマンドのサイズ」の属性値として作業ログに含める。例えば、“801 Byte”という属性値が取得される。
【００９０】
属性名「コマンドのハッシュ値」の属性値は、例えば“md5sum コマンドのファイルパス”などのコマンドを実行することで取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“md5sum コマンドのファイルパス”などのコマンドにより、コマンドのハッシュ値を取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したコマンドのハッシュ値を、属性名「コマンドのハッシュ値」の属性値として作業ログに含める。例えば、“af3eaddb82d77ebb8eaa42e27f61b2ed”という属性値が取得される。
【００９１】
以下、図１０の説明に戻る。
［ステップＳ１１４］グラフ作成部１６０は、操作に関するログを解析し、操作の事前条件と属性、および事後条件と属性を抽出する。例えばグラフ作成部１６０は、openシステムコールのログから、事前／事後条件を抽出する。すなわち、ファイルはopen（“ファイルパス”，オプション）といった形で操作される。そこでグラフ作成部１６０は、openシステムコールのオプションの合致するパターンを条件判定辞書１５１（図７参照）から検索する。そしてグラフ作成部１６０は、openシステムコールの記載内容が、オプションに合致したパターンに対応する条件を定義しているものと判断する。
【００９２】
図１２は、事前／事後条件の判断例を示す図である。openシステムコールのオプションが読み込みのみ（O＿RDONLY）のとき、読み込み対象のファイルが、この操作で利用するファイルであるとわかる。そこで、操作前に該当ファイルが存在することが、事前条件と判定される。
【００９３】
openシステムコールのオプションが書き込みのみ（O＿WRONLY）のとき、書き込み対象のファイルが、この操作後に生成されるファイルであるとわかる。そこで、操作後に該当ファイルが存在することが、事後条件と判定される。
【００９４】
openシステムコールのオプションが読み書き（O＿RDWR）の場合は、読み書きのどちらにもなりうる。この場合、読み込み対象のファイルが存在することが、事前条件と判定され、そのファイルの更新後の状態が操作後に存在することが、事後条件と判定される。
【００９５】
このようにして抽出された条件について、属性の抽出が行われる。
図１３は、条件の属性の取得方法の一例を示す図である。図１３には、ファイルに関する条件が定義されている場合における、ファイルについての属性の取得方法を示している。
【００９６】
属性名「名前」の属性値は、openシステムコールで読み込みまたは書き込み対象となっているファイルのパス（ファイルパス）である。例えば“/lib64/libc-2.12.so”という属性値が取得される。
【００９７】
属性名「所有者」の属性値は、例えば“ls -l ファイルパス”の結果などから取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“ls -l コマンドのファイルパス”などのコマンドにより、ファイルの所有者名を取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得した所有者名を、属性名「所有者」の属性値として作業ログに含める。例えば、“root”という属性値が取得される。
【００９８】
属性名「グループ」の属性値は、例えば“ls -l ファイルパス”の結果などから取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“ls -l コマンドのファイルパス”などのコマンドにより、グループ名を取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したグループ名を、属性名「グループ」の属性値として作業ログに含める。例えば、“root”という属性値が取得される。
【００９９】
属性名「アクセス権」の属性値は、例えば“ls -l ファイルパス”の結果などから取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“ls -l コマンドのファイルパス”などのコマンドにより、ファイルへのアクセス権を取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したアクセス権を、属性名「アクセス権」の属性値として作業ログに含める。例えば、“0644”という属性値が取得される。
【０１００】
属性名「サイズ」の属性値は、例えば“ls -l ファイルパス”の結果などから取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“ls -l コマンドのファイルパス”などのコマンドにより、ファイルのサイズを取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したサイズを、属性名「サイズ」の属性値として作業ログに含める。例えば、“1916568 Bytes”という属性値が取得される。
【０１０１】
属性名「ハッシュ値」の属性値は、例えば“md5sum コマンドのファイルパス”の結果などから取得できる。例えばＩＣＴシステム４１〜４４の情報提供部４１ａ，４２ａ，４３ａ，４４ａが操作に応じた処理の実行時に、“md5sum コマンドのファイルパス”などのコマンドにより、ファイルのハッシュ値を取得する。そして情報提供部４１ａ，４２ａ，４３ａ，４４ａは、取得したハッシュ値を、属性名「ハッシュ値」の属性値として作業ログに含める。例えば、“f0dac9e070314da374ca1ca29a1a4fdb”という属性値が取得される。
【０１０２】
以下、図１０の説明に戻る。
［ステップＳ１１５］グラフ作成部１６０は、既にグラフＤＢ１７０に格納されている操作から、ステップＳ１１３で抽出した操作と同じ操作を検索する。同じ操作とは、例えば各属性の属性値がすべて同じ操作である。またグラフ作成部１６０は、既にグラフＤＢ１７０に格納されている条件から、ステップＳ１１４で抽出した条件と同じ条件を検索する。同じ条件とは、例えば属性の属性値がすべて同じ操作である。
【０１０３】
［ステップＳ１１６］グラフ作成部１６０は、同じ操作、同じ条件をマージする。ここで、「マージする」とは、条件の場合、既存のグラフＤＢ１７０に登録されている条件のうち、すべての属性の属性値が一致する複数の条件を、同じ条件とみなすことである。すべての属性の属性値が一致するとは、複数の条件のうちのいずれか１つが有する属性については、他の条件も同じ属性名の属性を有しており、各条件の属性名が同じ属性については、属性値が一致していることである。操作の場合も同様で、グラフ作成部１６０は、すべての属性の属性値が一致する操作を、同じ操作と判断し、操作ＩＤを共通化する。
【０１０４】
図８に示した例では、操作ＩＤ「操作１」の条件ＩＤ「条件１２」と、操作ＩＤ「操作２」の条件ＩＤ「条件１２」が同じ条件である。例えばグラフ作成部１６０は、操作ＩＤ「操作２」の条件を抽出した後（抽出時の条件ＩＤを「条件Ｘ」とする）、グラフＤＢ１７０上を検索し、「すべての属性の属性値が一致する条件」があればその条件ＩＤで「条件Ｘ」を置き換える。これにより、同じ条件に同じ条件ＩＤを付与し、それらの条件を統合することができる。
【０１０５】
［ステップＳ１１７］グラフ作成部１６０は、マージ後の操作および条件を、グラフＤＢ１７０に登録する。
［ステップＳ１１８］グラフ作成部１６０は、すべての操作のログについて、ステップＳ１１３〜Ｓ１１７の処理が終了したら、グラフ作成処理を終了する。
【０１０６】
このようにして、グラフＤＢ１７０に、操作と条件とを関係を表すグラフが格納される。グラフのデータ構造は図８に示した通りである。図８に示した構造のデータにより、グラフが定義されている。グラフＤＢ１７０で定義されるグラフは、個々の操作に関するグラフを、操作や条件のマージにより統合したものとなる。
【０１０７】
図１４は、マージ処理の一例を示す図である。グラフＤＢ１７０の操作テーブル１７１（図８参照）に示すように４つの操作がある場合、操作ごとのグラフ６１〜６４を作成することができる。グラフ６１〜６４は、ノードとエッジとの組み合わせで表される。ノードは、操作または条件を示す要素である。エッジは、ノード間を結ぶ矢印であり、ノード間の関係を示す。
【０１０８】
図１４の例では、操作を矩形のノードで示し、条件を楕円のノードで示している。操作を示すノードの中には、その操作の操作ＩＤが示されている。条件を示すノードの中には、その条件の条件ＩＤが示されている。操作のノードの左側には、事前条件のノードが配置されており、操作のノードの右側には事後条件のノードが配置されている。操作のノードに対し、その操作の事前条件と事後条件とのノードとが、エッジで接続されている。事前条件のノードと操作のノードとを接続するエッジは、矢印が操作のノードを指している。事後条件のノードと操作のノードとを接続するエッジは、矢印が事後条件のノードを指している。
【０１０９】
操作ごとのグラフ６１〜６４のうち、同じ操作または同じ条件があれば、その操作または条件が１つのノードにまとめられる。同じ操作または条件をまとめることで、操作ごとのグラフ６１〜６４は、１つのグラフ６５に統合される。グラフ６５では、操作ＩＤ「操作１」の操作と操作ＩＤ「操作２」の操作との事前条件である条件ＩＤ「条件１２」のノードが、１つのノードにまとめられている。また操作ＩＤ「操作１」の操作の事後条件である条件ＩＤ「条件１３」のノードと、操作ＩＤ「操作３」の操作の事前条件である条件ＩＤ「条件１３」のノードとが、１つのノードにまとめられている。また操作ＩＤ「操作２」の操作の事後条件である条件ＩＤ「条件２２」のノードと、操作ＩＤ「操作４」の操作の事前条件である条件ＩＤ「条件２２」のノードとが、１つのノードにまとめられている。
【０１１０】
このように統合されたグラフ６５を用いて、手順探索を行うことができる。
次に手順探索処理について詳細に説明する。手順探索処理は、例えば、ユーザから、初期条件と目標条件とを指定した手順探索指示の入力があったときに実行される。初期条件には、操作対象のＩＣＴシステムの現在の構成が示されている。初期条件はシステム構成に関する条件の集合であり、操作対象のＩＣＴシステムは、初期条件に含まれる条件のすべてを満たしている。例えば初期条件としてファイルが定義されていれば、操作対象のＩＣＴシステムには、初期条件の属性値を満たしたファイルが存在する。目標条件は、操作対象のＩＣＴシステム上に構築するシステム構成である。目標条件はシステム構成に関する条件の集合であり、目標条件に含まれるすべての条件を満たすように、操作対象のＩＣＴシステムの手順探索が行われる。
【０１１１】
なお初期条件は、例えば操作対象のＩＣＴシステムから収集した構成情報に基づいて、手順探索部１８０が自動生成することができる。また目標条件は、目標に近い構成のＩＣＴシステムの指定を受け、手順探索部１８０が、そのＩＣＴシステムから収集した構成情報に基づいて、自動生成してもよい。
【０１１２】
図１５は、手順探索の処理手順の一例を示すフローチャートである。
［ステップＳ１２１］手順探索部１８０は、グラフＤＢ１７０に格納されているグラフから、目標条件に対応する条件があるかどうかを検索する。例えば手順探索部１８０は、目標条件を包含する条件を、グラフ内の条件から検索する。該当する条件があれば、処理がステップＳ１２２に進められる。該当する条件がなければ、処理がステップＳ１２４に進められる。
【０１１３】
［ステップＳ１２２］手順探索部１８０は、目標条件に対応する条件が見つかった場合、目標条件に対応する条件からグラフのエッジを辿り、初期条件に対応する条件まで遡れるかどうかを判断する。この際、手順探索部１８０は、例えば、操作対象のＩＣＴシステムの構成と属性が合致する条件・操作のみを探索の対象とする。すなわち、手順探索部１８０は、グラフのエッジを辿る際に、エッジで接続されたノードに対応する条件または操作の属性を参照し、操作対象のＩＣＴシステムの状態が操作の属性に適合している場合にのみ、該当エッジを辿る。またグラフ中の操作のノードについては、その操作のすべての事前条件が、初期条件であるか、または初期条件に対応する条件に繋がる経路上の操作の事後条件である場合に、その操作のノードに接続されたエッジを辿ることができる。初期条件に対応する条件まで遡れる場合、処理がステップＳ１２３に進められる。初期条件に対応する条件まで遡れない場合、処理がステップＳ１２４に進められる。
【０１１４】
［ステップＳ１２３］手順探索部１８０は、初期条件まで遡れた場合、目標条件に対応する条件から初期条件に対応する条件までの、グラフの経路上のノードおよびエッジを、サブグラフとして抽出する。抽出されたサブグラフが、操作手順を表している。その後、手順探索処理が終了する。
【０１１５】
［ステップＳ１２４］手順探索部１８０は、目標条件に対応する条件が見つからないか、該当する条件があっても、その条件から初期条件に対応する条件まで遡れない場合、手順なしと判断し、処理を終了する。
【０１１６】
このようにして、初期条件と目標条件をつなぐサブグラフが探索される。
なお図１５の例では、目標条件から初期条件に遡って探索を行っているが、初期条件から目標条件に向かって探索を行ってもよい。例えば手順探索部１８０は、事前条件がすべて初期条件に含まれる操作のノードを起点とし、その操作の事後条件を事前条件とする操作について、実行可能かどうかを判断する。実行可能な操作とは、事前条件が、初期条件または既に辿った経路上の操作の事後条件に含まれており、その操作の属性および操作の事前条件の属性それぞれで示される状態が、操作対象のＩＣＴシステムで満たされているような操作である。手順探索部１８０は、実行可能な操作が見つかれば、その操作から目的条件の方向に向かって、順次操作を探索する。これにより、初期条件から目標条件に向かって探索することができる。
【０１１７】
図１６は、手順探索の一例を示す図である。図１６の例では、図１４に示したようなグラフ６５から手順探索を行うものとする。そして、初期条件として条件ＩＤ「条件１１」、「条件１２」の条件が与えられ、目標条件として条件ＩＤ「条件３１」の条件が与えられたものとする。また、操作対象のＩＣＴシステムの条件として、「実行者：root」といった操作の属性と属性値が与えられているものとする。ここで、操作ＩＤ「操作１」〜「操作４」のすべての操作の属性が、操作対象のＩＣＴシステムで満たされているものとする。
【０１１８】
探索条件が入力されると、グラフ６５から目標条件が探索される。グラフ６５には、目標条件６７に対応する条件（条件ＩＤ「条件３１」）が存在する。
次に目標条件６７に対応する条件から、グラフ６５上を初期条件まで遡れるかどうかが探索される。グラフ６５では、初期条件６６に対応する条件（条件ＩＤ「条件１１」、「条件１２」）が存在する。そして初期条件６６に対応する条件のノードと、目標条件６７に対応する条件のノードとの間は、操作ＩＤ「操作１」、条件ＩＤ「条件１３」、操作ＩＤ「操作３」の各ノードを介して接続されており、経路上の各操作・条件は、操作対象のＩＣＴシステムで満たされている。そこで、探索によって抽出された経路上のノードとエッジとが抽出され、サブグラフ６８が生成される。
【０１１９】
なおサブグラフ６８中の操作の事前条件は、初期条件もしくはその操作より前に実行可能な操作の事後条件になっていなければならない。例えばグラフ６５上を、条件ＩＤ「条件３１」のノードから遡るとき、操作ＩＤ「操作４」、条件ＩＤ「条件２２」、操作ＩＤ「操作２」、条件ＩＤ「条件１２」の各ノードを辿る経路もある。しかし、この経路の上の操作ＩＤ「操作２」の操作の事前条件である条件ＩＤ「条件２１」が、初期条件として満たされておらず、実行可能な操作の事後条件でもない。そのため条件ＩＤ「条件２１」のノードは選択することができず、このノードを経由する経路は、探索の対象から除外される。
【０１２０】
なお図１６の例では、簡単のために目標条件を１つとしたが、目標条件が複数ある場合、手順探索部１８０は、目標条件ごとに手順探索を行う。そして手順探索部１８０は、目標条件ごとのサブグラフを、同じ操作または条件をまとめることで統合する。
【０１２１】
手順探索部１８０は、生成されたサブグラフ６８が、操作対象のＩＣＴシステムに対する操作手順６９を表している。スクリプト実行部１９０は、サブグラフ６８に基づいて、スクリプトを生成する。例えばスクリプト実行部１９０は、抽出したサブグラフ６８に含まれる操作を、初期条件に近い操作ほど前に実行されるように並べる。すなわち、スクリプト実行部１９０は、ある操作Ａにおいて、その事前条件Ｂを事後条件とするような操作Ｃがある場合は、その操作Ｃを先に実行するように、操作を並べる。このような操作の配置方法として、例えばトポロジカルソートなどの方法がある。
【０１２２】
このようにして操作を並べたスクリプトが生成される。図１６の例では、操作ＩＤ「操作１」の操作の次に、操作ＩＤ「操作３」の操作を実行する手順を記述したスクリプトが生成される。
【０１２３】
このように、第２の実施の形態によれば、過去に行った作業における操作手順を、操作ごとに分割して再利用した操作手順を生成できる。すなわち、細かな手順（操作）の粒度で再利用できる。これにより、過去の作業全体のような大きな纏まりの手順から探索条件に合致する事例が見つけ出せない場合であっても、個別の操作の組み合わせにより、探索条件に合致する操作手順を生成することができる。その結果、操作手順を生成できる場面が増え、過去の手順の再利用率が向上する。そして、作業の工数が削減される。
【０１２４】
また第２の実施の形態では、操作手順を探索する際に、操作対象のシステムで動作する操作・条件のみを対象として探索が行われる。これにより、作成した操作手順にしたがって操作を行えば、操作対象のシステムの構成を、目的通りに変更できることが保証できる。その結果、開発者による操作手順の検証作業を行わずにすみ、作業の工数が削減される。
【０１２５】
〔第３の実施の形態〕
次に、第３の実施の形態について説明する。第３の実施の形態は、操作対象のＩＣＴシステムから、想定通りの操作結果が得られない場合であっても、操作対象のＩＣＴシステムの構成を、目的条件に適合する構成に変更できるようにするものである。
【０１２６】
コンピュータシステムに対するソフトウェアの導入や更新作業においては、想定していない結果が生じることがある。例えば管理しきれていないソフトウェアの版数の違いなどにより、同じ操作を行っても異なる結果となることがある。これは、過去の作業ログに示されている操作を再利用して同じ操作を行っても、操作対象のＩＣＴシステムが、その操作に定義された事後条件を満たさない場合があり得ることを意味する。そのため、第２の実施の形態に示したようなスクリプトを操作対象のＩＣＴシステムに対して実行しても、そのＩＣＴシステムが目標条件を満たさない可能性がある。
【０１２７】
そこで第３の実施の形態では、手順探索で得られた操作手順の最初の操作を実行するごとに、操作対象のＩＣＴシステムの最新の状態に応じてグラフを更新し、再度手順探索を行う。これにより、操作の結果が想定外であっても、目的条件に適合するように、操作対象のＩＣＴシステムの構成を変更可能となる。
【０１２８】
図１７は、第３の実施の形態に係るＩＣＴシステムの構成例を示す図である。図１７に示す要素のうち、図４に示した第２の実施の形態の要素と同じ要素には同じ符号を付し説明を省略する。
【０１２９】
第３の実施の形態の管理サーバ１００ａは、ＵＩ１１０、情報収集部１２１、ログＤＢ１３０、ＣＭＤＢ１４０、条件判定辞書記憶部１５０、グラフ作成部１６１、グラフＤＢ１７０、手順探索部１８１、および操作実行部１９１を有する。操作実行部１９１は、手順探索部１８１により操作手順が探索されると、操作対象のＩＣＴシステムに対して、その操作手順の最初の操作を実行する。
【０１３０】
情報収集部１２１、グラフ作成部１６１、グラフＤＢ１７０、および手順探索部１８１は、第２の実施の形態の同名の要素が有している機能に加え、以下の機能を有している。情報収集部１２１は、操作実行部１９１によって、操作対象のＩＣＴシステムに対する１つの操作が実行されるごとに、操作によって生じたＩＣＴシステムの構成の変更内容を取得し、ログＤＢ１３０とＣＭＤＢ１４０の内容を更新する。グラフ作成部１６１は、ログＤＢ１３０とＣＭＤＢ１４０の内容が更新されるごとに、グラフを再作成し、グラフＤＢ１７０に格納しているグラフを更新する。手順探索部１８１は、グラフが更新されるごとに、更新されたグラフから操作手順を探索する。
【０１３１】
なお、図１７に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図１７に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【０１３２】
図１８は、第３の実施の形態における操作手順の自動生成処理の一例を示すフローチャートである。図１８に示した処理のうち、ステップＳ２０１，Ｓ２０２の処理は、図９に示した第２の実施の形態におけるステップＳ１０１，Ｓ１０２の処理と同様である。
【０１３３】
［ステップＳ２０３］第２の実施の形態と同様にグラフが作成されると、情報収集部１２１、グラフ作成部１６１、グラフＤＢ１７０、手順探索部１８１、および操作実行部１９１が連携して、手順探索・実行処理を行う。手順探索・実行処理では、探索により見つけ出された操作手順の最初の操作を実行するごとに、グラフの作成や手順探索が繰り返される。
【０１３４】
図１９は、手順探索・実行処理の手順の一例を示すフローチャートである。
［ステップＳ２１１］手順探索部１８１は、グラフＤＢ１７０に格納されているグラフに基づいて、操作対象のＩＣＴシステムの最新の構成を、目的条件を満たす構成に変更するための操作手順を探索する。手順探索処理の詳細手順は、図１５に示した処理と同様である。なお手順探索部１８１は、手順探索時の初期条件については、ＣＭＤＢ１４０に格納されている操作対象のＩＣＴシステムの最新の構成に基づいて生成する。
【０１３５】
［ステップＳ２１２］手順探索部１８１は、探索により操作手順が検出できたかどうかを判断する。例えばグラフにおいて目標条件に対応する条件が、操作対象のＩＣＴシステムの最新の状態で満たされている場合、操作手順は検出されない。操作手順が検出できた場合、その操作手順が操作実行部１９１に送信され、処理がステップＳ２１３に進められる。操作手順が検出できなかった場合、処理が終了する。
【０１３６】
［ステップＳ２１３］操作実行部１９１は、操作対象のＩＣＴシステムに対して、探索によって検出された操作手順のうちの最初の操作を行う。そして操作実行部１９１は、操作を実行したことを、情報収集部１２１と手順探索部１８１とに通知する。
【０１３７】
［ステップＳ２１４］手順探索部１８１は、操作実行部１９１によって実行された操作を、実行操作列に追加する。実行操作列は、操作対象のＩＣＴシステムに対して実行した操作を実行順にならべたリストである。実行操作列は、例えば手順探索部１８１が管理するメモリ１０２内の記憶領域に格納される。
【０１３８】
［ステップＳ２１５］情報収集部１２１は、操作対象のＩＣＴシステムから、操作実行部１９１による操作後の操作対象のＩＣＴシステムの構成情報と、作業ログとを取得する。情報収集部１２１は、取得した作業ログに基づいて、ログＤＢ１３０内の操作対象のＩＣＴシステムに関する作業ログを更新する。また情報収集部１２１は、取得した構成情報に基づいて、ＣＭＤＢ１４０内の操作対象のＩＣＴシステムに関する構成情報を更新する。情報収集部１２１は、情報の更新が完了すると、更新が完了したことをグラフ作成部１６１に通知する。
【０１３９】
［ステップＳ２１６］グラフ作成部１６１は、更新された作業ログに基づいて、グラフを更新する。例えばグラフ作成部１６１は、操作対象のＩＣＴシステムに対して新たに実行された操作の事後条件が、操作前に作成したグラフに含まれていない場合、その事後条件に対するノードをグラフに追加する。グラフ作成部１６１は、更新後のグラフをグラフＤＢ１７０に格納する。グラフの更新が完了すると、グラフ作成部１６１は、グラフの更新が完了したことを手順探索部１８１に通知する。その後、処理がステップＳ２１１に進められる。
【０１４０】
このような手順により、操作対象のＩＣＴシステムに対して操作を実行したときの結果が、想定した結果と異なっていた場合であっても、ＩＣＴシステムの構成が目標条件を満たすように、ＩＣＴシステムに対して操作を行うことができる。
【０１４１】
以下、図２０〜図２７を参照し、手順探索の具体例について説明する。
図２０は、第３の実施の形態の手順探索の一例を示す第１の図である。条件ＩＤ「条件１」、「条件５」の条件を初期条件７２とし、条件ＩＤ「条件４」の条件を目標条件７３としたとき、図２０に示すようなグラフ７１が生成されたものとする。このグラフ７１から操作手順の探索を行うと、２つのサブグラフ７４，７５が得られる。すなわち、操作対象のＩＣＴシステムの構成が目標条件を満たすように変更する操作手順が２通り存在する。このとき、手順探索部１８１はいずれか一方のサブグラフに基づいて操作手順を作成する。図２０の例では、サブグラフ７４に基づく操作手順７６が生成されている。操作手順７６には、操作ＩＤ「操作１」、「操作２」、「操作３」に対応する操作を順に行うことが示されている。
【０１４２】
図２１は、第３の実施の形態の手順探索の一例を示す第２の図である。操作手順７６が作成されると、操作実行部１９１により、操作手順７６における最初の操作（操作ＩＤ「操作１」）が、操作対象のＩＣＴシステムに対して実行される。グラフ７１に基づけば、この操作により、操作対象のＩＣＴシステムの構成が、条件ＩＤ「条件２」の条件を満たすことが期待される。しかし、操作の結果が期待通りとはならない場合もある。図２１の例では、操作ＩＤ「操作１」の操作を実行した結果、操作対象のＩＣＴシステムは、条件ＩＤ「条件２」の条件は満たさずに、別の条件（条件ＩＤ「条件８」）を満たすような構成になったものとする。
【０１４３】
操作後に操作対象のＩＣＴシステムから情報収集を行うと、作業ログによって、操作ＩＤ「操作１」の操作の事後条件として、条件ＩＤ「条件８」の条件が生じたことが分かる。そこでグラフ作成部１６１により、グラフ７１に条件ＩＤ「条件８」の条件に対応するノードが追加される。また操作対象のＩＣＴシステムから収集した最新の構成情報に基づいて、ＩＣＴシステムが条件ＩＤ「条件８」の条件を満たしたことが判明する。そこで手順探索部１８１は、条件ＩＤ「条件８」の条件を初期条件に含める。さらに手順探索部１８１は、操作実行部１９１が実行した操作の操作ＩＤ「操作１」を、実行操作列に登録する。
【０１４４】
図２２は、第３の実施の形態の手順探索の一例を示す第３の図である。更新後のグラフ７１に基づく操作手順の探索が行われる。この際、既に実行された操作は探索対象から除外される。その結果、サブグラフ７７が得られる。そして、サブグラフ７７に基づいて操作手順７８が作成される。操作手順７８には、操作ＩＤ「操作４」、「操作５」、「操作３」に対応する操作を順に行うことが示されている。
【０１４５】
図２３は、第３の実施の形態の手順探索の一例を示す第４の図である。操作手順７８が作成されると、操作実行部１９１により、操作手順７８における最初の操作（操作ＩＤ「操作４」）が、操作対象のＩＣＴシステムに対して実行される。グラフ７１に基づけば、この操作により、操作対象のＩＣＴシステムの構成が、条件ＩＤ「条件６」の条件を満たすことが期待される。図２３の例では、操作ＩＤ「操作４」の操作を実行した結果、操作対象のＩＣＴシステムは、期待通り、条件ＩＤ「条件６」の条件を満たすような構成になったものとする。
【０１４６】
操作後に操作対象のＩＣＴシステムから情報収集を行うと、作業ログによって、操作ＩＤ「操作４」の操作の事後条件として、条件ＩＤ「条件６」の条件が生じたことが分かる。この条件は既にグラフ７１に含まれているため、グラフ７１は更新されない。また操作対象のＩＣＴシステムから収集した最新の構成情報に基づいて、ＩＣＴシステムが条件ＩＤ「条件６」の条件を満たしたことが判明する。そこで手順探索部１８１は、条件ＩＤ「条件６」の条件を初期条件に含める。さらに手順探索部１８１は、操作実行部１９１が実行した操作の操作ＩＤ「操作４」を、実行操作列に登録する。
【０１４７】
図２４は、第３の実施の形態の手順探索の一例を示す第５の図である。２度目の更新後のグラフ７１に基づく操作手順の探索が行われる。この際、既に実行された操作は探索対象から除外される。その結果、サブグラフ７９が得られる。そして、サブグラフ７９に基づいて操作手順８０が作成される。操作手順８０には、操作ＩＤ「操作５」、「操作３」に対応する操作を順に行うことが示されている。
【０１４８】
図２５は、第３の実施の形態の手順探索の一例を示す第６の図である。操作手順８０が作成されると、操作実行部１９１により、操作手順８０における最初の操作（操作ＩＤ「操作５」）が、操作対象のＩＣＴシステムに対して実行される。グラフ７１に基づけば、この操作により、操作対象のＩＣＴシステムの構成が、条件ＩＤ「条件３」の条件を満たすことが期待される。しかし、図２５の例では、操作ＩＤ「操作１」の操作を実行した結果、操作対象のＩＣＴシステムは、条件ＩＤ「条件３」の条件は満たさずに、別の条件（条件ＩＤ「条件７」）を満たすような構成になったものとする。
【０１４９】
操作後に操作対象のＩＣＴシステムから情報収集を行うと、作業ログによって、操作ＩＤ「操作５」の操作の事後条件として、条件ＩＤ「条件７」の条件が生じたことが分かる。そこでグラフ作成部１６１により、グラフ７１の操作ＩＤ「操作５」のノードから条件ＩＤ「条件７」へのエッジが追加される。また操作対象のＩＣＴシステムから収集した最新の構成情報に基づいて、ＩＣＴシステムが条件ＩＤ「条件７」の条件を満たしたことが判明する。そこで手順探索部１８１は、条件ＩＤ「条件７」の条件を初期条件に含める。さらに手順探索部１８１は、操作実行部１９１が実行した操作の操作ＩＤ「操作５」を、実行操作列に登録する。
【０１５０】
図２６は、第３の実施の形態の手順探索の一例を示す第７の図である。３度目の更新後のグラフ７１に基づく操作手順の探索が行われる。この際、既に実行された操作は探索対象から除外される。その結果、サブグラフ８１が得られる。そして、サブグラフ８１に基づいて操作手順８２が作成される。操作手順８２には、操作ＩＤ「操作６」に対応する操作を行うことが示されている。
【０１５１】
図２７は、第３の実施の形態の手順探索の一例を示す第８の図である。操作手順８２が作成されると、操作実行部１９１により、操作手順８２に示された操作（操作ＩＤ「操作６」）が、操作対象のＩＣＴシステムに対して実行される。グラフ７１に基づけば、この操作により、操作対象のＩＣＴシステムの構成が、条件ＩＤ「条件４」の条件を満たすことが期待される。図２７の例では、操作ＩＤ「操作６」の操作を実行した結果、操作対象のＩＣＴシステムは、期待通り、条件ＩＤ「条件４」の条件を満たすような構成になったものとする。
【０１５２】
操作後に操作対象のＩＣＴシステムから情報収集を行うと、作業ログによって、操作ＩＤ「操作６」の操作の事後条件として、条件ＩＤ「条件４」の条件が生じたことが分かる。この条件は既にグラフ７１に含まれているため、グラフ７１は更新されない。また操作対象のＩＣＴシステムから収集した最新の構成情報に基づいて、ＩＣＴシステムが条件ＩＤ「条件４」の条件を満たしたことが判明する。そこで手順探索部１８１は、条件ＩＤ「条件４」の条件を初期条件に含める。さらに手順探索部１８１は、操作実行部１９１が実行した操作の操作ＩＤ「操作６」を、実行操作列に登録する。
【０１５３】
次に操作探索を行うと、目標条件が初期条件となっていることから、実行する操作がもはや存在しないことがわかる。そこで、処理が終了する。
このように、第３の実施の形態によれば、操作対象のＩＣＴシステムに対して操作した結果が期待通りにならない場合であっても、目標条件に適合するように、そのＩＣＴシステムの構成を変更することができる。その結果、操作対象のＩＣＴシステムの構成を所望の構成に変更する操作を自動で実施できる可能性が高くなり、システム管理者の作業工数を削減できる。
【０１５４】
〔その他の実施の形態〕
複数の作業ログにおいて同じ操作が異なる事前／事後条件を持つことがある。そこでグラフ作成部１６０，１６１がグラフを作成するとき、グラフの条件・操作を結ぶエッジに「そのエッジのログからの抽出数」、「手順抽出で実行された回数」といったカウンタを持たせる。そして手順探索部１８０，１８１は、探索時に、同一の操作からの異なるエッジを通る複数のサブグラフを生成したとき、例えばカウンタの値の大きいエッジを通るサブグラフを「信頼度の高いサブグラフ」とみなし、そのサブグラフから操作手順を作成する。これにより、信頼性の高い操作手順を生成することができる。
【０１５５】
上記の実施の形態では操作手順に基づいてスクリプトを生成しているが、人間が見て実行するための手順書を作成することもできる。手順書は、管理者に分かりやすいように、例えば手順の番号を付与したコマンドが、操作順に沿って記述される。また管理者が作業しやすいように、手順書内に、操作時の注意事項や、期待される操作結果に関する説明を追加してもよい。
【０１５６】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１５７】
１  操作対象システム
２，３  作業ログ
４  条件定義情報
５  グラフ
６  探索条件
７  探索結果
８  操作手順
１０  操作探索装置
１１  判断手段
１２  関連付け手段
１３  記憶手段
１４  探索手段
１５  生成手段
１６  操作手段
【図１】
2015170283.tif 000003
【図２】
2015170283.tif 000004
【図３】
2015170283.tif 000005
【図４】
2015170283.tif 000006
【図５】
2015170283.tif 000007
【図６】
2015170283.tif 000008
【図７】
2015170283.tif 000009
【図８】
2015170283.tif 000010
【図９】
2015170283.tif 000011
【図１０】
2015170283.tif 000012
【図１１】
2015170283.tif 000013
【図１２】
2015170283.tif 000014
【図１３】
2015170283.tif 000015
【図１４】
2015170283.tif 000016
【図１５】
2015170283.tif 000017
【図１６】
2015170283.tif 000018
【図１７】
2015170283.tif 000019
【図１８】
2015170283.tif 000020
【図１９】
2015170283.tif 000021
【図２０】
2015170283.tif 000022
【図２１】
2015170283.tif 000023
【図２２】
2015170283.tif 000024
【図２３】
2015170283.tif 000025
【図２４】
2015170283.tif 000026
【図２５】
2015170283.tif 000027
【図２６】
2015170283.tif 000028
【図２７】
2015170283.tif 000029