(57)【要約】【課題】ロール定義書をオントロジーを用いて記載し、オントロジーで記載されたロール定義書からロールに対応するソフトウェアコンポーネントを生成する。【解決手段】オントロジーを用いて記載されたロール定義書からソフトウェアコンポーネントを生成するソフトウェアコンポーネント生成装置において、ロール間の関係を示すプロパティのコードであるプロパティ部品を格納したプロパティ部品記憶手段と、前記ソフトウェアコンポーネントにより生成されるオブジェクトのインタフェース定義のコードと、前記ロール定義書に記載されているプロパティのプロパティ部品を利用するためのコードを生成するコード生成手段と、前記プロパティ部品記憶手段から、前記ロール定義書に記載されているプロパティのプロパティ部品を取得し、当該プロパティ部品と、前記コード生成手段により生成されたコードとを含むソフトウェアコンポーネントを生成し、出力するソフトウェアコンポーネント生成・出力手段とを備える。【選択図】図３
2015052875.tif 000002
【特許請求の範囲】
【請求項１】
オントロジーを用いて記載されたロール定義書からソフトウェアコンポーネントを生成するソフトウェアコンポーネント生成装置であって、
ロール間の関係を示すプロパティのコードであるプロパティ部品を格納したプロパティ部品記憶手段と、
前記ソフトウェアコンポーネントにより生成されるオブジェクトのインタフェース定義のコードと、前記ロール定義書に記載されているプロパティのプロパティ部品を利用するためのコードを生成するコード生成手段と、
前記プロパティ部品記憶手段から、前記ロール定義書に記載されているプロパティのプロパティ部品を取得し、当該プロパティ部品と、前記コード生成手段により生成されたコードとを含むソフトウェアコンポーネントを生成し、出力するソフトウェアコンポーネント生成・出力手段と
を備えたことを特徴とするソフトウェアコンポーネント生成装置。
【請求項２】
前記ロール定義書に記載されているプロパティは、対象のロールが持つ属性情報を表すプロパティ、当該ロールが外部に提供する操作を表すプロパティ、又は、当該ロールが存在するための制約条件を表すプロパティである
ことを特徴とする請求項１に記載のソフトウェアコンポーネント生成装置。
【請求項３】
前記オントロジーの言語として、ウェブオントロジー言語（OWL)を用いて前記ロール定義書が記載されている
ことを特徴とする請求項１又は２に記載のソフトウェアコンポーネント生成装置。
【請求項４】
請求項１ないし３のうちいずれか１項に記載のソフトウェアコンポーネント生成装置を備え、当該ソフトウェアコンポーネント生成装置により生成されたソフトウェアコンポーネントであるロールコンポーネントを用いてネットワークマネジメントシステムを構築するマネジメントエンジンシステムであって、
前記ロール定義書で定義されるロールは、ネットワークの管理オブジェクトを表現したロールであり、
前記ロール定義書から生成された前記ロールコンポーネントを格納する格納手段と、
前記格納手段から読み出されたロールコンポーネントを動作させ、ロールコンポーネントに、管理オブジェクトに対応するロールオブジェクトを生成させる手段と
を有することを特徴とするマネジメントエンジンシステム。
【請求項５】
前記物理実体と接続するとともに、物理実体に対応するプリミティブロールを有し、当該プリミティブロールのインタフェースを提供する資源管理手段と、
前記ロールオブジェクトのインタフェースを利用して、外部にロールの情報を提供する外部中継手段と
を更に備えることを特徴とする請求項４に記載のマネジメントエンジンシステム。
【請求項６】
オントロジーを用いて記載されたロール定義書からソフトウェアコンポーネントを生成するソフトウェアコンポーネント生成装置が実行するソフトウェアコンポーネント生成方法であって、
前記ソフトウェアコンポーネントにより生成されるオブジェクトのインタフェース定義のコードと、前記ロール定義書に記載されているプロパティのプロパティ部品を利用するためのコードを生成するコード生成ステップと、
ロール間の関係を示すプロパティのコードであるプロパティ部品を格納したプロパティ部品記憶手段から、前記ロール定義書に記載されているプロパティのプロパティ部品を取得し、当該プロパティ部品と、前記コード生成ステップにより生成されたコードとを含むソフトウェアコンポーネントを生成し、出力するソフトウェアコンポーネント生成・出力ステップと
を備えたことを特徴とするソフトウェアコンポーネント生成方法。
【請求項７】
前記ロール定義書に記載されているプロパティは、対象のロールが持つ属性情報を表すプロパティ、当該ロールが外部に提供する操作を表すプロパティ、又は、当該ロールが存在するための制約条件を表すプロパティである
ことを特徴とする請求項６に記載のソフトウェアコンポーネント生成方法。
【請求項８】
前記オントロジーの言語として、ウェブオントロジー言語（OWL)を用いて前記ロール定義書が記載されている
ことを特徴とする請求項６又は７に記載のソフトウェアコンポーネント生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オントロジーを用いてソフトウェアコンポーネントを構築する技術に関連するものである。本発明の適用先の一つとしてネットワークマネジメントシステムの自動構築技術がある。
【背景技術】
【０００２】
オントロジーは、語彙（概念）を体系化して表現するために標準化されたコンセプトと表記方法である。オントロジーでは語彙をクラスとして定義する。クラスは複数のプロパティで構成される。各プロパティはそのクラスと他のクラスの関係を表す。オントロジーは、例えばXMLを使ったOWL(Web Ontology Language)で表記される（例えば非特許文献１参照）。
【０００３】
一方、ネットワークマネジメントシステムは、ネットワーク設備の物理実体を直接管理するのに加えて、ネットワーク中にパスやチャネル等の管理オブジェクトを適用して、パスやチャネル単位の管理を実施している。更に、ネットワーク設備を提供サービス毎や利用ユーザ毎等に仮想表現する仮想化ネットワークも、ネットワークに対してそれぞれの仮想表現に応じた管理オブジェクトを適用する必要がある。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】W3C Recommendation,"OWL Web Ontology Language Overview,"10 February 2004, http://www.w3.org/TR/owl-features/
【非特許文献２】湊 賢治，築島 幸男，沈 文裕，"ロール階層モデルを適用したマネジメントエンジンの検討，"信学技報，ICM2012-38，pp.7-12，January 2013．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
提供サービス毎や利用ユーザ毎に仮想化ネットワークを提供するためには、それぞれの仮想表現に応じた管理オブジェクトを動的に構築して適用する必要がある。その解決方法として、非特許文献２に記載されているロール階層モデルを適用したマネジメントエンジンがある。
【０００６】
非特許文献２に記載されているとおり、ロール階層モデルは、各管理対象を表すロールが積み重なってネットワークを表現するモデルである。そこで重要なのはロールとロールの間の関係を表現することであるが、非特許文献２に記載された技術ではロール間の関係を表現する具体的な方法は未定であった。
【０００７】
本発明は上記の点に鑑みてなされたものであり、ロール定義書をオントロジーを用いて記載し、オントロジーで記載されたロール定義書からロールに対応するソフトウェアコンポーネントを生成する技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一実施形態によれば、オントロジーを用いて記載されたロール定義書からソフトウェアコンポーネントを生成するソフトウェアコンポーネント生成装置であって、
ロール間の関係を示すプロパティのコードであるプロパティ部品を格納したプロパティ部品記憶手段と、
前記ソフトウェアコンポーネントにより生成されるオブジェクトのインタフェース定義のコードと、前記ロール定義書に記載されているプロパティのプロパティ部品を利用するためのコードを生成するコード生成手段と、
前記プロパティ部品記憶手段から、前記ロール定義書に記載されているプロパティのプロパティ部品を取得し、当該プロパティ部品と、前記コード生成手段により生成されたコードとを含むソフトウェアコンポーネントを生成し、出力するソフトウェアコンポーネント生成・出力手段とを備えたことを特徴とするソフトウェアコンポーネント生成装置が提供される。
【０００９】
前記ロール定義書に記載されているプロパティは、例えば、対象のロールが持つ属性情報を表すプロパティ、当該ロールが外部に提供する操作を表すプロパティ、又は、当該ロールが存在するための制約条件を表すプロパティである。また、前記オントロジーの言語として、例えばウェブオントロジー言語（OWL)を用いて前記ロール定義書が記載されている。
【００１０】
また、本発明の一実施形態によれば、上記ソフトウェアコンポーネント生成装置を備え、当該ソフトウェアコンポーネント生成装置により生成されたソフトウェアコンポーネントであるロールコンポーネントを用いてネットワークマネジメントシステムを構築するマネジメントエンジンシステムであって、
前記ロール定義書で定義されるロールは、ネットワークの管理オブジェクトを表現したロールであり、
前記ロール定義書から生成された前記ロールコンポーネントを格納する格納手段と、
前記格納手段から読み出されたロールコンポーネントを動作させ、ロールコンポーネントに、管理オブジェクトに対応するロールオブジェクトを生成させる手段とを有することを特徴とするマネジメントエンジンシステムが提供される。
【発明の効果】
【００１１】
本発明の一実施形態によれば、ロール定義書をオントロジーを用いて記載し、オントロジーで記載されたロール定義書からロールに対応するソフトウェアコンポーネントを生成する技術が提供される。
【図面の簡単な説明】
【００１２】
【図１】ロール定義書をオントロジーで表記する例を示す図である。
【図２】ロール定義書からロールコンポーネントを生成する際の全体イメージを示す図である。
【図３】ロール定義書３０からロールコンポーネント１０を生成する手順等を示す図である。
【図４】ロール生成装置１００の機能構成図である。
【図５】ロールのインタフェースのイメージを示す図である。
【図６】実施例におけるネットワークの管理モデルの例を示す図である。
【図７】実施例で扱うクラスの継承関係を示す図である。
【図８】実施例で定義したプロパティとその継承関係を示す図である。
【図９】Attributeプロパティの実装例を示す図である。
【図１０】Actionプロパティの実装例を示す図である。
【図１１】Constraintプロパティの実装例を示す図である。
【図１２】ロール階層モデルの例を示す図である。
【図１３】ロール階層に繰り返しを示す図である。
【図１４】マネジメントエンジンシステム２１０の構成図である。
【図１５】ロール整合部２１２の構成例である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、オントロジーで記載されたロール定義書からロールコンポーネントを生成する技術について説明する。ここで、ロールコンポーネントとはロール定義書から作るJava（登録商標）言語を用いたソフトウェアコンポーネントを指す。ただし、ソフトウェアコンポーネントの言語はJava（登録商標）に限定されるわけではなく、他の言語でもよい。
【００１４】
また、本実施の形態における「ロール」は、例えば非特許文献２に記載されているネットワーク設備を仮想的に表現するロール階層モデルにおける管理対象（通信装置、パス、回線等）を想定しているが、本発明における技術は、このようなネットワークに関するロール以外の対象にも適用可能である。当該対象を示すロールのソフトウェアコンポーネントは、コンピュータ等の装置（例：マネジメントエンジンシステム）において動作し、オブジェクトを生成し、当該オブジェクトがロール利用者（外部システム、他のロール等）と情報をやりとりすることで、所望の動作が実現される。
【００１５】
（オントロジーによるロール定義書）
ロール定義書をオントロジーで表記する例を図１に示す。オントロジーのクラス名の個所にロール名を記載し、ロールとロールの関係をオントロジーのpropertyで定義して記載する。実際の表記はOWLを使用し、XMLで記載する。
【００１６】
（ロールコンポーネントの生成イメージ）
ロール定義書からロールコンポーネントを生成する際の全体イメージを図２に示す。
【００１７】
ロール定義書はOWLで記載するが、ここでは説明の便宜のため、図 1の表現を採用する。図１の表現でも、OWLで記載した場合と実質的な相違はない。図２に示すロール定義書にはproperty A、property C、property Dの３個のプロパティが記載されている。このロール定義書から生成したロールコンポーネント１０のソフトウェア（プログラム、又はコードと呼んでもよい）構成をその下に示している。
【００１８】
図２に示すとおり、ロールコンポーネント１０は、ロール定義書に記載された各propertyに対応したプロパティ部品１１と、それらプロパティ部品１１を操作する振舞コード部１２で構成される。プロパティ部品１１は予め用意されたプロパティ部品棚１５（例：コンピュータにおけるメモリ）から取得される。つまり、各プロパティ部品１１は予めコーディングし、プロパティ部品棚１５に格納しておく。振舞コード部１２は、ロール毎に内容が異なるので、ロール毎にコーディングする。
【００１９】
本構成によりロール定義書に対応して振舞コード部１２をコーディングすればロールコンポーネントを生成することができる。プロパティ部品１１は他のロールにも再利用される。
【００２０】
（処理手順、装置構成例）
図３に、オントロジーを用いたロール定義書３０からロールコンポーネント１０を生成する手順、及び、生成されるロールコンポーネント１０の詳細構成例を示す。図３に示すロールコンポーネント１０における各部は、当該部位の機能を実現するプログラムに対応する。
【００２１】
また、図中のcall、import等は、ロールコンポーネント１０が、対象装置において実行された場合における呼び出し等の動作を示している。対象装置とは、コンピュータや、後述するマネジメントエンジンシステム等である。
【００２２】
また、図３には、ロール生成装置１００（ソフトウェアコンポーネント生成装置の例）が示されている。後述するように、当該ロール生成装置１００が、オントロジーで記載されたロール定義書からインタフェース定義のコード、プロパティ部品を利用するためのコード等を生成する。
【００２３】
図３に示すように、最初にプロパティを定義して（ステップ１０）、そのプロパティ定義に応じたプログラム（コード）を作成し、それをプロパティ部品１１としてプロパティ部品棚１５に置く（ステップ１１）。つまり、コンピュータにおいてプロパティ部品棚１５として使用される記憶部に、プロパティ部品１１を格納する。例えば、プロパティ部品棚１５がロール生成装置１００に備えられることとしてもよい。
【００２４】
次に、作成したプロパティ定義を使ってロール定義書３０を作成する。そして、ロール定義書３０はロール生成装置１００によって２種類のコードに変換される（ステップ１３）。一つは、ロールオブジェクトとファクトリのインタフェース定義１８であり、もう一つは自動生成コード部１６である。
【００２５】
インタフェース定義１８はロール定義書に記載されたロールコンポーネント名から生成される。
【００２６】
自動生成コード部１６は、ロール定義書内のプロパティの利用定義とプロパティ部品の仲介を行う。プロパティの利用定義とはロール定義書毎に異なるプロパティの制約やプロパティで使っている引数情報である。ロール生成装置１００は、ロール定義書に記載されたこれらの内容を基にコード（プログラム）を自動生成して自動生成コード部１６を作る。
【００２７】
ここで、図３に示すファクトリ部品１７はロールコンポーネントが生成するロールオブジェクトの検索機能を持ち、予め作成しておくプログラムである。ファクトリ部品１７をロールコンポーネント１０の外部におき、各種のロールコンポーネントに対してファクトリ部品１７を汎用的に使用することとしてもよい。なお、本例のように検索機能を持つファクトリを備えることは本発明において必須ではない。
【００２８】
振舞コード部１２は、自動生成できない部分を最終的に利用者が記載するコード部（プログラム）であり、ロール毎に異なる内容を記載する。振舞コード部１２は自動生成コード部１６・ファクトリ部品１７・プロパティ部品１１のそれぞれから呼び出される。例えば、自動生成コード部１６から振舞コード部１２への呼び出しは、複数のプロパティ部品にまたがる処理が必要な場合に行われ、プロパティ部品１１から振舞コード部１２への呼び出しは、プロパティ部品１１を汎用化した時に各ロール定義の差分を振舞コード部１２に記載する場合に行われるものである。
【００２９】
図４に、ロール定義書３０からロールコンポーネント１０を生成するロール生成装置１００の機能構成例を示す。
【００３０】
図４に示すように、ロール生成装置１００は、ロール定義書入力部１１０、ロール定義書格納部１２０、インタフェース定義生成部１３０、プロパティ利用コード生成部１４０、作成済プログラム格納部１５０、ロールコンポーネント生成・出力部１６０を備える。
【００３１】
ロール定義書入力部１１０から、オントロジー言語で記載されたロール定義書が入力され、ロール定義書格納部１２０に格納される。インタフェース定義生成部１３０は、ロール定義書格納部１２０からロール定義書を読み出し、前述したようにインタフェース定義のコードを生成し、プロパティ利用コード生成部１４０は、ロール定義書格納部１２０からロール定義書を読み出し、前記ロール定義書に記載されているプロパティのプロパティ部品を利用するためのコード、例えば、ロール定義書内のプロパティの利用定義とプロパティ部品の仲介を行うコードを生成する。なお、インタフェース定義生成部１３０とプロパティ利用コード生成部１４０を１つの機能部とし、当該機能部がロール定義書を読み出し、インタフェース定義のコードと、プロパティ部品を利用するためのコードを生成してもよい。
【００３２】
作成済プログラム格納部１５０には、複数のプログラム部品を含むプログラム部品棚、振舞コード部１２等の作成済みのプログラムが格納されており、ロールコンポーネント生成・出力部１６０は、生成目的のロールコンポーネントで用いるプログラム部品１１と振舞コード部１１を作成済プログラム格納部１５０から読み出し、これらと、インタフェース定義生成部１３０及びプロパティ利用コード生成部１４０により生成されたプログラムとを合わせることでロールコンポーネント１０を生成し、出力する。出力されたロールコンポーネント１０は、所定の記憶装置に格納しておき、必要なときに使用することとしてもよいし、出力されたロールコンポーネントを対象装置（マネジメントエンジンシステム等）に入力し、目的の動作（例：ネットワークマネジメント）を行わせることとしてもよい。
【００３３】
ロール生成装置１００は、ロール生成装置１００として使用するコンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、ロール生成装置１００の各機能部は、コンピュータに内蔵されるＣＰＵやメモリ、ハードディスクなどのハードウェア資源を用いて、各部で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【００３４】
なお、ロール生成装置１００を対象装置（例：マネジメントエンジンシステム）の内部に備えることとしてもよい。
【００３５】
図５に、ロール定義書から生成されたロールコンポーネントが対象装置で実行される場合において、外部に提供するインタフェースのイメージを示す。
【００３６】
ロール定義書から自動生成されたロールコンポーネント１０が存在し、ロールコンポーネント１０の動作に応じて生成・削除されるロールのインスタンスがロールオブジェクトである。
外部システムや他のロールコンポーネント等のロール利用者はロールオブジェクトに対してアクセスする。ただし、検索等で必要な場合はロールコンポーネント１０が提供するファクトリを利用することができる。
【００３７】
ロールオブジェクトは、後述するAttributeプロパティで定義された属性情報のgetter/setterインタフェースと、Actionプロパティで定義された各Actionのインタフェースを持つ。ロール利用者は、これらのインタフェースを使ってロールオブジェクトを利用する。
【００３８】
（オントロジーによるロール定義、及びロールコンポーネント生成の実施例）
以下、オントロジーによるロール定義、及びロールコンポーネント生成についての、ネットワークの管理モデルを対象とした実施例について説明する。
【００３９】
［１．対象とする管理モデル］
図６に、本実施例において対象とするネットワークの管理モデルを示す。図６に示すモデルは、ITU-T M.3100を参考にして、そこから抜粋した管理モデルである。なお、当該管理モデルは、本発明の適用先の一例に過ぎない。
【００４０】
図６におけるFabricは装置を表す。Fabric間はPhysicalLink（物理リンク）で接続されており、その接続点がPhysicalPort（物理ポート）である。PhysicalLinkの中にはConnection（コネクション）があり、Connectionの端点がConnectionTerminationPoint（コネクション終端点）である。一つのPhysicalLinkの中には複数本のConnectionが存在するが本図では一つのみを記載している。図６の３つのFabricのうちの中央のFabricにはConnectionTerminationPoint間を接続するCrossConnection（クロスコネクション）がある。このCrossConnectionにより、ConnectionTerminationPoint間の接続関係をスイッチする。
【００４１】
複数個のConnectionとCrossConnectionをつなげてTrail（トレイル）が作成される。図６の例では、Trailの端点は両端のFabricにあるTrailTerminationPoint（トレイル終端点）である。このTrailが二地点間を接続するネットワークになる。
【００４２】
［２．クラス継承関係］
本実施例で扱うクラスの継承関係を図７に示す。
【００４３】
ロール定義書にはロールコンポーネントの定義に加えて、ロールコンポーネント間で受け渡すデータの構造体も定義する必要がある。オントロジーではどちらもクラス定義になるので、コード生成にあたって両者を明確に区別するために、クラス継承を使ってComponentクラスとDataクラスに分類する。
【００４４】
すなわち、図７に示すように、親クラスにComponentとDataを置く。Componentの下位クラスはロールコンポーネントとしてコード生成し、Dataの下位クラスはデータ定義であるとしてPOJO(Plain Old Java Object)を生成する。
【００４５】
本実施例では、Fabric、CrossConnection、PipeはそれぞれロールコンポーネントにするのでComponentの子クラスとして定義する。Pipeは接続を表すTrail、Connection、PhysicalLinkの親クラスである。
【００４６】
また、TerminationPoint、ObjectId、Capacityはそれぞれデータ構造にするのでDataの子クラスとして定義する。TerminationPointは端点を表すTrailTerminationPoint、ConnectionTerminationPoint、PhysicalPortの親クラスである。
【００４７】
また、ObjectIdは各データを識別するための各クラスの親クラスである。CapacityはTrail、Connection、PhysicalLinkの各インスタンスが使用している容量を表すTrailCapacity、ConnectionCapacity、PhysicalCapacityの親クラスである。
【００４８】
［３．プロパティ］
本実施例では、ロール定義書のプロパティも継承を使って分類する。本実施例で定義したプロパティとその継承関係を図８に示す。本実施例では、プロパティは以下の３種類に分類しており、各プロパティはこれらAttribute、Action、Constraintの親プロパティから継承する。
【００４９】
（３．１）Attribute
ロールが持つ属性情報を表す各プロパティの親プロパティである。本プロパティの子プロパティに記載された属性情報に応じてロールオブジェクトのgetter/setterを作り、その属性情報を永続化するためのコードを生成する。
【００５０】
（３．２） Action
ロールが外部に提供する操作を表す各プロパティの親プロパティである。本プロパティの子プロパティに記載された内容に応じてロールの外部向けインタフェースを生成する。
【００５１】
（３．３）Constraint
ロールが存在するための制約条件を表す各プロパティの親プロパティである。本プロパティの子プロパティに記載された内容に応じてロールオブジェクトの生成や削除が制限される。
【００５２】
図８に示す各プロパティのOWL定義について以下に説明する。なお、説明ではOWLの用語を使用している。
【００５３】
（３．４）hasObjectId
管理対象を表すクラスとその識別子の関係を表したプロパティである。主語（Domain）に管理対象のクラス名を置き、目的語（Range）に識別子の親クラスであるObjectIdを置く。
【００５４】
プロパティの性質は、管理対象のインスタンスとその識別子は互いに一意に決まるのでFuntionalかつInverse Functionalを設定している。主語と目的語を入れ替えたらObjectIdの関係は持てないのでAsymmetricとし、ObjectIdは自分自身には関係を持てないのでIrreflexiveとする。
【００５５】
以下にhasObjectIdのOWL定義を示す。
<owl:ObjectProperty rdf:about="hasObjectId">
<rdfs:domain>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<rdf:Description rdf:about="CrossConnection"/>
<rdf:Description rdf:about="Fabric"/>
<rdf:Description rdf:about="Pipe"/>
<rdf:Description rdf:about="TerminationPoint"/>
</owl:unionOf>
</owl:Class>
</rdfs:domain>
<rdfs:range rdf:resource="ObjectId"/>
<rdf:type rdf:resource="&owl;FunctionalProperty"/>
<rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
<rdf:type rdf:resource="&owl;AsymmetricProperty"/>
<rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
</owl:ObjectProperty>
（３．５）hasTerminationPoint
接続を表すPipeクラスと、その端点を表すTerminationPointクラスの関係を表したプロパティである。主語(Domain)にPipeクラスを置き、目的語(Range)にTerminationPointクラスを置いている。
【００５６】
プロパティの性質は、Pipeの両端点にTerminationPointがあるので、主語から目的語が一つに決まらないためFunctionalは設定していない。逆にTerminationPointが関係するPipeは一つに決まるのでInverse Functionalを設定している。主語と目的語を入れ替えたらhasTerminationPointの関係は持てないのでAsymmetricとし、Pipeは自分自身には関係を持てないのでIrreflexiveにしている。
【００５７】
以下にhasTerminationPointの定義を示す。
【００５８】
<owl:ObjectProperty rdf:about="hasTerminationPoint">
<rdfs:domain rdf:resource="Pipe"/>
<rdfs:range rdf:resource="TerminationPoint"/>
<rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
<rdf:type rdf:resource="&owl;AsymmetricProperty"/>
<rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
</owl:ObjectProperty>
（３．６）hasPart
主語が目的語を含んでいる関係を表したプロパティである。包含関係は一般的な関係で主語と目的語のクラスを固定できないので、DomainとRangeは設定していない。
【００５９】
プロパティの性質は、主語は一つ以上の目的語を含んでいる可能性があり、主語に対して目的語が一つに決まらないのでFunctionalではない。目的語は複数種類の主語に含まれている可能性があるのでInverse Functionalでもない。含む関係は再帰的なのでTransitiveを設定した。包含関係の入替はできないのでAsymmetricとし、自分自身を含む関係は不自然なのでIrreflexiveとしている。
【００６０】
hasPartは次に説明するisPartOfと逆関係になる。以下にhasPartの定義を示す。
【００６１】
<owl:ObjectProperty rdf:about="hasPart">
<rdf:type rdf:resource="&owl;TransitiveProperty"/>
<rdf:type rdf:resource="&owl;AsymmetricProperty"/>
<rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
<owl:inverseOf rdf:resource="isPartOf"/>
</owl:ObjectProperty>
（３．７）isPartOf
主語が目的語に含まれている関係を表したプロパティであり、hasPartと逆関係になる。hasPartと同様にDomainとRangeは設定していない。
【００６２】
プロパティの性質はhasPartと同様にしている。以下にisPartOfの定義を示す。
【００６３】
<owl:ObjectProperty rdf:about="isPartOf">
<rdf:type rdf:resource="&owl;TransitiveProperty"/>
<rdf:type rdf:resource="&owl;AsymmetricProperty"/>
<rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
<owl:inverseOf rdf:resource="hasPart"/>
</owl:ObjectProperty>
（３．８） hasCapacity
接続を表すPipeクラスと、そのPipeが持つ容量を表すCapacityクラスの関係を表したプロパティである。主語(Domain)にPipeを置き、目的語(Range)にCapacityを置く。
【００６４】
プロパティの性質は、Pipeの1インスタンスとCapacityの１インスタンスを1対1で対応させる想定なので、FunctionalかつInverse Functionalを設定している。主語と目的語の入替えはできないのでAsymmetricとし、自分自身に関係は持てないのでIrreflexiveにしている。
【００６５】
以下にhasCapactiyの定義を示す。
【００６６】
<owl:ObjectProperty rdf:about="hasCapacity">
<rdfs:domain rdf:resource="Pipe"/>
<rdfs:range rdf:resource="Capacity"/>
<rdf:type rdf:resource="&owl;FunctionalProperty"/>
<rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
<rdf:type rdf:resource="&owl;AsymmetricProperty"/>
<rdf:type rdf:resource="&owl;IrreflexiveProperty"/>
</owl:ObjectProperty>
（３．９）makeXC
TerminationPointの接続関係を作るプロパティである。主語(Domain)にCrossConnectionを置き、目的語(Range)にTerminationPointを置いている。
【００６７】
本プロパティは、ここまで説明した各プロパティのように包含関係を表すのではなく、CrossConnectionに関係するアクションを表している。本プロパティの実行により、同一Fabric内のTerminationPoint間の接続を作る想定である。
【００６８】
プロパティの性質は、本プロパティはアクションに関するものなので省略している。以下に定義を示す。
【００６９】
<owl:ObjectProperty rdf:about="makeXC">
<rdfs:domain rdf:resource="CrossConnection"/>
<rdfs:range rdf:resource="TerminationPoint"/>
</owl:ObjectProperty>
［４．クラス］
次に、本実施例における各クラス定義（ロール定義書に相当する）を説明する。便宜上、各定義内容は図１に示したような表記で説明する。
【００７０】
（４．１）Fabric
Fabricは識別子としてFabricIdを持つ。以下に定義を示す。
【００７１】
クラス名：Fabric
hasObjectId exactly 1 FabricId
（４．２）PhysicalLink
PhysicalLinkは識別子としてPhysicalLinkIdを持ち、両端点として２つのPhysicalPortを持ち、そして、容量としてPhysicalCapacityを持たせる。以下に定義を示す。
【００７２】
クラス名：PhysicalLink
hasObjectId exactly 1 PhysicalLinkId
hasTerminationPoint exactly 2 PhysicalPort
hasCapacity exactly 1 PhysicalCapacity
（４．３）Connection
Connectionは識別子としてConnectionIdを持ち、両端点として２つのConnectionTerminationPointを持ち、そして、容量としてConnectionCapacityを持たせる。
【００７３】
ConnectionはPhysicalLinkの中に含まれるのでisPartOfの関係も持たせている。PhysicalLink内の定義でConnectionを記載していない理由は、ロール階層モデルにおいてConnectionはPhysicalLinkの上位に存在するためである。ロール階層モデルでは自分の上位ロールには何が来ても良いようにするため、下位ロールには上位ロールの定義を記載しない。
【００７４】
以下に定義を示す。
【００７５】
クラス名：Connection
hasObjectId exactly 1 ConnectionId
hasTerminationPoint exactly 2 ConnectionTerminationPoint
hasCapacity exactly 1 ConnectionCapacity
isPartOf exactly 1 PhysicalLink
（４．４）Trail
Trailは識別子としてTrailIdを持ち、両端点として２つのTrailTerminationPointを持ち、そして、容量としてTrailCapacityを持たせた。
【００７６】
TrailはConnectionをつなげた物なのでhasPartでConnectionを置いている。Connectionに関するConnectionTerminationPointやCrossConnectionはConnectionが特定できれば引き出せるので本定義には含めていない。
【００７７】
以下に定義を示す。
【００７８】
クラス名：Trail
hasObjectId exactly 1 TrailId
hasTerminationPoint exactly 2 TrailTerminationPoint
hasCapacity exactly 1 TrailCapacity
hasPart some Connection
（４．５）CrossConnection
CrossConnectionはCrossConnectionIdを識別子として、構成要素として二つのConnectionTerminationPointを持たせている。
【００７９】
CrossConnectionを作るためのアクションとして、二つのConnectionTerminationPointを目的語にしたmakeXCを置いている。
【００８０】
以下に定義を示す。
【００８１】
クラス名：CrossConnection
hasObjectId exactly 1 CrossConnectionId
hasPart exactly 2 ConnectionTerminationPoint
makeXC exactly 2 ConnectionTerminationPoint
（４．６）PhysicalPort
PhysicalPortはPhysicalPortIdを識別子として持たせている。以下に定義を示す。
【００８２】
クラス名：PhysicalPort
hasObjectId exactly 1 PhysicalPortId
（４．７）ConnectionTerminationPoint
ConnectionTerminationPointはConnectionTerminationPointIdを識別子として持たせている。ConnectionTerminationPointは、一つのPhysicalPortに包含されるのでisPartOfの関係を持たせている。以下に定義を示す。
【００８３】
クラス名：ConnectionTerminationPoint
hasObjectId exactly 1 ConnectionTerminationPointId
isPartOf exactly 1 PhysicalPort
（４．８）TrailTerminationPoint
TrailTerminationPointはTrailTerminationPointIdを識別子として、一つのConnectionTerminationPointにhasPartの関係を持たせている。以下に定義を示す。
【００８４】
クラス名：TrailTerminationPoint
hasObjectId exactly 1 TrailTerminationPointId
hasPart exactly 1 ConnectionTerminationPoint
（４．９）PhysicalCapacity
PhysicalCapacityはPhysicalLinkの容量として整数値を持つ。以下に定義を示す。
【００８５】
クラス名：PhysicalCapacity
hasIntegerValue some integer
（４．１０）ConnectionCapacity
ConnectionCapacityはConnection容量を表し、一つのPhysicalCapacityに包含される。これで、ConnectionとPhysical間の容量の関係を表現している。
【００８６】
以下に定義を示す。
【００８７】
クラス名：ConnectionCapacity
isPartOf exactly 1 PhysicalCapacity
（４．１１）TrailCapacity
TrailCapacityはTrail容量を表し、いくつかのConnectionCapacityとhasPartの関係を持つ。Trailが関係するConnectionは複数個あるのでsomeの関係にしている。
【００８８】
以下に定義を示す。
【００８９】
クラス名：TrailCapacity
hasPart some ConnectionCapacity
［５．実装内容例］
以下、本実施例における各プロパティの実装内容の例を説明する。以下では、上述した  CrossConnectionのロール定義書を例にとって説明する。
【００９０】
（５．１）Attributeプロパティの実装例
Attributeプロパティの実装例を図９に示す。図９では、例としてCrossConnectionのhasObjectIdプロパティを使用している。
【００９１】
ロール定義書からCrossConnectionIdのgetterとsetterのインタフェースを生成する。自動生成コード部１６にはgetterとsetterの実装部分があり、これはhasObjectId部品を呼び出してCrossConnectionIdの永続化を行う。hasObjectId部品を呼び出す時は対応するロールオブジェクトの情報を持ったcontext情報も併せて渡す。context情報のイメージはOSGiにおけるBundleContextである。
【００９２】
hasObjectIdプロパティ部品では、渡された情報からCrossConnectionIdをプライマリキーとしたロールオブジェクトの属性情報の永続化を行う。
【００９３】
（５．２）Actionプロパティの実装例
Actionプロパティの実装例を図１０に示す。図１０では、例としてCrossConnectionのmakeXCプロパティを使用している。
【００９４】
ロール定義書からmakeXCのインタフェースを生成する。自動生成コード部１６にはmakeXCの実装部分がある。自動生成コード部１６はmakeXCの引数であるConnectinTerminationPointとロールオブジェクトのcontext情報を引数にしてmakeXCプロパティ部品を呼び出す。
【００９５】
makeXCプロパティ部品では、引数のConnectionTerminationPointが同じFabricに存在するか等の条件をチェックして、クロスコネクションを実施する。
【００９６】
（５．３）Constraintプロパティの実装例
Constraintプロパティの実装例を図１１に示す。図１１では、例としてCrossConnectionのhasPartプロパティを使用している。
【００９７】
ロール利用者からConstraintプロパティの個別の操作は想定していないので、ロールオブジェクトの外部インタフェースとしてのConstraintインタフェースは生成しない。生成する自動生成コード部１６は、該当ロールの生成・削除時に該当ロールオブジェクトのcontext情報を引数にしてhasPartプロパティ部品１１を呼び出す。hasPart部品１１は引数の関係を見て包含関係を満たしているか返答する。
【００９８】
（マネジメントエンジンシステムの実施例）
以下、オントロジーを用いたロール定義書からロールコンポーネントを自動生成し、そのロールコンポーネントを自律的に動作させることで、ネットワークマネジメントシステムを自動構築するマネジメントエンジンシステムの実施例について説明する。
【００９９】
本実施例に係る管理オブジェクトとなるロールは、管理対象であるネットワーク設備を仮想的に表現する。マネジメントエンジンシステムは複数のロールコンポーネントを互いに一貫性を持たせながら同時に動作させることで、同じネットワーク設備を複数のユーザに対して異なった仮想表現で提供する。これより、ネットワーク設備を様々なネットワークサービスで共有可能となり、投資コストの低減になる。さらに、各ロールはマネジメントエンジンシステム上で一貫して動作するため運用コストの低減にもなる。
【０１００】
［ロール階層モデルについて］
次に、本実施例におけるマネジメントエンジンシステムで用いるロール階層モデルの例について説明する。
【０１０１】
本実施例のロール階層モデルは、ネットワークに適用する管理オブジェクトを、ロールという概念で表現する。ロールは下位層から積み上げて表現する。図１２に、本実施例に係るロール階層モデルの例を示す。なお、図１２に示す例は一例に過ぎず、ロールは図１２に示すもの以外にも様々に定義可能である。
【０１０２】
図１２に示すように、一番下位層にはネットワーク設備の物理実体の機能を表すロールを置く。これをプリミティブロールと呼ぶ。図１２ではスイッチを表すスイッチロール、スイッチ間のデータ線路を表すデータ線ロール、そして、スイッチとユーザ間の線路を表すアクセス線ロールをそれぞれ配置している。
【０１０３】
このプリミティブロールの機能を利用する事で物理実体より上位階層のネットワーク要素であるパスを表現する。これをパスロールと呼ぶ。パスロールは、各スイッチロール内のフォワーディング設定の一部とデータ線ロールが提供する帯域の一部で構成する。さらにパスロールの上位として、パスロールの一部の帯域とアクセス線ロールの帯域の一部を組み合わせてチャネルロールを構築できる。すなわち、物理実体よりも上位階層のネットワーク要素を、プリミティブロールの一部又は全部から構成されるロールの一部又は全部を階層的に組み合わせたロールで表現する。このことは、プリミティブロールの一部又は全部を直接又は間接的に複数個組み合わせたロールで表現すると言うこともできる。ここで、プリミティブロールの一部又は全部を他のロールに間接的に組み合わせるとは、例えば、プリミティブロールであるデータ線ロールの一部の帯域を利用したパスロールの一部の帯域を他のロールに組み合わせることに相当する。
【０１０４】
このようにプリミティブロールをベースにして、ロールが提供する機能の一部分を組み合わせて新しいロールを積み上げることができる。その流れを図１３に示す。一番下に基本ロールがある。基本ロールが提供する機能を互いに独立に分割した分割ロールを考えて、各分割ロールを組み合わせて新しいロールを定義できる。新しいロールは次の繰り返しの基本ロールになる。図１２の例にあてはめると、基本ロールにスイッチロールとデータ線ロールがあり、スイッチロールのフォワーディング設定の一部分が分割ロールであり、データ線ロールの一部の帯域が分割ロールになる。これらの分割ロールを組み合わせて新ロールとしてパスロールが構築できる。
【０１０５】
本実施例では、このコンセプトに基づいてマネジメントエンジンシステムを構築している。
【０１０６】
［マネジメントエンジンシステムの構成例］
図１４に、本実施例に係るマネジメントエンジンシステム２１０の全体構成例を示す。図１４に示すように、本実施例に係るマネジメントエンジンシステム２１０は、外部中継部２１１、ロール整合部２１２、資源管理部２１３、ロール生成ツール２１４を有する。マネジメントエンジンシステム２１０の資源管理部２１３は、ネットワークの物理実体（通信装置、伝送路等）とOpenFlow ControllerやEMS等を介して接続される。また、外部中継部２１１は、ユーザ端末や他管理システムと接続される。
【０１０７】
以下、マネジメントエンジンシステム２１０の各モジュールについて説明する。
【０１０８】
＜資源管理部＞
資源管理部２１３は、物理実体をプリミティブロールとして管理し、そのプリミティブロールのインタフェースをロール整合部２１２に提供する機能部である。より具体的には、以下の各機能を有する。
【０１０９】
（１）資源管理部２１３は物理実体と接続して、物理実体からの監視情報等をロール整合部２１２に上げて、ロール整合部２１２からの制御命令を物理実体に渡す。
【０１１０】
（２）物理実体を内部的にプリミティブロールとして表現して、そのプリミティブロールのインタフェースをロール整合部２１２に提供する。
【０１１１】
（３）資源管理部２１３は定義したプリミティブロールと物理実体の関係を管理する。例えば、プリミティブロールの識別情報と物理実体の識別情報を対応付けてデータベースに格納することでこれらの関係を管理する。
【０１１２】
上記の関係に基づき、資源管理部２１３は、ロール整合部２１２からの制御要求を物理実体への制御コマンドに変換する。また、物理実体からのイベントをプリミティブロールのインタフェースを介してロール整合部２１２に通知する。この際、ロール整合部２１２に上げる必要の無い情報はプリミティブロール内で処理を行い、ロール整合部２１２には隠ぺいする。また、必要に応じてプリミティブロールの内部処理として外部システムを使う場合も想定する。例えば、物理実体のログ解析を外部の専用システムに依頼する等である。
【０１１３】
＜ロール定義書＞
次に、ロール生成ツール２１４に入力されるロール定義書２１５について説明する。ロール定義書２１５は、ロールを定義した定義書であり、ロールが関係している資源や、ロール間の関係を規定しており、これまでに説明したように、オントロジー言語（本実施例ではOWL)を使用してロール定義書２１５を記述する。定義書には少なくとも以下の情報を含む。
【０１１４】
・ロール名
・ロールが持つ属性情報
・ロールに対して実施できる命令
・ロールの制約条件
・ロールが関係するイベント情報
・その他
＜ロール生成ツール＞
ロール生成ツール２１４は、前述したロール生成装置１００に相当するものであり、オントロジーを用いて記載されたロール定義書からロールコンポーネントを生成する。一つのロール定義に対して１つのロールコンポーネントが生成される。
【０１１５】
＜ロール整合部＞
ロール整合部２１２は、ロール生成ツール２１４で作成したロールコンポーネントをインスタンス化してロールコンポーネントを動作させ、各ロールインスタンス間の関係を自動管理する。また、ロールコンポーネント間のイベント流通や、ロールコンポーネントの動的な追加・削除を行う。
【０１１６】
また、ロール整合部２１２は、必要に応じて（例えば、外部からのロールに対する指示に応じて）、資源管理部２１３のプリミティブロールを、プリミティブロールのインタフェースを介して制御し、外部中継部２１１に対してロールのインタフェースを提供する。
【０１１７】
図１５にロール整合部２１２内の構成例を示す。図１５を参照してロール整合部２１２についてより詳細に説明する。図１５に示す例において、ロール整合部２１２は、ロール整合部フレームワーク２２１、ロールコンポーネントA、ロールオブジェクトA1、A2、ロールコンポーネントB、ロールオブジェクトB1、B2を有する。
【０１１８】
ロール生成ツール２１４により生成されたロールコンポーネントA、B（プログラム）がロール整合部２１２内の記憶手段に記憶され、当該ロールコンポーネントA、Bは記憶手段から読み出され、ロール整合部フレームワーク２２１によりインスタンス化されて動作する。ロールコンポーネントA、Bはロールオブジェクトの生成・削除を行うファクトリに相当し、一つのロールコンポーネントに対して一つ又は複数個のロールオブジェクトが生成される。図１５の例では、ロールコンポーネントAからロールオブジェクトA1、A2が生成され、ロールコンポーネントBからロールオブジェクトB1、B2が生成されたことが示されている。ここでの各ロールオブジェクトはロールのインスタンス表現であり、これを管理オブジェクトと称してもよい。
【０１１９】
ロール整合部フレームワーク２２１は、前述したようにロールコンポーネントをインスタンス化して動作させるとともに、ロールコンポーネント間の情報伝達を仲介する。ロール整合部フレームワーク２２１の実現手法は特定の手法に限定されないが、例えばロール整合部フレームワーク２２１としてOSGiフレームワークを用いることができ、その場合、ロールコンポーネントはOSGiバンドルを用いて実現できる。
【０１２０】
また、各ロールコンポーネントは、ロールオブジェクトのデータの一貫性を確保する機能を有する。一貫性を確保するために、ロールコンポーネントは関係する他のロールコンポーネントの情報を確認する動作を行う。
【０１２１】
このように一貫性を確保する機能を有するため、例えば、同じ物理実体を異なるロールで表現して、その異なるロールをそれぞれ別の外部システムが利用しても、情報の一貫性を保証できる。なお、一貫性を確保するための具体的な処理動作としては、例えば、ある物理実体を表現するロールに対して外部から処理要求があり、当該物理実体における値（ネットワーク資源割当値等）に変更があったときに、同じ物理実体を表現する別のロールに、この値の変更を反映させる等の動作がある。
【０１２２】
＜外部中継部＞
外部中継部２１１は、ロール整合部２１２から提供されたロールのインタフェースを使って、他管理システムとの仲介や、オペレータに対してロールをGUIで表現する。つまり、外部中継部２１１はロール整合部２１２内のロール表現を他管理システムのプロトコルに変換したり、GUIで表現するモジュールである。
【０１２３】
なお、マネジメントエンジンシステムが既存のネットワークサービスを巻き取った場合は、この外部中継部２１１が旧管理システムと接続してマイグレーションを実現する。また、ユーザに対してネットワークのカスタマコントロール機能を提供する場合は、外部中継部２１１でユーザ向けインタフェースを構築する。
【０１２４】
本実施の形態に係るマネジメントエンジンシステム２１０は、１つ又は複数のコンピュータに、各モジュールに対応するプログラムを実行させることにより実現可能である。すなわち、マネジメントエンジンシステム２１０は、コンピュータに各部の機能に対応するプログラムを実行させることにより、データのメモリへの格納／読み出しとＣＰＵによる処理等を繰り返しながら、所望の処理を実行する。また、インスタンス化されたロールコンポーネントは、ロールコンポーネントの実装内容に従って動作するが、この動作についても、データのメモリへの格納／読み出しとＣＰＵによる処理等を繰り返しながら実行される。
【０１２５】
上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【０１２６】
なお、ロール生成ツール２１４をマネジメントエンジンシステム２１０の外部に置き、ロール生成ツール２１４により生成されたロールコンポーネントを外部からマネジメントエンジンシステム２１０に格納して使用することとしてもよい。
【０１２７】
上記のようなマネジメントエンジンシステム２１０において、オントロジー言語により記載されたロール定義書（例としてTrail定義書とする）からTrailのロールコンポーネントが生成され、生成されたTrailのロールは、ロール整合部２１２においてロールオブジェクトとして存在する。Trailのロールは、資源管理部２１３から当該Trailのロールに対応する物理実体からのイベントを受信したり、外部中継部２１１から指示を受けて応答を返す（例えば、接続構成や、現在の空き容量を返す）等の処理を行う。このような処理を、情報の一貫性の管理の下に、各ロールが行うことでネットワークマネジメントを実現する。
【０１２８】
（実施の形態のまとめ、効果）
本発明の実施の形態においては、ネットワークのロール階層モデルにおける各ロールを定義するロール定義書にオントロジーを適用するので、ロール間の関係を適切に表現したロール定義書を作成でき、結果として、適切なロールコンポーネントを迅速に生成することが可能となる。
【０１２９】
すなわち、非特許文献２に示した従来技術においては、ロール間の関係の整理が難しく、かつ、ロール間の関係を表記する適切な方法がなかったため、ロール間の関係を表現できなかったところ、本実施の形態では、ソフトウェア技術とは別の語彙体系の表現方式であるオントロジーを適応して、この課題を解決し、ロールコンポーネントを迅速に生成することを可能とした。
【０１３０】
また、本実施の形態により、オントロジーで記載されたロール定義書からソフトウェアコンポーネントを生成する技術が提供される。本実施の形態では、主にネットワークマネジメントに関する例を説明しているが、オントロジーのOWLは標準化された表記方法なので、そのOWLからソフトウェアコンポーネントを生成する仕組みはネットワークマネジメントに限らず適用可能である。
【０１３１】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【０１３２】
１０  ロールコンポーネント
１１  プロパティ部品
１２  振舞コード部
１５  プロパティ部品棚
１６  自動生成コード部
１７  ファクトリ部品
１８  インタフェース定義
３０  ロール定義書
１００  ロール生成装置
１１０  ロール定義書入力部
１２０  ロール定義書格納部
１３０  インタフェース定義生成部
１４０  プロパティ利用コード生成部
１５０  作成済プログラム格納部
１６０  ロールコンポーネント生成・出力部
２１０  マネジメントエンジンシステム
２１１  外部中継部
２１２  ロール整合部
２１３  資源管理部
２１４  ロール生成ツール
２２１  ロール整合部フレームワーク
【図１】
2015052875.tif 000003
【図２】
2015052875.tif 000004
【図３】
2015052875.tif 000005
【図４】
2015052875.tif 000006
【図５】
2015052875.tif 000007
【図６】
2015052875.tif 000008
【図７】
2015052875.tif 000009
【図８】
2015052875.tif 000010
【図９】
2015052875.tif 000011
【図１０】
2015052875.tif 000012
【図１１】
2015052875.tif 000013
【図１２】
2015052875.tif 000014
【図１３】
2015052875.tif 000015
【図１４】
2015052875.tif 000016
【図１５】
2015052875.tif 000017