(57)【要約】【課題】複数のソフトウェアに対する適切なインストール順序を選択する。【解決手段】インストールプログラムにおいて、装置にインストールする複数のソフトウェアについて、各ソフトウェアのインストール作業に関するインストール情報を抽出し、抽出した前記インストール情報に基づいて、各ソフトウェアのインストール作業順序により生じるインストール負荷を算出し、算出した前記インストール負荷に基づいて、前記複数のソフトウェアをインストールする順序を選択する、処理をコンピュータに実行させる。【選択図】図３
2014191641.tif 000002
【特許請求の範囲】
【請求項１】
装置にインストールする複数のソフトウェアについて、各ソフトウェアのインストール作業に関するインストール情報を抽出し、
抽出した前記インストール情報に基づいて、各ソフトウェアのインストール作業順序により生じるインストール負荷を算出し、
算出した前記インストール負荷に基づいて、前記複数のソフトウェアをインストールする順序を選択する、
処理をコンピュータに実行させるためのインストールプログラム。
【請求項２】
抽出した前記インストール情報に基づいて、前記複数のソフトウェア間の依存関係を抽出し、抽出した前記依存関係に基づいて、実行可能なインストール順序の候補を抽出し、抽出した前記候補に対して前記インストール負荷を算出することを特徴とする請求項１に記載のインストールプログラム。
【請求項３】
前記実行可能なインストール順序の候補は、前記依存関係から得られる必須関係となるソフトウェアに基づいて部分的なインストール順序を抽出し、抽出した前記部分的なインストール順序を基準に抽出されることを特徴とする請求項２に記載のインストールプログラム。
【請求項４】
算出した前記インストール負荷と、ユーザより指定されたインストール条件とに基づいて、前記複数のソフトウェアをインストールする順序を選択することを特徴とする請求項１乃至３の何れか１項に記載のインストールプログラム。
【請求項５】
前記インストール負荷は、
予め設定されたインストール時にオーバヘッドとなる条件に基づいて算出されることを特徴とする請求項１乃至４の何れか１項に記載のインストールプログラム。
【請求項６】
既存の装置にインストールされているソフトウェアに関する情報を収集し、収集した前記情報で前記インストール情報を学習させることを特徴とする請求項１乃至５の何れか１項に記載のインストールプログラム。
【請求項７】
装置にインストールする複数のソフトウェアについて、各ソフトウェアのインストール作業に関するインストール情報を抽出するインストール情報抽出ステップと、
前記インストール情報抽出ステップにより抽出した前記インストール情報に基づいて、各ソフトウェアのインストール作業順序により生じるインストール負荷を算出する算出ステップと、
前記算出ステップにより算出した前記インストール負荷に基づいて、前記複数のソフトウェアをインストールする順序を選択する選択ステップとを有することを特徴とするインストール方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インストールプログラム及びインストール方法に関する。
【背景技術】
【０００２】
複数のソフトウェアをコンピュータにインストールする場合に、全てのソフトウェアが正常にインストールされるようにインストールするソフトウェア間の依存関係を考慮してインストールの順序を決定する手法が存在する。また、複数のソフトウェアのインストール作業において、全体の再起動回数が最小になるように、インストールの組み合わせや順序に着目してインストール順序を決定する手法が存在する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２１９８６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、複数のソフトウェアをインストールする場合には、ソフトウェアの依存関係との整合を取りながら、全体の処理時間を短くすることが求められる。
【０００５】
上述したような従来手法では、再起動処理を纏めて行うことで再起動に要する時間を削減している。しかしながら、インストール時間を変化させる要因としては、インストール済みのソフトウェアの数やインストールの際に実行されているサービスの数等も存在することから再起動を行う数を最少とすることが必ずしも最適な処理時間となるとは限らない。
【０００６】
また、複数のソフトウェアの中で、一部のソフトウェアは、インストール時点で調達できずに後でインストールしたり、作業難易度が高いため後回しにしたい場合があるが、そのような状況に対して適切にインストール順序を選択するための手法は存在していなかった。
【０００７】
１つの側面では、本発明は、複数のソフトウェアに対する適切なインストール順序を選択することを目的とする。
【課題を解決するための手段】
【０００８】
一態様におけるインストールプログラムは、装置にインストールする複数のソフトウェアについて、各ソフトウェアのインストール作業に関するインストール情報を抽出し、抽出した前記インストール情報に基づいて、各ソフトウェアのインストール作業順序により生じるインストール負荷を算出し、算出した前記インストール負荷に基づいて、前記複数のソフトウェアをインストールする順序を選択する、処理をコンピュータに実行させる。
【発明の効果】
【０００９】
複数のソフトウェアに対する適切なインストール順序を選択することができる。
【図面の簡単な説明】
【００１０】
【図１】インストールシステムの一構成例を示す図である。
【図２】インストール処理が実現可能なハードウェア構成の一例を示す図である。
【図３】インストール処理の一例を示すフローチャートである。
【図４】インストール情報のデータ例を示す図である。
【図５】ソフトウェア指定処理の一例を示すフローチャートである。
【図６】インストール情報収集処理の一例を示すフローチャートである。
【図７】ルート表作成処理の一例を示すフローチャートである。
【図８】依存関係によるグループ化処理の一例を示すフローチャートである。
【図９】ルート表の一例を示す図（その１）である。
【図１０】ルート表の一例を示す図（その２）である。
【図１１】有向グラフの一例を示す図である。
【図１２】インストール候補抽出処理の一例を示すフローチャートである。
【図１３】必須関係のインストール順序の候補の一例を示す図である。
【図１４】インストールコスト算出処理の一例を示すフローチャートである。
【図１５】コスト基準表の一例を示す図である。
【図１６】インストール順序選択処理の一例を示すフローチャート（その１）である。
【図１７】インストール順序選択処理の一例を示すフローチャート（その２）である。
【図１８】実施例１に対応するインストールコストの算出例を示す図である。
【図１９】実施例１におけるコスト算出結果を示す図である。
【図２０】実施例２におけるコスト算出結果の一例を示す図である。
【図２１】インストール情報の設定手番数でのソートの一例を示す図である。
【図２２】実施例３におけるコスト算出結果の一例を示す図である。
【図２３】インストール情報の自動学習の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら実施例について詳細に説明する。
【００１２】
＜インストールシステムの一構成例＞
図１は、インストールシステムの一構成例を示す図である。図１に示すインストールシステム１０は、情報処理装置１１と、１又は複数の既存サーバ１２−１〜１２−ｎ（以下、必要に応じて「既存サーバ１２」と総称する）と、対象サーバ１３とを有する。情報処理装置１１と、既存サーバ１２と、対象サーバ１３とは、例えばインターネットやＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）等に代表される通信ネットワーク１４等によりデータの送受信が可能な状態で接続されている。
【００１３】
情報処理装置１１は、既存サーバ１２から得られるインストール情報を取得し、対象サーバ１３に所定のソフトウェア（以下、必要に応じて「ソフト」と略称する）をインストールする際の順序等を管理するソフトウェアインストール装置の一例である。情報処理装置１１は、例えばＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（ＰＣ）やサーバ、タブレット端末、スマートフォン等を用いることができるが、これに限定されるものではない。
【００１４】
既存サーバ１２は、既に所定のサービスを稼働している装置であり、各種のソフトウェアがインストールされている。また、各既存サーバ１２−１〜１２−ｎに保存されたそれぞれのソフトウェアは、所定のタイミングや指示により実行される。既存サーバ１２は、自己にインストールが実行されたときのソフトウェア情報（例えば、ログ情報）等を情報処理装置１１に送信することができる。
【００１５】
なお、既存サーバ１２とは、例えばＷｉｎｄｏｗｓ（登録商標）やＬｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）等の各種Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）がインストールされた装置である。
【００１６】
対象サーバ１３は、１又は複数のインストール対象のソフトウェアをインストールする対象の装置である。情報処理装置１１における各構成は、対象サーバ１３内に設けられていてもよい。対象サーバ１３のＯＳは、例えばＷｉｎｄｏｗｓ等の所定のＯＳであるが、これに限定されるものではない。
【００１７】
既存サーバ１２及び対象サーバ１３は、例えば、本実施形態におけるソフトウェア等がインストール可能なコンピュータであればよい。また、ソフトウェアは、ＣＤ−ＲＯＭやＤＶＤ等の記録媒体を介して取得してもよく、通信ネットワーク１４等により接続された外部装置等からダウンロードして取得してもよい。
【００１８】
本実施形態では、例えば複数あるソフトウェアのインストール順序を選択する場合に、更にインストール順序の柔軟な組み換えを可能とする。また、本実施形態では、再起動とサービス起動の影響を最小化、並行インストール等によりインストール時間が最短となるインストール順序を求める。
【００１９】
ここで、ソフトウェアとは、例えばコンピュータを動作させる手順や命令をコンピュータが理解できる形式で記述したものであり、コンピュータが扱うプログラム以外のデータを含めてソフトウェアと呼ぶ場合もある。ソフトウェアは、基本ソフトウェア（例えば、ＯＳ）でもよく、アプリケーションソフトウェアでもよく、文書編集ソフトや表計算ソフト等でもよい。次に、図１に示す情報処理装置１１の機能構成の具体例について具体的に説明する。
【００２０】
＜情報処理装置１１の機能構成例＞
図１に示す情報処理装置１１は、ソフトウェア指定部２１と、インストール情報抽出部２２と、インストール情報収集部２３と、依存関係抽出部２４と、インストール候補抽出部２５と、インストールコスト算出部２６と、インストール順序選択部２７と、インストール実行部２８と、インストール情報記憶部２９と、ソフトウェア記憶部３０とを有する。
【００２１】
ソフトウェア指定部２１は、インストールする対象サーバ１３の指定や、対象サーバ１３に稼働させるサービスに対応したソフトウェアの種類やユーザ要件等によるインストール条件等を指定する。ユーザ要件とは、例えばソフトウェアの調達時期の違い、ソフトウェア設定の難易度、インストール時の作業配分等があるが、これに限定されるものではない。なお、ソフトウェア指定部２１における処理は、通信ネットワーク１４により接続された他の端末から行ってもよい。
【００２２】
インストール情報抽出部２２は、ソフトウェア指定部２１で入力されたインストール対象の各ソフトウェアのインストール情報を、インストール情報記憶部２９に記憶されているインストール情報から抽出する。インストール情報とは、例えば各ソフトウェアのインストール作業に関する情報であるが、これに限定されるものではない。インストール情報抽出部２２は、例えばソフトウェア指定部２１で指定されたＯＳ情報、ソフトウェア名をキー名に持つレコードをインストール情報記憶部２９から抽出するが、これに限定されるものではない。
【００２３】
インストール情報収集部２３は、既存サーバ１２にインストールされているソフトウェアのインストール日時情報や、ソフトウェアのインストール時に作成されるインストールディレクトリの作成日時等を取得する。上述したインストールの日時情報やインストールディレクトリの作成日時等は、例えば既存サーバ１２で個々に管理しているソフトウェア管理情報から取得してもよい。また、インストール情報収集部２３は、インストール時に既存サーバ１２から情報処理装置１１にインストールしたことを示す情報を送信させることで、取得してもよい。
【００２４】
また、インストール情報収集部２３は、収集したインストール情報等からソフトウェア間の共存関係を抽出し、インストール情報記憶部２９のインストール情報の共存関係を自動学習する。インストール情報収集部２３における情報収集は、例えば既存サーバ１２におけるインストール内容が変更（例えば、ソフトウェアの追加や削除等）された場合や、既存サーバ１２が追加された場合等に行われるが、これに限定されるものではない。既存サーバ１２が追加された場合とは、例えば対象サーバ１３がインストール後に既存サーバ１２として認識される場合等がある。本実施形態では、インストール情報収集部２３により既存サーバ１２からのインストール情報を収集し、実績データとして利用することで、より適切なインストール順序を選択することができる。
【００２５】
依存関係抽出部２４は、インストール情報抽出部２２により抽出したインストール情報に基づいて、各ソフトウェア間の必須、排他、共存等の依存関係を抽出する。また、依存関係抽出部２４は、抽出した依存関係に基づいて、例えばソフトウェアのルート表（例えば、依存関係でソートしたルート表）等を作成する。
【００２６】
また、依存関係抽出部２４は、作成したルート表等に基づいて、例えば必須関係にあるソフトウェアに対して、例えばノード、エッジ等からなる複数の有向グラフ等のグラフを作成する。依存関係抽出部２４は、作成した複数の必須関係の有向グラフ等から、それぞれの部分ルートのインストール順序（部分的なインストール順序）を求める。なお、ルートは、例えばルート探索手法であるトポロジカルソート等により求められるが、これに限定されるものではない。
【００２７】
インストール候補抽出部２５は、依存関係抽出部２４により得られたそれぞれの部分ルートのインストール順序を保持したまま、それぞれの部分ルートを構成するソフトウェアの組み合わせを総当たり方式で検索する。また、インストール候補抽出部２５は、必須関係のインストール順序を満たし、実行可能な全てのインストール順序の候補を求める。
【００２８】
インストールコスト算出部２６は、インストール候補抽出部２５で抽出したインストール順序の候補に対して、予め設定されたコスト基準表を用いて、各候補のインストール順序インストール作業順序により生じるインストールのコストを求める。なお、コストとは、例えばインストール作業に対する負荷等であるが、これに限定されるものではない。
【００２９】
インストールコスト算出部２６は、例えばインストール時にオーバヘッドとなるコストの基準表等によりそれぞれのソフトウェアのインストール順序内での位置におけるコストを算出し、更にソフトウェア全体の合計によりインストールコスト（インストール負荷）を算出する。また、インストールコスト算出部２６は、ソフトウェア指定部２１によりユーザ等から指定されたインストール条件に対応させたインストールコストを算出してもよい。
【００３０】
インストール順序選択部２７は、インストール候補抽出部２５で求めたインストール順序の候補から、ソフトウェア指定部２１で指定された条件に合うインストール順序を選択する。
【００３１】
例えば、インストール順序選択部２７は、例えばインストール時間が最短となるインストール順序を選択する場合に、インストールコスト算出部２６で求めたインストールコストの値が最小となるインストール順序を選択する。また、インストール順序選択部２７は、あるソフトの順序を固定したインストール順序を選択する場合に、ソフトウェア指定部２１で指定されたソフトウェアが指定された順番に位置するインストール順序を求める。例えば、あるソフトウェアを最後にインストールする場合等である。なお、インストール順序選択部２７は、例えば複数の順序が選択された場合に、予め設定された優先順位（例えば、インストールコストが最小の候補等）に基づいて１つの順序に設定してもよく、ユーザにより指定させてもよい。
【００３２】
また、インストール順序選択部２７は、インストールの作業割合でインストールする製品数を分割する場合に、インストールコスト算出部２６で求めた各ソフトウェアのインストールコストの累積が指定された作業割合となる位置でインストールする製品数を分割する。また、インストール順序選択部２７は、インストール時間でインストールする製品数を分割する場合に、インストールコスト算出部２６で求めた各ソフトウェアのインストールコストを実時間に換算して、指定された時間までにインストールできるソフトウェアの位置で分割する。
【００３３】
また、インストール順序選択部２７は、設定難易度によるインストール順序を求める場合に、まずソフトウェア指定部２１で指定されたソフトウェアをインストール情報の手番数（難易度）でソートする。次に、インストール順序選択部２７は、設定手番数が指定された手番数以上のソフトウェアを選択し、選択したソフトウェアが連続、又は、それに準ずるインストールの順番をインストール順序の候補から選択する。インストール順序選択部２７は、複数の順序がある場合に、インストールコストが最小の候補から優先して選択してもよい。
【００３４】
インストール実行部２８は、ソフトウェア記憶部３０に記憶されているインストール対象のソフトウェアをインストールコスト算出部２６で算出した最短のソフトウェアのインストール順序、又は、インストール順序選択部２７で選択されたインストール順序で、対象サーバ１３にインストールを実行する。
【００３５】
インストール情報記憶部２９は、それぞれのソフトウェアの排他ソフトウェア、必須ソフトウェア、共存ソフトウェア、インストール時にオーバヘッドとなる条件（再起動の有無、サービス起動の有無）で構成されるソフトウェアのインストール情報を記憶する。
【００３６】
ソフトウェア記憶部３０は、インストール対象のソフトウェアのバイナリモジュール、プログラムファイル等を格納する。
【００３７】
なお、上述したインストール情報記憶部２９やソフトウェア記憶部３０等に記憶できる情報としては、これに限定されるものではない。例えば、上述したインストールコスト算出部２６におけるコスト算出時の基準表等も記憶しておいてもよい。また、インストール情報記憶部２９及びソフトウェア記憶部３０は、例えば一体の記憶部として構成されていてもよい。
【００３８】
＜情報処理装置１１のハードウェア構成例＞
各機能をコンピュータに実行させることができる実行プログラム（インストールプログラム）を、例えば汎用のＰＣ等にインストールすることにより、本実施形態におけるインストール処理を実現することができる。ここで、本実施形態におけるインストール処理が実現可能なコンピュータのハードウェア構成例について図を用いて説明する。
【００３９】
図２は、インストール処理が実現可能なハードウェア構成の一例を示す図である。図２におけるコンピュータ本体には、入力装置４１と、出力装置４２と、ドライブ装置４３と、補助記憶装置４４と、主記憶装置４５と、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）４６と、ネットワーク接続装置４７とを有するよう構成されており、これらはシステムバスＢで相互に接続されている。
【００４０】
入力装置４１は、ユーザ等が操作するキーボード及びマウス等のポインティングデバイスや、マイクロフォン等の音声入力デバイスを有しており、ユーザ等からのプログラムの実行指示、各種操作情報、ソフトウェア等を起動するための情報等の入力を受け付ける。
【００４１】
出力装置４２は、本実施形態における処理を行うためのコンピュータ本体を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイを有し、ＣＰＵ４６が有する制御プログラムによりプログラムの実行経過や結果等を表示する。
【００４２】
ここで、本実施形態においてコンピュータ本体にインストールされる実行プログラムは、例えば、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）メモリやＣＤ−ＲＯＭ、ＤＶＤ等の可搬型の記録媒体４８等により提供される。プログラムを記録した記録媒体４８は、ドライブ装置４３にセット可能であり、ＣＰＵ４６からの制御信号に基づき、記録媒体４８に含まれる実行プログラムが、記録媒体４８からドライブ装置４３を介して補助記憶装置４４にインストールされる。
【００４３】
補助記憶装置４４は、例えばハードディスクドライブやＳｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）等のストレージ手段等である。補助記憶装置４４は、ＣＰＵ４６からの制御信号に基づき、本実施形態における実行プログラムや、コンピュータに設けられた制御プログラム等を記憶し、必要に応じて入出力を行うことができる。補助記憶装置４４は、ＣＰＵ４６からの制御信号等に基づいて、記憶された各情報から必要な情報を読み出したり、書き込むことができる。
【００４４】
主記憶装置４５は、ＣＰＵ４６により補助記憶装置４４から読み出された実行プログラム等を格納する。なお、主記憶装置４５は、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）やＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）等である。なお、補助記憶装置４４及び主記憶装置４５は、例えば上述した記憶手段１３に対応している。
【００４５】
ＣＰＵ４６は、オペレーティングシステム等の制御プログラム、及び主記憶装置４５に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、コンピュータ全体の処理を制御して各処理を実現することができる。プログラムの実行中に必要な各種情報等は、補助記憶装置４４から取得することができ、また実行結果等を格納することもできる。
【００４６】
具体的には、ＣＰＵ４６は、例えば入力装置４１から得られるプログラムの実行指示等に基づき、補助記憶装置４４にインストールされたプログラムを実行させることにより、主記憶装置４５上でプログラムに対応する処理を行う。例えば、ＣＰＵ４６は、インストールプログラムを実行させることで、上述したソフトウェア指定部２１による指定の入力やインストール情報抽出部２２によるインストール情報の抽出、インストール情報収集部２３によるインストール情報の収集等の処理を行う。
【００４７】
また、ＣＰＵ４６は、インストールプログラムを実行させることで、依存関係抽出部２４によるソフトウェア間の依存関係の抽出やインストール候補抽出部２５によるインストール順序の候補の抽出、インストールコスト算出部２６によるコスト算出等の処理を行う。また、ＣＰＵ４６は、インストールプログラムを実行させることで、インストール順序選択部２７によるインストール順序の選択やインストール実行部２８によるインストールの実行等の処理を行う。なお、ＣＰＵ４６における処理内容は、これに限定されるものではない。ＣＰＵ４６により実行された内容は、必要に応じて補助記憶装置４４に記憶させることができる。
【００４８】
ネットワーク接続装置４７は、ＣＰＵ４６からの制御信号に基づき、通信ネットワーク等と接続することにより、実行プログラムやソフトウェア、設定情報等を、通信ネットワークに接続されている外部装置等から取得する。また、ネットワーク接続装置４７は、プログラムを実行することで得られた実行結果又は本実施形態における実行プログラム自体を外部装置等に提供することができる。
【００４９】
上述したようなハードウェア構成により、本実施形態におけるインストール処理を実行することができる。また、プログラムをインストールすることにより、汎用のＰＣや通信端末等で本実施形態におけるインストール処理を容易に実現することができる。
【００５０】
＜インストール処理の例＞
ここで、本実施形態におけるインストール処理の一例について、フローチャートを用いて説明する。図３は、インストール処理の一例を示すフローチャートである。図３の例について、ソフトウェア指定部２１は、ユーザ等により入力装置４１を用いて入力されたインストールの対象サーバ（装置）やインストールするソフトウェア、インストール条件等を取得する（Ｓ０１）。
【００５１】
インストール情報抽出部２２は、Ｓ０１の処理により取得したインストール対象の各ソフトウェアのインストール情報をインストール情報記憶部２９から抽出する（Ｓ０２）。
【００５２】
次に、依存関係抽出部２４は、Ｓ０２の処理により抽出したインストール情報に基づいて、ソフトウェア間の必須、排他、共存等の依存関係を抽出する（Ｓ０３）。なお、Ｓ０３の処理では、事前にインストール情報収集部２３により、既存サーバ１２にインストールされているソフトウェアのインストールに関する情報を取得し、取得した情報等からソフトウェア間の共存関係を収集し、インストール情報記憶部２９のインストール情報の共存関係を自動学習しておいてもよい。また、Ｓ０３の処理において、依存関係抽出部２４は、抽出した依存関係に対応するルート表を作成してもよく、必須関係にあるソフトウェアに対して、例えばノード、エッジ等からなる複数の有向グラフを作成してもよい。更に、依存関係抽出部２４は、作成した複数の必須関係の表やグラフから、それぞれの部分ルートのインストール順序を求めてもよい。
【００５３】
次に、インストール候補抽出部２５は、Ｓ０３の処理で得られるそれぞれの部分ルートのインストール順序を保持したまま、それぞれの部分ルートを構成するソフトウェアの組み合わせを総当たり方式で検索し、全てのインストール順序の候補を抽出する（Ｓ０４）。なお、インストール候補抽出部２５は、Ｓ０４の処理において、例えば必須関係のインストール順序を満たしている全てのインストール順序の候補を抽出する。
【００５４】
次に、インストールコスト算出部２６は、Ｓ０４の処理で抽出したインストール順序の候補に対して、インストール時にオーバヘッドとなるコスト基準表により、それぞれのインストール順序でのコストを算出する（Ｓ０５）。
【００５５】
次に、インストール順序選択部２７は、Ｓ０５の処理で得られたインストール順序の候補から、ソフトウェア指定部２１で指定された条件に合うインストール順序を選択する（Ｓ０６）。例えば、インストール順序選択部２７は、Ｓ０６の処理において、コストが小さい方から最適なインストール順序として選択してもよく、インストール時間が最短となるインストール順序を選択してもよい。また、インストール順序選択部２７は、Ｓ０６の処理において、あるソフトの順序を固定したインストール順序を選択してもよく、複数の順序がある場合は、インストールコストが最小の候補から優先して選択してもよい。
【００５６】
また、インストール順序選択部２７は、Ｓ０６の処理において、インストール作業の作業割合でインストールする製品数を分割してもよく、インストール時間によりインストールする製品数を分割してもよい。また、インストール順序選択部２７は、Ｓ０６の処理において、設定難易度によりインストール順序を選択してもよい。
【００５７】
次に、インストール実行部２８は、Ｓ０６で得られた所定の順序で、ソフトウェア記憶部３０に記憶されているインストール対象のソフトウェアを対象サーバ１３に送信し、インストールを実行する（Ｓ０７）。
【００５８】
次に、本実施形態における各処理の具体例について説明する。
【００５９】
＜インストール情報のデータ例＞
図４は、インストール情報のデータ例を示す図である。図４に示すインストール情報は、上述したインストール情報記憶部２９に記憶されている情報である。図４に示すインストール情報の項目としては、キー名、ＯＳ種別、必須ソフト、排他ソフト、共存ソフト（先行ソフト、後続ソフト）、設定手番数、インストール時のオーバヘッド条件（ファイルサイズ（ＭＢ）、再起動の有無、サービス起動の有無）等があるが、項目の内容や数、順序等については、これに限定されるものではない。
【００６０】
キー名とは、ソフトウェアを識別するための情報である。ＯＳ種別とは、そのソフトがインストール可能なＯＳの種別である。必須ソフトとは、キー名のソフトをインストールするために必要となるソフトウェアの情報である。排他ソフトとは、キー名のソフトウェアのインストールを実行するときに排他となるソフトウェアの情報である。共存ソフトとは、先行でインストール又は後続でインストール時に共存できるキー名（ソフトウェア名）である。
【００６１】
設定手番数は、そのキー名のソフトウェアをインストールするときの手間（作業の難易度）等を数値で表現したものである。また、設定手番数は、例えばＧｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ（ＧＵＩ）での設定画面数や定義ファイルの設定項目数を基準に設定することができるが、これに限定されるものではない。設定手番数をインストール情報に持たせることにより、インストールするソフトウェアを難易度で分類することができ、インストール対象のソフトウェアを難易度で分けて、インストールすることができる。これにより、難易度の高いソフトウェアを纏めてスキルのある担当者がインストールする等インストール作業の効率化が図れる。
【００６２】
インストール時のオーバヘッド条件とは、そのキー名のソフトウェアをインストールするときに必要となる処理内容である。ファイルサイズ（ＭＢ）とは、インストール時に必要となる記憶容量であり、再起動の有無とは、インストール時に再起動が必要か否かを示す情報であり、必要な場合に「〇」が設定され、必要でないかどちらでもいい場合に「−」が設定されるが、設定される値はこれに限定されるものではない。また、サービス起動の有無とは、インストール時にサービスの起動が必要か否かを示す情報であり、必要な場合に「〇」が設定され、必要でないかどちらでもいい場合に「−」が設定されるが、設定される値はこれに限定されるものではない。
【００６３】
＜ソフトウェア指定処理＞
次に、ソフトウェア指定部２１におけるソフトウェア指定処理についてフローチャートを用いて説明する。図５は、ソフトウェア指定処理の一例を示すフローチャートである。図５の例において、ソフトウェア指定部は、ユーザ等の指示によりインストール対象のサーバ名とＯＳ種別を指定し（Ｓ１１）、指定されたインストール対象のサーバ名とＯＳ種別をメモリ（例えば、主記憶装置４５）等に格納する（Ｓ１２）。
【００６４】
次に、ソフトウェア指定部２１は、インストール対象のソフトウェア名を指定し（Ｓ１３）、対象ソフトウェアの最後が否かを判断する（Ｓ１４）。ソフトウェア指定部２１は、対象ソフトウェアの最後でない場合（Ｓ１４において、ＮＯ）、インストール対象のソフトウェア名をメモリ等に格納する（Ｓ１５）。また、ソフトウェア指定部２１は、Ｓ１４の処理において対象ソフトウェアの最後である場合（Ｓ１４において、ＹＥＳ）、又は、Ｓ１５の処理後、ソフトウェアのインストール条件を指定する（Ｓ１６）。
【００６５】
次に、ソフトウェア指定部２１は、インストール条件の最後であるか否かを判断し（Ｓ１７）、最後でない場合（Ｓ１７において、ＮＯ）、あるソフトウェアのインストール順番が指定された場合、指定されたソフトウェアとインストール順番をメモリ等に格納する（Ｓ１８）。また、ソフトウェア指定部２１は、インストール作業の分割が指定された場合、分割条件をメモリ等に格納する（Ｓ１９）。なお、分割条件とは、例えば作業割合による分割やインストール時間による分割等があるが、これに限定されるものではない。
【００６６】
また、ソフトウェア指定部２１は、ソフトウェア設定の難易度によるインストールが指定された場合、難易度（手番数）をメモリ等に格納する（Ｓ２０）。ソフトウェア指定部２１は、Ｓ１７の処理においてインストール条件の最後である場合（Ｓ１７）、又は、Ｓ２０の処理後、処理を終了する。なお、図５に示す処理は、インストールする全てのソフトウェアが終了するまで繰り返し行われる。
【００６７】
＜インストール情報収集処理＞
次に、インストール情報収集部２３におけるインストール情報収集処理についてフローチャートを用いて説明する。図６は、インストール情報収集処理の一例を示すフローチャートである。図６の例において、インストール情報収集部２３は、既存サーバ１２のインストール情報を収集し（Ｓ２１）、収集したインストール情報の中に前回と比較して追加されたソフトがあるか否かを判断する（Ｓ２２）。
【００６８】
インストール情報収集部２３は、追加ソフトがある場合（Ｓ２２において、ＹＥＳ）、既存サーバのＯＳ種別、パッケージ管理、レジストリ、インストールディレクトリ等からソフトウェアのインストール日時の情報を取り出す（Ｓ２３）。次に、インストール情報収集部２３は、インストール日時からソフトウェアのインストール順序の情報を生成し（Ｓ２４）、インストールされたソフトが新規ソフトか否かを判断する（Ｓ２５）。
【００６９】
インストール情報収集部２３は、新規ソフトである場合（Ｓ２５において、ＹＥＳ）、インストール情報に追加されたソフトをキー名とした新しいレコードを追加する（Ｓ２６）。また、インストール情報収集部２３は、Ｓ２５の処理において新規ソフトでない場合（Ｓ２５において、ＮＯ）、又は、Ｓ２６の処理後、当該ソフトをキー名とするレコードに、当該ソフトより先にインストールされているソフトを、共存の先行ソフトとして設定する（Ｓ２７）。また、インストール情報収集部２３は、当該ソフトより後からインストールされているソフトを共存の後続ソフトとして設定する（Ｓ２８）。
【００７０】
＜依存関係抽出処理＞
次に、依存関係抽出部２４における依存関係抽出処理についてフローチャートを用いて説明する。なお、依存関係抽出処理は、ルート表作成処理と、依存関係によるグループ化処理とを有するため、それぞれの処理を分けて説明する。なお、以下の説明では、グラフ理論の頂点に当たる部分をノードといい、枝に当たる部分をエッジという。また、エッジの始まりで、矢印のない側のノードを起点ノードといい、エッジの終わりで、矢印のある側のノードを終点ノードという。
【００７１】
図７は、ルート表作成処理の一例を示すフローチャートである。図７の例において、依存関係抽出部２４は、インストール情報抽出部２２で抽出したソフトウェアのインストール情報や、インストール情報収集部２３で収集したソフトウェアのインストール情報を入力する（Ｓ３１）。なお、Ｓ３１の処理では、抽出されたインストール情報を１レコードずつ順番に読み込むことを意味するが、これに限定されるものではない。
【００７２】
次に、依存関係抽出部２４は、インストール情報の最後か否かを判断する（Ｓ３２）。依存関係抽出部２４は、インストール情報の最後でない場合（Ｓ３２において、ＮＯ）、ルート表の起点ノードに当該レコードのインストール情報のキー名を設定する（Ｓ３３）。つまり、依存関係抽出部２４は、インストール情報のキー名の順にルート表を埋めていき、全てのインストール対象のソフトウェアのキー名を起点ノードに設定する。
【００７３】
次に、依存関係抽出部２４は、必須ソフトがあるか否かを判断する（Ｓ３４）。依存関係抽出部２４は、必須ソフトがある場合（Ｓ３４において、ＹＥＳ）、ルート表で起点ノードに設定したソフト名を必須ソフトに持つレコードの終点ノードにキー名のソフト名を設定する（Ｓ３５）。このとき、依存関係には、「必須」を設定する。
【００７４】
依存関係抽出部２４は、Ｓ３４の処理において必須ソフトがない場合（Ｓ３４において、ＮＯ）、又は、Ｓ３５の処理後、排他ソフトがあるか否かを判断する（Ｓ３６）。依存関係抽出部２４は、排他ソフトがある場合（Ｓ３６において、ＹＥＳ）、ルート表で起点ノードが排他ソフト名となっているレコードの終点ノードにキー名のソフト名を設定する（Ｓ３７）。
【００７５】
依存関係抽出部２４は、Ｓ３６の処理において排他ソフトがない場合（Ｓ３６において、ＮＯ）、又は、Ｓ３７の処理後、共存の先行ソフトがあるか否かを判断する（Ｓ３８）。依存関係抽出部２４は、共存の先行ソフトがある場合（Ｓ３８において、ＹＥＳ）、ルート表で起点ノードが先行ソフト名になっているレコードの終点ノードにキー名のソフトウェアを設定する（Ｓ３９）。
【００７６】
依存関係抽出部２４は、Ｓ３８の処理において共存の先行ソフトがない場合（Ｓ３８において、ＮＯ）、又は、Ｓ３９の処理後、共存の後続ソフトがあるか否かを判断する（Ｓ４０）。依存関係抽出部２４は、共存の後続ソフトがある場合（Ｓ４０において、ＹＥＳ）、ルート表で起点ノードがキー名になっているレコードの終点ノードに後続ソフトのソフトウェアを設定する（Ｓ４１）。
【００７７】
依存関係抽出部２４は、Ｓ４０の処理において共存の後続ソフトがない場合（Ｓ４０において、ＮＯ）、又は、Ｓ４１の処理後、ルート表に対して、エッジに起点ノードから終点ノードへのエッジ名を設定する（Ｓ４２）。次に、依存関係抽出部２４は、ルート表に対して、依存関係にインストール情報の依存関係名（例えば、必須、排他、共存）を設定し（Ｓ４３）、処理を終了する。Ｓ４３の処理では、例えばＳ３５の処理を行った場合には、依存関係名に「必須」を設定し、Ｓ３７の処理を行った場合には、依存関係名に「排他」を設定し、Ｓ３９及びＳ４１の処理を行った場合には、依存関係名に「共存」を設定するが、これに限定されるものではない。
【００７８】
また、依存関係抽出部２４は、Ｓ３２の処理において、インストール情報の最後である場合（Ｓ３２において、ＮＯ）、処理を終了する。なお、図７に示す処理は、全てインストール情報に対して処理が行われるまで繰り返し行われる。
【００７９】
図８は、依存関係によるグループ化処理の一例を示すフローチャートである。図８の例において、依存関係抽出部２４は、ルート表に対して、依存関係と起点ノードとをキーとしてソートを行い（Ｓ５１）、ソート結果で排他ソフトを除外し、必須ソフトと共存ソフトとを残す（Ｓ５２）。
【００８０】
次に、依存関係抽出部２４は、Ｓ５２の処理結果として得たルート表のエントリに対して、起点ノードから終点ノードへの有向グラフの依存関係グラフを作成する（Ｓ５３）。また、依存関係抽出部２４は、必須ルートの部分ルートを抽出し（Ｓ５４）、抽出された部分ルートについて、例えばルート探索法により、部分ルート内でのインストール順序を取得する（Ｓ５５）。
【００８１】
＜ルート表の一例＞
図９、図１０は、ルート表の一例を示す図（その１，その２）である。図９の例は、上述した図７の処理で得られる起点ノード毎のルート表を示し、図１０の例では、上述した図８の処理において依存関係でソート後のルート表を示している。
【００８２】
図９、図１０に示すルート表の項目としては、例えば起点ノード、終点ノード、エッジ、依存関係等があるが、項目の内容や種類、順序等については、これに限定されるものではない。
【００８３】
図９、図１０の例では、複数のソフトウェアをインストールする際の順序のルート表が示されている。起点ノードは、起点となるソフトウェアのキー名である。終点ノードは、終点となるソフトウェアのキー名である。エッジは、起点と終点のノードを結ぶ情報である。また、依存関係は、起点ノードと終点ノードの依存関係を示す。依存関係としては、例えば必須、共存、排他等があるが、これに限定されるものではない。
【００８４】
＜有向グラフの一例＞
図１１は、有向グラフの一例を示す図である。図１１の例では、有向グラフのノードとして、インストールするソフトウェアが読み取り可能に記憶された記録媒体（ディスク）を示しているが、これに限定されるものではない。
【００８５】
図１１に示す例では、起点ノードから終点ノードをエッジで結び、エッジには起点ノードと終点ノードからなる名前を設定する。この操作を繰り返すことで部分ルートが作成できる。部分ルートは、終点ノードを持たないノードから始まり起点ノード持たないノードで終了する。
【００８６】
図１１（Ａ）の例では、起点ノードのソフトＡから、終点ノードのソフトＢ、ソフトＣ、ソフトＤへ、ＡＢ、ＡＣ、ＡＤのエッジがそれぞれ設定されている。また、図１１（Ａ）の例では、起点ノードのソフトＣから終点ノードのソフトＤへ、ＣＤのエッジが設定され、起点ノードのソフトＤから終点ノードのソフトＢへ、ＤＢのエッジが設定されている。
【００８７】
ここで、依存関係抽出部２４は、図１１（Ａ）に示す必須関係の部分ルート１内でのインストール順序をルート探索手法で求める。部分ルート内のインストール順序には、一意な方向性しか存在しないため、例えばトポロジカルソート等のルート探索手法を用いて、インストール順序を求めることができる。なお、トポロジカルソートは、ルート内の終点ノードを持たないノードを見つけて、そのノードを除外し、除外したノードを除いたルートの中で、終点ノードを持たないノードを見つけ、そのノードを次に除外する。また、トポロジカルソートは、上述の操作をルート内のノードが１つになるまで繰り返し、除外していったノードの順序で最短ルートを求める手法である。
【００８８】
依存関係抽出部２４は、図１１（Ａ）の例において、部分ルート１を構成するソフトＡ、ソフトＢ、ソフトＣ、ソフトＤで、終点ノードとなっていないソフトＡに着目し、ソフトＡを除外する。また、依存関係抽出部２４は、残ったソフトＢ、ソフトＣ、ソフトＤで、終点ノードとなっていないソフトＣを除外する。また、依存関係抽出部２４は、残ったソフトＢとソフトＤで、終点ノードとなっていないソフトＤを除外する。これにより、部分ルート１のインストール順序「ソフトＡ→ソフトＣ→ソフトＤ→ソフトＢ」の順序が得られる。
【００８９】
また、図１１（Ｂ）の例では、起点ソフトＥから終点ノードＦへ、ＥＦのエッジのみが設定されるため、部分ルート２のインストール順序「ソフトＥ→ソフトＦ」の順序が得られる。
【００９０】
＜インストール候補抽出処理＞
次に、インストール候補抽出部２５におけるインストール候補抽出処理についてフローチャートを用いて説明する。図１２は、インストール候補抽出処理の一例を示すフローチャートである。図１２の例において、インストール候補抽出部２５は、必須ルートの部分ルートを入力とし、総当たり方式で候補を求める（Ｓ６１）。
【００９１】
次に、インストール候補抽出部２５は、最初の処理か否かを判断する（Ｓ６２）。インストール候補抽出部２５は、最初の処理である場合（Ｓ６２において、ＹＥＳ）、部分ルートを構成するソフト数が最も多いルートをベースルートとする（Ｓ６３）。また、インストール候補抽出部２５は、Ｓ６２の処理において最初の処理でない場合（Ｓ６２において、ＮＯ）、又は、Ｓ６３の処理後、構成するソフト数が多い部分ルートをマージルートとする（Ｓ６４）。
【００９２】
次に、インストール候補抽出部２５は、ベースルートの要素にマージルートの要素を順番に代入し（Ｓ６５）、マージしたルートを新しいベースルートとする（Ｓ６６）。
【００９３】
次に、インストール候補抽出部２５は、全ての部分ルートを処理したか否かを判断し（Ｓ６７）、全ての部分ルートを処理していない場合（Ｓ６７において、ＮＯ）、Ｓ６２の処理に戻り、また処理されていない部分ルートに対して処理行う。また、インストール候補抽出部２５は、全ての部分ルートを処理した場合（Ｓ６７において、ＮＯ）、処理を終了する。
【００９４】
＜必須関係のインストール順序の候補例＞
ここで、図１３は、必須関係のインストール順序の候補の一例を示す図である。なお、図１３に示すアルファベットは、ソフト名（キー名）を示している。また、図１３に示す例は、上述した図１１に対応する有向グラフに対応している。
【００９５】
部分ルート１の「ソフトＡ→ソフトＣ→ソフトＤ→ソフトＢ」と、部分ルート２の「ソフトＥ−ソフトＦ」の順序のままで、総当たり検索によりインストール順序の組み合わせを求めると、１５通りの「必須関係のインストール順序の候補」が求まる。
【００９６】
図１３の例では、１５通りの識別番号（Ｎｏ．）が示されており、インストール順序の候補が、左から右の順序でインストールされることを示している。また、共存関係のインストール順序で、ソフトＥ→ソフトＣの順序であることが分かる。その結果、インストール順序の候補は、図１３に示すＮｏ．１０〜１５の計６通りとなる。
【００９７】
＜インストールコスト算出処理＞
次に、インストールコスト算出部２６におけるインストールコスト算出処理についてフローチャートを用いて説明する。図１４は、インストールコスト算出処理の一例を示すフローチャートである。
【００９８】
図１４の例において、インストールコスト算出部２６は、インストール順序の候補を入力し（Ｓ７１）、全てのインストール順序の候補毎に以下の処理を行う。
【００９９】
インストールコスト算出部２６は、インストール情報から当該ソフトウェアのファイルサイズのコストを、例えば「ファイルサイズ（ＭＢ）／１０」で設定する（Ｓ７２）。次に、インストールコスト算出部２６は、インストール情報から再起動が必要なソフトの場合、例えば「ＯＳ再起動コスト１０」と、「インストール済みソフト数×２」を設定する（Ｓ７３）。次に、インストールコスト算出部２６は、インストール情報から先行するソフトがサービス機能を伴う場合、「サービス起動のある先行ソフト数×１０％」をサービス起動中のコストに設定する（Ｓ７４）。次に、インストールコスト算出部２６は、自ソフトのサービス起動が必要な場合、例えば「サービス起動コスト１」を加算する（Ｓ７５）。
【０１００】
次に、インストールコスト算出部２６は、単体コストを算出する（Ｓ７６）。単体コストは、例えば「ファイルサイズのコスト＋再起動のコスト＋サービス起動のコスト＋起動中サービスの影響のコスト」等により得ることができるが、これに限定されるものではない。例えば、単体コストは、上述したファイルサイズのコスト、再起動のコスト、サービス起動のコスト、及び起動中サービスの影響のコストのうち、少なくとも１つを用いて算出することができる。
【０１０１】
次に、インストールコスト算出部２６は、インストール対象ソフトの最後か否かを判断する（Ｓ７７）。インストールコスト算出部２６は、インストール対象ソフトの最後でない場合（Ｓ７７において、ＮＯ）、Ｓ７２の処理に戻り、次のソフトについて処理を行う。
【０１０２】
また、インストールコスト算出部２６は、Ｓ７７の処理においてインストール対象ソフトの最後の場合、その候補に対するインストール順序のコストを算出する（Ｓ７８）。インストール順序のコストは、例えば「対象ソフトウェアの単体コストの合計」により得ることができるが、これに限定されるものではない。
【０１０３】
上述したインストールコスト算出処理により、インストール順序の候補毎にコスト（インストール負荷）を算出することができる。なお、図１４に示す各条件は、予めコスト基準表を設定しておき、その内容に基づいて処理することができる。
【０１０４】
＜コスト基準表の例＞
ここで、図１５は、コスト基準表の一例を示す図である。図１５の例では、インストール時にオーバヘッドとなる条件と、各条件に対するコスト計算の内容が示されているが、条件や計算の内容については、これに限定されるものではない。
【０１０５】
例えば、ソフトフェアのインストール時間は、ファイルのコピー等のソフトウェアの物理量により変わるため、図１５に示すコスト基準表を用いて規定することができる。例えば、ファイスサイズについては、１０ＭＢあたりのコストを「１」としてコストを算出することができる。なお、ファイルサイズのコストは、対象ソフトウェアのインストールにかかるコストであり、ソフトウェアのファイルサイズに依存とする。
【０１０６】
また、例えば、ソフトウェアのインストール後に再起動が必要な場合、ＯＳ再起動（停止を含む）の時間と起動中のソフトウェアの停止や起動に時間がかかる。また、再起動のコストは、ＯＳを再起動し自ソフトを起動するためにかかるコストと、起動中ソフトウェアの停止と起動とにかかるコストがある。
【０１０７】
そこで、本実施形態では、図１５に示すように、例えばＯＳ再起動に対する起動時コストを停止時と起動時のコストを合わせて「１０」とし、インストール済み（起動中）ソフトウェアの停止と起動でそれぞれ「１」とする。したがって、再起動のコストは、「起動時コスト１０＋（起動中ソフトウェア数×２）」としてコストを算出することができる。
【０１０８】
また、ソフトウェアのインストール後にサービス起動が必要な場合、サービス起動の処理に時間がかかる。そこで、本実施形態では、図１５に示すように、例えばインストール後のサービス起動のコストを「１」としてコストを算出することができる。なお、このコストは、例えば対象ソフトウェアのインストールにかかるコストである。
【０１０９】
また、例えば、起動中サービスの影響のコストとして、起動中サービスによるＣＰＵ劣化によるインストール時間の増加コスト１つのサービス（ソフトウェア）あたり１０％増加とする。したがって、図１５に示すように、起動中サービスの影響のコストは、「インストール時間×（０．１×サービス数）」としてコストを算出することができる。なお、サービス数とは、例えば起動中ソフトウェア数等であるが、これに限定されるものではない。また、本実施形態では、それぞれのソフトウェアのインストール順序内での位置におけるコストを算出し、ソフトウェア全体の合計によりインストールコストを算出する。
【０１１０】
＜インストール順序選択処理＞
次に、インストール順序選択部２７におけるインストール順序選択処理についてフローチャートを用いて説明する。図１６、図１７は、インストール順序選択処理の一例を示すフローチャート（その１，その２）である。
【０１１１】
図１６の例において、インストール順序選択部２７は、インストールの順番の候補を入力し（Ｓ８１）、ソフトウェア指定部２１等からの最短時間の指定があるか否かを判断する（Ｓ８２）。インストール順序選択部２７は、最短時間の指定がある場合（Ｓ８２において、ＹＥＳ）、インストールコスト算出部２６で得られたインストールコストの値が最小のインストール順序を選択する（Ｓ８３）。
【０１１２】
また、インストール順序選択部２７は、Ｓ８２の処理において最短時間の指定がない場合（Ｓ８２において、ＮＯ）、又は、Ｓ８３の処理後、ソフトウェア指定部２１等からのインストール順序の指定があるか否かを判断する（Ｓ８４）。インストール順序選択部２７は、インストール順序の指定がある場合（Ｓ８４において、ＹＥＳ）、ソフトウェア名とインストール順番の指定を読込み（Ｓ８５）、インストール候補のうち、指定された順番の位置をソートキーとしてソートする（Ｓ８６）。また、インストール順序選択部２７は、ソート結果で指定された順番に指定されたソフトが位置するレコード（候補）を抽出し（Ｓ８７）、インストールコストの値が最小のインストール順序を選択する（Ｓ８８）。
【０１１３】
インストール順序選択部２７は、Ｓ８４の処理においてインストール順序の指定がない場合（Ｓ８４において、ＮＯ）、又は、Ｓ８８の処理後、ソフトウェア指定部２１等からの難易度の指定があるか否かを判断する（Ｓ８９）。インストール順序選択部２７は、難易度の指定がある場合（Ｓ８９において、ＹＥＳ）、インストールを分割する時の難易度の指定（手番数）を読み込む（Ｓ９０）。また、インストール順序選択部２７は、インストール情報を設定手番数でソートし、難易度指定に合致するソフトを求める（Ｓ９１）。なお、Ｓ９１の処理では、例えば手番数が５０以上のソフトの組み合わせを求めるが、これに限定されるものではない。次に、インストール順序選択部２７は、ソフトの組み合わせの順序を抽出する（Ｓ９２）。次に、インストール順序選択部２７は、抽出した組み合わせ順序のうち、インストールコストの値が最小のインストール順序を選択する（Ｓ９３）。
【０１１４】
インストール順序選択部２７は、Ｓ８９の処理において難易度の指定がない場合（Ｓ８９において、ＮＯ）、又は、Ｓ９３の処理後、ソフトウェア指定部２１等からの作業割合によるインストール分割の指定があるか否かを判断する（Ｓ９４）。インストール順序選択部２７は、作業割合によるインストール分割の指定がある場合（Ｓ９４において、ＹＥＳ）、選択されたインストール順序を入力し（Ｓ９５）、入力されたインストールコストから分岐点となるコスト値を求める（Ｓ９６）。なお、Ｓ９６の処理では、例えば分岐点のコスト値を、「インストールコスト／作業割合」として求めることができるが、これに限定されるものではない。また、インストール順序選択部２７は、インストール順序から分岐点のコスト値を含むインストール順序の位置を求める（Ｓ９７）。
【０１１５】
インストール順序選択部２７は、Ｓ９４の処理において作業割合によるインストール分割の指定がない場合（Ｓ９４において、ＮＯ）、又は、Ｓ９７の処理後、ソフトウェア指定部２１等からの作業時間によるインストール分割の指定があるか否かを判断する（Ｓ９８）。インストール順序選択部２７は、作業時間によるインストール分割の指定がある場合（Ｓ９８において、ＹＥＳ）、インストールコストと実時間の換算係数を設定し（Ｓ９９）、指定された作業時間を換算係数により、インストールコストに換算する（Ｓ１００）。次に、インストール順序選択部２７は、選択されたインストール順序を入力し（Ｓ１０１）、インストール順序の先頭からの累積インストールコストが作業時間を換算したインストールコストの値となる位置を求める（Ｓ１０２）。本実施形態では、上述した処理を行うことにより、インストール順序を選択することができる。なお、上述したＳ８２，Ｓ８４，Ｓ８９，Ｓ９４，及びＳ９８の処理における指定は、ソフトウェア指定部２１等により少なくとも１つの指定がなされているものとするが、処理の順序については、図１６、図１７の例に限定されるものではない。
【０１１６】
＜各実施例＞
次に、本実施形態におけるインストール順序を選択する各実施例について具体的に説明する。なお、以下の説明では、ソフトウェア指定部２１等から、対象サーバ１２へのインストール対象のソフトウェアとしてソフトＡ〜ソフトＩの９個のソフトウェアが指定され、更に以下示す実施例１〜６のインストール条件が指定された場合について説明するが、これに限定されるものではない。
【０１１７】
＜実施例１＞
実施例１は、ソフトＡ〜ソフトＩを最短時間でインストールする場合のインストール順序の選択例である。実施例１は、まずソフトウェアの依存関係を有向グラフで表記する。例えば、ソフトウェア指定部２１で指定されたソフトＡ〜Ｊについて、インストール情報抽出部２２がインストール情報記憶部２９を検索して、例えば、図４に示すように、それぞれのソフトウェアのインストール情報を抽出する。
【０１１８】
また、抽出したインストール情報に対して、依存関係抽出部２４は、以下の条件で図９に示すような対象ソフトウェアのルート表を作成する。まず、依存関係抽出部２４は、インストール対象のソフトＡ〜ソフトＪの全てのソフトウェアをルート表の起点ノードに設定する。図４を参照すると、ソフトＡは必須ソフトがないため、ルート表（図９）への必須ソフトの設定はない。また、図４を参照すると、ソフトＡは排他ソフトＩがあるため、ルート表（図９）の起点ノードがソフトＩの終点ノードにソフトＡ、エッジにＩＡ、依存関係に排他を設定する。また、図４を参照すると、ソフトＡは共存ソフトの先行ソフトとしてソフトＨがあるため、ルート表（図９）の起点ノードがソフトＨの終点ノードにソフトＡ、エッジＨＡ、依存関係に共存を設定する。
【０１１９】
また、図４を参照すると、ソフトＡは共存ソフトの後続ソフトＥとＨがあるため、起点ノードがソフトＡの終点ノードにＥとＨ、エッジにＡＥとＡＨ、依存関係に共存を設定する。また、図４を参照すると、ソフトＢは必須ソフトＡがあるため、ルート表（図９）の起点ノードがソフトＡの終点ノードにソフトＢ、エッジにＡＢ、依存関係に必須を設定する。同様に、ソフトＢは必須ソフトＤがあるため、ルート表（図９）の起点ノードがソフトＤの終点ノードにソフトＢ、エッジにＤＢ、依存関係に必須を設定する。
【０１２０】
また、図４を参照すると、ソフトＢは排他ソフトがないため、ルート表（図９）への排他ソフトの設定はない。また、ソフトＢは、共存ソフトの先行ソフトとして、ソフトＥがあるため、ルート表（図９）の起点ノードがソフトＥの終点ノードにソフトＢ、エッジＥＢ、依存関係に共存を設定する。同様に、共存ソフトの先行ソフトとして、ソフトＦがあるため、ルート表（図９）の起点ノードがソフトＥの終点ノードにソフトＢ、エッジＦＢ、依存関係に共存を設定する。
【０１２１】
また、図４を参照すると、ソフトＢは共存ソフトの後続ソフトＥとＦがあるため、起点ノードがソフトＢの終点ノードにＥとＦ、エッジにＢＥとＢＦ、依存関係に共存を設定する。
【０１２２】
同様の手順で、ソフトＣ〜ソフトＩを図９に示すルート表のように設定する。また、依存関係抽出部２４は、作成したルート表に対して、依存関係を第１キー、起点ノードを第２キーに指定しソートして、依存関係でソートしたルート表（図１０）を得る。依存関係でソートしたルート表（図１０）で、起点ノードのソフトＩは、ソフトＡとソフトＣの排他ソフトであり、ソフトＩを終点ノードとするソフトがないため、排他ソフトとして除外する。依存関係でソートしたルート表（図１０）から依存関係が必須である起点ノードと終点ノードから必須関係の有向グラフを作成し、図１１に示すようなグラフを得る。
【０１２３】
ここで、共存関係だけの依存関係であるソフトＧとソフトＨは、再起動もサービス起動もないため、順序によるインストール全体の時間には影響しないことが分かる。そこで、ソフトＧとソフトＨとは最初に並行インストールすることとする。この場合のコストは、コストが大きい方のコストとする。
【０１２４】
ここで、図１８は、実施例１に対応するインストールコストの算出例を示す図である。また、図１９は、実施例１におけるコスト算出結果を示す図である。なお、図１９の例では、図１８のＮｏ．１の候補に対応するソフトウェア順序に対応するコスト算出結果を示している。
【０１２５】
図１９におけるコスト算出は、例えば上述した図１５に示すようなコスト基準表に基づいて算出されている。図１９の（１）は、ファイルサイズのコストを示し、図１９の（２）は、ＯＳ再起動のコストを示し、図１９の（３）は、サービス起動のコストを示し、図１９の（４）は、起動中サービスの影響のコストの算出結果である。図１９に示す「なし」とは、その基準に該当していないことを示している。図１９に示す各ソフトにおけるコストの合計は、上述した（１）〜（４）で算出された値を加算したものであるが、これに限定されるものではない。
【０１２６】
また、図１８、図１９の例では、ソフトＧとＨは並行インストールされるため、大きい方のコスト（３２）が合計に示されている。図１８の例では、１番目（Ｎｏ．１）の候補のインストールコストは、２８３となる。
【０１２７】
同様に候補の２番目（Ｎｏ．２）から６番目（Ｎｏ．６）までのインストールコストを算出すると図１８に示すようになり、Ｎｏ．３（Ｇ→Ｈ→Ａ→Ｃ→Ｅ→Ｄ→Ｂ→Ｆ）と、Ｎｏ．５（Ｇ→Ｈ→Ａ→Ｃ→Ｄ→Ｅ→Ｂ→Ｆ）で、インストール順序がコスト２７５で最短となる。したがって、その何れかのインストール順序が選択されて、対象サーバ１３へのインストールが実行される。なお、複数の候補が選択された場合には、予め設定された優先条件に基づいて１つの候補に設定される。図１８の例では、例えば候補番号が上位のものを優先条件として、候補Ｎｏ．３が選択されるが、これに限定されるものではなく、他の優先条件を用いてもよい。
【０１２８】
なお、上述の例では、（１）ファイルサイズのコスト、（２）ＯＳ再起動のコスト、（３）サービス起動のコスト、及び（４）起動中サービスの影響のコストを指標として算出したが、これに限定されるものではなく、少なくとも１つの指標を用いてコストを算出してもよい。
【０１２９】
＜実施例２＞
実施例２は、ソフトＡ〜ソフトＩでソフトＤを最後にインストールしたい場合のインストール順序の選択例である。この条件の場合、指定された順序を優先するため、共存関係のインストール順序であるソフトＥ→ソフトＣの順序については考慮しないものとする。また、実施例２の場合は、図１１の有向フラグに示すように、部分ルート１の必須関係で、ソフトＤはソフトＢの前にインストールしなければならないため、ソフトＤ→ソフトＢの順序となる。
【０１３０】
そこで、実施例２では、上述した図１３に示す必須関係のインストール順序の候補を左から５番目のカラムでソートしてソフトＤが最後から２番目となる候補を求める。その結果、図１３に示すＮｏ．１〜３、Ｎｏ．６、Ｎｏ．７、Ｎｏ．１０の計６通りのインストール順序の候補が求まる。
【０１３１】
ここで、共存関係だけの依存関係であるソフトＧとソフトＨは、再起動もサービス起動もないため、順序によるインストール全体の時間には影響しないことが分かる。そこで、実施例２では、ソフトＧとソフトＨは最初にインストールすることとする。
【０１３２】
次に、実施例２は、インストールコスト算出部２６により、それぞれのインストール順序でのインストールコストを求める。図２０は、実施例２におけるコスト算出結果の一例を示す図である。実施例２では、コスト算出した結果、図２０の例に示すようにＮｏ．３（Ｄ→Ｈ→Ｅ→Ａ→Ｃ→Ｆ→Ｄ→Ｇ）が、コスト２８７で最短となるため、そのインストール順序が選択されて、対象サーバ１３へのインストールが実行される。
【０１３３】
＜実施例３＞
実施例３は、ソフトＡ〜ソフトＩで設定手番数が５０以上のソフトウェアを一緒にインストールしたい場合のインストール順序の選択例である。
【０１３４】
図２１は、インストール情報の設定手番数でのソートの一例を示す図である。ソフトウェアＡ〜ソフトＨのインストール情報を設定手番数の多い順にソートすると、図２１に示すような結果が得られる。なお、図２１の例では、ＯＳとしてＷｉｎｄｏｗｓ部分のみ示しているが、これに限定されるものではなく、例えばＬｉｎｕｘ等の別のＯＳについて同様の処理を行ってもよい。
【０１３５】
図２１の例によれば、ソフトＡとソフトＥの難易度が高い。この条件の場合、指定された順序を優先するため、共存関係のインストール順序であるソフトＥ→ソフトＣの順序については考慮しないものとする。
【０１３６】
そこで、上述した図１３に示す必須関係のインストール順序の候補で、ソフトＡとソフトＥが並ぶ候補を求める。その結果、Ｎｏ．２〜Ｎｏ．９の計８通りのインストール順序の候補が求まる。
【０１３７】
ここで、共存関係だけの依存関係であるソフトＧとソフトＨとは、再起動もサービス起動もないため、順序によるインストール全体の時間には影響しないことが分かる。そこで、ソフトＧとソフトＨは最後にインストールすることとする。
【０１３８】
次に、それぞれのインストール順序でのインストールコストを求める。図２２は、実施例３におけるコスト算出結果の一例を示す図である。図２２の例に示すように、コスト算出の結果、Ｎｏ．３（Ｅ→Ａ→Ｃ→Ｄ→Ｆ→Ｂ→Ｇ→Ｈ）が、コスト２７８で最短となるため、そのインストール順序が選択されて、対象サーバ１３へのインストールが実行される。
【０１３９】
＜実施例４＞
実施例４は、上述した実施例１の最短時間でのインストール作業を作業割合で均等に２回に分けたい場合のインストール順序の選択例である。
【０１４０】
上述した実施例１で求められたインストール順序（図１１に示すＮｏ．３）をインストール作業の作業割合で均等に２回に分けると、総作業コストが２７５なので、コスト１３７．５が半分の位置となる（Ｇ→Ｈ→Ａ→Ｃ→Ｅ→Ｄ→Ｂ→Ｆ：コスト２７５）。
【０１４１】
ここで、この順序での累積作業コストは、以下に示すカッコ内を累積作業コストとすると、Ｇ→Ｈ（３２）→Ａ（１０３）→Ｃ（１１５）→Ｅ（１８５）→Ｄ（２３０）→Ｂ（２５５）→Ｆ（２７５）となり、「Ｇ→Ｈ→Ａ→Ｃ」と、「Ｅ→Ｄ→Ｂ→Ｆ」に分けることが、最も近い条件となる。
【０１４２】
このように、実施例４では、算出されたコストを基準にインストール作業を均等に分割することできる。なお、分割数は２回に限定されるものではなく、３回以上であってもよい。
【０１４３】
＜実施例５＞
実施例５は、上述した既存サーバ１２からインストール情報の共存関係を自動学習し、その情報を用いた場合のインストール順序の選択例である。実施例５では、例えばインストール情報収集部２３により既存サーバ１２でインストールされたソフトウェアに関する情報等を収集し、収集した情報からインストール済みのソフトウェアの共存関係を抽出し、インストール情報記憶部２９で管理しているソフトウェアのインストール情報に情報を追加して、自動学習する。なお、既存サーバ１２のＯＳ等に応じてインストール情報の追加内容が異なるため、以下にその具体例を説明する。
【０１４４】
＜Ｗｉｎｄｏｗｓサーバへのソフトウェア追加の例＞
Ｗｉｎｄｏｗｓサーバへのソフトウェア追加の例について説明する。例えば、既存サーバ１２−１に新規にソフトＲがインストールされた場合、インストール情報収集部２３は、ソフトＲのインストール情報を収集する。また、インストール情報収集部２３は、既存サーバ１２−１のプログラム管理、又は、ディレクトリ情報を参照して、ソフトＲより先にインストールされているソフトＡとソフトＢとを収集したとする。
【０１４５】
このとき、インストール情報収集部２３は、インストール情報記憶部２９で管理しているインストール情報に以下の情報を追加する。ここで、図２３は、インストール情報の自動学習の一例を示す図である。図２３の例では、ＯＳ種別をＷｉｎｄｏｗｓとして、以下のキー名を持つレコードにインストール情報を追加している。
「キー名がソフトＡの「共存：後続ソフト」にソフトＲを追加する。」
「キー名がソフトＢの「共存：後続ソフト」にソフトＲを追加する。」
「ソフトＲは新規ソフトのため、インストール情報にキー名がソフトＲのレコードを追加し、「共存：先行ソフト」にソフトＡとソフトＢを追加する。」
＜Ｌｉｎｕｘサーバへのソフトウェア追加の例＞
Ｌｉｎｕｘサーバへのソフトウェア追加の例について説明する。既存サーバ１２−２にソフトＳが新規にインストールされた場合、インストール情報収集部２３は、ソフトＳのインストール情報を収集する。また、インストール情報収集部２３は、既存サーバ１２−２のパッケージ管理を参照して、ソフトＳより先にインストールされているソフトＡとソフトＢを収集したとする。
【０１４６】
このとき、インストール情報収集部２３は、インストール情報記憶部２９で管理しているインストール情報に図２３に示すような情報を追加する。図２３の例では、ＯＳ種別をＬｉｎｕｘとして、以下のキー名を持つレコードにインストール情報を追加している。
「キー名がソフトＡの「共存：後続ソフト」にソフトＳを追加する。」
「キー名がソフトＢの「共存：後続ソフト」にソフトＳを追加する。」
「ソフトＳは新規ソフトのため、インストール情報にキー名がソフトＳのレコードを追加し、「共存：先行ソフト」にソフトＡとソフトＢを追加する。」。これにより、ＯＳ種別に対応してインストール情報の適切な自動学習を実現することができる。また、学習されたインストール情報を用いて、複数のソフトウェアに対する適切なインストール順序が選択されて、対象サーバ１３へのインストールが実行される。
【０１４７】
＜実施例６＞
実施例６は、上述した実施例１の最短時間でのインストール作業で作業を分割する際、最初の作業を作業開始から４時間以内としたい場合のインストール順序の選択例である。
【０１４８】
上述した実施例１の最短時間でのインストール順序は、図１８に示すＮｏ．３の例が該当する。このときのインストール順序は、「Ｇ→Ｈ→Ａ→Ｃ→Ｅ→Ｄ→Ｂ→Ｆ（インストールコスト：２７５）」である。
【０１４９】
ここで、インストールコストの実時間への換算比を、１コストあたり２分とした場合、作業時間で指定された４時間はインストールコストに換算すると１２０に相当する。図１８のＮｏ．３のインストール候補に対し、先頭のソフトからインストールコストを累積していくと、インストールコストが１２０に達するのは、ソフトＥをインストールしているときになる。
【０１５０】
そのため、実施例６では、作業時間が４時間以内に収まるのは、「Ｇ→Ｈ→Ａ→Ｃ」までのインストール作業となる。このように、実施例６では、予め設定された時間範囲内において、複数のソフトウェアに対する適切なインストール順序を選択することができる。
【０１５１】
なお、実施例６では、例えばソフトウェアのインストール時の時間配分でインストール作業を分割する場合に、例えば各ソフトウェアに対するインストール時間を見積もる指標として、例えばファイルサイズのコストのみを用いるようにしてもよい。
【０１５２】
実施例６では、個々のソフトウェアのインストール時間も含めて、インストール作業を時間的に分けることが可能になり、インストールコストを時間値から換算することにより、実際の作業時間に合わせたインストール作業の分割ができるようになる。
【０１５３】
上述したように本実施形態によれば、複数のソフトウェアに対する適切なインストール順序を選択することができる。また、本実施形態によれば、ソフトウェア間の整合性が取れ、ユーザ要件に合った順序で、最短のインストール順序を求められるため、効率的なインストール作業が実現できる。
【０１５４】
また、本実施形態によれば、整合性の取れた順序で、かつ最短時間でインストールができるため、効率的な作業ができ、作業の手戻り等を防止できる。また、本実施形態によれば、例えばソフトウェアの調達時期等に合わせたインストール作業を行うことができるため、作業待ちを削減することができる。また、本実施形態によれば、難易度によるインストール順序の組み換えにより、適切な人員割り当てができる。また、本実施形態によれば、作業時間に合わせたインストール作業の分割により、効率的な作業の割り振りが実現できる。
【０１５５】
また、本実施形態では、複数のソフトウェアのインストール順序を、全体の時間に影響する複数の要素を考慮した順序の候補から選択することで、インストール作業の時間や手間等を短縮することができる。また、本実施形態によれば、単純な短時間化だけでなく、インストール順序の指定や難易度に対応した順序の選択が可能となる。したがって、対象の装置に対する適切なインストール処理を実現できる。
【０１５６】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、上記変形例以外にも種々の変形及び変更が可能である。
【０１５７】
なお、以上の実施例に関し、更に以下の付記を開示する。
（付記１）
装置にインストールする複数のソフトウェアについて、各ソフトウェアのインストール作業に関するインストール情報を抽出し、
抽出した前記インストール情報に基づいて、各ソフトウェアのインストール作業順序により生じるインストール負荷を算出し、
算出した前記インストール負荷に基づいて、前記複数のソフトウェアをインストールする順序を選択する、
処理をコンピュータに実行させるためのインストールプログラム。
（付記２）
抽出した前記インストール情報に基づいて、前記複数のソフトウェア間の依存関係を抽出し、抽出した前記依存関係に基づいて、実行可能なインストール順序の候補を抽出し、抽出した前記候補に対して前記インストール負荷を算出することを特徴とする付記１に記載のインストールプログラム。
（付記３）
前記実行可能なインストール順序の候補は、前記依存関係から得られる必須関係となるソフトウェアに基づいて部分的なインストール順序を抽出し、抽出した前記部分的なインストール順序を基準に抽出されることを特徴とする付記２に記載のインストールプログラム。
（付記４）
算出した前記インストール負荷と、ユーザより指定されたインストール条件とに基づいて、前記複数のソフトウェアをインストールする順序を選択することを特徴とする付記１乃至３の何れか１項に記載のインストールプログラム。
（付記５）
前記インストール負荷は、
予め設定されたインストール時にオーバヘッドとなる条件に基づいて算出されることを特徴とする付記１乃至４の何れか１項に記載のインストールプログラム。
（付記６）
前記インストール時にオーバヘッドとなる条件は、前記ソフトウェアのファイルサイズに対する前記対象の装置への負荷、ＯＳ再起動に対する前記対象の装置への負荷、サービス起動に対する前記対象の装置への負荷、及び起動中サービスの影響に対する前記対象の装置への影響負荷のうち、少なくとも１つの負荷を用いて算出することを特徴とする付記５に記載のインストールプログラム。（図１５）
（付記７）
前記複数のソフトウェアのインストール時におけるそれぞれの難易度に基づいて、インストール順序を選択することを特徴とする付記１乃至６の何れか１項に記載のインストールプログラム。
（付記８）
既存の装置にインストールされているソフトウェアに関する情報を収集し、収集した前記情報で前記インストール情報を学習させることを特徴とする付記１乃至７の何れか１項に記載のインストールプログラム。
（付記９）
装置にインストールする複数のソフトウェアについて、各ソフトウェアのインストール作業に関するインストール情報を抽出するインストール情報抽出ステップと、
前記インストール情報抽出ステップにより抽出した前記インストール情報に基づいて、各ソフトウェアのインストール作業順序により生じるインストール負荷を算出する算出ステップと、
前記算出ステップにより算出した前記インストール負荷に基づいて、前記複数のソフトウェアをインストールする順序を選択する選択ステップとを有することを特徴とするインストール方法。
（付記１０）
装置にインストールする複数のソフトウェアについて、各ソフトウェアのインストール作業に関するインストール情報を抽出するインストール情報抽出部と、
前記インストール情報抽出部により抽出した前記インストール情報に基づいて、各ソフトウェアのインストール作業順序により生じるインストール負荷を算出する算出部と、
前記算出部により算出した前記インストール負荷に基づいて、前記複数のソフトウェアをインストールする順序を選択する選択部とを有することを特徴とする情報処理装置。
【符号の説明】
【０１５８】
１０  インストールシステム
１１  情報処理装置
１２  既存サーバ
１３  対象サーバ
１４  通信ネットワーク
２１  ソフトウェア指定部
２２  インストール情報抽出部
２３  インストール情報収集部
２４  依存関係抽出部
２５  インストール候補抽出部
２６  インストールコスト算出部
２７  インストール順序選択部
２８  インストール実行部
２９  インストール情報記憶部
３０  ソフトウェア記憶部
４１  入力装置
４２  出力装置
４３  ドライブ装置
４４  補助記憶装置
４５  主記憶装置
４６  ＣＰＵ
４７  ネットワーク接続装置
４８  記録媒体
【図１】
2014191641.tif 000003
【図２】
2014191641.tif 000004
【図３】
2014191641.tif 000005
【図４】
2014191641.tif 000006
【図５】
2014191641.tif 000007
【図６】
2014191641.tif 000008
【図７】
2014191641.tif 000009
【図８】
2014191641.tif 000010
【図９】
2014191641.tif 000011
【図１０】
2014191641.tif 000012
【図１１】
2014191641.tif 000013
【図１２】
2014191641.tif 000014
【図１３】
2014191641.tif 000015
【図１４】
2014191641.tif 000016
【図１５】
2014191641.tif 000017
【図１６】
2014191641.tif 000018
【図１７】
2014191641.tif 000019
【図１８】
2014191641.tif 000020
【図１９】
2014191641.tif 000021
【図２０】
2014191641.tif 000022
【図２１】
2014191641.tif 000023
【図２２】
2014191641.tif 000024
【図２３】
2014191641.tif 000025