(57)【要約】【課題】情報処理装置の使用環境の構築に関する手順書の作成を容易にする。【解決手段】情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、情報処理装置の動作環境においてコマンドが実行されることにより影響を受ける情報とを取得し、影響を受ける情報に基づいて、インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、抽出されたコマンドを出力する。【選択図】図４
2014182462.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得する取得部と、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する抽出部と、
抽出された該コマンドを出力する出力部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された１以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記抽出部は、前記対象ファイルに対する、前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記抽出部は、前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
ことを特徴とする請求項２または３に記載の情報処理装置。
【請求項６】
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
抽出された該コマンドを出力する
ことを特徴とする情報処理方法。
【請求項７】
プロセッサに、
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
抽出された該コマンドを出力する
処理を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の使用環境の構築に関する手順書の作成支援技術に関する。
【背景技術】
【０００２】
計算機には様々なソフトウェアがインストールされ、また様々な設定がなされる。ソフトウェアのインストールや設定動作は、まとめて配備と呼ばれる。負荷分散のために同じ内容の配備をしたり、故障時に新しいマシンに旧来のマシンと同じ内容で配備をしたりするとき等、同じ配備のための操作を複数回行うことが必要になる場合がある。これまでは計算機の台数が少なかったり、故障時の再設定時には構築時とまったく同じサーバがない等環境が変わったりして、多数の同じ環境のサーバを構築するということがそれ程多くなかった。しかしながら近年は、クラウドと呼ばれる仮想環境において長期間にわたって多数の同じ環境を用意することが可能になっており、同じ内容の配備を行うことの必要性が増している。これらの場合に操作間違いや、操作時の試行錯誤による時間の無駄を少なくするため、配備の手順書を用意したり、自動で配備を行うプログラムを作成したりする。
【０００３】
インストールする操作手順は最初から全て分かっているものではなく、一度インストールや設定の操作を実行して、その記録から作成される。この理由は、インストールマニュアルは特定の環境に特化して書かれている場合や、また、インストールマニュアルに書かれているのは、インストール手順の大まかな内容で、具体的なインストール手順が記載されていない場合が多いからである。これは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のバージョンによってインストールされているソフトウェアが異なったり、パッケージ管理システムがサポートするものが異なったりすることがあるためである。
【０００４】
ところで、配備の記録を見ればそのまま手順が分かるものではないことに注意が必要である。なぜなら配備の記録にはインストール手順と関係のない処理が含まれていることがあるからである。配備の作業時には、パラメータの設定の間違いや、ファイルや時刻を画面に表示させるような不要な処理を行ったり、誤って不要なソフトウェアをインストールしてそのソフトウェアを削除したり、といった試行錯誤が行われることがよくある。これらの無駄な作業を、手順書作成者が実行した記録を見て本当に不要だったかを判断するのは困難である。数分の作業であれば何が不要かすぐ分かるかもしれないが、作業は数時間にわたることもよくあり、また実行するコマンドも数百に及ぶこともある。このため、これまで手順記録から抜き出す形で作った手順書やプログラムは、その中に必要な処理が欠けていたり、不要な処理が混じっていたりすることがあり、一度で十分なものを作ることが困難である。
【０００５】
また、特に近年ＤｅｖＯｐｓと呼ばれる開発と運用の一体化が提唱されている。ＤｅｖＯｐｓとは、開発（Ｄｅｖ）と運用（Ｏｐｓ）の間の壁を取り払うことを指し、具体的には開発者と運用者が互いを意識して作業を進めることを指す。そのようなＤｅｖＯｐｓにおいては、開発者と運用者の間の情報伝達を速くすることが特に求められる。
【０００６】
開発者は、実際にインストール作業を行い、作業結果を精査して、運用者のことを考慮した開発ソフトウェアのインストールスクリプトまたは手順書を用意する。開発者はインストールスクリプトまたは手順書素早く作成することが求められる。
【０００７】
また、運用者はインストールの困難さ等を開発者にフィードバックし、インストールした際の失敗事項（どこが不要だったか等）を伝える。運用者が失敗事項を精査して開発者に伝えることで、開発者は、その内容の確認と修正を容易に行うことができるようになる。
【０００８】
一方、配備の作業記録から手順を作成する技術がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平６−２３０９４８号公報
【特許文献２】特開２００７−８０１６６号公報
【特許文献３】特開２０００−２４２５０４号公報
【特許文献４】特開２０１０−１２３０４５号公報
【特許文献５】特開２００３−１５８８１号公報
【特許文献６】特開２００７−０７９７０３号公報
【特許文献７】特開２００６−１３３８２５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記の技術では、作業記録にインストールとは無関係な処理が含まれることが考慮されていない。
そこで、１つの側面では、本発明は、情報処理装置の使用環境の構築に関する手順書を容易に作成することを目的とする。
【課題を解決するための手段】
【００１１】
一態様の情報処理装置は、取得部、抽出部、及び出力部を含む。取得部は、情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、情報処理装置の動作環境においてコマンドが実行されることにより影響を受ける情報とを取得する。抽出部は、影響を受ける情報に基づいて、インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する。出力部は、抽出されたコマンドを出力する。
【発明の効果】
【００１２】
本実施形態に係る情報処理装置によれば、情報処理装置の使用環境の構築に関する手順書を容易に作成することができる。
【図面の簡単な説明】
【００１３】
【図１】インストール処理の一例（その１）を示す。
【図２】インストール処理の一例（その２）を示す。
【図３】インストール処理の一例（その３）を示す。
【図４】本実施形態に係る情報処理装置のブロック図の一例を示す。
【図５】本実施形態に係る情報処理装置の構成の一例を示す。
【図６】本実施形態に係る観測データの一例を示す。
【図７】本実施形態に係るログ保存処理の動作フロー図である。
【図８】インストール処理の一連のコマンドにおける最終状態形成コマンドを説明するための図である。
【図９】入出力一覧の一例（その１）を示す。
【図１０】複数のコマンドの各々の副作用によってファイルの内容が変化する場合において、最終状態形成コマンドを選別する様子を説明するための図である。
【図１１】出力にファイルを含むコマンドが最終状態形成コマンドか否かを分析処理部１５が判別する場合の動作のフロー図である。
【図１２】複数のコマンドによって複数のファイル及びプロセスに副作用が発生する場合において、最終状態形成コマンドが選別される様子を説明するための図である。
【図１３】入出力一覧の一例（その２）を示す。
【図１４】ファイルＦが変化する様子を説明するための図である。
【図１５】本実施形態に係る最終状態形成コマンド選別の動作フロー図を示す。
【図１６】パッチファイルをインストールする際の手順の一例を示す。
【図１７】入出力一覧の一例（その３）を示す。
【図１８】本実施形態に係る情報処理装置のハードウェア構成の一例を示す。
【発明を実施するための形態】
【００１４】
本実施形態においては、手順書作成者がインストール作業を実施し、情報処理装置では、その際に手順書作成者により入力されたコマンドを取得とログ情報が保存される。そして、ログ情報を使用してインストールに関連するファイルを選別する処理が行われる。これは、手順書やインストールスクリプトの作成にかかる時間の削減につながる。またDevOpsにおいては、運用者が不要だったりやり直したりしたコマンドを開発者にフィードバックすることを容易にする。
【００１５】
先ず、手順書を作成する上で、手順書作成者が実行したインストール作業のうち、インストール処理と関連しないコマンドの例について説明する。
例えば、図１に示すような一連のコマンドを実行するインストール処理について考える。先ず、それぞれのコマンドの内容について説明する。（１）の「｛install epel｝」は、パッケージ「epel.rpm」をコマンド「wget」等で取得して、「rpm -ihv」のコマンドでインストールすることを意味する。（２）、（３）、（４）における「gem install」コマンドは、パッケージをインストールするコマンドである。この例の場合、（２）、（３）、（４）のコマンドはいずれも異常終了し、インストールによるファイルの追加はないものとする。（５）の「ls」は、ファイルやディレクトリの情報を表示させるコマンドである。「ls」コマンドが実行されても、システムに対する副作用は発生しない。また、この例の場合、「ls」は正常終了しているものとする。（６）の「｛remove epel｝」は、コマンド「rpm -e」でパッケージ「epel」をアンインストールし、ファイルを「rm」コマンドで削除することを意味する。尚、図１において、「#succ」、「#fail」はそれぞれ、コマンドが成功したこと、失敗したことを示し、説明のために記したものである。
【００１６】
図１の例では、「gem install」コマンドによるインストール処理は失敗しており、手順書を作成する上では、図１のすべてのコマンドは不要である。
また、手順書に反映すべきでないコマンドのその他の例として、図２に示すような一連のコマンドを実行するインストール処理について考える。（１）及び（４）−（８）は、図１で説明したコマンドと同様である。（２）、（３）の「yum install」コマンドは、パッケージを取得してインストールするコマンドである。（２）、（３）のコマンドはいずれも正常終了しており、システムに対する副作用があるものとする。また、図２の例では、（２）、（３）のコマンドは、（１）でインストールされたepelの副作用には無関係であるとする。
【００１７】
図２の例では、「gem install」コマンドによるインストール処理は失敗しており、かつ、「yum install」コマンドには関連のない（１）及び（４）−（８）コマンドは、手順書を作成する上では不要である。
【００１８】
さらに、手順書に反映すべきでないコマンドのその他の例として、図３に示すような一連のコマンドを実行するインストール処理について考える。図３の例では、（２）の「yum install」コマンドは、「epel」の副作用と関係があるものとする。
【００１９】
図３の例の場合、副作用のない（３）の「ls」コマンドが手順書を作成する上では不要である。
【００２０】
図１〜図３に示したように、インストール処理において実行されるコマンドが異常終了したり、インストールとは関係のないコマンドが実行されたりする場合がある。このようなインストールとは関係ないコマンドは手順書作成には記載されない。
【００２１】
本実施形態では、インストールで実行される複数のコマンドのうち、コマンドの副作用に基づいて、インストールに関連するコマンドを抽出する。ここで、コマンドの副作用とは、そのコマンドが実行されることにより影響を受ける情報を指す。
【００２２】
本実施形態に係る情報処理装置が実行する処理は、大きく、ログ保存処理、コマンド抽出処理、出力処理の３つの処理に分けられる。ログ保存処理は、手順書作成者によりインストール作業が行われる際に、インストール作業で実行されたコマンドとそのコマンドが実行されることにより発生する情報処理装置の動作環境に対する影響をログ情報として保存する処理である。コマンド抽出処理は、ログ情報を参照して、インストールに関係のあるコマンドを抽出する処理である。出力処理は、抽出したコマンドを出力する処理である。
【００２３】
図４は、本実施形態に係る情報処理装置の機能ブロック図の一例である。情報処理装置１は、取得部２、抽出部３、出力部４を含む。
【００２４】
取得部２は、情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、情報処理装置の動作環境においてコマンドが実行されることにより影響を受ける情報とを取得する。影響を受ける情報には、例えば、ファイル、プロセス、環境変数などがある。
【００２５】
抽出部３は、影響を受ける情報に基づいて、インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する。また、抽出部３は、インストールが正常終了したときに存在するファイルである対象ファイルを検出し、対象ファイルに対して実行された１以上のコマンドのうちのいずれかである対象コマンドの実行前後の対象ファイルの差分が、インストールが正常終了したときの対象ファイルと対象コマンドの実行前の対象ファイルの差分に含まれる場合、対象コマンドを抽出する。また、抽出部３は、インストールが正常終了したときに存在するファイルである対象ファイルを検出し、対象ファイルを生成するコマンドを抽出する。また、抽出部３は、対象ファイルに対する、抽出されたコマンドの実行により、対象ファイルと異なる名称のファイルが生成された場合、対象ファイルを出力したコマンドを抽出する。また、抽出部３は、対象ファイルが、抽出されたコマンドと、インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、非対象ファイルを出力したコマンドを抽出する。
出力部４は、抽出されたコマンドを出力する。
【００２６】
本実施形態の情報処理装置１の構成の一例を説明する。図５は、本実施形態に係る情報処理装置の構成の一例を示す。
【００２７】
図５に示すように、情報処理装置１は、情報取得部１１、コマンド実行部１２、ログ保存処理部１３、ログ記憶部１４、分析処理部１５、及び処理出力部１６を含む。情報取得部１１は取得部２の一例である。分析処理部１５は抽出部３の一例である。処理出力部１６は出力部４の一例である。
【００２８】
情報取得部１１は、手順書を作成するためにユーザが行うインストール作業において、入力装置を用いてユーザにより入力されたコマンドを取得する。
コマンド実行部１２は、情報取得部１１が取得したコマンドを実行する。
【００２９】
ログ保存処理部１３は、手順書を作成するためにユーザが行うインストール作業のログ情報をログ記憶部１４に保存する。
ログ記憶部１４は、ログ保存処理部１３により保存されるログ情報を格納する。
【００３０】
分析処理部１５は、ログ記憶部１４に格納されたログ情報を用いて、手順書を作成するためのインストール処理における一連のコマンドからインストールに関連のあるコマンドを選別する。
【００３１】
処理出力部１６は、分析処理部１５により選別されたコマンドを出力する。処理出力部１６の出力先は、例えばユーザが確認するための画面表示装置、ファイルなど種々に設定される。
【００３２】
次に、ログ保存処理部１３の処理の詳細について説明する。
ログ保存処理部１３は、手順書を作成するためにユーザが行うインストール作業のログ情報をログ記憶部１４に保存する。本実施形態において、ログ情報には、各コマンドの実行前後のシステムのスナップショット、及び、各コマンドが実行されることにより呼び出されるシステムコールの情報が含まれる。
【００３３】
ログ情報の一つとして、ログ保存処理部１３は、各コマンドの実行の前後にシステムのスナップショットを取得してログ記憶部１４に保存する。スナップショットは、情報処理装置１のファイルシステム全体のファイルの情報である。尚、スナップショットには、情報処理装置１の外部に存在する装置に記憶されたファイル情報を含めてもよい。
【００３４】
二つ目のログ情報として、ログ保存処理部１３は、コマンドにより実行されるシステムコールの情報を取得する。具体的な保存方法は、例えば、システムコールフックや、コマンドが使用するシステムコールおよび受け取るシグナルを監視する監視コマンドを用いる。そのような監視コマンドには、例えば、Linux（登録商標）では「strace」コマンド、Unix（登録商標）では「truss」コマンド等がある。以下の説明では、ログ保存処理部１３により記録される、コマンドを実行することにより呼び出されるシステムコールの情報を観測データと記す。
【００３５】
図６は本実施形態に係る観測データの一例を示す。観測データ２０は、順序２１、コマンド２２、システムコール列２３のデータ項目を含む。
【００３６】
順序２１は、インストール処理において実行される一連のコマンドの実行順序を示す情報である。順序２１には、コマンド２２の実行順に、一つのコマンドに対して一意の値が昇順で割り当てられる。
【００３７】
コマンド２２は、手順書を作成するためにユーザが行うインストール作業において実行される各々のコマンドである。コマンド２２には、ログ保存処理部１３が情報取得部１１から取得したコマンドの情報が格納される。
【００３８】
システムコール列２３は、コマンド２２が実行されることにより発生するシステムコールの一覧である。
【００３９】
尚、図６に示す観測データ２０のデータ構造はテーブル構造であるが、順序２１、コマンド２２、及び、システムコール列２３の各情報の対応関係が判別可能であれば、種々のデータ構造を採ることができる。
【００４０】
ここで、本実施形態に係るログ保存処理の動作フローを説明する。図７は、本実施形態に係るログ保存処理の動作フロー図である。
【００４１】
先ず、情報取得部１１は、インストール処理において入力装置を用いてユーザにより入力されるコマンドを取得する（Ｓ２０１）。次に、ログ保存処理部１３は、ファイルシステムのスナップショットをログ記憶部１４に保存する（Ｓ２０２）。次に、コマンド実行部１２は、情報取得部１１が取得したコマンドを実行する（Ｓ２０３）。次に、ログ保存処理部１３は、コマンド実行部１２がコマンドを実行した直後に、そのコマンドにより呼び出されるシステムコールの情報をログ記憶部１４に保存する（Ｓ２０４）。次に、ログ保存処理部１３は、システムのスナップショットをログ記憶部１４に保存する（Ｓ２０５）。そして、情報取得部１１は、インストール処理が完了したか否かを判定し（Ｓ２０６）、インストール処理が未完了である場合、処理はＳ２０２に遷移する。そして、Ｓ２０１からＳ２０６までの動作が繰り返される。インストール処理が完了した場合（Ｓ２０６でＹｅｓ）、処理は終了する。
【００４２】
次に、分析処理部１５の処理の詳細について説明する。
分析処理部１５は、ログ記憶部１４に格納されたログ情報を用いて、手順書を作成するためのインストール処理における一連のコマンドからインストール手順に関連のあるコマンドを選別する。
【００４３】
ここで、以下の説明では、情報処理装置１の所定の時点における動作環境をシステム状態と記す。システム状態は、ファイル、プロセス、及び環境変数の状態である。
【００４４】
インストール作業は、ファイルなどシステムへの副作用の集合であり、最終的に特定のシステム状態を形成する。そこで分析処理部１５はインストールにおいて実行されたコマンドがインストールの正常完了時点のシステムの状態（以下、最終的なシステム状態と記す）に影響を与えたか否かを判別することによって、そのコマンドがインストールに関連するか否かを判別する。そして、コマンドが最終的なシステム状態に影響を与えたか否かは、各々のコマンド間の副作用の差分、もしくは副作用としてファイルまたはプロセスを生成したか否かに基づいて行われる。ここで、各々のコマンドの副作用の、インストール作業において実行される一連のコマンド間における関連性を確認する処理を以下の説明では、副作用の分析と記す。尚、システム状態には、外部装置のシステム状態を含めてもよいし、所定のファイルが存在しない状態を含めてもよい。また、最終的なシステム状態においては、インストールにおいて発生した不要なファイル等は全て削除さているとする。もしくは、インストールするソフトウェアに応じてインストールの正常完了した場合に満たす条件を予め定めておき、その条件を満たすシステムの状態を最終的なシステム状態としてもよい（例えば、特定のファイルが存在する等）。
【００４５】
コマンドの実行による副作用には、大きく分けて、ファイル、プロセス、環境変数、及びその他に対する副作用がある。ファイルに対する副作用としては、コマンドを実行することにより、ファイルの内容が変化すること、ファイルが作成されること、または、ファイルが削除されることがある。プロセスに対する副作用としては、プロセス（デーモンなどのバックグラウンドプロセス等を含む）が生成、または削除されることがある。環境変数に対する副作用としては、環境変数が設定されることがある。その他に対する副作用としては、情報処理装置１の外部に対する情報の送信または受信、「su」等のコマンドによりシェルのユーザが切り替わること、「chkconfig」等のコマンドによりサービスが設定されることがある。尚、「chkconfig」等のコマンドによりサービスが設定される動作は、ファイルに変更が加えられたものであると考えてもよい。
【００４６】
以下の説明では、最終的なシステム状態に影響を与える、インストールに関連のあるコマンドを最終状態形成コマンドと記す。また、最終的なシステム状態における、インストールに関連するファイルを最終的なファイルと記す。
【００４７】
図８は、インストール処理の一連のコマンドにおける最終状態形成コマンドを説明するための図である。図８において、最終的なファイルは、ファイルＡ、Ｂ、Ｃである。初期状態からコマンドを実行することによって、ファイルＱ、Ｐが作成される。ファイルＱは、コマンドに入力として与えられ、そのコマンドが実行されることにより、ファイルＢ、Ｃが作成される。一方、ファイルＰは、ファイルＡ、Ｂ、Ｃの作成には関与していない。この場合、ファイルＰを作成するコマンドは最終状態形成コマンドではないと判別される。
【００４８】
次に、分析処理部１５の副作用の分析の動作を詳細に説明する。副作用の分析では、分析処理部１５は、各々のコマンドの副作用の、インストール作業において実行される一連のコマンド間における関連性を確認する。副作用の分析のために、分析処理部１５は、各コマンドが実行される際にそのコマンドの入力として使用されたファイル、及び各コマンドが実行された際に発生するすべての副作用を、ログ記憶部１４に保存されたログ情報から抽出して、入出力一覧を作成する。
【００４９】
図９に入出力一覧の一例を示す。入出力一覧は、順序３１、入力３２、コマンド３３、出力３４のデータ項目を含む。
【００５０】
順序３１は、インストール処理において実行される一連のコマンドの実行順序を示す情報である。
【００５１】
入力３２は、コマンド３３の入力情報である。入力３２は、例えば、コマンド３３が実行される際に与えられる引数、またはコマンド３３の処理で使用されるファイルを示す。入力３２は、コマンドの実行前に取得されたスナップショット、及び観測データ２０を用いて抽出される。
【００５２】
コマンド３３は、手順書を作成するためにユーザが行うインストール作業において、実行されるコマンドである。
【００５３】
出力３４は、コマンド３３の出力情報であり、各コマンドが実行された際に発生するすべての副作用である。出力３４は、コマンドの実行後に取得されたスナップショット、及び観測データ２０を用いて抽出される。尚、コマンドの実行により生成または削除されるプロセスの情報は、観測データ２０を用いて特定されるが、この情報は統計情報に基づいて特定される構成としてもよい。例えば、クラウド環境下で作成されたＶＭ（Virtual Machine）上で予めコマンドを実行し、コマンドの実行により生成または削除されるプロセスを統計情報として保存しておく。分析処理部１５は、保存された統計情報を参照してコマンドの実行により生成または削除されるプロセスの情報を特定する。
【００５４】
図９の例において順序３１が「1」の行のコマンド３３を参照すると、インストール処理の最初にコマンド「ls」が実行されていることが分かる。そして、入力３２には、「ls」の入力として、「/etc/ld.so.cache」、「/lib/libselinux.so.1」その他が示されている。そして、出力３４には、「ls」の出力として、「file :」、「new process :」、「env :  stdout : ”.\n..\n.emacs”」が示されている。図９の例では、「file :」の後に「ファイル名 : ファイルの内容」が記載される形式で示されている。また、「new process :」の後にコマンドの実行により作成されたプロセス名が、「env :」の後に、設定される環境変数名とその値が格納される。すなわち、出力３４には、環境変数に対する副作用として、「stdout」の内容が「.\n..\n.emacs」に変更されたことが示されている。また、出力３４には、ファイル、プロセス、及びその他に対する副作用はないことが示されている。
【００５５】
尚、図９に示すログ情報のデータ構造はテーブル構造だが、順序３１、入力３２、コマンド３３、及び、出力３４の各情報の対応関係が判別可能であれば、種々のデータ構造を採ることができる。また、出力３４に記載される形式は、図９に示したものに限定されず、種々の形式で保存されてもよい。例えば、ファイル（ディレクトリを含む）が作成された場合には、「new file : ファイル名」、ファイルが削除された場合には「delete file : ファイル名」等としてもよい。また、プロセスが削除された場合には「delete process : プロセス名」等とし、コマンドによるすべての副作用が判別可能なように出力３４に情報を保存する。
【００５６】
次に、分析処理部１５は入出力一覧を作成すると、作成した入出力一覧を用いて最終状態形成コマンドを選別する処理を行う。
【００５７】
先ず、複数のコマンドによって一つのファイルの内容が変化する場合の、最終状態形成コマンドの選別の様子を説明する。図１０は、複数のコマンドの各々の副作用によって同一名称のファイルの内容が変化する場合において、最終状態形成コマンドを選別する様子を説明するための図である。
【００５８】
図１０の例では、ファイルFに対して、コマンドc1、c2、c3、c4を順に実行し、最終的にファイルF’’’’となる場合の例を示している。FからF’’’’はいずれも同じファイル名のファイルでありファイルの内容が異なるものである。先ず、初期状態において、ファイルFの内容はa、b、cから構成されている。ファイルFを入力としてコマンドc1が実行されると、aにvが代入され、bに0が代入されてF’となる。次に、ファイルF’を入力としてコマンドc2が実行されると、bに1が代入されてF’’となる。次に、ファイルF’’を入力としてコマンドc3が実行されると、cに‘a’が代入されてF’’’となる。そして、ファイルF’’’を入力としてコマンドc4が実行されると、cに‘z’が代入されてF’’’’となる。
【００５９】
ここで、bに代入された0と、cに代入された‘a’は、最終的なファイルであるF’’’’には現れていない。そこで、bに0を代入する動作と、cに‘a’を代入する動作は、最終的なシステム状態に影響を与えない動作であると判別する。この例の場合、コマンドc3では、cに‘a’を代入する動作しか行われていないため、コマンドc3は最終状態形成コマンドではないと判別される。コマンドc1では、bに0が代入する動作の他に、aにvを代入する動作が行われるため、最終状態形成コマンドであると判別される。
【００６０】
次に、図１０に示したような、複数のコマンドによって一つのファイルの内容が変化する場合における、分析処理部１５の最終状態形成コマンドの選別動作について具体的に説明する。図１１は、出力にファイルを含むコマンドが最終状態形成コマンドか否かを分析処理部１５が判別する場合の動作のフロー図である。
【００６１】
先ず、分析処理部１５は、あるコマンドＸが最終状態形成コマンドか否かを判定する場合、そのコマンドＸが出力するファイルＹが、最終的なシステム状態において存在するか否かを判定する（Ｓ３０１）。最終的なシステム状態においてファイルＹが存在しない場合（Ｓ３０１でＮｏ）は、分析処理部１５は、コマンドＸは最終状態形成コマンドではないと判別する（Ｓ３０２）。最終的なシステム状態においてファイルＹが存在する場合（Ｓ３０１でＹｅｓ）、分析処理部１５は、最終的なシステム状態におけるファイルＹと、コマンドＸの実行前のファイルＹとの内容の差分Ａをとる（Ｓ３０３）。次に、分析処理部１５は、コマンドＸの実行の前後のファイルＹの内容の差分Ｂをとる（Ｓ３０４）。そして、分析処理部１５は、差分Ａに差分Ｂが含まれるか否かを判定する（Ｓ３０５）。差分Ａに差分Ｂが含まれる場合（Ｓ３０５でＹｅｓ）、分析処理部１５は、コマンドＸは最終状態形成コマンドであると判別する（Ｓ３０６）。差分Ａに差分Ｂが含まれない場合（Ｓ３０５でＮｏ）、分析処理部１５は、コマンドＸは最終状態形成コマンドでないと判別する（Ｓ３０２）。
【００６２】
図１１に示すフローを図１０において適用することにより、出力にファイルを含むコマンドが最終状態形成コマンドか否かを分析処理部１５が判別する場合の動作のフローの説明をする。
【００６３】
先ず、図１１の説明におけるコマンドＸが図１０におけるコマンドc1である場合の動作を説明する。コマンドc1が最終状態形成コマンドか否かを判定する場合、分析処理部１５は先ず、コマンドc1の出力ファイルであるファイルF’が最終的なファイルに含まれるか否かを判定する（Ｓ３０１）。最終的なファイルはF’’’’であるので、判定の結果はＹｅｓとなる。次に、分析処理部１５は、最終的なファイルであるファイルF’’’’と、コマンドc1の入力ファイルであるFの差分Ａをとる（Ｓ３０３）。F’’’’とFの差分Ａは、「a=v」、「b=0」、「c=‘z’」である。また、分析処理部１５は、コマンドc1の出力ファイルであるファイルF’と、コマンドc1の入力ファイルであるFの差分Ｂをとる（Ｓ３０４）。F’とFの差分Ｂは、「a=v」、「b=0」である。そして、Ｓ３０３とＳ３０４の結果を用いて、分析処理部１５は、差分Ｂは差分Ａに含まれると判定する（Ｓ３０５でＹｅｓ）。そして、分析処理部１５は、コマンドc1は最終状態形成コマンドであると判別する（Ｓ３０６）。
【００６４】
次に、図１１のＸがコマンドc3である場合の動作を説明する。コマンドc3が最終状態形成コマンドか否かを判定する場合、分析処理部１５は、先ず、コマンドc3の出力ファイルであるファイルF’’’が最終的なファイルに含まれるか否かを判定する（Ｓ３０１）。最終的なファイルはF’’’’であるので、判定の結果はＹｅｓとなる。次に、分析処理部１５は、最終的なファイルであるファイルF’’’’と、コマンドc3の入力ファイルであるF’’の差分Ａをとる（Ｓ３０３）。F’’’’とF’’の差分Ａは、「c=‘a’」である。また、分析処理部１５は、コマンドc1の出力ファイルであるファイルF’’’と、コマンドc1の入力ファイルであるF’’の差分Ｂをとる（Ｓ３０４）。F’’’’とF’’の差分Ｂは、「c=‘z’」である。そして、Ｓ３０３とＳ３０４の結果を用いて、分析処理部１５は、差分Ｂは差分Ａに含まれると判定する（Ｓ３０５でＹｅｓ）。そして、分析処理部１５は、コマンドc1は最終状態形成コマンドであると判別する（Ｓ３０６）。
【００６５】
次に、複数のコマンドによって複数のファイル及びプロセスに副作用が発生する場合の、最終状態形成コマンドの選別の様子を説明する。図１２は、複数のコマンドによって複数のファイル及びプロセスに副作用が発生する場合において、最終状態形成コマンドが選別される様子を説明するための図である。
【００６６】
図１２の例においては、最終的なシステム状態は、ファイルF、ファイルG、プロセスPが作成された状態である。先ず、分析処理部１５は、ログ記憶部１４に記憶されたログ情報から、入出力一覧を作成する。図１２の例の場合に作成される入出力一覧を図１３に示す。
【００６７】
次に、分析処理部１５は、最終的なシステム状態に含まれるファイル及びプロセスを作成したコマンドの集合を最終状態形成コマンドとして判別する。図１２の例の場合、最終的なシステム状態に含まれる、ファイルF、ファイルG、プロセスPを作成するコマンド｛c0、c5、c8｝を最終状態形成コマンドとして判別する。最終状態形成コマンドとして判別されたコマンドの集合をSと記す。
【００６８】
次に、分析処理部１５は、最終的なシステム状態に含まれるファイルの内容を変更する副作用を発生するコマンドのうち、図１１のフローに従って最終状態形成コマンドを抽出する。
【００６９】
先ず、分析処理部１５はファイルFに着目し、ファイルFを変更させるコマンドの中から、最終状態形成コマンドを選別する。図１２に示すように、c1からc4までのコマンドにおいてはファイルFの内容を変化させる副作用が発生している。
【００７０】
図１４は、コマンドc1からc4においてファイルFが変化する様子を説明するための図である。コマンドc1からc4のうちいずれが最終状態形成コマンドかは、図１１のフローに従って判別される。ここで、c1に着目すると、最終的なファイルであるファイルFと、コマンドc1の入力ファイルであるF’の差分Ａは、「c」、「e」である。また、コマンドc1の出力ファイルであるファイルF’’と、コマンドc1の入力ファイルであるF’の差分Ｂは、「b」である。よって、差分Ｂは差分Ａに含まれないので、分析処理部１５は、コマンドc1を最終状態形成コマンドではないと判別する。また、c2からc4に対しても、分析処理部１５は、図１１のフローに従って最終状態形成コマンドの識別を行い、c2、c4を最終状態形成コマンドであると判別する。そして、分析処理部１５は最終状態形成コマンドの集合Sにc2、c4を追加する。
【００７１】
次に、分析処理部１５は、ファイルGに着目し、ファイルGを変更させるコマンドのうち、最終状態形成コマンドを選別する。図１２に示すように、c6、c7のコマンドにおいてはファイルFの内容を変化させる副作用が発生している。図１１のフローに従って分析処理部１５は、最終状態形成コマンドの識別処理が実行し、c7を最終状態形成コマンドであると判別する。そして、分析処理部１５は最終状態形成コマンドの集合Sにc7を追加する。
【００７２】
次に、分析処理部１５は、最終状態形成コマンドの集合Sの各コマンドの入力となる情報（ファイル、プロセス、環境変数等）のうち、その最終状態形成コマンドが出力する情報以外の入力情報を出力するコマンドを、新たに最終状態形成コマンドとして判別する。最終状態形成コマンドの集合Sは｛c0、c2、c4、c5、c7、c8｝であるので、各々のコマンドの入力となるファイルは、c1、c3、c6である。
【００７３】
先ずc1に着目すると、c1は、c2とc5の入力となるファイルを出力している。c2が出力するファイルはFであり、c5が出力するファイルはGであるので、c1は、c5の出力するファイルG以外のファイルであるFを出力している。よって、分析処理部１５は、c1を最終状態形成コマンドであると判別し、最終状態形成コマンドの集合Sにc1を追加する。
【００７４】
次に、c3に着目すると、c3は、c4の入力となるファイルを出力している。c4が出力するファイルはFであるので、c3は、c4の出力するファイルF以外のファイルを出力していない。よって、分析処理部１５は、c3を最終状態形成コマンドではないと判別する。
【００７５】
次に、c6に着目すると、c6は、c7とc8の入力となるファイルを出力している。c7が出力するファイルはGであり、c8が出力するプロセスはPであるので、c6は、c8の出力するプロセスP以外のファイルであるGを出力している。よって、分析処理部１５は、c6を最終状態形成コマンドとして判別し、最終状態形成コマンドの集合Sにc6を追加する。
【００７６】
そして、分析処理部１５は、再度新たな集合Sに対して、各コマンドの入力となるファイルのうち、その最終状態形成コマンドが出力するファイル以外の入力ファイルを出力するコマンドを抽出して、新たに最終状態形成コマンドと判別する。さらに、この動作が新たな最終状態形成コマンドが判別されなくなるまで繰り返し行われる。
【００７７】
図１５は、本実施形態に係る最終状態形成コマンド選別の動作フロー図を示す。
先ず、分析処理部１５は、ログ記憶部１４に保存されたログ情報を取得する（Ｓ２０１）。
【００７８】
次に、分析処理部１５は、インストール処理が正常に完了した最終的なファイルを取得する（Ｓ２０２）。図１２の例の場合、分析処理部１５は、最終的なファイルとして、｛F、G、P｝を取得する。
【００７９】
次に、分析処理部１５は、ログ情報からコマンドの実行と入出力一覧を作成する（Ｓ４０３）。図１２の例の場合、分析処理部１５は、図１３の入出力一覧を作成する。
【００８０】
次に、分析処理部１５は、各コマンドの最終状態への影響の有無を確認し影響があるコマンドを集合Sの初期値として抽出する（Ｓ４０４）。具体的には、分析処理部１５は、最終的なファイル及びプロセスを作成したコマンド、ならびに、最終的なファイルの内容を変更するコマンドのうち、図１１のフローに従って最終状態形成コマンドとして抽出したものをSとする。図１２の例の場合、分析処理部１５はSの初期値として、｛c0、c2、c4、c5、c7、c8｝を抽出する。
【００８１】
次に、分析処理部１５は、Sの入力と最終状態の集合をIとして抽出する（Ｓ４０５）。図１２の例の場合、Sの入力は｛F’’、F’’’’、G’’｝であり、最終状態の集合は｛F、G、P｝である。よって、分析処理部１５は、Sの入力と最終状態の集合Iとして、｛F、G、P、F’’、F’’’’、G’’｝を抽出する。
【００８２】
次に、分析処理部１５は、Iの何れかを出力するコマンドのうち、そのコマンドが出力する情報を入力とするSのコマンドが出力する情報以外の情報を出力するコマンドの集合をS’として抽出する（Ｓ４０６）。図１２の例の場合、Iの何れかを出力するコマンドの集合Hは、H=｛c4、c7、c8、c1、c3、c4、c6｝である。ここで、Iの何れかの同じ情報を出力するコマンドと入力するコマンドとは対応関係にあると記載すると、H=｛c4、c7、c8、c1、c3、c4、c6｝に対応するコマンドJは、それぞれJ=｛−、−、−、(c2, c5)、c4、(c7, c8)｝となる。Hのうち、対応するJのコマンドが出力する情報以外の情報を出力しているものは、｛c1、c6｝となる。尚、c1やc6のように対応するコマンドが複数ある場合には、対応するコマンドのいずれかが、Hが出力する情報以外の情報を出力していればよい。よって、Ｓ４０６で分析処理部１５は、S’として｛c1、c6｝を抽出する。
【００８３】
Ｓ４０６の処理では、Sに含まれるコマンドをＣとし、最終的なファイルに含まれるファイルをＤとすると、ファイルＤに対するコマンドＣの実行により、ファイルＤと異なる名称のファイルが生成された場合、ファイルＤを出力したコマンドがSとして抽出される。また、ファイルＤが、コマンドＣと、最終的なファイルに含まれないファイルＥを入力として実行されたコマンドとにより得られる場合、ファイルＥを出力したコマンドがSとして抽出される。
【００８４】
次に、分析処理部１５は、Sに含まれるコマンドとS’に含まれるコマンドが等しいか否かを判定する（Ｓ４０７）。SがS’と同じ場合（Ｓ４０７でＹｅｓ）、Sを最終状態形成コマンドの集合として判別する（Ｓ４０８）。そして、処理出力部１６はSを出力する。
【００８５】
SがS’と異なる場合（Ｓ４０７でＮｏ）、分析処理部１５は、Sの集合にS’を加える（Ｓ４０９）。図１２の例の場合、分析処理部１５は、S＝｛c0、c2、c4、c5、c7、c8｝に、S’＝｛c1、c6｝を加えて、Ｓ＝｛c0、c1、c2、c4、c5、c6、c7、c8｝となる。そして、処理は、Ｓ４０５に遷移し、Ｓ４０５からＳ４０７が繰り返される。その結果、図１２の例の場合、Ｓ４０８で最終的に最終状態形成コマンドとして抽出されるコマンドは｛c0、c1、c2、c4、c5、c6、c7、c8｝となる。
【００８６】
次に、実際のインストール処理における最終状態形成コマンド選別の動作を、図１５を参照して説明する。
【００８７】
図１６は、パッチファイルをインストールする際の手順の一例を示している。先ず、図１６の（１）〜（６）のコマンドの内容を説明する。
【００８８】
（１）「$ cd ~/tmp」では、カレントディレクトリを作業ディレクトリである~/tmpに移動させる。
（２）「$ wget http://.../p」では、パッチファイルであるpを「http://.../」から、カレントディレクトリに取得する。
（３）「$ cd dir0」では、カレントディレクトリを「dir 0」に移動させる。この例では、誤ってdir0にカレントディレクトリを移動させてしまったとする。
（４）「$ cd /usr/local/src/...」では、パッチをインストールするディレクトリである「/usr/local/src/...」にカレントディレクトリを移動させる。
（５）「$ patch < ~/tmp/p」では、パッチファイル「~/tmp/p」をカレントディレクトリにインストールする。その結果ファイルfがカレントディレクトリに作成される。
（６）「$ cp f /usr/local/lib/...」では、パッチのインストールで作成されたファイルfを「/usr/local/lib/...」にコピーする。
（７）「$ rm ~/tmp/p」では、「~/tmp/p」を削除する。
【００８９】
図１６の例の場合、最終的なファイルは「/usr/local/lib/…f」とする。
先ず、分析処理部１５はログ記憶部１４に保存されたログ情報を取得し（Ｓ４０１）、最終的なファイルを取得する（Ｓ４０２）。図１６の例の場合、分析処理部１５は、最終的なファイルとして、「/usr/local/lib/…f」を取得する。
【００９０】
次に、分析処理部１５は、ログ情報からコマンドの実行と入出力一覧を作成する（Ｓ４０３）。図１６の例の場合、分析処理部１５は図１７に示す入出力一覧を作成する。
【００９１】
次に、分析処理部１５は、各コマンドの最終状態への影響の有無を確認し影響があるコマンドを集合Sの初期値として抽出する（Ｓ４０４）。図１６の例の場合、分析処理部１５はSの初期値として、｛cp f /usr/local/lib/...｝を抽出する。
【００９２】
次に、分析処理部１５は、Sの入力と最終状態の集合をIとして抽出する（Ｓ４０５）。図１６の例の場合、分析処理部１５は、Sの入力と最終状態の集合Iとして、｛/usr/local/lib/…f、/usr/local/src/…f｝を抽出する。
【００９３】
次に、分析処理部１５はIの何れかを出力するコマンドのうち、そのコマンドが出力するファイルを入力とするSのコマンドが出力するファイル以外のファイルを出力するコマンドの集合をS’として抽出する（Ｓ４０６）。図１６の例の場合、分析処理部１５は、S’として、｛patch < ~/tmp/p｝を抽出する。
【００９４】
次に、分析処理部１５は、SとS’の値が等しいか否かを判定する（Ｓ４０７）。S＝｛cp f /usr/local/lib/...｝、S’＝｛patch < ~/tmp/p｝であるので、SとS’は異なる。よって、処理はＳ４０９に遷移する。
【００９５】
次に、分析処理部１５はSの集合にS’を加える（Ｓ４０９）。図１６の例の場合、分析処理部１５は、S＝｛cp f /usr/local/lib/...｝に、S’＝｛patch < ~/tmp/p｝を加えて、Sは、S＝｛cp f /usr/local/lib/...、patch < ~/tmp/p｝となる。
【００９６】
そして、処理はＳ４０５に遷移し、分析処理部１５は、Ｓ４０９で更新されたSの入力と最終状態の集合Iとして、｛/usr/local/lib/…f、/usr/local/src/…f、~tmp/p、${PWD}=/usr/local/src/...｝を抽出する。
【００９７】
次に、分析処理部１５は、分析処理部１５はIの何れかを出力するコマンドのうち、そのコマンドが出力する情報を入力とするSのコマンドが出力する情報以外の情報を出力するコマンドの集合をS’として抽出する（Ｓ４０６）。図１６の例の場合、S’として、｛patch < ~/tmp/p、$ wget http://.../p、 $ cd /usr/local/src/...｝を抽出する。
【００９８】
次に、分析処理部１５は、SとS’の値が等しいか否かを判定する（Ｓ４０７）。S＝｛cp f /usr/local/lib/...、patch < ~/tmp/p｝、S’＝｛patch < ~/tmp/p、$ wget http://.../p 、$ cd /usr/local/src/...｝であるので、SとS’は異なる。
【００９９】
次に、分析処理部１５は、Sの集合にS’を加える（Ｓ４０９）。図１６の例の場合、分析処理部１５は、S=｛cp f /usr/local/lib/...、patch < ~/tmp/p、$ cd /usr/local/src/...、$ wget http://.../p｝となる。
【０１００】
そして、処理は、Ｓ４０５に遷移し、Ｓ４０５からＳ４０７が繰り返される。その結果、図１６の例の場合、最終的にSとして抽出されるコマンドはS=｛cp f /usr/local/lib/...、patch < ~/tmp/p、$ cd /usr/local/src/...、$ wget http://.../p、$ cd ~/tmp｝となる。
【０１０１】
図１８は、本実施形態に係る情報処理装置１のハードウェア構成の一例を示す。サーバは、図１８に示すように、ＣＰＵ２０１、メモリ２０２、記憶装置２０３、読取部２０４、着脱可能記録媒体２０５、通信インターフェース２０６、入出力部２０７を含む。なお、ＣＰＵ２０１、メモリ２０２、記憶装置２０３、読取部２０４、通信インターフェース２０６、及び入出力部２０７は、例えば、バス２０９を介して互いに接続されている。
【０１０２】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１は、メモリ２０２を利用して上述のフローチャートの手順を記述したプログラムを実行する。ＣＰＵ２０１は、情報取得部１１、コマンド実行部１２、ログ保存処理部１３、及び分析処理部１５の一部または全部の機能を提供する。
【０１０３】
メモリ２０２は、例えば半導体メモリであり、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）領域およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）領域を含んで構成される。メモリ２０２は、ログ記憶部１４の一部または全部の機能を提供する。
【０１０４】
記憶装置２０３は、例えばハードディスクであり、ログ記憶部１４の機能の一部または全部の機能を提供する。なお、記憶装置２０３は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置２０３は、外部記録装置であってもよい。
【０１０５】
読取部２０４は、ＣＰＵ２０１の指示に従って着脱可能記録媒体２０５にアクセスする。着脱可能記録媒体２０５は、たとえば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。尚、読取部２０４はなくてもよい。
【０１０６】
通信インターフェース２０６は、ＣＰＵ２０１の指示に従ってネットワークを介してデータを送受信する。尚、通信インターフェース２０６はなくてもよい。
【０１０７】
入出力部２０７は、例えば、ユーザからの指示を受け付けるデバイスに相当する。ユーザは入出力部２０７を用いて、情報処理装置にインストール処理におけるコマンドを入力する。
【０１０８】
実施形態を実現するための情報処理プログラムは、例えば、下記の形態でサーバに提供される。
（１）記憶装置２０３に予めインストールされている。
（２）着脱可能記録媒体２０５により提供される。
（３）ネットワークを介して提供される。
【０１０９】
尚、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１１０】
尚、スナップショットの保存は、ファイルシステム全体のファイルを保存するとしたが、コマンドが実行されることにより発生する副作用の影響を受けるファイルの内容が保存されているということを満たせばファイルシステム全体のファイルを保存しなくてもよい。
【０１１１】
また、ログ保存処理とコマンド抽出処理は、異なる情報処理装置１上で実行されてもよい。
【０１１２】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得する取得部と、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出する抽出部と、
抽出された該コマンドを出力する出力部と、
を備えることを特徴とする情報処理装置。
（付記２）
前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された１以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
ことを特徴とする付記１に記載の情報処理装置。
（付記３）
前記抽出部は、前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
ことを特徴とする請求項１または２に記載の情報処理装置。
（付記４）
前記抽出部は、前記対象ファイルに対する、前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記２または３に記載の情報処理装置。
（付記５）
前記抽出部は、前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記２または３に記載の情報処理装置。
（付記６）
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
抽出された該コマンドを出力する
ことを特徴とする情報処理方法。
（付記７）
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された１以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
ことを特徴とする付記６に記載の情報処理方法。
（付記８）
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
ことを特徴とする付記６または７に記載の情報処理方法。
（付記９）
前記対象ファイルに対する、前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記７または８に記載の情報処理方法。
（付記１０）
前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
ことを特徴とする付記７または８に記載の情報処理方法。
（付記１１）
プロセッサに、
情報処理装置へのプログラムのインストールにおいて実行されるコマンドと、該情報処理装置の動作環境において前記コマンドが実行されることにより影響を受ける情報とを取得し、
前記影響を受ける情報に基づいて、前記インストールが正常終了したときに存在するファイルまたはプロセスの生成に関係するコマンドを抽出し、
抽出された該コマンドを出力する
処理を実行させることを特徴とする情報処理プログラム。
（付記１２）
プロセッサに、
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルに対して実行された１以上のコマンドのうちのいずれかである対象コマンドの実行前後の前記対象ファイルの差分が、前記インストールが正常終了したときの前記対象ファイルと前記対象コマンドの実行前の前記対象ファイルの差分に含まれる場合、該対象コマンドを抽出する
処理を実行させることを特徴とする付記１１に記載の情報処理プログラム。
（付記１３）
前記インストールが正常終了したときに存在するファイルである対象ファイルを検出し、該対象ファイルを生成するコマンドを抽出する
処理を実行させることを特徴とする付記１１または１２に記載の情報処理プログラム。
（付記１４）
プロセッサに、
前記抽出されたコマンドの実行により、該対象ファイルと異なる名称のファイルが生成された場合、該対象ファイルを出力したコマンドを抽出する
処理を実行させることを特徴とする付記１２または１３に記載の情報処理プログラム。
（付記１５）
プロセッサに、
前記対象ファイルが、前記抽出されたコマンドと、前記インストールが正常終了したときに存在しないファイルである非対象ファイルを入力として実行されたコマンドとにより得られる場合、該非対象ファイルを出力したコマンドを抽出する
処理を実行させることを特徴とする付記１２または１３に記載の情報処理プログラム。
【符号の説明】
【０１１３】
１      情報処理装置
２      取得部
３      抽出部
４      出力部
１１      情報取得部
１２      コマンド実行部
１３      ログ保存処理部
１４      ログ記憶部
１５      分析処理部
１６      処理出力部
２０      観測データ
２１      順序
２２      コマンド
２３      システムコール列
３１      順序
３２      入力
３３      コマンド
３４      出力
【図１】
2014182462.tif 000003
【図２】
2014182462.tif 000004
【図３】
2014182462.tif 000005
【図４】
2014182462.tif 000006
【図５】
2014182462.tif 000007
【図６】
2014182462.tif 000008
【図７】
2014182462.tif 000009
【図８】
2014182462.tif 000010
【図９】
2014182462.tif 000011
【図１０】
2014182462.tif 000012
【図１１】
2014182462.tif 000013
【図１２】
2014182462.tif 000014
【図１３】
2014182462.tif 000015
【図１４】
2014182462.tif 000016
【図１５】
2014182462.tif 000017
【図１６】
2014182462.tif 000018
【図１７】
2014182462.tif 000019
【図１８】
2014182462.tif 000020
【手続補正書】
【提出日】平成25年12月19日(2013.12.19)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
本実施形態においては、手順書作成者がインストール作業を実施し、情報処理装置では、その際に手順書作成者により入力されたコマンドが取得され、ログ情報が保存される。そして、ログ情報を使用してインストールに関連するファイルを選別する処理が行われる。これは、手順書やインストールスクリプトの作成にかかる時間の削減につながる。またDevOpsにおいては、運用者が不要だったりやり直したりしたコマンドを開発者にフィードバックすることを容易にする。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
次に、図１１のＸがコマンドc3である場合の動作を説明する。コマンドc3が最終状態形成コマンドか否かを判定する場合、分析処理部１５は、先ず、コマンドc3の出力ファイルであるファイルF’’’が最終的なファイルに含まれるか否かを判定する（Ｓ３０１）。最終的なファイルはF’’’’であるので、判定の結果はＹｅｓとなる。次に、分析処理部１５は、最終的なファイルであるファイルF’’’’と、コマンドc3の入力ファイルであるF’’の差分Ａをとる（Ｓ３０３）。F’’’’とF’’の差分Ａは、「c=‘a’」である。また、分析処理部１５は、コマンドc1の出力ファイルであるファイルF’’’と、コマンドc1の入力ファイルであるF’’の差分Ｂをとる（Ｓ３０４）。F’’’’とF’’の差分Ｂは、「c=‘z’」である。そして、Ｓ３０３とＳ３０４の結果を用いて、分析処理部１５は、差分Ｂは差分Ａに含まれると判定する（Ｓ３０５でＹｅｓ）。そして、分析処理部１５は、コマンドc3は最終状態形成コマンドであると判別する（Ｓ３０６）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
次に、分析処理部１５は、最終状態形成コマンドの集合Sの各コマンドの入力となる情報（ファイル、プロセス、環境変数等）のうち、その最終状態形成コマンドが出力する情報以外の入力情報を出力するコマンドを、新たに最終状態形成コマンドとして判別する。最終状態形成コマンドの集合Sは｛c0、c2、c4、c5、c7、c8｝であるので、各々のコマンドの入力となるファイルを出力しているコマンドは、c1、c3、c6である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
図１５は、本実施形態に係る最終状態形成コマンド選別の動作フロー図を示す。
先ず、分析処理部１５は、ログ記憶部１４に保存されたログ情報を取得する（Ｓ４０１）。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
次に、分析処理部１５は、インストール処理が正常に完了した最終状態を取得する（Ｓ４０２）。図１２の例の場合、分析処理部１５は、最終状態として、｛F、G、P｝を取得する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７９
【補正方法】変更
【補正の内容】
【００７９】
次に、分析処理部１５は、ログ情報からコマンド実行の入出力一覧を作成する（Ｓ４０３）。図１２の例の場合、分析処理部１５は、図１３の入出力一覧を作成する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００８２
【補正方法】変更
【補正の内容】
【００８２】
次に、分析処理部１５は、Iの何れかを出力するコマンドのうち、そのコマンドが出力する情報を入力とするSのコマンドが出力する情報以外の情報を出力するコマンドの集合をS’として抽出する（Ｓ４０６）。図１２の例の場合、Iの何れかを出力するコマンドの集合Hは、H=｛c4、c7、c8、c1、c3、c6｝である。ここで、Iの何れかの同じ情報を出力するコマンドと入力するコマンドとは対応関係にあると記載すると、H=｛c4、c7、c8、c1、c3、c6｝に対応するコマンドJは、それぞれJ=｛−、−、−、(c2, c5)、c4、(c7, c8)｝となる。Hのうち、対応するJのコマンドが出力する情報以外の情報を出力しているものは、｛c1、c6｝となる。尚、c1やc6のように対応するコマンドが複数ある場合には、対応するコマンドのいずれかが、Hが出力する情報以外の情報を出力していればよい。よって、Ｓ４０６で分析処理部１５は、S’として｛c1、c6｝を抽出する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００９０
【補正方法】変更
【補正の内容】
【００９０】
次に、分析処理部１５は、ログ情報からコマンド実行の入出力一覧を作成する（Ｓ４０３）。図１６の例の場合、分析処理部１５は図１７に示す入出力一覧を作成する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００９９
【補正方法】変更
【補正の内容】
【００９９】
次に、分析処理部１５はSの集合にS’を加える（Ｓ４０９）。図１６の例の場合、S＝｛cp f /usr/local/lib/...｝に、S’＝｛patch < ~/tmp/p｝を加えて、Sは、S＝｛cp f /usr/local/lib/...、patch < ~/tmp/p｝となる。
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2014182462.tif 000021