(57)【要約】【課題】宣言的モデルの作成において、宣言的モデルを利用者の意図する方向へと導くための情報を提示し得る、システム構築支援装置、システム構築支援方法、及びプログラムを提供する。【解決手段】システム構築支援装置１は、宣言的モデルによって定義されるシステムの構築を支援するための装置である。システム構築支援装置１は、宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、情報収集部２と、構成要素の依存性が宣言的モデルに与える影響を予測する予測モデルに、依存性情報を適用することによって、宣言的モデルの修正を支援するための支援情報を作成する、支援情報作成部３とを備えている。【選択図】図１
2019053502.tif 000002
【特許請求の範囲】
【請求項１】
宣言的モデルによって定義されるシステムの構築を支援するための装置であって、
前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、情報収集部と、
前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、支援情報作成部と、
を備えている、ことを特徴とするシステム構築支援装置。
【請求項２】
学習用の前記依存性情報と学習用の前記宣言的モデルとを教師データとする、機械学習を行って、前記予測モデルを生成する、予測モデル生成部を更に備えている、
請求項１に記載のシステム構築支援装置。
【請求項３】
前記情報収集部が、前記依存性情報として、
既に生成されている前記宣言的モデルの依存性定義を解析し、それによって得られた情報、
前記システムにおける前記宣言的モデルを用いたワークフローの実行結果からエラーを解析し、それによって得られた情報、
前記システムの定義を解析し、それによって得られた情報、
前記システムに保持されているログを解析し、それによって得られた情報、及び
予め公開されている前記宣言的モデルの作成ツールの利用に関する情報を解析し、それによって得られた情報を、収集する、
請求項１又は２に記載のシステム構築支援装置。
【請求項４】
前記支援情報作成部が、前記支援情報として、前記宣言的モデルの作成において、前記構成要素それぞれの間の依存関係の生成、補完、又は補正を支援するための情報を作成する、
請求項１〜３のいずれかに記載のシステム構築支援装置。
【請求項５】
宣言的モデルによって定義されるシステムの構築を支援するための方法であって、
（ａ）前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、ステップと、
（ｂ）前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、ステップと、
を有する、ことを特徴とするシステム構築支援方法。
【請求項６】
コンピュータによって、宣言的モデルによって定義されるシステムの構築を支援するためのプログラムであって、
前記コンピュータに、
（ａ）前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、ステップと、
（ｂ）前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、ステップと、
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、宣言的モデルによって定義されるシステムの構築を支援するための、システム構築支援装置、及びシステム構築支援方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【０００２】
近年、クラウド基盤、仮想化基盤の発展により、安価で大量のコンピュータ資源を利用できるようになっている。このようなコンピュータ資源を管理するための技術として、Infrastructure as Code（「IaC」と表記する。）が知られている。
【０００３】
IaCによれば、ソースコードによってシステムを定義でき、オーケストレータと呼ばれるツールにてシステムを自動的に構築することができる。また、IaCの具体例としては、OpenStack Heat、AWS (Amazon Web Service) Cloud formation、Ansible等が知られている。
【０００４】
また、IaCによるシステムの定義方法の一つとして、宣言的モデルがある。具体的には、OpenStack HeatコンポーネントのHeat Orchestration Template(HOT)、AWS Cloud formationサービスのCloud Formation Template等である。また、宣言的モデルは、AnsibleではPlaybookという書式で存在している。
【０００５】
また、宣言的モデルは、一般的に、テキストエディタを用いてソースコードを記述することによって作成される。また、テキストエディタを使わないで、代わりに、宣言的モデルのオーケストレータ用にグラフィカルエディタを用いて宣言的モデルを作成する手法も提案されている（例えば、非特許文献１参照）。
【０００６】
具体的には、非特許文献１は、AWS Cloud Formation の定義を変更するために、AWS Cloud Formation DesignerといったAWS Cloud Formation用の宣言的モデル作成ツールを開示している。非特許文献１に開示されたツールは、グラフィカルエディタであり、これを用いれば、視覚的に宣言的モデルの作成を行うことが可能となっている。
【０００７】
しかし、どのようなエディタを用いた場合でも、宣言的モデルの構成要素間の依存関係の定義が容易ではないため、宣言的モデルを「正しく」定義することは困難である。構成要素間の依存関係の定義が容易ではない理由としては、宣言的モデルの作成者には、構成要素間の依存関係の有無が分からない（知らない）点と、宣言的モデルを作成する際に使用する構成要素の依存性情報が正しく定義されていない場合がある点とが挙げられる。
【０００８】
なお、「構成要素」とは、宣言的モデルを作成する際に利用する単位である。構成要素としては、例えば、Webサーバ、DB（Data Base）サーバといった汎用的なものから、Tomcatサーバ、MySQLサーバといった具体的なものまでが挙げられる。また、構成要素は、AWS Cloud Formationでは、Resource Typeと表現され、OASIS TOSCAではNode Typeと表現される。
【０００９】
また、「依存性情報」とは、ある構成要素が必要としている要求と、ある構成要素が提供可能な能力との定義を示す。OASIS TOSCAでは、あるNode Type の Requirement と Capability という定義で表現される。
【００１０】
このため、従来において、宣言的モデルを新規に作成する場合は、サンプル定義を参照して宣言的モデルに修正を加えて行くか、作成した定義を使って実際のプロビジョニングを行ってTry & Errorを繰り返して「正しい」定義へ収束させていくかする必要がある。また、特許文献１には、構築結果の情報に基づいて、作成した宣言的モデルを解析し、更に解析結果に基づいて、宣言的モデルを改良する技術が開示されている。
【００１１】
なお、宣言的モデルの定義を、変換ツールなどを使用して再利用することも考えられるが、一部の例外（AWS CFN記述は、OpenStackで使用可能）を除き、そのまま利用することは不可能である。また、OASIS TOSCAでは、標準的な定義を策定することで、定義にポータビリティを付与しようとしているが、この場合でもTry & Errorは必要である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特表２０１０−５３２５３２号公報
【非特許文献】
【００１３】
【非特許文献１】新崎準，外3名，“新技術の動向”，［online］，平成10年4月1日，特許学会，［平成11年7月30日検索］，インターネット＜URL：https://aws.amazon.com/jp/cloudformation/details/#designer＞
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところで、上述した特許文献１に開示された技術によれば、サンプル定義を参照する場合、及びTry & Errorを繰り返す場合に比べて、宣言的モデルを効率良く改良することができるが、利用者の意図しない改良が行われてしまうという問題点がある。理由は以下の（ａ）〜（ｆ）の通りである。
【００１５】
（ａ）構成要素間の依存の改良に注目して宣言的モデルの改良が行われるが、個々の構成要素の改良は行われない。
（ｂ）宣言的モデルから生成される命令について、実際の実行時にエラーとなる場合が考慮されていない。
（ｃ）改良を加えるための知識が明確でない。
（ｄ）特許文献１には、主に性能情報による負荷分散構成の改良について例示があるが、実際のシステムでは組み込まれている宣言的モデルの作成者（エディタ利用者）による意図的な知識が組み込まれていない。
（ｅ）宣言的モデルをリポジトリへ登録したあとで改良が加えられている。
（ｆ）宣言的モデルの作成者（エディタ利用者）に対して、宣言的モデルの作成段階で依存性情報に基づいた改良を提示すべきだが、そのような提示がなされていない。
【００１６】
本発明の目的の一例は、上記問題を解消し、宣言的モデルの作成において、宣言的モデルを利用者の意図する方向へと導くための情報を提示し得る、システム構築支援装置、システム構築支援方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明の一側面におけるシステム構築支援装置は、宣言的モデルによって定義されるシステムの構築を支援するための装置であって、
前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、情報収集部と、
前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、支援情報作成部と、
を備えている、ことを特徴とする。
【００１８】
また、上記目的を達成するため、本発明の一側面におけるシステム構築支援方法は、宣言的モデルによって定義されるシステムの構築を支援するための方法であって、
（ａ）前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、ステップと、
（ｂ）前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、ステップと、
を有する、ことを特徴とする。
【００１９】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって、宣言的モデルによって定義されるシステムの構築を支援するためのプログラムであって、
前記コンピュータに、
（ａ）前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、ステップと、
（ｂ）前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００２０】
以上のように本発明によれば、宣言的モデルの作成において、宣言的モデルを利用者の意図する方向へと導くための情報を提示することができる。
【図面の簡単な説明】
【００２１】
【図１】図１は、本発明の実施の形態におけるシステム構築支援装置の概略構成を示すブロック図である。
【図２】図２は、本発明の実施の形態におけるシステム構築支援装置の具体的構成を示すブロック図である。
【図３】図３は、本発明の実施の形態で利用されるローカル情報とパブリック情報との一例を示す図である。
【図４】図４は、本実施の形態で用いられる宣言的モデルの定義とシステムの構成要素との関係の一例を示す説明図である。
【図５】図５は、本発明の実施の形態におけるシステム構築支援装置の動作を示すフロー図である。
【図６】図６は、本発明の実施の形態におけるシステム構築支援装置によって得られる効果を示す図である。
【図７】図７は、本発明の実施の形態におけるシステム構築支援装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【００２２】
（実施の形態）
以下、本発明の実施の形態における、システム構築支援装置、システム構築支援方法、及びプログラムについて、図１〜図７を参照しながら説明する。
【００２３】
［装置構成］
最初に、図１を用いて、本発明の実施の形態におけるシステム構築支援装置の構成について説明する。図１は、本発明の実施の形態におけるシステム構築支援装置の概略構成を示すブロック図である。
【００２４】
図１に示す、本実施の形態におけるシステム構築支援装置１は、宣言的モデルによって定義されるシステム１０００の構築を支援するための装置である。図１に示すように、システム構築支援装置１は、情報収集部２と、支援情報作成部３とを備えている。
【００２５】
情報収集部２は、宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する。支援情報作成部３は、構成要素の依存性が宣言的モデルに与える影響を予測する予測モデルを用いて、宣言的モデルの修正を支援するための支援情報を作成する。
【００２６】
このように、本実施の形態では、宣言的モデルの修正を支援するための支援情報が作成されるので、宣言的モデルの作成において、宣言的モデルを利用者の意図する方向へと導くための情報を提示することできる。
【００２７】
続いて、図２を用いて、本実施の形態におけるシステム構築支援装置１の構成についてより具体的に説明する。図２は、本発明の実施の形態におけるシステム構築支援装置の具体的構成を示すブロック図である。
【００２８】
図２に示すように、本実施の形態では、システム構築支援装置１は、支援対象となるシステム１０００に組み込まれている。具体的には、後述するように、システム１０００を構成するコンピュータに導入されたプログラムによって構築されている。
【００２９】
また、図２に示すように、システム１０００は、宣言的モデル編集コンポーネント１００と、モデルリポジトリ１０１と、宣言的モデルオーケストレータ２００と、ワークフロー実行コンポーネント３００と、実行環境４００とを備えている。
【００３０】
宣言的モデル編集コンポーネント１００は、利用者による宣言的モデルの編集を受け付け、更に、利用者による指示に応じて、JSON又はYAMLなどのソースコードを出力するツールである。また、宣言的モデル編集コンポーネント１００は、一般的には、GUI（Graphical User Interface）を持つエディタとしても機能する。
【００３１】
更に、宣言的モデル編集コンポーネント１００によって編集された宣言的モデル１１（テキスト情報）は、モデルリポジトリ１０１に保持される。モデルリポジトリ１０１は、宣言的モデル１１をローカル環境で格納するリポジトリである。
【００３２】
宣言的モデルオーケストレータ２００は、宣言的モデル１１を解釈し、解釈に応じて、宣言的モデルを、実行処理を行うための内部インタプリタへと変換する。また、この内部インタプリタは、図２においては、ワークフロー２１と表記されており、テキスト情報で構成されている。ワークフロー２１は、ワークフロー実行コンポーネット３００に送られる。また、宣言的モデルオーケストレータ２００は、TOSCA リファレンス実装、OpenStack Heat 実装等によって実装される。
【００３３】
ワークフロー実行コンポーネント３００は、システム１０００を構築する実行基盤に応じて、具体的には、宣言的モデルオーケストレータ２００によって解釈された宣言的モデルの指示、即ち、ワークフロー２１に沿って、実際のプロビジョニング処理を実行する。また、ワークフロー実行コンポーネント３００には、様々な実行環境に対応するため、各実行環境に対応したデータ変換、API呼び出し等を実行するプラグインパターンによって実装される。
【００３４】
実行環境４００は、実際のシステムを稼働させるための実行環境である。実行環境４００の具体例としては、VMware、OpenStack、及びAWS等が挙げられる。また、図２に示すように、実行環境４００では、システム定義情報４０１と、ログ情報４０２とが保持されている。
【００３５】
システム定義情報４０１は、実際の動作環境上のシステムに関する定義情報一式である。システム定義情報４０１としては、例えば、Webサーバアプリケーションの設定ファイル、オペレーティングシステムのカーネルパラメータ等が挙げられる。ログ情報４０２は、実際の動作環境上のシステムに関するログ情報一式である。
【００３６】
また、モデル構成要素リポジトリ７００は、宣言的モデルを作成する際の構成要素を格納するリポジトリである。具体的には、モデル構成要素リポジトリ７００は、例えば、OASIS TOSCAでは、Node Type と呼ばれている。
【００３７】
更に、図２に示すように、システム１０００は、インターネット６００に接続されている。システム１０００は、インターネット６００上に公開されている公開リポジトリ群６０１にアクセスする。公開リポジトリ群６０１の例としては、宣言的モデルツール（例えば、OpenStack Heat、AWS Cloud Formation等）、 IaCツール（例えば、Ansible、Docker等）の利用の際に用いられる定義情報（GitHub、Docker Hub、 Ansible-Galaxy等）が挙げられる。これらの定義情報は、インターネット６００上で公開されている。
【００３８】
また、図２に示すように、システム１０００は、上述した構成に加えて、宣言的モデル解析コンポーネント５１０と、ワークフロー実行状況解析コンポーネント５２０と、既存システム解析コンポーネント５３０と、ログ解析コンポーネント５４０と、公開システム構成情報解析コンポーネント５５０も備えている。
【００３９】
これらの解析コンポーネント５１０〜５５０は、情報収集部２による依存性情報の収集に用いられるコンポーネントである。解析コンポーネント５１０〜５５０は、利用者のローカル環境の情報（ローカル情報）、及びインターネット上に公開されている情報（パブリック情報）から、依存性情報（テキスト情報）を取得し、取得した依存性情報を情報収集部２に入力する。
【００４０】
また、これらの解析コンポーネント５１０〜５５０によって取得される情報には、直接的な依存性に関する情報以外に、エラー、性能監視結果、構成要素に関する意味情報（例えばWebサーバであるとか、DBサーバであるとか）、ベストプラクティスであることを示す情報、アンチパターンであることを示す情報、等が含まれる。
【００４１】
また、ローカル情報とは、モデルリポジトリ１０１、実行環境４００で保持されている情報を意味する。また、パブリック情報とは、公開リポジトリ群６０１で保持されている情報を意味する。図３は、本発明の実施の形態で利用されるローカル情報とパブリック情報との一例を示す図である。
【００４２】
具体的には、宣言的モデル解析コンポーネント５１０は、ローカル情報として格納されている宣言的モデル１１の依存性定義を解析し、それによって得られた情報（解析結果５１）を、システム構築支援装置１に送る。
【００４３】
ワークフロー実行状況解析コンポーネント５２０は、ワークフロー実行コンポーネント３００による、宣言的モデルを用いたワークフローの実行結果（例えば、APIの返却値、ログ情報）から、エラーを解析する。エラーとしては、依存性に関する定義で発生したエラーが挙げられる。そして、ワークフロー実行状況解析コンポーネント５２０は、エラーの解析によって得られた情報（解析結果５２）を、システム構築支援装置１に送る。
【００４４】
既存システム解析コンポーネント５３０は、システム１０００の一般情報に基づいて、システム１０００の定義を解析する。具体的には、既存システム解析コンポーネント５３０は、実行環境４００上で動作しているシステムに関する情報、及びその基盤に存在している依存性に関する情報を解析する。そして、既存システム解析コンポーネント５３０は、定義の解析によって得られた情報（解析結果５３）を、システム構築支援装置１に送る。
【００４５】
ログ解析コンポーネント５４０は、システム１０００に保持されているログ（ログ情報４０２）を解析し、それによって得られた情報（解析結果５４）を、システム構築支援装置１に送る。この場合のログの例としては、実行環境４００上で発生するシステムのログ、アプリケーションプログラムにおけるログ等が挙げられる。
【００４６】
また、公開システム構成情報解析コンポーネント５５０は、インターネット６００上に公開されている公開リポジトリ群６０１を解析し、それによって得られた情報（解析結果５５）を、システム構築支援装置１に送る。具体的には、公開システム構成情報解析コンポーネント５５０は、公開リポジトリ群６０１から、システム定義情報６１と、使用状況情報６２とを取得する。
【００４７】
システム定義情報６１は、宣言的モデル及びシステム構成に関するパブリック情報であり、具体的には、OpenStack Heat Orchestration Template (HOT), AWS Cloud Formation Template, Dockerfile, Playbook等のテキスト情報である。また、使用状況情報６２は、インターネット６００上で公開されている情報についての利用状況を示すデータ、例えば、ダウンロード数、Like数、GitHub上でのFolk数等である。
【００４８】
また、本実施の形態において、利用される解析コンポーネントは、上述の解析コンポーネントに限定されることはない。収集される依存性情報の種類及び数に併せて、解析コンポーネントも増え、依存関係の補完精度が向上することとなる。
【００４９】
また、図２に示すように、本実施の形態では、システム構築支援装置１は、上述した情報収集部２及び支援情報作成部３に加えて、更に、予測モデル生成部４と、予測モデル格納部５と、依存関係バルクデータ・データベース（DB：Data Base）６とを備えている。
【００５０】
予測モデル生成部４は、学習用の依存性情報と学習用の宣言的モデルとを教師データとする、機械学習を行って、予測モデルを生成する。具体的には、予測モデル生成部４は、まず、学習用の依存性情報と学習用の宣言的モデルとのそれぞれから特徴量を抽出する。次いで、予測モデル生成部４は、抽出した依存性情報の特徴量と宣言的モデルの特徴量とを、構成要素についての「汎化」、「正しさ」、「ローカル依存性」、「アンチパターン」といった項目で分類する。そして、予測モデル生成部４は、各特徴量と分類結果とを関連付け、これらの関係を学習し、学習結果を用いて、予測モデルを生成する。生成された予測モデルは、予測モデル格納部５に格納される。
【００５１】
また、予測モデル生成部４は、学習用の依存性情報をローカル情報とパブリック情報とに区別して機械学習を行うこともできる。これにより、より精度の高い予測モデルを作成することができる。これは、学習用の依存性情報として、パブリック情報を用いた場合は、広く一般的に利用されている全体最適観点で学習効果が得られるからである。また、学習用の依存性情報として、ローカル情報を用いた場合は、システムを構築及び運用している独自のノウハウに関する学習効果が得られるからである。
【００５２】
更に、学習用の依存性情報として、ローカル情報を用いた場合は、予測モデルによって、宣言的モデル作成時に一般的な定義とは異なるそのシステム固有の調整の提案も可能となる。加えて、この場合は、既存のオンプレミスシステムを例えばクラウド環境へ移行するための宣言的モデルの作成において、重要な関係性及び運用項目を落とすことなく定義できることとなる。
【００５３】
情報収集部２は、本実施の形態では、上述した各解析コンポーネント５１０〜５５０それぞれから送られてきた依存性情報を取得し、これらを収集する。情報収集部２は、収集した依存性情報を、依存関係バルクデータDB６に格納する。
【００５４】
また、情報収集部２は、上述した解析コンポーネントのうち、宣言的モデル解析コンポーネント５１０、ワークフロー実行状況解析コンポーネント５２０、既存システム解析コンポーネント５３０、及びログ解析コンポーネント５４０からは、ローカル情報を収集する。更に、情報収集部２は、公開システム構成情報解析コンポーネント５５０からは、パブリック情報を収集する。このため、情報収集部２は、ローカル情報とパブリック情報とを区別して収集し、収集した各情報に、ローカル情報及びパブリック情報のいずれであるかを示すラベルを付与することができる。
【００５５】
支援情報作成部３は、本実施の形態では、予測モデル格納部５に格納されている予測モデルに、依存関係バルクデータDB６に格納されている依存性情報を適用することで、支援情報を作成する。また、支援情報作成部３は、情報収集部２によって収集された依存性情報に、上述のラベルが付与された場合は、付与されているラベルと共に依存性情報を予測モデルに適用する。この場合は、ラベルの内容が反映された、より適切な支援情報が作成されることになる。
【００５６】
具体的には、支援情報作成部３は、予測モデルを用いることで、作成された宣言的モデルによってワークフローが動作するかどうかを推測する。また、このときの推測は、予測モデルを用いた仮説推論によって行われていても良い。そして、支援情報作成部３は、支援情報として、宣言的モデルの作成において、構成要素それぞれの間の依存関係の生成、補完、又は補正を支援するための情報を作成する。また、支援情報作成部３は、典型的な実装では、APIを提供する。
【００５７】
ここで、図４を用いて、本実施の形態で用いられる宣言的モデルの定義とシステムの構成要素との関係について説明する。図４は、本実施の形態で用いられる宣言的モデルの定義とシステムの構成要素との関係の一例を示す説明図である。
【００５８】
図４は、構成要素に基づいて宣言的モデルが構築されているとう概念が示されている。また、図４に示すように、構成要素と宣言的モデル内の実体とは、クラス定義とその実体オブジェクトとして比喩される。更に、図４の例では、OASIS TOSCAによって定義される宣言的モデルと構成要素とが示されている。なお、OASIS TOSCAは、クラウド上で稼働する業務システムのシステム構成（トポロジ）を定義するための仕様の一つである。また、図４において、各構成要素の依存関係は、構成要素に付加されている”Requirements” と“Capabilities”とを、”Hosted On”（図３参照）で紐付けることによって表されている。
【００５９】
［装置動作］
次に、本実施の形態におけるシステム構築支援装置１の動作について図５を用いて説明する。図５は、本発明の実施の形態におけるシステム構築支援装置の動作を示すフロー図である。また、本実施の形態では、システム構築支援装置１を動作させることによって、システム構築支援方法が実施される。よって、本実施の形態におけるシステム構築支援方法の説明は、以下のシステム構築支援装置１の動作説明に代える。
【００６０】
図５に示すように、最初に、システム構築支援装置１において、情報収集部２が、宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する（ステップＡ１）。また、情報収集部２は、収集した依存性情報を、依存関係バルクデータDB６に格納する。
【００６１】
具体的には、本実施の形態では、宣言的モデル解析コンポーネント５１０、ワークロー実行状況解析コンポーネント５２０、既存システム解析コンポーネント５３０、ログ解析コンポーネント５４０、及び公開システム構成情報解析コンポーネント５５０それぞれが、定期的に又は特定のイベントを契機に、解析を実行し、それによって得られた解析結果を送信する。情報収集部２は、送信されてきた解析結果を、依存性情報として収集する。
【００６２】
次に、支援情報作成部３は、予測モデル格納部５に格納されている予測モデルに、ステップＡ１で収集された依存性情報を適用することによって、支援情報を作成する（ステップＡ２）。
【００６３】
具体的には、支援情報作成部３は、支援情報として、利用者が宣言的モデルをより正しい方向に導けるようにする情報、更には、使用性に耐えられるシステム構成が構築されるように宣言的モデルを補完する情報を作成する。
【００６４】
その後、支援情報作成部３は、ステップＡ２で作成した支援情報を、利用者に提示する（ステップＡ３）。具体的には、支援情報作成部３は、システム１０００を構成している表示装置の画面上に、又はシステム１０００に接続された端末装置の画面上に、支援情報を表示させる。
【００６５】
ステップＡ３が実行されると、利用者は、宣言的モデル編集コンポーネント１００を介して、表示された支援情報に基づいて、宣言的モデルの作成、補完、又は補正を実行する。その後、宣言的モデルは、一般的には、その構成に従った動作環境を自動構築（プロビジョニング）するために利用される。具体的には、作成、補完又は補正の済んだ宣言的モデルの定義に沿って、プロビジョニング用のワークフローが生成され、実環境上にシステムが構築される。
【００６６】
［実施の形態による効果］
このように、本実施の形態では、宣言的モデルの修正を支援するための支援情報が作成されるので、宣言的モデルの作成において、宣言的モデルを利用者の意図する方向へと導くための情報を提示することできる。
【００６７】
続いて、図６を用いて、本実施の形態における効果について具体的に説明する。図６は、本発明の実施の形態におけるシステム構築支援装置によって得られる効果を示す図である。図６の例では、利用者である宣言的モデル作成者と構成要素設計者とのそれぞれにおける立場での効果が示されている。以下に、利用者毎に効果を説明する。
【００６８】
まず、構成要素作成者は、宣言的モデルで使用する構成要素（部品）を定義する。具体的には、構成要素作成者は、企業の情報処理システム部門において、業務システムが稼働する基盤を提供している。つまり、構成要素作成者は、この基盤として提供可能な構成要素を業務システム設計者へ提供することになる。
【００６９】
そして、構成要素作成者は、構成要素の定義を行う際、その構成要素がどのような要求事項を持ち、更に、提供可能な能力を持つのか、漏れなく定義をしていく必要がある。この場合において、本実施の形態におけるシステム構築支援装置１によれば、構成要素の依存性に関する情報（依存性情報）を返却できるので（提供機能１）、「正しい」、「当該ローカル環境の利用に即した」構成要素を作成することが可能となる。
【００７０】
また、宣言的モデル作成者は、業務システム等のひと塊で意味のあるシステムの構成を宣言的モデルとして設計する。具体的には、宣言的モデル作成者は、業務システムの開発者である。従来であれば、宣言的モデル作成者は、構成要素間の依存定義を経験と勘によって、宣言的モデルを定義する。
【００７１】
これに対して、本実施の形態におけるシステム構築支援装置１によれば、支援情報が提供されるので（提供機能２）、宣言的モデル作成者は、宣言的モデルを作成する際に、構成要素間の依存定義を経験と勘によって定義することなく、宣言的モデルを作成することができる。なお、このとき提供される支援情報には、構成要素間の依存性情報が含まれる。
【００７２】
また、本実施の形態では、予測モデルが利用されるので、作成された宣言的モデルによってワークフローが動作するかどうかを、実際のプロビジョニングを行うことなく、推測することが可能となる（提供機能２）。
【００７３】
以上のように、本実施の形態によれば、宣言的モデル作成からプロビジョニングのライフサイクルにおいて、以下の効果を得ることができる。
宣言的モデルの作成の容易化（効率化）。
エディタ編集中における依存性の補完又は補正の自動化。
宣言的モデルの正確性の向上（定義の品質面）。
【００７４】
また、上述したように、本実施の形態では、宣言的モデルのエディタでの編集中において、パブリックで使われているベストプラクティス、ローカル環境でのエラー情報等から、宣言的モデルの正確さを推測でき、推測結果を利用者に提示できる。更に、本実施の形態では、ローカルから様々な情報を収集してその結果を学習できるため、ローカル環境のノウハウをコード化することもできる。
【００７５】
［プログラム］
本実施の形態におけるプログラムは、コンピュータに、図５に示すステップＡ１〜Ａ３を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態におけるシステム構築支援装置とシステム構築支援方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、情報収集部２、支援情報作成部３、及び予測モデル生成部４として機能し、処理を行なう。
【００７６】
また、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、情報収集部２、支援情報作成部３、及び予測モデル生成部４のいずれかとして機能しても良い。
【００７７】
ここで、本実施の形態におけるプログラムを実行することによって、システム構築支援装置１を実現するコンピュータについて図７を用いて説明する。図７は、本発明の実施の形態におけるシステム構築支援装置を実現するコンピュータの一例を示すブロック図である。
【００７８】
図７に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００７９】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【００８０】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００８１】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００８２】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記録媒体が挙げられる。
【００８３】
なお、本実施の形態におけるシステム構築支援装置１は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、システム構築支援装置１は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【００８４】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１２）によって表現することができるが、以下の記載に限定されるものではない。
【００８５】
（付記１）
宣言的モデルによって定義されるシステムの構築を支援するための装置であって、
前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、情報収集部と、
前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、支援情報作成部と、
を備えている、ことを特徴とするシステム構築支援装置。
【００８６】
（付記２）
学習用の前記依存性情報と学習用の前記宣言的モデルとを教師データとする、機械学習を行って、前記予測モデルを生成する、予測モデル生成部を更に備えている、
付記１に記載のシステム構築支援装置。
【００８７】
（付記３）
前記情報収集部が、前記依存性情報として、
既に生成されている前記宣言的モデルの依存性定義を解析し、それによって得られた情報、
前記システムにおける前記宣言的モデルを用いたワークフローの実行結果からエラーを解析し、それによって得られた情報、
前記システムの定義を解析し、それによって得られた情報、
前記システムに保持されているログを解析し、それによって得られた情報、及び
予め公開されている前記宣言的モデルの作成ツールの利用に関する情報を解析し、それによって得られた情報を、収集する、
付記１又は２に記載のシステム構築支援装置。
【００８８】
（付記４）
前記支援情報作成部が、前記支援情報として、前記宣言的モデルの作成において、前記構成要素それぞれの間の依存関係の生成、補完、又は補正を支援するための情報を作成する、
付記１〜３のいずれかに記載のシステム構築支援装置。
【００８９】
（付記５）
宣言的モデルによって定義されるシステムの構築を支援するための方法であって、
（ａ）前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、ステップと、
（ｂ）前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、ステップと、
を有する、ことを特徴とするシステム構築支援方法。
【００９０】
（付記６）
（ｃ）学習用の前記依存性情報と学習用の前記宣言的モデルとを教師データとする、機械学習を行って、前記予測モデルを生成する、ステップを更に有する、
付記５に記載のシステム構築支援方法。
【００９１】
（付記７）
前記（ａ）のステップにおいて、前記依存性情報として、
既に生成されている前記宣言的モデルの依存性定義を解析し、それによって得られた情報、
前記システムにおける前記宣言的モデルを用いたワークフローの実行結果からエラーを解析し、それによって得られた情報、
前記システムの定義を解析し、それによって得られた情報、
前記システムに保持されているログを解析し、それによって得られた情報、及び
予め公開されている前記宣言的モデルの作成ツールの利用に関する情報を解析し、それによって得られた情報を、収集する、
付記５又は６に記載のシステム構築支援方法。
【００９２】
（付記８）
前記（ｃ）のステップにおいて、前記支援情報として、前記宣言的モデルの作成において、前記構成要素それぞれの間の依存関係の生成、補完、又は補正を支援するための情報を作成する、
付記５〜７のいずれかに記載のシステム構築支援方法。
【００９３】
（付記９）
コンピュータによって、宣言的モデルによって定義されるシステムの構築を支援するためのプログラムであって、
前記コンピュータに、
（ａ）前記宣言的モデルを構成する構成要素の依存性を特定する依存性情報を収集する、ステップと、
（ｂ）前記構成要素の依存性が前記宣言的モデルに与える影響を予測する予測モデルに、前記依存性情報を適用することによって、前記宣言的モデルの修正を支援するための支援情報を作成する、ステップと、
を実行させる、プログラム。
【００９４】
（付記１０）
前記コンピュータに、
（ｃ）学習用の前記依存性情報と学習用の前記宣言的モデルとを教師データとする、機械学習を行って、前記予測モデルを生成する、ステップを更に実行させる、
付記９に記載のプログラム。
【００９５】
（付記１１）
前記（ａ）のステップにおいて、前記依存性情報として、
既に生成されている前記宣言的モデルの依存性定義を解析し、それによって得られた情報、
前記システムにおける前記宣言的モデルを用いたワークフローの実行結果からエラーを解析し、それによって得られた情報、
前記システムの定義を解析し、それによって得られた情報、
前記システムに保持されているログを解析し、それによって得られた情報、及び
予め公開されている前記宣言的モデルの作成ツールの利用に関する情報を解析し、それによって得られた情報を、収集する、
付記９又は１０に記載のプログラム。
【００９６】
（付記１２）
前記（ｃ）のステップにおいて、前記支援情報として、前記宣言的モデルの作成において、前記構成要素それぞれの間の依存関係の生成、補完、又は補正を支援するための情報を作成する、
付記９〜１１のいずれかに記載のプログラム。
【産業上の利用可能性】
【００９７】
以上のように本発明によれば、宣言的モデルの作成において、宣言的モデルを利用者の意図する方向へと導くための情報を提示することができる。本発明は、宣言的モデルが利用される種々のコンピュータシステムに有用である。
【符号の説明】
【００９８】
１  システム構築支援装置
２  情報収集部
３  支援情報作成部
４  予測モデル生成部
５  予測モデル格納部
６  依存関係バルクデータDB
１１、１２、１３  宣言的モデル
２１  ワークフロー
５１〜５５  解析結果
６１  システム定義情報
６２  使用状況情報
１００  宣言的モデル編集コンポーネント
１０１  モデルリポジトリ
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
２００  宣言的モデルオーケストレータ
３００  ワークフロー実行コンポーネント
５１０  宣言的モデル解析コンポーネント
５２０  ワークロー実行状況解析コンポーネント
５３０  既存システム解析コンポーネント
５４０  ログ解析コンポーネント
５５０  公開システム構成情報解析コンポーネント
４００  実行環境
４０１  システム定義情報
４０２  ログ情報
６００  インターネット
６０１  公開リポジトリ群
７００  モデル構成要素リポジトリ
１０００  システム
【図１】
2019053502.tif 000003
【図２】
2019053502.tif 000004
【図３】
2019053502.tif 000005
【図４】
2019053502.tif 000006
【図５】
2019053502.tif 000007
【図６】
2019053502.tif 000008
【図７】
2019053502.tif 000009