(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024131765
(43)【公開日】2024-09-30
(54)【発明の名称】開発支援装置、システム、方法、及び、プログラム
(51)【国際特許分類】
G06F 9/44 20180101AFI20240920BHJP
【FI】
G06F9/44
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023042215
(22)【出願日】2023-03-16
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】高橋 真志
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA34
5B376AA38
(57)【要約】
【課題】開発者の負担を軽減しつつ、再利用性の高い構築定義ファイルの開発を支援する。
【解決手段】開発支援装置(1)は、所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出部(11)と、対象システムの環境構築のために汎用化された汎用化定義情報に対して、外部ノードのうち差分情報に該当する設定値を変数化して更新を行う更新部(12)と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出手段と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新手段と、
を備える開発支援装置。
【請求項2】
前記検出手段は、前記第1の定義情報と前記第2の定義情報との間で、ツリー構造に従って一方に存在する内部ノードが他方に存在しない場合、当該内部ノードと当該内部ノードに属するノード群とをまとめた差分ノード群を前記差分情報として検出し、
前記更新手段は、
前記変更において前記内部ノードが追加されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を追加し、
前記変更において前記内部ノードが削除されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を削除して、前記更新を行う
請求項1に記載の開発支援装置。
【請求項3】
前記更新手段は、
前記汎用化定義情報に対応付けられた変数定義情報に対して、前記変数化した変数に前記差分情報に該当する設定値を設定する
請求項1又は2に記載の開発支援装置。
【請求項4】
前記検出手段は、外部から指定された所定の文字列を除外して前記外部ノード同士における差分情報を検出する
請求項1又は2に記載の開発支援装置。
【請求項5】
前記対象システムの環境構築のために定義された定義情報における3世代以上の変更履歴を取得する取得手段をさらに備え、
前記検出手段は、前記変更履歴のうち古い世代から新しい世代に向けて、隣接する世代の定義情報の組のそれぞれについて、前記差分情報を検出し、
前記更新手段は、前記差分情報が検出された場合に、前記更新を行う
請求項1又は2に記載の開発支援装置。
【請求項6】
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報とを含む変更履歴情報を記憶する記憶装置と、
前記記憶装置と接続された開発支援装置と、を備え、
前記開発支援装置は、
前記変更履歴情報を参照し、前記第1の定義情報と前記第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出手段と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新手段と、
を備える開発支援システム。
【請求項7】
前記検出手段は、前記第1の定義情報と前記第2の定義情報との間で、ツリー構造に従って一方に存在する内部ノードが他方に存在しない場合、当該内部ノードと当該内部ノードに属するノード群とをまとめた差分ノード群を前記差分情報として検出し、
前記更新手段は、
前記変更において前記内部ノードが追加されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を追加し、
前記変更において前記内部ノードが削除されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を削除して、前記更新を行う
請求項6に記載の開発支援システム。
【請求項8】
コンピュータが、
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出し、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う、
開発支援方法。
【請求項9】
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出処理と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新処理と、
をコンピュータに実行させる開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、開発支援装置、システム、方法、及び、プログラムに関する。
【背景技術】
【0002】
近年、情報システムの環境構築を自動化する手法としてIaC(Infrastructure as Code)と呼ばれる手法が普及しつつある。IaCを実現する環境構築ツール(又はオーケストレータ)は、環境構築の内容を定義した構築定義ファイルを用いて、環境構築処理を実行する。構築定義ファイルは、システム構築のエンジニア等の開発者により環境構築処理や環境ごとの設定値等が記述されたスクリプトファイルである。
【0003】
特許文献1には、システム構築パラメータ管理装置に関する技術が開示されている。当該管理装置は、対象システムの動作環境を定義した定義情報を収集基準に基づいて収集し、定義情報から生成されたパラメータと、システム構築を行うプログラムが使用する情報から抽出されたパラメータとを比較する。そして、当該管理装置は、比較結果に基づき更新されたパラメータにより収集基準を更新する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、IaCの構築定義ファイルには、設定値そのものの他、部分的に変数化して記述されたものも用いることができる。但し、構築定義ファイルの変数化の箇所が多過ぎると、構築定義ファイルの可読性が低下し、構築定義ファイルの再利用性が低下し得る。一方で、開発者が構築定義ファイルを開発する際に変数化すべき箇所を適切に選別することは、開発者の負担が大きく、構築定義ファイルの開発効率が下がるという問題点がある。
【0006】
本開示の目的は、上述した課題を鑑み、開発者の負担を軽減しつつ、再利用性の高い構築定義ファイルの開発を支援するための開発支援装置、システム、方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0007】
本開示にかかる開発支援装置は、
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出手段と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新手段と、
を備える。
【0008】
本開示にかかる開発支援システムは、
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報とを含む変更履歴情報を記憶する記憶装置と、
前記記憶装置と接続された開発支援装置と、を備え、
前記開発支援装置は、
前記変更履歴情報を参照し、前記第1の定義情報と前記第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出手段と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新手段と、
を備える。
【0009】
本開示にかかる開発支援方法は、
コンピュータが、
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出し、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う。
【0010】
本開示にかかる開発支援プログラムは、
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出処理と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新処理と、
をコンピュータに実行させる。
【発明の効果】
【0011】
本開示により、開発者の負担を軽減しつつ、再利用性の高い構築定義ファイルの開発を支援するための開発支援装置、システム、方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0012】
【
図1】本実施形態1にかかる開発支援装置の構成を示すブロック図である。
【
図2】本実施形態1にかかる開発支援方法の流れを示すフローチャートである。
【
図3】本実施形態2にかかる開発支援システムの構成を示すブロック図である。
【
図4】本実施形態2にかかる定義ファイルの変更履歴の例を示す図である。
【
図5】本実施形態2にかかる定義ファイルの変更履歴の例を示す図である。
【
図6】本実施形態2にかかる定義ファイルの変更履歴の例を示す図である。
【
図7】本実施形態2にかかる開発支援処理の流れを示すフローチャートである。
【
図8】本実施形態2にかかる比較及び更新処理の流れを示すフローチャートである。
【
図9】本実施形態2にかかる差分検出処理の流れを示すフローチャートである。
【
図10】本実施形態2にかかる世代0と世代1の比較及び汎用化定義ファイルの更新の例を示す図である。
【
図11】本実施形態2にかかる世代1と世代2の比較及び汎用化定義ファイルの更新の例を示す図である。
【
図12】本実施形態2にかかる世代2と世代3の比較及び汎用化定義ファイルの更新の例を示す図である。
【発明を実施するための形態】
【0013】
以下では、本開示の実施形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【0014】
<実施形態1>
図1は、本実施形態1にかかる開発支援装置1の構成を示すブロック図である。開発支援装置1は、所定の対象システムの環境構築のために定義される定義情報等の開発を支援するための情報処理装置である。対象システムは、サーバやネットワーク機器等の少なくとも一部で構成された情報システムである。「定義情報」とは、上述した環境構築ツールに用いられる構築定義ファイル等である。定義情報は、例えば、所定の対象システムの環境構築のための設定項目がツリー構造により、複数の階層に階層化されて定義されている。
【0015】
ここで、ツリー構造を構成する要素を「ノード」と呼ぶ。ツリー構造は、ノード同士が親子関係を持ち、子ノードは、1つだけの親ノードに属する。一方、親ノードは、1以上の子ノードを配下に所属させることができる。親ノードを持たないノードはルートノードである。そのため、ツリー構造は、1つのルートノードを起点として親子関係が階層化された1以上のノード群で構成される。各ノードのうち子ノードを持たない末端のノードを「外部ノード」(葉ノード)と呼ぶ。外部ノードには、設定項目に設定値が定義されている。各ノードのうち子ノードを持つノードを「内部ノード」(枝ノード、中間ノード)と呼ぶ。内部ノードには、少なくとも設定項目があり、設定値が定義されていても良い。
【0016】
開発支援装置1は、検出部11及び更新部12を備える。検出部11は、第1の定義情報と第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する。ここで、第1の定義情報及び第2の定義情報は、所定の対象システムの環境構築のために定義された定義情報である。尚、第1の定義情報及び第2の定義情報は、同一の情報システムに限らず、構成が類似する他のシステムの環境構築のために定義された情報であってもよい。そして、第2の定義情報は、第1の定義情報に対して変更された情報とする。つまり、第2の定義情報は、第1の定義情報に定義された設定項目や設定値の一部が変更されたもの、つまり、ノード群の一部に差分があるものである。
【0017】
具体的には、検出部11は、第1の定義情報のノード群と第2の定義情報のノード群とを、ツリー構造に従って比較する。例えば、検出部11は、ツリー構造において定義された位置や設定項目が対応する外部ノードの組を特定する。すなわち、検出部11は、親ノード、階層、設定項目等が共通するノードのうち外部ノードの組を特定してもよい。特定した外部ノードの組は、「ツリー構造に従って対応する外部ノード」の組である。そして、検出部11は、特定した外部ノード同士の設定値を比較し、差分の文字列を差分情報として検出する。
【0018】
更新部12は、対象システムの環境構築のために汎用化された汎用化定義情報に対して、検出部11により差分情報が検出された外部ノードのうち、差分情報に該当する設定値を変数化して更新を行う。「汎用化定義情報」は、上述した第1の定義情報及び第2の定義情報と同様に、所定の対象システム(同一又は構成が類似する複数の情報システム)の環境構築のために定義された定義情報である。そして、汎用化定義情報は、上述した環境構築ツールに用いられる構築定義ファイル等である。但し、汎用化定義情報は、定義内容の一部、例えば、設定値に変数(パラメータ)が記述されていてもよい。尚、上述した定義情報にも定義内容の一部に変数が記述されていてもよい。
【0019】
具体的には、更新部12は、汎用化定義情報に定義されたノードのうち、上記外部ノードに対応するノードを特定し、特定したノードの設定値の記述を、所定の変数の記述に書き換える。尚、変数の記述は、汎用化定義情報内で一意であるものとする。環境構築ツールは、汎用化定義情報と、汎用化定義情報内に定義された変数に対応する設定値とを用いて、対象システムの環境構築処理を実行することができる。
【0020】
図2は、本実施形態1にかかる開発支援方法の流れを示すフローチャートである。まず、検出部11は、所定の対象システムの環境構築のために定義された第1の定義情報と、第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する(S11)。次に、更新部12は、対象システムの環境構築のために汎用化された汎用化定義情報に対して、ステップS11で差分情報が検出された外部ノードのうち、差分情報に該当する設定値を変数化して更新を行う(S12)。
【0021】
このように本実施形態にかかる開発支援装置1は、所定の対象システムの環境構築のために開発者が作成した第1の定義情報と第1の定義情報から変更された第2の定義情報とを用いて、汎用化定義情報を自動的に生成(更新)する。このとき、開発支援装置1は、定義情報間のテキストの差分の全てではなく、「ツリー構造に従って対応する外部ノード同士における差分情報に該当する設定値」を変数化の対象として絞り込む。そのため、開発者が構築定義ファイルを開発する際に、変数化すべき適切な箇所を選別する必要がない。よって、開発者の負担を軽減しつつ、再利用性の高い構築定義ファイルの開発を支援することができる。
【0022】
尚、開発支援装置1は、図示しない構成としてプロセッサ、メモリ及び記憶装置を備えるものである。また、当該記憶装置には、本実施形態にかかる開発支援方法の処理が実装されたコンピュータプログラムが記憶されている。そして、当該プロセッサは、記憶装置からコンピュータプログラム等を前記メモリへ読み込ませ、当該コンピュータプログラムを実行する。これにより、前記プロセッサは、検出部11及び更新部12の機能を実現する。
【0023】
または、開発支援装置1の各構成要素は、それぞれが専用のハードウェアで実現されていてもよい。また、各装置の各構成要素の一部又は全部は、汎用または専用の回路(circuitry)、プロセッサ等やこれらの組合せによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。また、プロセッサとして、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、量子プロセッサ(量子コンピュータ制御チップ)等を用いることができる。
【0024】
また、開発支援装置1の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。また、開発支援装置1の機能がSaaS(Software as a Service)形式で提供されてもよい。
【0025】
<実施形態2>
本実施形態2は、上述した実施形態1の具体的な実施例である。
図3は、本実施形態2にかかる開発支援システム1000の構成を示すブロック図である。開発支援システム1000は、対象システム100、開発端末200及び開発支援装置300を備える。対象システム100、開発端末200及び開発支援装置300のそれぞれは、ネットワークNを介して接続されている。ここで、ネットワークNは、有線又は無線の通信回線網である。
【0026】
対象システム100は、環境構築の対象の情報システムである。尚、開発支援システム1000は、2以上の対象システム100を備えていても良い。開発端末200は、対象システム100の開発者U、例えば、環境構築を担当するインフラエンジニアが操作する情報処理装置である。開発端末200は、例えば、開発者Uが対象システム100の環境構築用の定義ファイルを開発するために用いられる。定義ファイルは、例えば、IaCにおける構築定義ファイル、上述した定義情報に相当する。開発者Uは、対象システム100の環境構築の内容が変更される度に、開発端末200を用いて定義ファイルを変更し、都度、開発支援装置300内の後述する変更履歴DB(DataBase)312に登録しているものとする。
【0027】
開発支援装置300は、上述した開発支援装置1の一例である。尚、開発支援装置300は、複数台のサーバに冗長化されてもよく、各機能ブロックが複数台のコンピュータで実現されてもよい。
【0028】
開発支援装置300は、記憶部310、メモリ320、通信部330及び制御部340を備える。記憶部310は、ハードディスク、フラッシュメモリ等の不揮発性記憶装置の一例である。記憶部310は、プログラム311、変更履歴DB312及び汎用化定義ファイル361~36n(nは2以上の自然数。)を記憶する。また、記憶部310に記憶される情報の一部又は全部は、外部の記憶装置に記憶されても良い。プログラム311は、本実施形態2にかかる開発支援処理等が実装されたコンピュータプログラム(開発支援プログラム)である。尚、記憶部310は、図示しない構成としてOS(Operating System)を記憶していてもよい。
【0029】
変更履歴DB312は、変更履歴情報の一例であり、1以上の対象システム100の環境構築のために定義された1種類以上の定義ファイルの変更履歴(定義ファイル群)を管理するデータベースである。変更履歴DB312は、定義ファイル群351から35nのそれぞれに、各世代の定義ファイルの集合を含めて蓄積している。定義ファイル群351等は、定義ファイル名等の識別情報に一意に対応するものとする。また、定義ファイル群351等のそれぞれは、対象システム100における異なる環境(例えば、サーバ装置、ネットワーク機器、OS、ミドルウェア、アプリケーション等)に対応するものとする。
【0030】
定義ファイル群351には、変更履歴の世代ごとに、定義ファイル3510、3511、・・・351m-1(mは2以上の自然数。)が含まれる。定義ファイル3510等のそれぞれは、定義ファイル群351に対応するファイル名(例えば定義ファイルA)における異なる世代(バージョン)の定義ファイルである。例えば、定義ファイル3510は、定義ファイルAとして、初回に作成された世代0の定義ファイル、定義ファイル3511は、世代0に対して変更(修正)が行われた世代1の定義ファイル、・・・定義ファイル351m-1は、世代m-2に対して変更(修正)が行われた世代m-1の定義ファイルであるとよい。尚、定義ファイル群352(不図示)から35nについても同様に、変更履歴の世代ごとに、複数の定義ファイルが含まれているとよい。
【0031】
ここで、本実施形態にかかる定義ファイルは、複数のノードがツリー構造で解釈できるように記述されている。尚、以下の定義ファイルの例では、ノード区切りを改行文字として記述したものを示すが、ノード区切りは改行文字に限定されない。また、以下の定義ファイルは、YAML(YAML Ain't Markup Language)の記法を例示するが、本実施形態にかかる定義ファイルの記法はこれに限定されない。また、本実施形態にかかる定義ファイルは、各設定項目に具体的な設定値(文字列)が記述されたものとするが、一部に変数が用いられていても良い。
【0032】
図4は、本実施形態2にかかる定義ファイルAの変更履歴の例を示す図である。定義ファイルA1は定義ファイルAの世代1、定義ファイルA2は定義ファイルAの世代2、定義ファイルA3は定義ファイルAの世代3である。例えば、定義ファイルA1において、「apiVersion: v1」、「kind: Pod」等のそれぞれがノードである。そして、「apiVersion: v1」において、「apiVersion:」がノードの設定項目、「v1」がノードの設定値となる。また、「apiVersion: v1」や「kind: Pod」は子ノードがないため、外部ノードとなる。また、「metadata:」は設定項目のみで、設定値がないノードと解釈されてもよい。その場合、「name: abcde」は、「metadata:」の子ノードとなる。そのため、「metadata:」は内部ノードとなる。そして、「name: abcde」において、「name:」がノードの設定項目、「abcde」がノードの設定値となる。また、「name: abcde」は子ノードがないため、外部ノードとなる。
【0033】
また、「spec:」は「containers:」を子ノード、「containers:」は「name:」を子ノード、「name:」は「image:」及び「ports:」を子ノード、「ports:」は「containerPort:」を子ノードと解釈されてもよい。その場合、「spec:」、「containers:」、「name:」、「image:」、「ports:」、「containerPort:」を設定項目とするとよい。そして、「name:」の設定値は「abcde」、「image:」の設定値は「abcde:1.14.2」、「containers:」の設定値は「80」となる。そのため、「spec:」、「containers:」、「name:」及び「ports:」は内部ノードとなり、「image:」及び「containerPort:」は外部ノードとなる。
【0034】
ここで、定義ファイルA2は、定義ファイルA1に対して変更されたものであり、定義ファイルA3は、定義ファイルA2に対して変更されたものである。具体的には、定義ファイルA1の設定値A11が定義ファイルA2の設定値A21に変更されている。すなわち、定義ファイルA1のノード「image:」の設定値のうち「1.14.2」が、定義ファイルA2の対応するノード「image:」の設定値のうち「1.14.3」へ変更されたことを示す。また、定義ファイルA2の設定値A22が定義ファイルA3の設定値A32へ変更されている。すなわち、定義ファイルA2のノード「containers:」の設定値「80」が、定義ファイルA2の対応するノード「containers:」の設定値「8080」へ変更されたことを示す。
【0035】
図5は、本実施形態2にかかる定義ファイルBの変更履歴の例を示す図である。定義ファイルB1は定義ファイルBの世代1、定義ファイルB2は定義ファイルBの世代2、定義ファイルB3は定義ファイルBの世代3である。ここで、定義ファイルB2は、定義ファイルB1に対して変更されたものであり、定義ファイルB3は、定義ファイルB2に対して変更されたものである。具体的には、定義ファイルB1の設定値B11が定義ファイルB2の設定値B21に変更されている。また、定義ファイルB2のノード群B22は、定義ファイルB1に対して追加されたノード群である。また、定義ファイルB2の設定値B23が定義ファイルB3の設定値B33に変更されている。
【0036】
図3に戻り説明を続ける。尚、変更履歴DB312が構成管理システムである場合、変更履歴DB312は、定義ファイル名等の識別情報ごとに、直前の世代からのテキストデータの差分を変更履歴として管理しても良い。その場合、開発支援装置300は、定義ファイル名と世代の指定を受け付けると、該当する世代以前の変更履歴を統合して、指定された世代の定義ファイルを生成し、出力してもよい。
【0037】
汎用化定義ファイル361から36nのそれぞれは、上述した定義ファイル群351に対応する環境に対応する汎用化定義情報の一例である。汎用化定義ファイル361等は、各設定項目の一部の設定値が変数化されたものである。
【0038】
メモリ320は、RAM(Random Access Memory)等の揮発性記憶装置であり、制御部340の動作時に一時的に情報を保持するための記憶領域である。通信部330は、開発支援装置300と外部との通信インタフェースである。
【0039】
制御部340は、開発支援装置300の各構成を制御するプロセッサつまり制御装置である。制御部340は、記憶部310からOS及びプログラム311をメモリ320へ読み込ませ、OS及びプログラム311を実行する。これにより、制御部340は、取得部341、検出部342、更新部343及び出力部344の機能を実現する。
【0040】
取得部341は、開発端末200から、汎用化定義ファイルの生成(更新)対象となる定義ファイル名の指定を受け付ける。また、取得部341は、指定された定義ファイル名に対応する各世代の変更履歴を、変更履歴DB312から取得する。例えば、指定された定義ファイル名に対応する変更履歴が3世代以上である場合、取得部341は、対象システム100の環境構築のために定義された定義情報における3世代以上の変更履歴を取得する。
【0041】
検出部342は、上述した検出部11の一例である。検出部342は、変更履歴DB312を参照し、第1の定義情報と第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する。また、検出部342は、第1の定義情報と第2の定義情報との間で、ツリー構造に従って一方に存在する内部ノードが他方に存在しない場合、当該内部ノードと当該内部ノードに属するノード群とをまとめた差分ノード群を差分情報として検出する。
【0042】
例えば、検出部342は、変更履歴DB312のうち指定された定義ファイル名(定義ファイル群)について、古い世代から新しい世代に向けて、隣接する世代の定義ファイルの組のそれぞれについて、差分情報を検出するとよい。尚、検出部342は、隣接しない世代の定義ファイルの組について差分情報を検出してもよい。
【0043】
更新部343は、上述した更新部12の一例である。更新部343は、対象システム100の環境構築のために汎用化された汎用化定義ファイルに対して、検出部342が差分情報を検出した外部ノードのうち、差分情報に該当する設定値を変数化して更新を行う。また、更新部343は、定義ファイルの変更において内部ノードが追加されたことを示す場合、汎用化定義ファイルに対して、差分ノード群を追加して更新を行う。また、更新部343は、定義ファイルの変更において内部ノードが削除されたことを示す場合、汎用化定義ファイルに対して、差分ノード群を削除して更新を行う。また、更新部343は、検出部342により差分情報が検出された場合に、更新を行う。
【0044】
出力部344は、更新部343により生成又は更新された汎用化定義ファイルを出力する。具体的には、出力部344は、汎用化定義ファイルを記憶部310に保存する。また、出力部344は、汎用化定義ファイルを開発端末200へ出力する。
【0045】
続いて、本実施形態2にかかる開発支援処理、つまり、特定の環境構築のために作成済みの定義ファイルの複数の変更履歴を用いて、汎用化定義ファイルを生成する処理について説明する。前提として、例えば、開発者Uは、開発端末200を用いて、対象システム100の環境構築のために、定義ファイルC0を作成し、世代0として変更履歴DB312に登録したものとする。ここで、定義ファイルC0は、所定の環境構築ツールで解釈可能な記法が用いられているものとする。そして、対象システム100の環境の仕様変更や開発状況に応じて、定義ファイルC0から複数回(例えば3回)、変更し、変更の度に、各世代を変更履歴DB312に登録したものとする。これにより、変更履歴DB312には、特定の対象システム100の特定の環境に対応する複数世代の定義ファイルC0からC3が蓄積される。
【0046】
図6は、本実施形態2にかかる定義ファイルCの変更履歴の例を示す図である。定義ファイルC0は定義ファイルCにおける世代0、定義ファイルC1は定義ファイルCにおける世代1、定義ファイルC2は定義ファイルCにおける世代2、定義ファイルC3は定義ファイルCにおける世代3である。ここで、定義ファイルC0の設定値C01は、定義ファイルC1の設定値C11へ変更されたことを示す。また、定義ファイルC1のノード群C12は、定義ファイルC0に対して追加されたノード群である。定義ファイルC1の設定値C13及びC14は、定義ファイルC2の設定値C23及びC24へ変更されたことを示す。定義ファイルC2のノード群C25は、定義ファイルC3への変更時に削除されたノード群である。すなわち、定義ファイルC2のノード群C22は、定義ファイルC3のノード群C32として残されていることを示す。
【0047】
図7は、本実施形態2にかかる開発支援処理の流れを示すフローチャートである。前提として、上述した
図7の定義ファイルCの変更履歴が変更履歴DB312に保存済みであり、定義ファイルCの汎用化定義ファイルは未生成であるものとする。このとき、開発者Uは、定義ファイルCの汎用化定義ファイルを、開発支援装置300により生成させるものとする。まず、開発端末200は、開発者Uの入力操作により、汎用化定義ファイルの生成対象となる定義ファイル名を受け付けて、ネットワークNを介して開発支援装置300へ、定義ファイル名を指定した、汎用化定義ファイルの生成要求を送信する。これに応じて、開発支援装置300は、開発端末200からネットワークNを介して、定義ファイルの指定を受け付ける(S111)。具体的には、開発支援装置300は、定義ファイル名として定義ファイルCが指定された、汎用化定義ファイルの生成要求を受信する。
【0048】
次に、開発支援装置300は、変更履歴DB312から、指定された定義ファイルに対応する各世代の変更履歴を取得する(S112)。このとき、開発支援装置300は、取得された変更履歴の世代数を、変数Nに設定する。例えば、開発支援装置300は、変更履歴DB312から、定義ファイルCに対応する定義ファイル群を特定し、特定した定義ファイル群に含まれる各世代の定義ファイルをメモリ320に読み込む。また、この例では、開発支援装置300は、変数Nに世代数「4」を代入する。
【0049】
そして、開発支援装置300は、取得した各定義ファイルを世代の古い順に、配列変数の履歴[0]から履歴[N-1]へ格納する(S113)。併せて、開発支援装置300は、汎用化ファイルを格納する配列変数の汎用化結果[0]に履歴[0]を格納する。例えば、開発支援装置300は、履歴[0]から履歴[3]のそれぞれに、定義ファイルC0からC3のそれぞれを格納し、汎用化結果[0]に定義ファイルC0を格納する。
【0050】
続いて、開発支援装置300は、指定された定義ファイルの世代数分、以下の処理を繰り返す。具体的人は、開発支援装置300は、ループ変数iを0からN-1まで1ずつ加算して、以下のステップS115及びS116を繰り返し実行する(S114)。まず、開発支援装置300は、変数「比較元」に履歴[i]、変数「比較先」に履歴[i+1]を格納する(S115)。例えば、i=0の場合、開発支援装置300は、比較元に履歴[0]、比較先に履歴[1]をそれぞれ格納する。そして、開発支援装置300は、比較及び更新処理を実行する(S116)。
【0051】
図8は、本実施形態2にかかる比較及び更新処理の流れを示すフローチャートである。まず、開発支援装置300は、差分検出処理を実行する(S211)。
【0052】
図9は、本実施形態2にかかる差分検出処理の流れを示すフローチャートである。開発支援装置300は、比較元のノード群と比較先のノード群とを、ツリー構造に従ってノード単位に比較して、差分情報を検出する。ここで、差分情報には、(1)比較先への追加ノード群、(2)比較元からの削除ノード群、(3)比較元と比較先とで対応する外部ノード同士における設定値の差分文字列がある。以下では、(1)から(3)の順序で差分情報を検出するアルゴリズムを例示するが、これに限定されない。
【0053】
まず、開発支援装置300は、比較先のノードに対応するノードが比較元にないか否かを判定する(S311)。例えば、開発支援装置300は、比較先の定義ファイルの上から順番にノードを選択し、選択したノードの設定項目について、比較元の各ノードの設定項目と比較し、一致する(対応する)ノードが存在するか否かを判定する。比較先のノードに対応するノードが比較元にない場合、開発支援装置300は、比較元から比較先への変更時にノードが追加されたと判定する(S311でYES)。尚、上記
図6のノード群C12の上位ノード「name: abcde」のように、設定項目「name:」自体は、定義ファイルC0にも存在する場合がある。そこで、例えば、特定の設定項目が内部ノードの場合、設定項目と設定値の組で比較し、一致する(対応する)ノードが存在するか否かを判定するとよい。以後、追加されたノードを「追加ノード」と呼ぶ。そして、開発支援装置300は、比較先から追加ノードに属するノード群をまとめて差分ノード群とし、ノード追加の旨を含めて差分情報として検出する(S312)。つまり、差分ノード群には、追加ノードそのものと、追加ノードの子ノード以下のノード群とがまとめて検出される。そして、差分ノード群として検出された各ノードは、比較先の定義ファイルからの選択対象から除外(スキップ)されて、以降のノードが選択され、ステップS311及びS312が繰り返される。尚、上記では、追加ノードが内部ノードの場合を示すが、追加ノードが外部ノードであってもよい。そして、開発支援装置300は、ステップS312で検出した全ての差分情報を差分リストに格納する(S313)。
【0054】
ステップS313の後、又は、ステップS311でNOの場合、開発支援装置300は、比較元のノードに対応するノードが比較先にないか否かを判定する(S314)。例えば、開発支援装置300は、比較元の定義ファイルの上から順番にノードを選択し、選択したノードの設定項目について、比較先の各ノードの設定項目と比較し、一致する(対応する)ノードが存在するか否かを判定する。比較元のノードに対応するノードが比較先にない場合、開発支援装置300は、比較元から比較先への変更時にノードが削除されたと判定する(S314でYES)。以後、削除されたノードを「削除ノード」と呼ぶ。そして、開発支援装置300は、比較元から削除ノードに属するノード群をまとめて差分ノード群とし、ノード削除の旨を含めて差分情報として検出する(S315)。つまり、差分ノード群には、削除ノードそのものと、削除ノードの子ノード以下のノード群とがまとめて検出される。そして、差分ノード群として検出された各ノードは、比較元の定義ファイルからの選択対象から除外(スキップ)されて、以降のノードが選択され、ステップS314及びS315が繰り返される。尚、上記では、削除ノードが内部ノードの場合を示すが、削除ノードが外部ノードであってもよい。そして、開発支援装置300は、ステップS315で検出した全ての差分情報を差分リストに格納する(S316)。
【0055】
ステップS316の後、又は、ステップS314でNOの場合、開発支援装置300は、比較元と比較先の間で対応するノード同士に設定値の差分があるか否かを判定する(S317)。例えば、開発支援装置300は、比較元と比較先のノード群のうち、上述した差分ノード群に含まれないノードの全てを対象に、設定項目を比較し、一致する(対応する)ノードが存在するか否かを判定する。特に、ノードが親ノードを有する場合、開発支援装置300は、各ノードの親ノードの設定項目や設定値も含めて、一致する(対応する)か否かを判定する。尚、ステップS317においては、ステップS311からS316の処理により、一方の内部ノードに対応するノードが存在しない場合は差分ノード群として除外されている。そのため、ステップS317では、開発支援装置300は、比較元と比較先の間で対応する「外部ノード」同士に設定値の差分があるか否かを判定してもよい。これにより、内部ノードの比較処理を抑止し、処理効率を上げることができる。そして、開発支援装置300は、対応するノード同士について設定値を比較し、差分の有無を判定する。設定値に差分がある場合、開発支援装置300は、比較元から比較先への変更時に該当ノードの設定値が変更された、つまり差分があると判定する(S317でYES)。そして、開発支援装置300は、設定値の差分情報を検出する(S318)。このとき、開発支援装置300は、設定値の差分の文字列のみ、差分の文字列を含む前後の文字列、差分の文字列を含む所定の区切り文字(例えば「:」や改行文字)までの文字列、差分の文字列の設定値内の文字位置等を差分情報として検出するとよい。また、開発支援装置300は、比較元と比較先のいずれか一方の差分文字列等を差分情報として検出してもよい。例えば、
図6の設定値C01「10.0.0」と設定値C11「11.0.0」の場合、差分情報は、「10」もしくは「11」もしくはこれらの両方、「10.0.0」もしくは「11.0.0」もしくはこれらの両方等として検出されてもよい。さらに、開発支援装置300は、差分情報に該当するノードの設定項目やノードの識別情報、ノードの種別(外部ノードであること)等を含めても良い。そして、開発支援装置300は、ステップS318で検出した全ての差分情報を差分リストに格納する(S319)。
【0056】
図8に戻り説明を続ける。開発支援装置300は、差分リストの各要素について以下の処理を繰り返し実行する(S212)。すなわち、開発支援装置300は、差分リストのうち未選択の差分情報を選択し、選択した差分情報についてステップS213からS218の処理を実行する。まず、開発支援装置300は、選択した差分情報がノード追加か否かを判定する(S213)。ノート追加の場合、開発支援装置300は、汎用化結果[i]に差分ノード群を追加する(S214)。
【0057】
一方、ノード追加ではない場合、開発支援装置300は、選択した差分情報がノード削除か否かを判定する(S215)。ノート削除の場合、開発支援装置300は、汎用化結果[i]から差分ノード群を削除する(S216)。
【0058】
一方、ノード削除ではない場合、開発支援装置300は、比較元と比較先で対応する両ノードが外部ノードか否かを判定する(S217)。すなわち、開発支援装置300は、選択した差分情報に含まれる該当するノードの設定項目やノードの識別情報から、外部ノードか否かを判定してもよい。または、開発支援装置300は、選択した差分情報に含まれる該当するノードの種別が外部ノードであるか否かを判定してもよい。そして、外部ノードである場合、開発支援装置300は、汎用化結果[i]の中で、外部ノードのうち差分情報に該当する設定値を変数化して更新する(S218)。尚、変数の決め方は任意であるが、汎用化結果[i]の中で、一意な文字列であるものとする。
【0059】
図7に戻り説明を続ける。その後、開発支援装置300は、汎用結果[N-1]を記憶部310に保存し、開発端末200へ出力する(S117)。これにより、定義ファイルCの変更履歴から自動生成された汎用化定義ファイルが記録される。また、開発者Uは、開発端末200に表示された汎用化定義ファイルを視認できる。
【0060】
ここで、
図10から
図12を参照して、上述した
図6の定義ファイルCの4世代の変更履歴を用いて、汎用化定義ファイルが生成される例を説明する。
図10は、本実施形態2にかかる世代0と世代1の比較及び汎用化定義ファイルの更新の例を示す図である(ステップS114の1回目のループ)。まず、開発支援装置300は、差分検出処理にて、比較元の履歴[0]である定義ファイルC0と比較先の履歴[1]である定義ファイルC1とのノード単位での比較を行う。そして、開発支援装置300は、設定値C01「10.0.0」とC11「11.0.0」とを設定値の差分情報として検出し(S318)、差分リストに格納する(S319)。また、開発支援装置300は、ノード群C12をノード追加の差分ノード群として検出(S312)し、差分リストに格納する(S313)。
【0061】
その後、ステップS212の1回目のループにより、開発支援装置300は、差分リストのうち差分情報(設定値C01とC11)を選択する。そして、開発支援装置300は、汎用化結果[0]である汎用化結果R0に対して、設定値R01「10.0.0」を変数R11「${VAR1}」に置き換えて(更新して)汎用化結果R1を生成し、汎用化結果R1を汎用化結果[1]に格納する。そして、ステップS212の2回目のループにより、開発支援装置300は、差分リストのうちノード追加の差分ノード群(ノード群C12)を選択する。そして、開発支援装置300は、汎用化結果[1]内の汎用化結果R1に対して、ノード群C12を追加して汎用化結果R1を更新する。
【0062】
図11は、本実施形態2にかかる世代1と世代2の比較及び汎用化定義ファイルの更新の例を示す図である(ステップS114の2回目のループ)。続いて、開発支援装置300は、差分検出処理にて、比較元の履歴[1]である定義ファイルC1と比較先の履歴[2]である定義ファイルC2とのノード単位での比較を行う。そして、開発支援装置300は、設定値C13「1.14.2」とC23「1.14.3」とを設定値の差分情報として検出し(S318)、差分リストに格納する(S319)。また、開発支援装置300は、設定値C14「80」とC24「8080」とを設定値の差分情報として検出し(S318)、差分リストに格納する(S319)。尚、定義ファイルC1のノード群C15と定義ファイルC2のノード群C25とは対応するため、差分として検出されない。
【0063】
その後、ステップS212の1回目のループにより、開発支援装置300は、差分リストのうち差分情報(設定値C13とC23)を選択する。そして、開発支援装置300は、汎用化結果[1]内の汎用化結果R1に対して、設定値R13「1.14.2」を変数R23「${VAR2}」に置き換えて(更新して)汎用化結果R2を生成し、汎用化結果R2を汎用化結果[2]に格納する。そして、ステップS212の2回目のループにより、開発支援装置300は、差分リストのうち差分情報(設定値C14とC24)を選択する。そして、開発支援装置300は、汎用化結果[2]内の汎用化結果R2に対して、設定値R14「80」に相当する文字列を変数R24「${VAR3}」に置き換えて更新する。一方、ノード群C15からC25へは変更がないため、汎用化結果R1の変数R11と汎用化結果R2の変数R21は同じ記述であり、更新されない。つまり、汎用化結果R2の変数R21「${VAR1}」は維持される。
【0064】
図12は、本実施形態2にかかる世代2と世代3の比較及び汎用化定義ファイルの更新の例を示す図である(ステップS114の3回目のループ)。続いて、開発支援装置300は、差分検出処理にて、比較元の履歴[2]である定義ファイルC2と比較先の履歴[3]である定義ファイルC3とのノード単位での比較を行う。そして、開発支援装置300は、ノード群C25をノード削除の差分ノード群として検出(S312)し、差分リストに格納する(S313)。尚、定義ファイルC2のノード群C22と定義ファイルC3のノード群C32とは対応するため、差分として検出されない。
【0065】
その後、ステップS212の1回目のループにより、開発支援装置300は、差分リストのうちノード削除の差分ノード群(ノード群C25)を選択する。そして、開発支援装置300は、汎用化結果[2]内の汎用化結果R2からノード群R22を削除して、汎用化結果R3を生成し、汎用化結果R3を汎用化結果[3]に格納する。一方、ノード群C22からC32へは変更がないため、汎用化結果R2のノード群R25と汎用化結果R3のノード群R32は同じ記述であり、更新されない。つまり、汎用化結果R3のノード群R32は維持される。
【0066】
ここで、IaC等の構築定義ファイル内の記述を部分的に変数化することは、構築定義ファイルの再利用性を高めるといえる。一方で、変数化をし過ぎると、変数化の箇所が膨大となり、可読性が低下し、却って、構築定義ファイルの再利用性が低下する。そのため、再利用性を高めるために構築定義ファイル内の記述を変数化するには、有識者の知見を得るなどして、変数化すべき箇所を適切に選別して行うことが望ましい。しかしながら、システム構築のエンジニア等の開発者が有識者であるとは限らず、構築定義ファイルを作成する際に、変数化すべき箇所を適切に選別することは負担が多い。そのため、構築定義ファイルの開発時に、汎用化を意識すると、却って開発効率が下がるという問題点がある。
【0067】
そこで、本実施形態では、上記例のように、上述した
図6の定義ファイルCの4世代の変更履歴を用いて、汎用化結果R1、R2及びR3として、汎用化定義ファイルが順次、更新されることができる。この場合、汎用化結果R3では、開発の途中で削除されたノード群C25が、削除されている。また、汎用化結果R3では、開発の途中で追加されたノード群C12が追加され、ノード群C12に対して変更された設定値C23及びC24の箇所について、変数R23及びR24へ置換されている。一方で、他の記述については変数化されない。
【0068】
そのため、開発者Uは、汎用化を意識せずに、定義ファイルC0からC3への変更を行って、開発を行うことができる。そして、開発支援装置300は、定義ファイルCの変更履歴を用いることで、変数化すべき箇所を適切に選別し、汎用化された構築定義ファイルを生成及び更新することができる。そのため、開発者Uは、変数化箇所の選別の負担が軽減され、環境構築の要件を満たす定義ファイルの作成に集中できる。併せて、構築定義ファイルの再利用性が高まるため、構築定義ファイルの開発効率を高めることができる。
【0069】
<その他の実施形態>
尚、上述した開発支援装置は、変数化した変数に対応する設定値を定義した変数定義ファイルを生成してもよい。この場合、開発支援装置は、変数定義ファイルと汎用化定義ファイルとは対応付けて記憶部等に保存するとよい。例えば、更新部343は、汎用化定義情報に対応付けられた変数定義情報に対して、変数化した変数に、差分情報に該当する設定値を設定するとよい。これにより、環境構築ツールは、汎用化定義情報と変数定義ファイルとを用いて、対象システムの環境構築処理を実行することができる。そして、変数定義ファイルも自動更新できる。
【0070】
また、上述した開発支援装置は、差分検出処理において、差分の検出対象から除外する設定項目や設定値等の除外リストを用いても良い。例えば、検出部342は、外部から指定された所定の文字列を除外して、外部ノード同士における差分情報を検出するとよい。これにより、変数化すべき箇所の絞り込みをカスタマイズでき、より適切に選別できる。
【0071】
尚、比較及び更新処理や差分検出処理は、上述した
図8及び
図9に限定されない。例えば、差分情報が検出された際に続けて、汎用化結果を更新等してもよい。具体的には、ノード追加の場合、
図9のステップS312の後にS313に代えて、
図8のステップS214を実行するとよい。また、ノード削除の場合、
図9のステップS315の後にS316に代えて、
図8のステップS216を実行するとよい。また、対応する外部ノード同士に差分箇所を変数化する場合、
図9のステップS318の後にS319に代えて、
図8のS218を実行するとよい。その他、定義情報の間でツリー構造に従って比較し、差分情報(追加又は差分ノード群、対応する外部ノード同士の設定値の差分)の検出の仕方は、様々なアルゴリズムを適用可能である。
【0072】
上述の例において、プログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disc(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
【0073】
なお、本開示は上記実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、本開示は、それぞれの実施形態を適宜組み合わせて実施されてもよい。
【0074】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記A1)
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出手段と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新手段と、
を備える開発支援装置。
(付記A2)
前記検出手段は、前記第1の定義情報と前記第2の定義情報との間で、ツリー構造に従って一方に存在する内部ノードが他方に存在しない場合、当該内部ノードと当該内部ノードに属するノード群とをまとめた差分ノード群を前記差分情報として検出し、
前記更新手段は、
前記変更において前記内部ノードが追加されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を追加し、
前記変更において前記内部ノードが削除されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を削除して、前記更新を行う
付記A1に記載の開発支援装置。
(付記A3)
前記更新手段は、
前記汎用化定義情報に対応付けられた変数定義情報に対して、前記変数化した変数に前記差分情報に該当する設定値を設定する
付記A1又はA2に記載の開発支援装置。
(付記A4)
前記検出手段は、外部から指定された所定の文字列を除外して前記外部ノード同士における差分情報を検出する
付記A1又はA2に記載の開発支援装置。
(付記A5)
前記対象システムの環境構築のために定義された定義情報における3世代以上の変更履歴を取得する取得手段をさらに備え、
前記検出手段は、前記変更履歴のうち古い世代から新しい世代に向けて、隣接する世代の定義情報の組のそれぞれについて、前記差分情報を検出し、
前記更新手段は、前記差分情報が検出された場合に、前記更新を行う
付記A1又はA2に記載の開発支援装置。
(付記B1)
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報とを含む変更履歴情報を記憶する記憶装置と、
前記記憶装置と接続された開発支援装置と、を備え、
前記開発支援装置は、
前記変更履歴情報を参照し、前記第1の定義情報と前記第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出手段と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新手段と、
を備える開発支援システム。
(付記B2)
前記検出手段は、前記第1の定義情報と前記第2の定義情報との間で、ツリー構造に従って一方に存在する内部ノードが他方に存在しない場合、当該内部ノードと当該内部ノードに属するノード群とをまとめた差分ノード群を前記差分情報として検出し、
前記更新手段は、
前記変更において前記内部ノードが追加されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を追加し、
前記変更において前記内部ノードが削除されたことを示す場合、前記汎用化定義情報に対して、前記差分ノード群を削除して、前記更新を行う
付記B1に記載の開発支援システム。
(付記C1)
コンピュータが、
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出し、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う、
開発支援方法。
(付記D1)
所定の対象システムの環境構築のために定義された第1の定義情報と、当該第1の定義情報に対して変更された第2の定義情報との間で、ツリー構造に従って対応する外部ノード同士における差分情報を検出する検出処理と、
前記対象システムの環境構築のために汎用化された汎用化定義情報に対して、前記外部ノードのうち前記差分情報に該当する設定値を変数化して更新を行う更新処理と、
をコンピュータに実行させる開発支援プログラム。
【0075】
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0076】
1 開発支援装置
11 検出部
12 更新部
1000 開発支援システム
N ネットワーク
100 対象システム
200 開発端末
U 開発者
300 開発支援装置
310 記憶部
311 プログラム
312 変更履歴DB
351 定義ファイル群
3510 定義ファイル
3511 定義ファイル
351m-1 定義ファイル
35n 定義ファイル群
361 汎用化定義ファイル
36n 汎用化定義ファイル
320 メモリ
330 通信部
340 制御部
341 取得部
342 検出部
343 更新部
344 出力部
A1 定義ファイル
A11 設定値
A2 定義ファイル
A21 設定値
A22 設定値
A3 定義ファイル
A32 設定値
B1 定義ファイル
B11 設定値
B2 定義ファイル
B21 設定値
B22 ノード群
B23 設定値
B3 定義ファイル
B33 設定値
C0 定義ファイル
C01 設定値
C1 定義ファイル
C11 設定値
C12 ノード群
C13 設定値
C14 設定値
C15 ノード群
C2 定義ファイル
C22 ノード群
C23 設定値
C24 設定値
C25 ノード群
C3 定義ファイル
C32 ノード群
R0 汎用化結果
R01 設定値
R1 汎用化結果
R11 変数
R12 ノード群
R13 設定値
R14 設定値
R2 汎用化結果
R21 変数
R22 ノード群
R23 変数
R24 変数
R25 ノード群
R3 汎用化結果
R32 ノード群