(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023032868
(43)【公開日】2023-03-09
(54)【発明の名称】環境構築支援装置、及び環境構築支援方法
(51)【国際特許分類】
G06F 8/60 20180101AFI20230302BHJP
【FI】
G06F8/60
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2021139221
(22)【出願日】2021-08-27
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000176
【氏名又は名称】弁理士法人一色国際特許事務所
(72)【発明者】
【氏名】味藤 未冴来
(72)【発明者】
【氏名】大原 貴都
(72)【発明者】
【氏名】鹿糠 秀行
(72)【発明者】
【氏名】富坂 稔
(72)【発明者】
【氏名】広畠 清美
(72)【発明者】
【氏名】河島 徹
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA35
5B376BC33
(57)【要約】
【課題】ITシステムを実現するための環境を効率よく構築できるようにする。
【解決手段】環境構築支援装置は、ITシステムを実現するための環境を木構造で表した情報であり随時更新され得る木構造モデル、環境を構築するための一連のコードである構築スクリプトに関する情報であり随時更新され得る構築スクリプト構造、及び、木構造モデルの要素と構築スクリプトの要素との対応を示す情報であるパラメータ対応情報、を記憶し、木構造モデル及び構築スクリプト構造のうちの少なくともいずれかとパラメータ対応情報とを対照することにより、木構造モデル及び構築スクリプト構造の最新の内容に対応するようにパラメータ対応情報を更新する。木構造モデルは、例えば、上記環境を構成する複数のフィーチャに関する情報と、フィーチャの間の依存関係を示す情報とを含んだフィーチャモデルである。
【選択図】
図3
【特許請求の範囲】
【請求項1】
プロセッサと記憶装置を用いて構成され、
ITシステムを実現するための環境を木構造で表した情報であり随時更新され得る木構造モデル、
前記環境を構築するための一連のコードである構築スクリプトに関する情報であり随時更新され得る構築スクリプト構造、及び、
前記木構造モデルの要素と前記構築スクリプトの要素との対応を示す情報であるパラメータ対応情報、
を記憶する記憶部と、
前記木構造モデル及び前記構築スクリプト構造のうちの少なくともいずれかと前記パラメータ対応情報とを対照することにより、前記木構造モデル及び前記構築スクリプト構造の最新の内容に対応するように前記パラメータ対応情報を更新する、パラメータ対応情報更新部と、
を備える、環境構築支援装置。
【請求項2】
請求項1に記載の環境構築支援装置であって、
前記パラメータ対応情報更新部は、前記木構造モデルの要素の親子関係を示す情報と、前記パラメータ対応情報における前記要素の親子関係を示す情報とを対照し、両者が一致しない場合に、前記パラメータ対応情報における前記要素の親子関係を示す情報を、前記木構造モデルにおける前記要素の親子関係を示す情報に一致するように更新する、
環境構築支援装置。
【請求項3】
請求項1に記載の環境構築支援装置であって、
前記木構造モデルは、前記環境を構成する複数のフィーチャに関する情報と、前記フィーチャの間の依存関係を示す情報とを含んだフィーチャモデルである、
環境構築支援装置。
【請求項4】
請求項3に記載の環境構築支援装置であって、
前記パラメータ対応情報更新部は、前記パラメータ対応情報の要素の親子関係に関する情報が更新される場合に、前記パラメータ対応情報の、更新される前記親子関係の子に当たる要素の情報に、更新される前の親子関係において親に当たる要素の情報を前記依存関係を示す情報として追加する、
環境構築支援装置。
【請求項5】
請求項1に記載の環境構築支援装置であって、
前記パラメータ対応情報更新部は、
前記構築スクリプト構造に、前記パラメータ対応情報に存在しない新規の前記コードが存在する場合に、前記パラメータ対応情報に基づき、前記新規のコードと親子関係にあるコードに対応する要素を特定し、
前記木構造モデルにおいて、特定した前記要素の間に存在する要素を特定し、特定した前記要素と前記新規のコードとの対応を示す情報を前記パラメータ対応情報に追加する、
環境構築支援装置。
【請求項6】
請求項1に記載の環境構築支援装置であって、
前記パラメータ対応情報更新部は、前記木構造モデルに、前記パラメータ対応情報に存在しない新規の前記要素が存在する場合に、前記パラメータ対応情報に基づき、前記新規の要素と親が同一の要素を特定し、特定した前記要素に対応する前記構築スクリプト構造の前記コードと前記新規の要素との対応を示す情報を前記パラメータ対応情報に追加する、
環境構築支援装置。
【請求項7】
請求項1に記載の環境構築支援装置であって、
前記パラメータ対応情報更新部は、前記構築スクリプト構造に、前記パラメータ対応情報に存在しない新規の前記コードが存在する場合に、前記パラメータ対応情報に基づき、前記新規のコードと親が同一の前記コードを特定し、特定した前記コードに対応する前記木構造の前記要素と前記新規のコードとの対応を示す情報を前記パラメータ対応情報に追加する、
環境構築支援装置。
【請求項8】
プロセッサと記憶装置を用いて構成される情報処理装置が、
ITシステムを実現するための環境を木構造で表した情報であり随時更新され得る木構造モデル、
前記環境を構築するための一連のコードである構築スクリプトに関する情報であり随時更新され得る構築スクリプト構造、及び、
前記木構造モデルの要素と前記構築スクリプトの要素との対応を示す情報であるパラメータ対応情報、
を記憶するステップと、
前記木構造モデル及び前記構築スクリプト構造のうちの少なくともいずれかと前記パラメータ対応情報とを対照することにより、前記木構造モデル及び前記構築スクリプト構造の最新の内容に対応するように前記パラメータ対応情報を更新するステップと、
を実行する、環境構築支援方法。
【請求項9】
請求項8に記載の環境構築支援方法であって、
前記情報処理装置が、前記木構造モデルの要素の親子関係を示す情報と、前記パラメータ対応情報における前記要素の親子関係を示す情報とを対照し、両者が一致しない場合に、前記パラメータ対応情報における前記要素の親子関係を示す情報を、前記木構造モデルにおける前記要素の親子関係を示す情報に一致するように更新するステップ、
を更に実行する、環境構築支援方法。
【請求項10】
請求項8に記載の環境構築支援方法であって、
前記木構造モデルは、前記環境を構成する複数のフィーチャに関する情報と、前記フィーチャの間の依存関係を示す情報とを含んだフィーチャモデルである、
環境構築支援方法。
【請求項11】
請求項10に記載の環境構築支援方法であって、
前記情報処理装置が、前記パラメータ対応情報の要素の親子関係に関する情報が更新される場合に、前記パラメータ対応情報の、更新される前記親子関係の子に当たる要素の情報に、更新される前の親子関係において親に当たる要素の情報を前記依存関係を示す情報として追加するステップ、
を更に実行する、環境構築支援方法。
【請求項12】
請求項8に記載の環境構築支援方法であって、
前記情報処理装置が、
前記構築スクリプト構造に、前記パラメータ対応情報に存在しない新規の前記コードが存在する場合に、前記パラメータ対応情報に基づき、前記新規のコードと親子関係にあるコードに対応する要素を特定するステップと、
前記木構造モデルにおいて、特定した前記要素の間に存在する要素を特定し、特定した前記要素と前記新規のコードとの対応を示す情報を前記パラメータ対応情報に追加するステップと、
を更に実行する、環境構築支援方法。
【請求項13】
請求項8に記載の環境構築支援方法であって、
前記情報処理装置が、前記木構造モデルに、前記パラメータ対応情報に存在しない新規の前記要素が存在する場合に、前記パラメータ対応情報に基づき、前記新規の要素と親が同一の要素を特定し、特定した前記要素に対応する前記構築スクリプト構造の前記コードと前記新規の要素との対応を示す情報を前記パラメータ対応情報に追加するステップ、
を更に実行する、環境構築支援方法。
【請求項14】
請求項8に記載の環境構築支援方法であって、
前記情報処理装置が、前記構築スクリプト構造に、前記パラメータ対応情報に存在しない新規の前記コードが存在する場合に、前記パラメータ対応情報に基づき、前記新規のコードと親が同一の前記コードを特定し、特定した前記コードに対応する前記木構造の前記要素と前記新規のコードとの対応を示す情報を前記パラメータ対応情報に追加するステップ、
を更に実行する、環境構築支援方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、環境構築支援装置、及び環境構築支援方法に関する。
【背景技術】
【0002】
特許文献1には、金融システムの環境構築を良好な効率性やコスト性の下で実行することを目的として構成された環境構築支援システムについて記載されている。環境構築支援システムは、構築対象の情報処理装置に関する定数設計書、情報処理装置への設定内容を定義する定義ファイル雛形、及び装置に対し実行する一連の環境構築コマンドを記述した構築スクリプト雛形を記憶し、定数設計書を所定ツールで定数設定値ファイルに変換し、定数設定値ファイルを入力として所定の環境構築ツールを実行し、定数設計書における所定項目を定義ファイル雛形及び構築スクリプト雛形の各々に設定した定義ファイル及び構築スクリプトを生成し、定義ファイル及び構築スクリプトを情報処理装置に配信する。情報処理装置は、配信された構築スクリプトを実行し、定数設計書で規定する所定環境を構築する。
【0003】
非特許文献1には、構築スクリプトをシステムの構成要素であるフィーチャを単位として分解し、フィーチャを木構造で表したモデルであるフィーチャモデルを生成し、ユーザがフィーチャモデルにおけるフィーチャを選択し、対応する構築スクリプトを組み合わせて実行することによりITシステムの環境を構築することが記載されている。
【先行技術文献】
【特許文献】
【0004】
【非特許文献】
【0005】
【非特許文献1】Klaus Pohl, Gunter Bockle, and Frank J. van der Linden: Software Product Line Engineering: Foundations, Principles and Techniques, Springer, 2005.
【発明の概要】
【発明が解決しようとする課題】
【0006】
一般に、IT(Information Technology)システムを実現するための環境(プラットフォーム)の構築は、人手による一気通貫で行われている。このため、ITシステムの環境構築に際し、開発者等のユーザは、設計変更に伴う作業の手戻りにより煩雑な作業や管理を強いられ、ITシステムの品質低下やコストの増大を招きやすい。また、ITシステム毎に環境スクリプトが作成されるため、異なるITシステムについて個別に構築スクリプトが作成されることも多く、無駄が生じやすい。
【0007】
クラウド環境を利用するITシステムの開発に際しては、クラウド環境へのサービスの追加や編集等が随時行われる。しかし、各サービスの間には依存関係があるため、サービスの追加や編集に際しては、追加や編集の対象となるサービスに関連するサービスの特定や、特定したサービスについてのパラメータの編集、環境を構築するためのスクリプトの編集が必要となり、ユーザは煩雑な作業を強いられる。例えば、特許文献1の例では、構築スクリプトに対応した定数設計書を定義しており、サービスの追加や編集に際しては、依存関係を考慮しつつ構築スクリプトや定数設計書を編集する必要がある。また、非特許文献1では、フィーチャモデルを選択することによりクラウド環境の構築を行うことができるが、クラウド環境へのサービスの追加や編集に際し、フィーチャモデル、構築スクリ
プト、及びこれらの対応関係を考慮しなければならない。
【0008】
本発明はこうした背景に鑑みてなされたものであり、ITシステムを実現するための環境を効率よく構築することを可能にする、環境構築支援装置、及び環境構築支援方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記の目的を達成するための本発明の一つは、環境構築支援装置であって、プロセッサと記憶装置を用いて構成され、ITシステムを実現するための環境を木構造で表した情報であり随時更新され得る木構造モデル、前記環境を構築するための一連のコードである構築スクリプトに関する情報であり随時更新され得る構築スクリプト構造、及び、前記木構造モデルの要素と前記構築スクリプトの要素との対応を示す情報であるパラメータ対応情報、を記憶する記憶部と、前記木構造モデル及び前記構築スクリプト構造のうちの少なくともいずれかと前記パラメータ対応情報とを対照することにより、前記木構造モデル及び前記構築スクリプト構造の最新の内容に対応するように前記パラメータ対応情報を更新する、パラメータ対応情報更新部と、を備える。
【0010】
尚、上記した以外の課題、構成及び効果は、以下の発明を実施するための形態の説明により明らかにされる。
【発明の効果】
【0011】
本発明によれば、ITシステムを実現するための環境を効率よく構築することができる。
【図面の簡単な説明】
【0012】
【
図1】一実施形態として示す情報処理システムの概略的な構成を示す図である。
【
図2】情報処理システムを構成する情報処理装置の一例を示すブロック図である。
【
図3】環境構築支援装置が備える主な機能を説明するシステムフロー図である。
【
図6A】フィーチャモデル読込処理を説明するフローチャートである。
【
図6B】選択済フィーチャモデル読込処理を説明するフローチャートである。
【
図6C】構成選択結果反映処理を説明するフローチャートである。
【
図6D】選択済フィーチャモデル出力処理を説明するフローチャートである。
【
図6E】依存関係判定処理を説明するフローチャートである。
【
図7】構築スクリプト構造解析処理を説明するフローチャートである。
【
図8A】仮レコード追加処理を説明するフローチャートである。
【
図8B】既存ParameterTag追加箇所推定処理を説明するフローチャートである。
【
図8C】新規ParameterTag対応フィーチャ特定追加処理を説明するフローチャートである。
【
図8D】親子関係変化特定書換処理を説明するフローチャートである。
【
図8E】未対応フィーチャ特定追加処理を説明するフローチャートである。
【
図8F】環境構築支援装置が対応可能なフィーチャモデルや構築スクリプト構造の変更(更新)の態様を示す図である。
【
図9】パラメータ生成処理を説明するフローチャートである。
【
図10】構築スクリプト生成処理を説明するフローチャートである。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態について図面を参照しつつ説明する。以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。とくに限定しない限り、各構成要素は単数でも複数でも構わない。
【0014】
以下の説明において、同一の又は類似する構成について同一の符号を付して重複した説明を省略することがある。また、同一の又は類似する複数の構成について、個々を識別するために、上記の同一の符号に括弧書き等で添え字を付して個を区別することがある。以下の説明において、符号の前に付した「S」の文字は処理ステップを意味する。以下の説明において、「第1」、「第2」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。以下の説明において、「テーブル」、「情報」等の表現にて各種情報を説明することがあるが、情報はこれら以外のデータ構造で表現してもよい。
【0015】
図1に、一実施形態として示す情報処理システム1の概略的な構成を示している。同図に示すように、例示する情報処理システム1は、クラウドシステム2によって提供されるリソース(ハードウェアリソース、ソフトウェアリソース)を用いて実現される、IT(Information Technology)システムを実現するためのプラットフォームであるクラウド環境3、クラウド環境3により提供されるサービスを享受するサービス利用装置4、及びクラウド環境3の構築を支援する情報処理装置(以下、「環境構築支援装置100」と称する。)を含む。
【0016】
クラウド環境3とサービス利用装置4は、通信ネットワーク5を介して通信可能に接続している。また、クラウド環境3と環境構築支援装置100は、通信ネットワーク5を介して通信可能に接続している。通信ネットワーク5は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、専用線、各種公衆通信網(携
帯電話網、データ通信網等)である。尚、通信ネットワーク5の形態は必ずしも例示するものに限定されない。例えば、クラウド環境3とサービス利用装置4を接続する通信ネットワークと、クラウド環境3と環境構築支援装置100を接続する通信ネットワークとは、異なる通信ネットワークであってもよい。
【0017】
クラウド環境3は、例えば、仮想化技術やプロセス空間分離技術等を用いて提供される仮想的な情報処理資源を用いて構成される仮想サーバ(仮想的な情報処理装置)を含む。クラウド環境3は、例えば、SaaS(Software as a Service)、PaaS(Platform as a Service)、IaaS(Infrastructure as a Service)等のサービスをサービス利
用装置4に提供する。また、クラウド環境3は、例えば、API(Application Programming Interface)を介してサービスをサービス利用装置4に提供する。
【0018】
サービス利用装置4は、通信ネットワーク5を介してクラウド環境3にアクセスし、クラウド環境3が提供するサービスを享受する。
【0019】
環境構築支援装置100は、クラウド環境3を利用した情報処理システムを開発するユーザのクラウド環境3の構築にかかる作業を支援する。環境構築支援装置100は、構築しようとするクラウド環境3の構成要素(以下、「フィーチャ」と称する。)を木構造で表したモデル(以下、「フィーチャモデル」と称する。)と、クラウド環境3の構築の際に実行される一連のコード(以下、「構築スクリプト」と称する。)の構造に関する情報(以下、「構築スクリプト構造」と称する。)を管理する。構築スクリプトは、例えば、
IaC(Infrastructure as Code)に基づき生成される、クラウド環境3の管理やプロビジョニングを行うための一連のコマンドである。また、環境構築支援装置100は、フィーチャモデルの要素と構築スクリプト構造の要素との対応を示す情報(以下、「パラメータ対応情報」と称する。)を生成する。
【0020】
環境構築支援装置100は、ユーザからユーザインタフェースを介してフィーチャモデルを構成するフィーチャの選択を受け付け、受け付けた内容(以下、「選択済フィーチャモデル」と称する。)、パラメータ対応情報、及び構築スクリプト構造に基づき、構築スクリプトを生成する。ユーザは、環境構築支援装置100を利用することで、所望の環境を容易に構築することができる。
【0021】
図2は、クラウド環境3、サービス利用装置4、及び環境構築支援装置100を構成する情報処理装置(コンピュータ)の一例を示すブロック図である。クラウド環境3を構成する情報処理装置は、クラウドシステム2のリソースによって実現される。また、サービス利用装置4と環境構築支援装置100は、例えば、同図に示す構成を有する情報処理装置、例えば、パーソナルコンピュータ、サーバ装置、スマートフォン、タブレット、オフィスコンピュータ、汎用機(メインフレーム)によって実現される。尚、サービス利用装置4や環境構築支援装置100の構成の全部又は一部は、例えば、クラウドシステム2のリソースによって実現されるものでもよい。また、サービス利用装置4や環境構築支援装置100の構成の全部又は一部は、例えば、クラウドシステムがAPI(Application Programming Interface)等を介して提供するサービスによって実現されるものでもよい。
【0022】
例示する情報処理装置10は、プロセッサ11、主記憶装置12(メモリ)、補助記憶装置13(外部記憶装置)、入力装置14、出力装置15、及び通信装置16を備える。これらはバスや通信ケーブル等を介して通信可能に接続されている。尚、入力装置14及び出力装置15はいずれも必須の構成ではなく、例えば、クラウド環境3を構成する情報処理装置は、入力装置14や出力装置15を必ずしも備えていなくてもよい。
【0023】
プロセッサ11は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field Programmable
Gate Array)、ASIC(Application Specific Integrated Circuit)、AI(Artificial Intelligence)チップ等を用いて構成されている。
【0024】
主記憶装置12は、プログラムやデータを記憶する装置であり、例えば、ROM(Read
Only Memory)、RAM(Random Access Memory)、不揮発性メモリ(NVRAM(Non Volatile RAM))等である。クラウド環境3、サービス利用装置4、及び環境構築支援装置100の夫々によって提供される各種の機能は、夫々のプロセッサ11が、主記憶装置12に格納(記憶)されているプログラムを読み出して実行することにより実現される。
【0025】
補助記憶装置13は、例えば、SSD(Solid State Drive)、ハードディスクドライ
ブ、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)、ストレージシステム、ICカード、SDカードや光学式記録媒体等の非一時的な記録媒体の読取/書込装置、クラウドサーバの非一時的な記憶領域等である。補助記憶装置13には、記録媒体の読取装置や通信装置16を介して、非一時的な記録媒体や非一時的な記憶装置を備えた他の情報処理装置からプログラムやデータを読み込むことができる。補助記憶装置13に格納(記憶)されているプログラムやデータは主記憶装置12に随時読み込まれる。
【0026】
入力装置14は、外部からの情報の入力を受け付けるインタフェースであり、例えば、キーボード、マウス、タッチパネル、カードリーダ、ペン入力方式のタブレット、音声入
力装置等である。
【0027】
出力装置15は、処理経過や処理結果等の各種情報を外部に出力するインタフェースである。出力装置15は、例えば、上記の各種情報を可視化する表示装置(液晶モニタ、LCD(Liquid Crystal Display)、グラフィックカード等)、上記の各種情報を音声化する装置(音声出力装置(スピーカ等))、上記の各種情報を文字化する装置(印字装置等)である。尚、例えば、情報処理装置10が通信装置16を介して他の装置との間で情報の入力や出力を行う構成としてもよい。
【0028】
入力装置14と出力装置15は、ユーザとの間での対話処理(情報の受け付け、情報の提供等)を実現するユーザインタフェースを構成する。
【0029】
通信装置16は、他の装置との間の通信を実現する装置である。通信装置16は、通信ネットワーク5を介して他の装置との間の通信を実現する、有線方式又は無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USBモジュール等である。
【0030】
情報処理装置10には、例えば、オペレーティングシステム、ファイルシステム、DBMS(DataBase Management System)(リレーショナルデータベース、NoSQL等)、KVS(Key-Value Store)等が導入されていてもよい。
【0031】
クラウド環境3、サービス利用装置4、及び環境構築支援装置100の夫々において管理される情報(データ)は、例えば、夫々において動作するファイルシステムやDBMSによって管理される。
【0032】
図3は、環境構築支援装置100が備える主な機能を説明するシステムフロー図である。同図に示すように、環境構築支援装置100は、図示しない記憶部110、パラメータ対応情報更新部120、構成選択部125、パラメータ生成部130、及び構築スクリプト生成部135の各機能を備える。同図に示すように、構成選択部125は、処理部1251及び設定受付部1252を含む。
【0033】
上記機能のうち、記憶部110は、フィーチャモデル111、構築スクリプト構造112、パラメータ対応情報113、選択済フィーチャモデル114、構築スクリプトパラメータ115、及び構築スクリプト116の各情報を記憶する。
【0034】
このうちフィーチャモデル111には、ユーザが環境構築支援装置100や他の情報処理装置が提供するユーザインタフェースを介して設定(登録、編集、削除等)した、フィーチャに関する情報が管理される。
【0035】
構築スクリプト構造112には、ユーザが環境構築支援装置100や他の情報処理装置が提供するユーザインタフェースを介して設定(登録、編集、削除等)した、構築スクリプト構造に関する情報が管理される。
【0036】
パラメータ対応情報113には、パラメータ対応情報更新部120によって生成されたパラメータ対応情報に関する情報が管理される。選択済フィーチャモデル114には、構成選択部125がユーザとの対話処理を行うことにより選択した、フィーチャモデル(選択済フィーチャモデル)に関する情報が管理される。
【0037】
構築スクリプトパラメータ115には、パラメータ生成部130が、構築スクリプト構造112、パラメータ対応情報113、及び選択済フィーチャモデル114に基づき生成
した、構築スクリプトの生成に用いるパラメータに関する情報が管理される。
【0038】
構築スクリプト116には、構築スクリプトパラメータ115に基づき構築スクリプト生成部135が生成した、構築スクリプト116に関する情報が管理される。これらの情報の詳細については後述する。
【0039】
図3に示す機能のうち、パラメータ対応情報更新部120は、フィーチャモデル111及び構築スクリプト構造112の最新の内容に対応するように、パラメータ対応情報113の内容を更新する。
【0040】
構成選択部125は、ユーザからフィーチャモデルの選択や設定を受け付け、受け付けた内容に基づき選択済フィーチャモデル114を生成する。構成選択部125の設定受付部1252は、例えば、後述する設定受付画面500を提示しつつ、ユーザからフィーチャモデルの設定を受け付ける。構成選択部125の処理部1251は、設定受付部1252がユーザから受け付けた内容に基づき、選択済フィーチャモデル114を生成する。
【0041】
パラメータ生成部130は、構築スクリプト構造112、パラメータ対応情報113、及び選択済フィーチャモデル114に基づき、構築スクリプトパラメータ115を生成する。
【0042】
構築スクリプト生成部135は、構築スクリプトパラメータ115に基づき構築スクリプト116を生成する。
【0043】
図4Aは、フィーチャモデル111の一例である。例示するフィーチャモデル111は、フィーチャID1111、フィーチャ名1112、値1113、ルート1114、依存1115、デフォルト選択状態1116、親フィーチャID1117、及び親との関係1118等の項目を有する複数のレコード(エントリ)で構成される。フィーチャモデル111の一つのレコードは一つのフィーチャに対応している。尚、フィーチャモデル111は、同図に示した以外の項目、例えば、フィーチャのコスト等の情報が格納される項目を更に有していてもよい。
【0044】
上記項目のうち、フィーチャID1111には、フィーチャの識別子であるフィーチャIDが格納される。
【0045】
フィーチャ名1112には、当該フィーチャの名称(以下、「フィーチャ名」と称する。)が格納される。
【0046】
値1113には、当該フィーチャについて構築スクリプトに連携される値が格納される。
【0047】
ルート1114には、当該フィーチャが、親フィーチャからみて必須のフィーチャであるか否か(必須選択「mandatory」、任意選択可能「selective」)を示す情報が格納される。尚、例えば、2つ以上のフィーチャの親フィーチャID1117の値が同じであり、かつ、ルート1114に「selective」が格納されている場合、これらのフィーチャは、
共通の親フィーチャから見て「択一的に選択可能」であることを示す。
【0048】
依存1115には、当該フィーチャと依存関係にあるフィーチャのフィーチャIDが格納される。また、依存1115には、特定のフィーチャが選択された状態である必要があることを示す「AND」、特定のフィーチャが非選択の状態である必要があることを示す「XOR」等の、関係の種類を表す情報も適宜格納される。
【0049】
デフォルト選択状態1116には、後述する設定受付画面500の表示に際し、当該フィーチャがデフォルトとして選択されるか否かを示す情報が格納される。
【0050】
親フィーチャID1117には、フィーチャモデル(木構造モデル)における、当該フィーチャの親フィーチャのフィーチャIDが格納される。このように、フィーチャモデル111では、各フィーチャの親フィーチャのフィーチャIDを親フィーチャID1117に格納することで木構造が表現されている。
【0051】
親との関係1118には、当該フィーチャの親フィーチャとの関係を示す情報、例えば、親フィーチャの数量や名称といった親フィーチャについての実現値であることを示す情報(例えば、「実現値」等)が格納される。例えば、親フィーチャのフィーチャ名が「Instance type」であり、子フィーチャのフィーチャ名が「small」や「large」である場合
、子フィーチャは、親フィーチャについて「Instance typeはsmallである」、「Instance
typeはlargeである」といった具体的な実現値を表す関係にある。
【0052】
図4Bは、構築スクリプト構造112の一例である。構築スクリプト構造112は、対応表112a、対応表112b、対応表112c、及び対応表112dの4つの表(テーブル)を含む。
【0053】
対応表112aには、フィーチャモデルと当該フィーチャモデルを構成するコンポーネントとの対応関係を示す情報が管理される。コンポーネントとは、例えば、構築対象となるサーバを所定の機能毎に分類した単位である。同図に示すように、例示する対応表112aは、ModelName1121a及びComponentName1122aの各項目を有する一つ以上のレコード(エントリ)で構成される。対応表112aの一つのレコードは、フィーチャモデルの一つに対応している。
【0054】
上記項目のうち、ModelName1121aには、フィーチャモデルの名称(以下、「モデ
ル名」と称する。)が格納される。
【0055】
ComponentName1122aには、コンポーネント名称(以下、「コンポーネント名」と
称する。)が格納される。ComponentName1122aには、対応表112bにおけるComponentName1121bから選択される値が格納される。
【0056】
本例では、ModelName1121aに、ITシステムの典型的な形態であるWeb3階層構造
を示す「Web3Tier」が、また、ComponentName1122aに、Web3階層構造を構成するコ
ンポーネントである「Network」、「Web」、「App」、「DB」が格納されている。尚、ModelName1121aには、他にも例えば、バッチシステムや独自のアーキテクチャ構造を示す情報が適宜格納される。
【0057】
対応表112bには、コンポーネントのパラメータに関する情報が管理される。同図に示すように、対応表112bは、ComponentName1121b、ParameterSetId1122b
、ParametersName1123b、ConnectionsName1124b、及びFilePath1125bの
各項目を有する一つ以上のレコード(エントリ)で構成される。対応表112bの一つのレコードは、コンポーネントに一つに対応している。
【0058】
上記項目のうち、ComponentName1121bには、当該コンポーネントのコンポーネン
ト名が格納される。
【0059】
ParameterSetId1122bには、当該コンポーネントについてのパラメータ群の識別子
(以下、「ParameterSetId」と称する。)が格納される。
【0060】
ParametersName1123bには、当該コンポーネントに関連するパラメータ群の名称が格納される。ParametersName1123bには、対応表112dのParametersName1121dから選択される値が格納される。
【0061】
ConnectionsName1124bには、当該コンポーネントが他のコンポーネントと通信す
る際に用いる情報(以下、「接続情報」と称する。)に関連する情報群の識別子(以下、「ConnectionsName」と称する。)が格納される。ConnectionsName1124bには、対応表112cのConnectionsName1121cから選択される値が格納される。
【0062】
FilePath1125bには、当該コンポーネントのパラメータを受け取って実行するスクリプトを記述したファイルの所在(ファイルパス)を示す情報が格納される。尚、上記スクリプトの実体の特定は、スクリプトを記述したファイル名を指定する方法等、他の方法で行うようにしてもよい。
【0063】
対応表112cには、前述した接続情報が管理される。同図に示すように、対応表112cは、ConnectionsName1121c、TargetComponentName1122c、及びParametersName1123cの各項目を有する一つ以上のレコード(エントリ)で構成される。対応表112cの一つのレコードは、接続情報の一つに対応している。
【0064】
上記項目のうち、ConnectionsName1121cには、前述したConnectionsNameが格納される。
【0065】
TargetComponentName1122cには、当該接続情報における通信の対象となるコンポ
ーネントのコンポーネント名が格納される。
【0066】
ParametersName1123cには、当該接続情報における通信等で用いられるパラメータ群の名称が格納される。ParametersName1123cには、対応表112dのParametersName1121dから選択される値が格納される。本例では、ParametersName1123cに格納されている「AppConnection」、「AppInConnection」について、TargetComponentName
1122cに夫々、「DB」、「空白(なし)」が格納されている。また、夫々について、ParametersName1123cに、データベースのコンポーネントとの接続情報やコンポーネントの内部で用いられる通信に関するパラメータの名称である「AppDBConn」、「AppInConn」が格納されている。
【0067】
対応表112dには、パラメータに関する情報が管理される。同図に示すように、対応表112dは、ParametersName1121d、ParametersKey1122d、ParametersValue1123d、及びParameterTag1124dの各項目を有する一つ以上のレコード(エントリ)で構成される。対応表112dの一つのレコードは、パラメータ群の一つに対応している。
【0068】
上記項目のうち、ParametersName1121dには、当該パラメータ群の名称が格納される。
【0069】
ParametersKey1122dには、当該パラメータを参照して実行されるスクリプトファ
イルに連携させる値の名称(以下、「キー名」と称する。)が格納される。
【0070】
ParametersValue1123dには、上記キー名に対応する具体的な値が格納される。尚
、ParametersValue1123dには、フィーチャモデル111に関係なく値を予め格納し
ておくことができる。
【0071】
ParameterTag1124dには、フィーチャモデル111の値1113との対応関係をパラメータ対応情報113で定義するタグ情報が格納される。
【0072】
尚、本例では、ParametersKey1122d、ParametersValue1123d、及びParameterTag1124dに格納される値としていずれも1階層の例を示しているが、上記の値は複数階層の値でもよい。
【0073】
図4Cは、選択済フィーチャモデル114の一例である。選択済フィーチャモデル114には、構成選択部125によってフィーチャモデル111から選択されたフィーチャ(以下、「選択済フィーチャ」と称する。)の情報が管理される。例示する選択済フィーチャモデル114は、フィーチャID1141、フィーチャ名1142、値1143、依存1144、子フィーチャID1145、親との関係1146等の各項目を有する複数のレコード(エントリ)で構成される。選択済フィーチャモデル114の一つのレコードは一つの選択済フィーチャに対応している。尚、選択済フィーチャモデル114は、同図に示した以外の項目、例えば、選択済フィーチャのコスト等の情報が格納される項目を更に有していてもよい。
【0074】
上記項目のうち、フィーチャID1141には、当該選択済フィーチャのフィーチャIDが格納される。
【0075】
フィーチャ名1142には、当該選択済フィーチャのフィーチャ名が格納される。
【0076】
値1143には、当該選択済フィーチャについて構築スクリプトに連携される値が格納される。
【0077】
依存1144には、当該選択済フィーチャと依存関係にあるフィーチャのフィーチャIDが格納される。
【0078】
子フィーチャID1145には、当該選択済フィーチャの子フィーチャのフィーチャIDが格納される。
【0079】
親との関係1146には、当該選択済フィーチャの親フィーチャとの関係を示す情報が格納される。
【0080】
図4Dは、パラメータ対応情報113の一例である。例示するパラメータ対応情報113は、現Ver.1130、旧Ver.1131、フィーチャID1132、親フィーチャID1133、子フィーチャID1134、依存1135、ParameterSetId1136、ParameterTag1137、親ParameterTag1138、子ParameterTag1139等の各項目を有する複数のレコード(エントリ)で構成される。パラメータ対応情報113の一つのレコードは、フィーチャモデルを構成するフィーチャの一つに対応している。尚、パラメータ対応情報113は、同図に示した以外の項目、例えば、フィーチャが連携する値等の情報が格納される項目を更に有していてもよい。
【0081】
上記項目のうち、現Ver.1130及び旧Ver.1131には、当該フィーチャのパラメータの現在のバージョン及び一つ前のバージョンを示す情報が格納される。即ち、フィーチャモデル111及び構築スクリプト構造112の内容がパラメータ対応情報更新部120によって更新されている場合、現Ver.1130には、更新後の当該フィーチャの当該パラメータの対応関係のバージョンを示す情報が格納され、旧Ver.1131には、上記更新前
の当該フィーチャの当該パラメータの対応関係のバージョンを示す情報が格納される。
【0082】
フィーチャID1132には、当該フィーチャのフィーチャIDが格納される。
【0083】
親フィーチャID1133には、当該フィーチャの親フィーチャのフィーチャIDが格納される。
【0084】
子フィーチャID1134には、当該フィーチャの子フィーチャのフィーチャIDが格納される。
【0085】
依存1135には、当該フィーチャと依存関係にあるフィーチャのフィーチャIDが格納される。また、依存1135には、特定のフィーチャが選択された状態である必要があるということを示す「AND」、特定のフィーチャが非選択の状態である必要があるという
ことを示す「XOR」等の、関係の種類を表す情報も適宜格納される。
【0086】
ParameterSetId1136には、当該フィーチャに連携する、構築スクリプト構造112の対応表112bのParameterSetId1122bの値が格納される。
【0087】
ParameterTag1137には、当該フィーチャに連携する、構築スクリプト構造112の対応表112dのParameterTag1124dの値が格納される。
【0088】
親ParameterTag1138には、当該フィーチャに連携する、構築スクリプト構造112の対応表112dのParameterTag1124dの上位の要素を示す情報が格納される。
【0089】
子ParameterTag1139には、当該フィーチャに連携する、構築スクリプト構造112の対応表112dのParameterTag1124dの下位の要素を示す情報が格納される。
【0090】
図4Eは、構築スクリプトパラメータ115の一例である。構築スクリプトパラメータ115は、対応表115a、対応表115b、対応表115c、及び対応表115dを含む。尚、これらの表の各項目の意味については、
図4Bに示した構築スクリプト構造の対応する表(対応表112a、対応表112b、対応表112c、対応表112d)の意味と共通であるので説明を省略する。
【0091】
<フィーチャモデルの設定受付>
図5は、
図3に示した構成選択部125の設定受付部152がユーザからフィーチャモデルの設定を受け付ける際に表示する画面(以下、「設定受付画面500」と称する。)の一例である。例示する設定受付画面500は、モデル読み込みボタン501、結果再読み込みボタン502、結果出力ボタン503、フィーチャモデル表示部510、選択フィーチャ情報表示部530、及び操作反映ボタン504の各構成を有する。
【0092】
ユーザがモデル読み込みボタン501を操作すると、設定受付部152は、フィーチャモデル111の内容を読み込み、読み込んだ内容を木構造で表した画像をフィーチャモデル表示部510に表示する。尚、この例では、木構造をフィーチャ名で表しているが、フィーチャの識別子であるフィーチャIDで木構造を表してもよい。
【0093】
ユーザがフィーチャモデル表示部510に表示されているフィーチャの一つを選択すると、選択されたフィーチャに対応する内容が選択フィーチャ情報表示部530に表示される。
【0094】
例示する選択フィーチャ情報表示部530は、フィーチャIDの入力欄531、フィー
チャ名の入力欄532、フィーチャモデル表示部510でユーザが選択したフィーチャの依存関係の種別(以下、「依存種別」と称する。)の設定欄533、当該フィーチャが依存する対象のフィーチャの識別子であるフィーチャIDの入力欄534、当該フィーチャの親フィーチャとの関係の入力欄535、当該フィーチャが持つ値の型の設定部536、当該フィーチャが持つ値の設定欄537、当該フィーチャの子フィーチャのルートが必須(mandatory)である子フィーチャの子フィーチャ名の設定欄541、子フィーチャのル
ートを選択可能(Selective)である場合に選択の対象となる子フィーチャ名の表示欄5
42、子フィーチャのルートが任意選択可能(optional)な子フィーチャの選択可否を指示するチェックボックス543、及び、子フィーチャのルートTが任意選択可能(optional)である子フィーチャ名の設定欄544を有する。
【0095】
ユーザが操作反映ボタン504を操作すると、設定受付部152は、選択フィーチャ情報表示部530に設定されている内容をフィーチャモデル表示部510に反映する。
【0096】
ユーザが結果再読み込みボタン502を操作すると、設定受付部152は、選択済フィーチャモデル114の内容を読み込んでフィーチャモデル表示部510に表示する。
【0097】
ユーザが結果出力ボタン503を操作すると、設定受付部152は、フィーチャモデル表示部510及び選択フィーチャ情報表示部530により設定されたフィーチャモデルの内容を選択済フィーチャモデル114に反映する。
【0098】
続いて、ユーザからフィーチャモデルの設定を受け付ける際に環境構築支援装置100が行う各種の処理について順に説明する。
【0099】
図6Aは、
図5のモデル読み込みボタン501が操作された際に構成選択部125が行う処理(以下、「フィーチャモデル読込処理S610」と称する。)を説明するフローチャートである。以下、同図とともにフィーチャモデル読込処理S610について説明する。
【0100】
同図に示すように、まず構成選択部125は、フィーチャモデル111と、パラメータ対応情報113の現在の内容を読み込む(S611)。
【0101】
続いて、構成選択部125は、フィーチャモデル111のデフォルト選択状態1116が「True」となっているフィーチャのフィーチャID1111を抽出する(S612)。
【0102】
続いて、構成選択部125は、依存関係判定処理S650を実行し、依存関係判定処理S650の戻り値(判定結果)が、依存関係を満たしていることを示しているか否かを判定する(S614)。尚、依存関係を満たしていない場合とは、フィーチャモデル111及びパラメータ対応情報113において、例えば、フィーチャの依存関係(フィーチャIDの設定)に矛盾がある場合をいう。依存関係判定処理S650の詳細については後述する。
【0103】
戻り値が依存関係を満たしていることを示す場合(S614:YES)、構成選択部125は、フィーチャモデル表示部510に、フィーチャモデル111のデフォルト選択状態1116に「True」が格納されているフィーチャを木構造で表示し(S615)、その後、当該処理は終了する。一方、戻り値が依存関係を満たしていないことを示す場合(S614:NO)、構成選択部125は、依存関係を満たしていないと判定されたフィーチャに関する情報(当該フィーチャのフィーチャID等)を表示し(S616)、その後、当該処理は終了する。尚、S616において、例えば、構成選択部125が、警告メッセージの表示や依存関係を満たすようにするための修正方法の提示等を行うようにしてもよ
い。このように、構成選択部125は、ユーザが設定受付画面500に対して操作を行う前に依存関係が満たされているか否かを検査するので、ユーザは無駄な作業を行うことがない。また、矛盾のない適切な構築スクリプトの生成をスムーズに行うことができる。
【0104】
図6Bは、
図5の結果再読み込みボタン502が操作された際に構成選択部125が行う処理(以下、「選択済フィーチャモデル読込処理S620」と称する。)を説明するフローチャートである。以下、同図とともに選択済フィーチャモデル読込処理S620について説明する。
【0105】
同図に示すように、まず構成選択部125は、選択済フィーチャモデル114を読み込み(S621)、選択済フィーチャモデル114のフィーチャID1141に格納されているフィーチャIDを抽出する(S622)。
【0106】
続いて、構成選択部125は、抽出したフィーチャIDと一致する、読み込み済みのフィーチャモデル111のフィーチャID1111のフィーチャIDを選択し、選択したフィーチャIDのフィーチャに基づく木構造を設定受付画面500のフィーチャモデル表示部510に表示し(S623)、当該処理終了する。
【0107】
図6Cは、
図5の操作反映ボタン504が操作された際に構成選択部125が行う処理(以下、「構成選択結果反映処理S630」と称する。)を説明するフローチャートである。以下、同図とともに構成選択結果反映処理S630について説明する。
【0108】
同図に示すように、まず構成選択部125は、選択フィーチャ情報表示部530を介してユーザから受け付けた設定に対応する変更後のフィーチャモデルについて、前述した依存関係判定処理S650を実行する。
【0109】
続いて、構成選択部125は、依存関係判定処理S650の戻り値を判定する(S631)。依存関係判定処理S650の戻り値が、依存関係を満たしていないことを示す場合(S631:NO)、処理はS632に進む。一方、依存関係判定処理S650の戻り値が、依存関係を満たしていることを示す場合(S631:YES)、処理はS633に進む。
【0110】
S632では、構成選択部125は、依存関係を満たしていないフィーチャIDを表示し、当該処理を終了する。尚、S632において、構成選択部125が、警告メッセージの表示や依存関係を満たすようにするための修正方法の提示等を行うようにしてもよい。このように、構成選択部125は、ユーザから受け付けた設定に対応する変更後のフィーチャモデルについて依存関係が満たされているか否かを検査するので、矛盾のない適切な構築スクリプトを生成することができる。
【0111】
S633では、構成選択部125は、選択フィーチャ情報表示部530に表示されているフィーチャについてのフィーチャモデル111の内容を、選択フィーチャ情報表示部530の変更後の内容に更新する。
【0112】
続いて、構成選択部125は、更新後の内容をフィーチャモデル表示部510に反映する(S634)。その後、当該処理は終了する。
【0113】
図6Dは、
図5の結果出力ボタン503が操作された際に構成選択部125が行う処理(以下、「選択済フィーチャモデル出力処理S640」と称する。)を説明するフローチャートである。以下、同図とともに選択済フィーチャモデル出力処理S640について説明する。
【0114】
同図に示すように、まず構成選択部125は、フィーチャモデル表示部510に表示されているフィーチャに対応するフィーチャIDの情報(該当するレコードの情報)をフィーチャモデル111から取得する(S641)。
【0115】
続いて、構成選択部125は、取得した情報のうち、ルート1114とデフォルト選択状態1116の内容以外の情報を、選択済フィーチャモデル114に反映する(S642)。その際、構成選択部125は、例えば、フィーチャモデル1111の親フィーチャID1117の内容に基づきフィーチャモデルの木構造を推定し、推定した木構造に基づき、各フィーチャの子フィーチャとなるフィーチャIDを選択済フィーチャモデル114の子フィーチャ1145に格納する。
【0116】
図6Eは、構成選択部125が行う、前述した依存関係判定処理S650を説明するフローチャートである。以下、同図とともに依存関係判定処理S650について説明する。
【0117】
同図に示すように、まず構成選択部125は、当該処理の呼び出し要因(
図6Aのフィーチャモデル読込処理S610からの呼び出しであるか、
図6Cの構成選択結果反映処理S630からの呼び出しであるか)を判定する(S651)。
図6Aのフィーチャモデル読込処理S610からの呼び出しである場合(S651:YES)、処理はS652に進む。一方、
図6Cの構成選択結果反映処理S630からの呼び出しである場合(S651:NO)、処理はS653に進む。
【0118】
S652では、構成選択部125は、デフォルト選択状態1116に「True」が格納されているレコード(フィーチャ)のフィーチャIDをフィーチャモデル111から抽出する(S652)。その後、処理はS654に進む。
【0119】
S653では、構成選択部125は、選択フィーチャ情報表示部530に指定されているフィーチャID(変更されたフィーチャID)を抽出する。その後、処理はS654に進む。
【0120】
S654では、構成選択部125は、S652又はS653で抽出されたフィーチャIDに対応するフィーチャについて、依存関係に関する情報(フィーチャモデル111の最新の依存1115の内容とパラメータ対応情報113の最新の依存1135の内容)を取得する。
【0121】
続いて、構成選択部125は、構成選択部125は、抽出したフィーチャIDについて、フィーチャモデル111の依存1115とパラメータ対応情報113の依存1135の内容に矛盾があるか否かを判定し、その判定結果を戻り値として返す(S655)。その後、当該処理を終了する。例えば、依存関係が「AND」である場合、構成選択部125は
、抽出したフィーチャIDが選択済フィーチャモデル114のフィーチャID1141に含まれるかを判定し、その判定結果を戻り値として返す。また例えば、依存関係が「XOR
」である場合、構成選択部125は、抽出したフィーチャIDが選択済フィーチャモデル114のフィーチャID1141に含まれていないかを判定し、その判定結果を戻り値として返す。
【0122】
以上に説明したように、ユーザはGUI(Graphical User Interface)形式の設定受付画面500を利用して、フィーチャの選択と設定を視覚的かつ簡便に行うことができ、最新のフィーチャモデル111と最新の構築スクリプト構造112に基づく適切な構築スクリプトの生成を効率よく行うことができる。
【0123】
<構築スクリプト構造の解析>
図7は、
図3に示したパラメータ対応情報更新部120が行う処理(以下、「構築スクリプト構造解析処理S700」と称する。)を説明するフローチャートである。以下、同図とともに構築スクリプト構造解析処理S700について説明する。
【0124】
同図に示すように、まずパラメータ対応情報更新部120は、フィーチャモデル111、構築スクリプト構造112、及びパラメータ対応情報113を読み込む(S711)。
【0125】
続いて、パラメータ対応情報更新部120は、パラメータ対応情報113の現Ver.1130が最新のレコードの内容を複製し、複製したレコードの旧Ver.1131を現Ver.1130のバージョンに置換する。置換後、パラメータ対応情報更新部120は、複製したレコードの現Ver.1130に最新Ver.のバージョンを格納する。続いて、パラメータ対応情報更新部120は、複製したレコードのフィーチャID1132に対応する親フィーチャID1133を、例えば、フィーチャモデル111の当該フィーチャIDとフィーチャID1111が一致するレコードの親フィーチャID1117と、フィーチャモデル111において当該フィーチャIDと親フィーチャID1117が一致するレコードのフィーチャID1111と、の関係に基づき更新する(S712)。
【0126】
続いて、パラメータ対応情報更新部120は、構築スクリプト構造112の対応表112bからParameterSetId1122bを一つ選択し、当該レコードの、ParametersName1123b、もしくはConnectionsName1124bを取得する。ここでConnectionsName1124bを取得した場合、パラメータ対応情報更新部120は、対応表112cのConnectionsName1121cにおいて、ConnectionsName1124bと一致するレコードのParametersName1123cを取得する。そして、パラメータ対応情報更新部120は、取得したParametersName1123b、もしくはParametersName1123cについて、対応表112dのParametersName1121dと一致するレコードのParameterTag1124dを1つ取得する
(S713)。
【0127】
続いて、パラメータ対応情報更新部120は、取得したParameterTag1124dについて、パラメータ対応情報113から、現Ver.1130が最新Ver.のレコードであり、かつ、ParameterTag1157が一致するレコードを取得する(S714)。そしてパラメータ対応情報更新部120は、一致するレコードがパラメータ対応情報113に1つ以上存在するか否かを判定する(S715)。
【0128】
一致するレコードが一つも存在しない場合(S715:NO)、パラメータ対応情報更新部120は、パラメータ対応情報113に仮のレコードを追加する処理(以下、「仮レコード追加処理S720」と称する。)を実行する。仮レコード追加処理S720の詳細については後述する。その後、処理はS718に進む。
【0129】
一方、一致するレコードが1つ以上存在する場合(S715:YES)、パラメータ対応情報更新部120は、選択したParameterSetId1122bと、パラメータ対応情報113で一致したレコードのParameterSetId1136が一致するレコードが、パラメータ対応情報113に存在するか否かを判定する(S717)。ParameterSetId1136が一致するレコードが存在する場合(S717:YES)、パラメータ対応情報更新部120は、パラメータ対応情報113のParameterTagの異なる対応関係を追加する箇所を推定する処理(以下、「既存ParameterTag追加箇所推定処理S730」と称する。)を実行する。既存ParameterTag追加箇所推定処理S730の詳細については後述する。その後、処理はS718に進む。一方、ParameterSetId1136が一致するレコードが存在しない場合(S717:NO)、処理はS718に進む。
【0130】
S718では、パラメータ対応情報更新部120は、構築スクリプト構造112の全てのParameterTag1124dを比較済みか否かを判定する。構築スクリプト構造112の全てのParameterTag1124dを比較済みでない場合(S718:NO)、パラメータ対応情報更新部120は、再度、構築スクリプト構造のParameterSetIdを指定してParameterTagを1つ取得する処理(S713)に戻る。一方、構築スクリプト構造112の全てのParameterTag1124dを比較済みである場合(S718:YES)、パラメータ対応情報更新部120は、パラメータ対応情報113の仮レコードを追加したレコードについて、新規ParameterTag1137に対応するフィーチャID1132を特定して追加する処理(以下、「新規ParameterTag対応フィーチャ特定追加処理S740」と称する。」を実行する。新規ParameterTag対応フィーチャ特定追加処理S740の詳細については後述する。
【0131】
続いて、パラメータ対応情報更新部120は、フィーチャモデル111の親子関係の変化を特定し、変化した関係性になるようにパラメータ対応情報113を書き換える処理(以下、「親子関係変化特定書換処理S750」と称する。)を実行する。親子関係変化特定書換処理S750の詳細については後述する。
【0132】
続いて、パラメータ対応情報更新部120は、フィーチャモデル111の親との関係1118の内容を利用して未対応のフィーチャを特定し追加する処理(以下、「未対応フィーチャ特定追加処理S760」と称する。)を実行する。
【0133】
図8Aは、
図7における仮レコード追加処理S720の詳細を説明するフローチャートである。パラメータ対応情報更新部120は、仮レコード追加処理S720を実行することにより、パラメータ対応情報113の最後尾に仮のレコードを追加する。以下、仮レコード追加処理S720について説明する。
【0134】
同図に示すように、まずパラメータ対応情報更新部120は、パラメータ対応情報113に新規のレコードを追加し、追加したレコードの現Ver.1130に最新のバージョンを格納する(S7211)。
【0135】
続いて、パラメータ対応情報更新部120は、追加したレコードのParameterSetId1136、ParameterTag1137、親ParameterTag1138、子ParameterTag1139に、
図7のS713で構築スクリプト構造112から取得したParameterTag1124d、当該ParameterTag1124dの親子のParameterTag1124d、ParameterSetId1122bを格納する(S7212)。
【0136】
続いて、パラメータ対応情報更新部120は、追加したレコードのフィーチャID1132に、他のフィーチャID1132と一致しない(重複しない)仮の値を格納する(S7123)。
【0137】
図8Bは、
図7における既存ParameterTag追加箇所推定処理S730の詳細を説明するフローチャートである。以下、既存ParameterTag追加箇所推定処理S730について説明する。
【0138】
同図に示すように、まずパラメータ対応情報更新部120は、パラメータ対応情報113の現Ver.1130が最新Ver.であり、かつ、ParameterTag1137が
図7のS713で構築スクリプト構造112から取得したParameterTag1124dと一致するレコードの情報を取得する(S7311)。
【0139】
続いて、パラメータ対応情報更新部120は、取得したレコードの親ParameterTag1138と子ParameterTag1139が、
図7のS713で構築スクリプト構造112から取得
したParameterTag1124dの親子のParameterTag1124dと一致するか否かを判定する(S7312)。一致する場合、当該処理は終了する(S7312:YES)。
【0140】
一方、一致しない場合(S7312:NO)、パラメータ対応情報113に、現Ver.1130に最新のバージョンを格納した新規のレコードを追加する(S7313)。
【0141】
続いて、パラメータ対応情報更新部120は、追加したレコードの他の項目に、現Ver.1130が最新のバージョンであり、ParameterTag1157が
図7のS713で構築スクリプト構造112から取得したParameterTag1124dと一致するパラメータ対応情報のレコードの情報を複製する(S7314)。
【0142】
続いて、パラメータ対応情報更新部120は、追加したレコードのParameterSetId1136に、
図7のS713で構築スクリプト構造112から取得したParameterSetId1122bを格納し、取得したレコードの親ParameterTag1138と子ParameterTag1139を、
図7のS713で構築スクリプト構造112から取得したParameterTag1124dの親子のParameterTag1124dで置換する(S7315)。その後、当該処理は終了する。
【0143】
図8Cは、
図7における新規ParameterTag対応フィーチャ特定追加処理S740の詳細を説明するフローチャートである。以下、同図とともに新規ParameterTag対応フィーチャ特定追加処理S740について説明する。
【0144】
同図に示すように、まずパラメータ対応情報更新部120は、フィーチャモデル111、構築スクリプト構造112、及びパラメータ対応情報113を取得する(S7411)。
【0145】
続いて、パラメータ対応情報更新部120は、パラメータ対応情報113のフィーチャID1132に仮符号が格納されているレコードを取得する(S7412)。
【0146】
続いて、パラメータ対応情報更新部120は、構築スクリプト構造112から仮符号のParameterTagの親子となるParameterTagを取得する(S7413)。
【0147】
具体的には、パラメータ対応情報更新部120は、構築スクリプト構造112の対応表112dについて、ParameterTag1124dに、フィーチャID1132に仮符号が格納されているレコードのParameterTag1157を含む(が格納されている)レコードを取得する。
【0148】
続いて、パラメータ対応情報更新部120は、ParameterTag1124dが階層構造を有している場合、当該ParameterTag1157が一致する要素の上位、もしくは下位の要素を抽出する。下位の要素が存在しない場合、パラメータ対応情報更新部120は下位の要素はなしとする。上位の要素が存在しない場合、パラメータ対応情報更新部120は、当該対応表112dのレコードのParametersName1121dが、ParameterSetIdに関する対応表112bのParametersName1123b、もしくは対応表112cのParametersName1123cが一致するレコードを取得し、次の(1)、(2)の処理を実行することによりコンポーネント名称を取得する。
【0149】
(1)対応表112bのParametersName1123bが一致する場合、ComponentName11
21bからコンポーネント名称を取得する。
(2)対応表112cのParametersName1123cが一致する場合、TargetComponentName1122cのコンポーネント名称を取得する。もしくは、ParameterSetIdに関する対応
表112bでConnectionsName1124bが接続情報に関する対応表112cのConnectio
nsName1121cと一致するレコードのComponentName1121bからコンポーネント名
称を取得する。
【0150】
続いて、パラメータ対応情報更新部120は、S7413で取得した、仮符号であるレコードの構築スクリプト構造112のParameterTag1124dの親子関係を利用して、仮符号である行の親子関係のうち最上位の仮符号のレコードを抽出する(S7414)。
【0151】
例えば、仮符号のレコードのParameterTag1124dの親の要素に対応する、パラメータ対応情報113のフィーチャID1132が仮符号であった場合、パラメータ対応情報更新部120は、仮符号であるレコードのParameterTag1124dの親の要素を抽出対象とする。
【0152】
続いて、パラメータ対応情報更新部120は、S7414で抽出した上位又は下位のParameterTag1124dの要素について、パラメータ対応情報113から対応するフィーチャID1132を取得する(S7415)。
【0153】
具体的には、まずパラメータ対応情報更新部120は、取得した上位又は下位のParameterTag1124dの要素がParameterTag1137で一致し、かつ、現Ver.1130が最新であるパラメータ対応情報113の行のフィーチャID1132を取得する。上位の要素が存在せず、コンポーネント名称を取得した場合、パラメータ対応情報更新部120は、フィーチャモデル111の親フィーチャID1117がルートのフィーチャであり、値1113が取得したコンポーネント名称と一致するフィーチャID1111を取得する。尚、パラメータ対応情報更新部120は、ルートのフィーチャであるか否かを、例えば、フィーチャモデル111の親フィーチャID1117が存在しないことから識別する。
【0154】
続いて、パラメータ対応情報更新部120は、処理S7415で取得した上位又は下位のParameterTag1124dの要素に対応するフィーチャID1111を利用し、フィーチャモデル111において間に存在するフィーチャID1111を取得する(S7416)。
【0155】
具体的には、まずパラメータ対応情報更新部120は、下位の要素のフィーチャID1111が存在する場合、親フィーチャID1117を候補IDとして取得する。続いて、パラメータ対応情報更新部120は、取得した上位の要素のフィーチャID1111については、親フィーチャID1117に取得した上位の要素のフィーチャID1111と一致する、フィーチャモデル111の行のフィーチャID1111を候補IDとして取得する。
【0156】
取得したフィーチャID1111が上位の要素に対応した1つである場合、パラメータ対応情報更新部120は、新規に対応関係を追加するフィーチャIDとして候補IDを用いる。一方、取得したフィーチャID1111が2つ存在し、かつ、それらが一致する場合、パラメータ対応情報更新部120は、新規に対応関係を追加するフィーチャIDとして候補IDを用いる。またそれらが一致しない場合、パラメータ対応情報更新部120は、下位の要素から取得した候補IDの親フィーチャID1117を取得し、これが上位の要素から取得した候補IDと一致するかを比較する。パラメータ対応情報更新部120は、それらが一致するまで以上の操作を繰り返し、これにより下位の要素から抽出した候補IDと親フィーチャID1117の全ての中で、値1113が記述されているフィーチャID1111を、新規に対応関係を追加するフィーチャIDとして候補IDを採用する。
【0157】
尚、値1113が記述されているフィーチャID1111が複数存在する場合には、開発者等のユーザがいずれかを選択するか、もしくは複数検出することがないよう、構築ス
クリプト構造112の新規のParameterTag1124dを追加する。
【0158】
続いて、パラメータ対応情報更新部120は、S7412で取得した、パラメータ対応情報113のフィーチャID1132が仮符号であるレコードのフィーチャID1132に、S7416で取得したフィーチャIDを格納(仮符号を置換)する(S7417)。
【0159】
続いて、パラメータ対応情報更新部120は、S7412で取得した、パラメータ対応情報113のフィーチャID1132が仮符号であるレコードの全てについて処理済みであるか否かを判定する(S7418)。処理済みでなければ(S7418:NO)、パラメータ対応情報更新部120は、S7414からの処理を再度実行する。処理済みであれば(S7418:YES)、当該処理は終了する。
【0160】
図8Dは、
図7における親子関係変化特定書換処理S750の詳細を説明するフローチャートである。以下、同図とともに親子関係変化特定書換処理S750について説明する。
【0161】
同図に示すように、まずパラメータ対応情報更新部120は、パラメータ対応情報113の現Ver.1130が最新のレコードの旧Ver.1131を取得し、変更前のバージョンの情報を取得する(S7511)。例えば、最新Ver.T1200が「2.0」であった場合、
図4Dの例では旧Ver.1131は「1.0」となる。パラメータ対応情報更新部120は、
変更前のVer.がパラメータ対応情報113の現Ver.1130に対応するレコードの、フィーチャID1132、親フィーチャID1133、及び子フィーチャID1154を取得する。
【0162】
続いて、パラメータ対応情報更新部120は、取得した変更前の上記3つの情報について、パラメータ対応情報113の現Ver.1130が最新のレコードの情報と不一致であるレコードを取得する(S7512)。そして、パラメータ対応情報更新部120は、不一致であるレコードに関し、パラメータ対応情報113の現Ver.1130が最新のレコードの現Ver.1130、旧Ver.1131、親フィーチャID1133、及び子フィーチャID1154を除く情報を、変更前のVer.の情報で置換する(S7513)。
【0163】
続いて、パラメータ対応情報更新部120は、最後に変更を行ったパラメータ対応情報113の現Ver.1130が最新のレコードの依存1155に、変更前のVer.の親フィーチャID1133を、関係を「AND」として追記する(S7514)。
【0164】
図8Eは、
図7における未対応フィーチャ特定追加処理S760の詳細を説明するフローチャートである。以下、同図とともに未対応フィーチャ特定追加処理S760について説明する。
【0165】
同図に示すように、まずパラメータ対応情報更新部120は、フィーチャモデル111から、パラメータ対応情報113の現Ver.1130が最新のレコードのフィーチャID1132に存在しないフィーチャID1111を取得する(S7611)。
【0166】
続いて、パラメータ対応情報更新部120は、取得したフィーチャID1111のフィーチャモデル111のレコードについて、親との関係1118が「実現値」であるレコードであるか否かを判定する(S7612)。親との関係1118が「実現値」であるレコードでなければ(S7612:NO)、当該処理は終了する。一方、親との関係1118が「実現値」であるレコードであった場合(S7612:YES)、パラメータ対応情報更新部120は、当該レコードの親フィーチャID1117、及び、親との関係1118が「実現値」であるフィーチャID1111を取得する(S7613)。
【0167】
続いて、パラメータ対応情報更新部120は、当該フィーチャID1111が存在するかを判定する(S7614)。当該フィーチャID1111が存在しなければ(S7614:NO)、当該処理は終了する。一方、当該フィーチャID1111が存在すれば(S7614:YES)、処理はS7615に進む。
【0168】
S7615では、パラメータ対応情報更新部120は、パラメータ対応情報113のフィーチャID1132と、当該フィーチャID1111が一致し、かつ、現Ver.1130が最新のレコードを複製し、複製したレコードをパラメータ対応情報113に追加する(S7615)。
【0169】
続いて、パラメータ対応情報更新部120は、追記したレコードのフィーチャID1132を、S7611で取得し当該処理以降における検索で使用したフィーチャID1111に置換する(S7616)。
【0170】
尚、環境構築支援装置100は、
図7(
図8A~
図8E)に示した処理を行うことにより、フィーチャモデル111や構築スクリプト構造112について行われる様々な態様の更新(変更)について、更新後のフィーチャモデル111及び構築スクリプト構造112の最新の内容に整合するようにパラメータ対応情報113を更新することができる。
【0171】
例えば、
図8Fの更新タイプ「A」に示すように、フィーチャモデル111に新たな要素が追加され、かつ、構築スクリプト構造112に新たな要素(IaCタグ等)が追加された場合、環境構築支援装置100は、既存のパラメータ対応情報113に含まれていないフィーチャIDから追加された箇所を特定し、追加された箇所の親子の階層構造が一致するフィーチャモデル111の要素と構築スクリプト構造112の構造との対応関係をパラメータ対応情報113に自動的に追加する。
【0172】
また例えば、
図8Fの更新タイプ「B」に示すように、フィーチャモデル111にのみ新たな要素が追加された場合、環境構築支援装置100は、既存のパラメータ対応情報113に含まれていないフィーチャIDから追加された箇所を特定し、追加された箇所の親の階層と関係性が共通するフィーチャモデル111の要素を特定し、特定した要素と構築スクリプト構造112の構造との対応関係をパラメータ対応情報113に自動的に追加する。
【0173】
また例えば、
図8Fの更新タイプ「C」に示すように、構築スクリプト構造112にのみ新たな構造(IaCタグ等)が追加された場合、環境構築支援装置100は、既存のパラメータ対応情報113に含まれていないフィーチャIDから追加された箇所を特定し、既存のパラメータ対応情報113に共通する構造(同名のIaCタグ等)についての情報が存在する場合は当該情報を複製することにより、当該構造とフィーチャモデル111の要素との対応関係をパラメータ対応情報113に自動的に追加する。
【0174】
また例えば、
図8Fの更新タイプ「D」に示すように、フィーチャモデル111の要素間の親子関係が変更された場合、環境構築支援装置100は、更新前後のフィーチャモデル111の要素間の親子関係の差異から変更箇所を特定し、既存のパラメータ対応情報113の該当部分の親子関係を更新することにパラメータ対応情報113に変更内容を反映する。
【0175】
<構築スクリプトパラメータの生成>
図9は、
図3に示したパラメータ生成部130が構築スクリプトパラメータ115の生成に際して行う処理(以下、「パラメータ生成処理S900」と称する。)を説明するフ
ローチャートである。以下、同図とともにパラメータ生成処理S900について説明する。
【0176】
同図に示すように、まずパラメータ生成部130は、選択済フィーチャモデル114のフィーチャID1141を抽出する(S911)。
【0177】
続いて、パラメータ生成部130は、抽出したフィーチャID1141とフィーチャID1132が一致し、かつ現Ver.1130が最新Ver.のレコードをパラメータ対応情報113から取得する(S912)。
【0178】
続いて、パラメータ生成部130は、パラメータ対応情報113から取得したレコードのParameterSetId1136を取得し(S913)、構築スクリプト構造112の対応表112bからParameterSetId1122bが一致するレコードを抽出し、抽出したレコードを構築スクリプトパラメータ115の対応表115bとして書き出す(S914)。このとき、パラメータ生成部130は、当該表のConnectionsName1124bがConnectionsName1121cと一致するレコードの対応表112cについても同様に書き出す。更にパラメータ生成部130は、ParametersName1123b、もしくは、前述した手順で書き出された対応表112cのレコードのParametersName1123cがParametersName1121dと一致するレコードの対応表112dについても同様に書き出す。
【0179】
続いて、パラメータ生成部130は、構築スクリプトパラメータ115の対応表115dのParameterTag1154d、及び表115bのParameterSetId1152bが、夫々パラメータ対応情報113のParameterSetId1136、ParameterTag1137と一致し、かつ、現Ver.1130が最新Ver.のレコードのフィーチャID1132を取得する(S915)。
【0180】
尚、ParameterTag1154dに対応するParameterSetId1152bについては、パラメータ生成部130は、ParametersName1151dやParametersName1153bが一致する対応表115bのレコードのParameterSetId1152bから求める。もしくは、パラメータ生成部130は、ParametersName1151dやParametersName1153cが一致する対応表112aのレコードを抽出した後、抽出したレコードのConnectionsName1151c
やConnectionsName1154bが一致する対応表115bのレコードのParameterSetId1
152bから、ParameterTag1154dに対応するParameterSetId1152bを求める。
【0181】
続いて、パラメータ生成部130は、ParameterSetId1152b及びParameterTag1154dが対応する、構築スクリプトパラメータ115の対応表115dのParametersValue1153dに、S915で取得したパラメータ対応情報113のフィーチャID113
2とフィーチャID1111が一致するフィーチャモデル111のレコードの値1113を格納する(S916)。
【0182】
<構築スクリプトの生成>
図10は、
図3に示した構築スクリプト生成部135が構築スクリプト116の生成に際して行う処理(以下、「構築スクリプト生成処理S1000」と称する。)を説明するフローチャートである。以下、同図とともに構築スクリプト生成処理S1000について説明する。
【0183】
同図に示すように、まず構築スクリプト生成部135は、構築スクリプトパラメータ115の対応表115aから、フィーチャモデル111のルートのフィーチャの値1113に対応するModelName1151aを指定し、当該レコードのComponentName1152aを取得する(S1011)。
【0184】
続いて、構築スクリプト生成部135は、取得したComponentName1152aのコンポ
ーネント名称が、対応表115bのComponentName1151bと一致するレコードのFilePath1155bに格納されているスクリプトファイルを取得する(S1012)。
【0185】
続いて、構築スクリプト生成部135は、当該レコードのParametersName1153bと、当該レコードのConnectionsName1154bとConnectionsName1151cが一致する対応表115cのレコードを取得する。また、構築スクリプト生成部135は、取得した対応表115cのレコードのParametersName1153cとParametersName1151dが一致する対応表115dのレコードを取得する。そして、構築スクリプト生成部135は、取得した対応表115cのレコードと対応表115dのレコードの情報を、取得した対応するFilePath1155bに記述されているスクリプトファイルに与えることにより構築スクリプト116を生成する(S1013)。
【0186】
尚、構築スクリプト生成部135は、収集した対応するFilePath1155bに記述されているスクリプトファイルに対応表115cのパラメータを与える際、例えば、取得した対応表115dのPrametersKey1152dと同一の変数を特定し、特定した変数に対応したParametersValue1153dの値をスクリプトファイルに与える。ParameterTag115
4dと同じ変数名をFilePath1155bに記述されているスクリプトファイルで利用するようにすることにより、PrametersKey1152dを利用せずにパラメータを与えるようにしてもよい。
【0187】
図11に、構築スクリプト生成部135が生成する構築スクリプト116の一例を示す。尚、構築スクリプト116の記述様式は同図に示すものに必ずしも限定されない。この例では、
図4Eに示す対応表115dのParametersValue1153dに格納されている値
がスクリプトファイルに格納されており、例えば、符号1171及び符号1172で示す「InstanceType」に夫々、「SmallInstance」及び「LargeInstance」が格納されている。
【0188】
以上詳細に説明したように、本実施形態の環境構築支援装置100によれば、構築対象となるクラウド環境3の要素を木構造で表現するフィーチャモデル111と、クラウド環境3の構築の際に実行される構築スクリプト構造112とを対照することにより、フィーチャモデル111及び構築スクリプト構造112の最新の内容に対応するようにパラメータ対応情報113を更新する。そのため、開発者等のユーザは、クラウド環境3の構築に際し、フィーチャモデル111や構築スクリプト構造112の変更に伴う煩雑な作業から開放され、フィーチャモデル111や構築スクリプト構造112の最新の内容に基づく構築スクリプト116を効率よく生成することができる。
【0189】
以上、本発明の一実施形態について説明したが、本発明は上記の実施形態に限定されるものではなく、様々な変形例が含まれ、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることや、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加、削除、置換をすることが可能である。
【符号の説明】
【0190】
1 情報処理システム、2 クラウドシステム、3 クラウド環境、4 サービス利用装置、5 通信ネットワーク、100 環境構築支援装置、111 フィーチャモデル、112 構築スクリプト構造、113 パラメータ対応情報、114 選択済フィーチャモデル、115 構築スクリプトパラメータ、116 構築スクリプト、120 パラメータ対応情報更新部、125 構成選択部、1251 処理部、1252 設定受付部、1
30 パラメータ生成部、135 構築スクリプト生成部、500 設定受付画面、S610 フィーチャモデル読込処理、S620 選択済フィーチャモデル読込処理、S630 構成選択結果反映処理、S640 選択済フィーチャモデル出力処理、S650 依存関係判定処理、S700 構築スクリプト構造解析処理、S720 仮レコード追加処理、S730 既存ParameterTag追加箇所推定処理、S710 新規ParameterTag対応フィーチャ特定追加処理、S750 親子関係変化特定書換処理、S760 未対応フィーチャ特定追加処理、S900 パラメータ生成処理、S1000 構築スクリプト生成処理