実施形態1.
以下、本発明の実施形態について図面を参照して説明する。まず、後述する実施形態2.をより具体的に記載した実施形態1.について説明する。図1は、第1の実施形態のパラメタ値付与装置の構成例を示すブロック図である。図1に示すパラメタ値付与装置10は、要件入力部11と、要件分解部12と、割当部13と、出力部14とを備える。
本例において、要件入力部11と要件分解部12とは通信可能に接続されている。また、要件分解部12と割当部13とは通信可能に接続されている。また、割当部13と出力部14とは通信可能に接続されている。
要件入力部11は、ITシステムが用いる1つまたは複数のパラメタに対して値を付与するための要件を入力する。本実施形態では、例えば、要件として、パラメタ情報、パラメタ分割情報、パラメタ間制約情報およびパラメタ値情報を入力する。
パラメタ情報は、値付与の対象とするパラメタ(対象パラメタという)に関する情報である。パラメタ情報は、例えば、対象パラメタがITシステムにおいてどのようなパラメタであるかを示す情報や、パラメタ全体のデータ構造を示す情報を含んでいてもよい。また、パラメタ分割情報は、対象パラメタに含まれる複数の要素がどのように分割可能か(例えば、分割可能な位置)を示す情報である。また、パラメタ間制約情報は、対象パラメタ間の制約を示す情報である。なお、パラメタ間制約情報で示される制約は、対象パラメタ同士の制約に限定されず、例えば、対象パラメタを構成する要素間の制約を含んでいてもよい。ここで、要素間の制約は、同一パラメタの要素間の制約でもよいし、異なるパラメタの要素間でもよい。いずれの場合であっても、以下では「パラメタ間の制約」というが、単に「制約」と呼ぶ場合もある。また、パラメタ値情報は、対象パラメタの少なくとも一部に付与するパラメタ値に関する情報である。
図2~図5は、入力される要件の例を示す説明図である。なお、図2は、パラメタ情報の例を示す説明図である。図3は、パラメタ分割情報の例を示す説明図である。図4は、パラメタ間制約情報の例を示す説明図である。図5は、パラメタ値情報の例を示す説明図である。
図2に示すパラメタ情報は、対象パラメタの名称と、属性と、長さとを含んでいる。名称は、少なくともパラメタ値付与装置10において各対象パラメタを識別できる情報であればよい。例えば、対象パラメタとその適用先の機器が1対1で対応する場合は、対象パラメタの名称として、該対象パラメタが適用される機器(ITシステムの構成要素)の名称が用いられてもよい。そのような機器の名称例としては、例えば、“DNS(Domain Name system)サーバXX”、“WebサーバXX”、“ファイアウォールXX”、“ルータXX”、“NIC(Network Interface Card)XX”等が挙げられる(XXは任意の文字等)。なお、適用先の機器にID等の識別子があればその識別子が利用されてもよい。また、対象パラメタと適用先の機器が1対1で対応しない場合(例えば、その機器に対して複数の対象パラメタが割り当てられる場合等)は、“機器名称+パラメタ種別”等がパラメタの名称として用いられてもよい。なお、パラメタの名称は、適用先の機器とは独立していてもよく、個々の対象パラメタに対して固有の識別子が割り当てられてもよい。
また、属性は、対象パラメタがどのようなパラメタであるかを示す種別であってもよい。以下では、対象パラメタがIPv4アドレスである場合を例示するが、対象パラメタはIPv4アドレスに限られず、例えば、IPv6アドレスやURL(Uniform Resource Locator)等であってもよい。なお、パラメタの名称からどのようなパラメタかが特定できる場合、属性は省略可能である。
長さは、例えば、対象パラメタの全長(本例では、ビット長)であってもよい。また、対象パラメタが可変長であれば、対象パラメタが取り得る長さの範囲であってもよい。また、長さは、全長以外にも、複数の要素で構成されている場合には要素ごとの長さであってもよい。
図3に示すパラメタ分割情報は、対象パラメタの名称と、パラメタ分割に関する情報とを含んでいる。名称は、対象パラメタを識別できればよく、例えば、パラメタ情報の名称であってもよい。また、パラメタ分割に関する情報は、対象パラメタが複数の要素により構成される場合に、その要素の範囲(分割位置)を示す情報であってもよい。例えば、No.1のパラメタ分割情報は、名称が“AA”のパラメタ(長さ32ビットのIPv4アドレス)が、対象システムにおいて、上位16ビットを1つのユニット(要素)として分割されることを表している。また、例えば、No.3のパラメタ分割情報は、名称が“AA”のパラメタ(長さ32ビットのIPv4アドレス)が、対象システムにおいて、上位24ビットを1つのユニット(要素)として分割されることを表している。
なお、本例では、要件としてパラメタ分割情報が入力されることを想定しているが、パラメタ分割情報は、後述するパラメタ間制約情報やパラメタ値情報において示されるパラメタの分割位置(対象範囲等)に基づいてパラメタ値付与装置が生成することも可能である。
図4に示すパラメタ間制約情報は、制約関係を有する対象群(パラメタの名称およびそのパラメタ内の対象範囲で指定される対象の集合)と、該対象群に適用される制約(対象間の関係)とを含んでいる。なお、図4(a)に示すように、パラメタ間制約情報は、各項目が独立して登録されていてもよいし、図4(b)に示すように、対象範囲を定めたパラメタ同士の制約式の形式で登録されてもよい。
例えば、No.1のパラメタ間制約情報は、名称が“AA”と“BB”のパラメタ間において上位24ビットが異なることを表している。なお、制約内容(上記パラメタ間の関係)は、等しい(相等関係)、等しくない(不等関係)といった2種類の関係に限らず、不等号で表されるような大小関係も含み得る。なお、No.1およびNo.2のパラメタ間制約情報のように、同じパラメタの組み合わせに対して対象範囲が異なる2以上の制約を登録することも可能である。
図5に示すパラメタ値情報は、対象パラメタの名称と、その対象パラメタに値を付与する対象の範囲(該値が付与される対象となるパラメタ内の位置情報)と、該対象に付与するパラメタ値の条件(該対象に付与可能な値や付与不可能な値の集合等)とを含んでいる。
例えば、No.1のパラメタ値情報は、名称が“AA”のパラメタ(長さ32ビットのIPv4アドレス)の上位16ビットが、“192.168 ”の値をとり得ることを表している。なお、図中の対象“[1,16]”が、対象パラメタのうち値が付与される対象が上位16ビットであることを表している。また、例えば、No.3のパラメタ値情報は、名称が“AA”のパラメタ(長さ32ビットのIPv4アドレス)の上位24ビットが、“192.168.1 ~192.168.8 ”のうちのいずれかの値をとり得ることを表している。なお、図中の対象“[1,24]”が、対象パラメタのうち値が付与される対象が上位24ビットであることを表している。なお、パラメタ値情報におけるデータ形式は、IPアドレスのような順序関係を持つパラメタに限られない。例えば、URLのようなパラメタであっても同様に指定可能である。なお、パラメタ値は、数字に限られない。
なお、図中のNo.1とNo.3や、No.2とNo.4のように、1つの対象パラメタに対して、重複する部分を付与対象に含むパラメタ値情報を登録することも可能である。なお、付与対象の範囲が重複した部分(本例では、上位16ビット部)に対して、同じパラメタ値が登録されることが好ましいが、完全一致でなく一部一致(例えば、一方のパラメタ値の候補となる集合に含まれる値等)であってもよい。なお、仮に、一部一致もしていない(完全に異なる)場合は、その旨を示すエラーが表示されたり、予め定めておいた登録の優先順位に従って値が決定されたりしてもよい。
要件分解部12は、入力された要件を、後述する単位ブロックごとの要件に分解する。要件分解部12は、少なくともパラメタ分割情報により示されるパラメタの分割位置に基づいて、対象パラメタの分割(より具体的には、パラメタ内の対象範囲を定める分割位置)を合成し、合成したパラメタの分割に基づいて、パラメタを、値付与の単位とされる単位ブロックに分解し、該分解結果に応じて単位ブロック別に制約およびパラメタ値の規定を分解する処理を行う。以下では、このような、パラメタの分解を合成し、その結果分解されたパラメタの単位ブロック別に制約およびパラメタ値の規定を分解することを、要件の再構築または要件の単位ブロック分解と呼ぶ場合がある。
また、図1に示すように、要件分解部12は、パラメタ分解部121と、制約分解部122と、パラメタ値分解部123とを含んでいてもよい。そのような場合において、パラメタ分解部121は、要件入力部11、制約分解部122、パラメタ値分解部123および割当部13と通信可能に接続されていてもよい。また、制約分解部122は、パラメタ分解部121およびパラメタ分類部131と通信可能に接続されていてもよい。また、パラメタ値分解部123は、パラメタ分解部121および割当部13と通信可能に接続されていてもよい。
パラメタ分解部121は、入力された要件に基づいて、対象パラメタを、パラメタ間の制約関係を加味した値付与の単位とされる単位ブロックに分解する。より具体的には、パラメタ分解部121は、入力された要件によって示される対象パラメタの分割位置に基づいてパラメタ分割を合成し、合成後のパラメタ分割に従って対象パラメタの各々を1つ以上の単位ブロックに分解する。
ここで、パラメタについて「分割の合成」とは、より具体的には分割位置の合成をいう。パラメタ分解部121は、例えば、対象パラメタごとに分類されたパラメタ分割情報、制約情報およびパラメタ値情報に基づいて、各対象パラメタに対して指定される分割位置の全ての和集合をとることで、パラメタの分解を合成できる。パラメタ分解部121は、和集合をとった後の分割位置それぞれを1つのパラメタ分割として、パラメタ分割情報を書きなおしてもよい。このようにして書きなおされたパラメタ分割情報により示される対象パラメタ内の各ブロックは、値付与の単位とされる。なお、この書きなおしの処理は、対象パラメタごとに、パラメタをどこで分割するかを示す分割位置情報が1つまたは複数指定されたパラメタ分割情報における分割位置情報を併合することにより、単一のパラメタ分割情報に統合する処理であってもよい。
本発明では、入力された要件で示されるパラメタ分割の合成結果に基づいて、1つのパラメタを、1つ以上の単位ブロックに分割することを「パラメタの分解」という。
なお、既に説明したように、パラメタ分割情報が要件として入力されない場合には、パラメタ分解部121が、パラメタ間制約情報やパラメタ値情報に基づいて、対象パラメタごとに要件としてのパラメタの分割位置を示すパラメタ分割情報を生成した上で、同様の処理を行ってもよい。
図6は、パラメタ分割の合成例を示す説明図である。図6に示すように、パラメタ分解部121は、まず、要件として指定されたパラメタの分割位置を収集し、対象パラメタごとに分類する。次に、対象パラメタごとに分類された分割位置の和集合をとり、該和集合に含まれる各分割位置に対応させて、パラメタ分割情報を書きなおす。書きなおされたパラメタ分割情報により示される分割後の各ブロックが単位ブロックとなる。
本例では、合計32ビットの対象パラメタ“AA”および“BB”のそれぞれについて、上位24ビット目を1つの区切りとするパラメタ分割と、上位16ビット目を1つの区切りとするパラメタ分割とを合成した結果、16ビット目および24ビット目をそれぞれ区切りとするパラメタ分割情報に書きなおされる。また、図7は、図6に示したパラメタ分割の合成例を、ビット列における分割位置の合成として表現しなおしたものである。図7において、S1は当該パラメタにおける第1のパラメタ分割、S2は第2のパラメタ分割、SS1は合成後のパラメタ分割を表している。このようにして書きなおされたパラメタ分割情報により、合成後のパラメタ分割が、対象パラメタを、1-16ビットを第1の単位ブロックとし、17-24ビットを第2の単位ブロックとし、25-32ビットを第3の単位ブロックとして分解することが示されている。
また、図8は、パラメタ分解の結果例を示す説明図である。例えば、図2で示される対象パラメタ“AA”および“BB”の場合、パラメタ分解部121は、図6で示される合成後のパラメタ分割情報に基づいて、それぞれ1-16ビットを第1の単位ブロックとするパラメタ分解と、17-24ビットを第2の単位ブロックとするパラメタ分解と、25-32ビットを1つの単位とする第3の単位ブロックの3つの単位ブロックに分解すればよい。なお、図8において、D11は元々のパラメタ情報、D12は合成後のパラメタ分割情報、D13は合成後のパラメタ分割情報に基づく分解後のパラメタ情報を表している。
なお、長さは固定でないパラメタの場合、分割位置を示す情報としてビット長の代わりに区切り文字の情報やその順番(先頭から何番目~何番目の範囲)等を指定することができる。例えば、URLであれば、先頭から第1の区切り文字までの範囲を第1の単位ブロックとし、第1の区切り文字~第2の区切り文字の範囲を第2の単位ブロックとする、といった指定が可能である。
制約分解部122は、合成後のパラメタ分割を示すパラメタ分割情報または分解後のパラメタ情報に基づいて、パラメタ間制約を分解する。制約分解部122は、より具体的には、パラメタ間の制約が単位ブロックごとに規定されるよう、パラメタ間制約情報に示されるパラメタ間制約を分解する。なお、制約分解部122は、制約の分解を、制約展開規則を用いて行えばよい。
図9は、パラメタ間制約の分解に用いる制約展開規則の例を示す説明図である。図9に示す例は、パラメタ“N ”と“M ”との間に設定された、各々のパラメタ内のa~cを範囲とする制約を、単位ブロックを単位とする制約に分解する場合の制約展開規則の例である。このとき、分解後のパラメタの情報には、パラメタ“N ”および“M ”が、“[a,b] ”を範囲とする第1の単位ブロック、“[b+1,c] ”を範囲とする第2の単位ブロックを有する旨が示されている。
本例の場合、a~cを範囲とするNo.1のパラメタ間制約は、a~bを範囲とするNo.1-1のパラメタ間制約と、No.1-2のパラメタ間制約のいずれかを満たすという論理和で結ばれる複数の制約に分解される。
なお、図9に示す例では、制約関係にある対象パラメタ同士で単位ブロックの分割位置が同じである場合が想定されているが、制約関係にある対象パラメタ同士で単位ブロックの分割位置は異なっていてもよい。その場合、制約分解部122が、さらに当該対象パラメタ同士のパラメタ分割を合成し、対象パラメタ間で共通の単位ブロックの分割位置を定め、該共通の単位ブロックの分解位置に基づいて制約を分解すればよい。
図10は、制約関係にある2つの対象パラメタの単位ブロックの共通化の例を示す説明図である。図10(a)は共通化される前の2つの対象パラメタの単位ブロックの例を示し、図10(b)は共通化された後の2つの対象パラメタの単位ブロックの例を示す説明図である。なお、パラメタ分解部121がこのような制約関係にあるパラメタ同士の単位ブロックの共通化処理を行ってもよい。
図11は、図4(b)に示したパラメタ間制約の分解結果の例を示す説明図である。図11に示す例では、パラメタ“AA”と“BB”間の制約のうち、No.1の制約が2つの単位ブロック間の制約に分解された結果、最終的に、No.1-2の制約と、No.2の制約に集約された例が示されている。このように、分解後の制約と既存の制約とを組み合わせた際に矛盾が生じた場合には、矛盾のない組み合わせに再編成(集約)される。
パラメタ値分解部123は、合成後のパラメタ分割を示すパラメタ分割情報または分解後のパラメタ情報に基づいて、パラメタ値(より具体的には、パラメタ値の条件で示されるパラメタ値)を分解する。パラメタ値分解部123は、より具体的には、パラメタ値条件が単位ブロックごとに規定されるよう、パラメタ値情報で示されるパラメタ値を分解する。
図12は、パラメタ値の分解結果の例を示す説明図である。図12に示す例では、パラメタ“AA”について、1~16ビットの範囲に対してパラメタ値“192.168 ”を規定したNo.1のパラメタ値情報と、1~24ビットの範囲に対してパラメタ値“192.168.1 ~192.168.8 ”を規定したNo.2のパラメタ値情報とに基づいて、少なくとも1~24ビットに対するパラメタ値が、第1の単位ブロックに対するパラメタ値“192.168 ”と、第2の単位ブロックに対するパラメタ値“1~8 ”に分解される。なお、図12は、パラメタ値の条件が設定されていない、すなわち属性に従い任意の値を持ち得る単位ブロックの情報も併せて示している。
図13は、要件の分解結果の例を示す説明図である。図中の(a)はパラメタ情報の単位ブロック分解の例、(b)はパラメタ間制約の単位ブロック分解の例、(c)はパラメタ値の単位ブロック分解の例である。
割当部13は、要件分解部12により単位ブロック別に分解された要件(パラメタ情報、パラメタ間制約情報およびパラメタ値情報)に基づいて、対象パラメタに値を付与する。本実施形態では、割当部13に入力される要件は既に要件分解部12によって単位ブロックごとに分解されているため、割当部13は、入力される分解後の要件にしたがって、対象パラメタ内の各単位ブロックに値を割り当てればよい。
割当部13は、図1に示すように、パラメタ分類部131と、パラメタ値付与部132とを含んでいてもよい。そのような場合において、パラメタ分類部131は、パラメタ分解部121、制約分解部122およびパラメタ値付与部132と通信可能に接続されていてもよい。また、パラメタ値付与部132は、パラメタ分類部131およびパラメタ値分解部123と通信可能に接続されていてもよい。
パラメタ分類部131は、単位ブロック別に分解された要件に従い、各対象パラメタの各単位ブロックを、制約関係のある同士で分類する。このとき、パラメタ分類部131は、等しい関係にある単位ブロック同士を1つのグループに分類するとともに、等しくない関係にある単位ブロック同士を別々のグループに分類する。そして、パラメタ分類部131は、等しくない関係にあるグループ同士を等しくない旨を示すリンクで接続してもよい。なお、等しい関係、等しくない関係以外にも大小関係が設定されている場合には、パラメタ分類部131は、等しくない関係として別々のグループに分類した上で、それらグループの大小関係を示す情報を付随させてもよい。なお、パラメタ分類部131は、他のいずれの単位ブロックとも制約関係のない単位ブロックについては分類対象から除外してもよいし、それ用の1つまたは複数のグループにまとめてもよい。パラメタの単位ブロックの分類を実現する方法の一例としては、Unionfindアルゴリズムが挙げられる。この場合、分類結果は、異なるパラメタの単位ブロック間の関係性を示すグラフとしてパラメタ値付与部132に出力される。
図14は、パラメタの単位ブロックの分類結果の例を示す説明図である。例えば、図14に示す例の場合、パラメタ“AA”の第1の単位ブロック(1-16ビット部)とパラメタ“BB”の第1の単位ブロック(1-16ビット部)とは、同じグループに分類される。一方、パラメタ“AA”の第2の単位ブロック(17-24ビット部)とパラメタ“BB”の第2の単位ブロック(17-24ビット部)とは、異なるグループに分類される。なお、パラメタ“AA”の第3の単位ブロック(25-32ビット部)とパラメタ“BB”の第3の単位ブロック(25-32ビット部)とは、同じグループに分類されてもよいし、異なるグループに分類されてもよい。なお、図中の太枠がグループを表し、グループ間の二重線は当該グループ同士が異なる値を有することを表している。なお、グループ間に何ら接続線がない場合はそれらグループ同士に何ら制約がないことを表している。
パラメタ値付与部132は、パラメタ分類部131によって分類された単位ブロック群に対して、分解後のパラメタ間制約およびパラメタ値(すなわち単位ブロック間の制約および単位ブロック別のパラメタ値)に基づいて、値を割り当てる。パラメタの単位ブロックに対する値の割り当ての実現方法の一例としては、グラフ彩色アルゴリズムが挙げられる。パラメタ値付与部132は、所定の方法に従い、例えば、分類により1つにまとめられた単位ブロック群には全て同じ値を割り当ててもよい。
図15は、対象パラメタの各単位ブロックへの値付与の結果例を示す説明図である。図15には、パラメタ“AA”の第1の単位ブロックにパラメタ値“192.168 ”、第2の単位ブロックに“1 ”、および第3の単位ブロックに“1 ”が割り当てられた例が示されている。また、パラメタ“BB”の第1の単位ブロックにパラメタ値“192.168 ”、第2の単位ブロックに“2 ”、および第3の単位ブロックに“1 ”が割り当てられた例が示されている。
次に、本実施形態の動作を説明する。図16は、第1の実施形態のパラメタ値付与装置の動作の一例を示すフローチャートである。図16に示す例では、まず、要件入力部11が、ITシステムが用いる1つまたは複数のパラメタに対して値を付与するための要件を入力する(ステップS11:要件入力)。要件入力部11は、要件として、少なくともパラメタ情報、パラメタ間制約情報およびパラメタ値情報を入力する。なお、要件入力部11は、要件として、さらにパラメタ分割情報を入力してもよい。
次に、要件分解部12が、入力された要件を、単位ブロックごとの要件に分解する(ステップS12:要件分解)。要件分解部12は、例えば、全ての対象パラメタについて、入力された要件により示される対象パラメタの分割を合成し、合成後のパラメタ分割に基づいて対象パラメタ、対象パラメタにかかるパラメタ間制約およびパラメタ値を分解する。
全ての対象パラメタの全ての要件の分解が完了すると(ステップS13のYes)、割当部13が、分解後の要件に基づいて対象パラメタに値を割り当てる(ステップS14:パラメタ値割当)。割当部13は、単位ブロックごとに分解された要件に従い、全ての対象パラメタの全ての単位ブロックに値を割り当てればよい。これにより、対象パラメタに値が付与される。
なお、全ての要件の分解が完了していない場合(ステップS13のNo)、パラメタ値付与装置10は、ステップS12に戻って残った要件の分解を行えばよい。パラメタ値付与装置10は、全ての要件の分解が完了したか否かを、ステップS11で入力された要件が全て単位ブロックごとに規定されているか否かによって判定してもよい。
最後に、出力部14が、割当部13の割り当て結果を出力する(ステップS15)。
また、図17は、パラメタ分解部121によるパラメタ分解動作のより詳細な例を示すフローチャートである。図17に示す動作は、上記のステップS12の要件分解動作のうちの一部に相当する。
図17に示す例では、まず、パラメタ分解部121は、入力された要件を取得する(ステップS21)。ステップS21では、パラメタ分解部121は、入力としてパラメタ情報、パラメタ分割情報、パラメタ間制約情報およびパラメタ値情報をユーザから受け取る。なお、これらの情報は入力情報の一例であり、これに限定されない。
次に、パラメタ分解部121は、取得したこれら全ての情報を、パラメタごとに分類してパラメタごとのパラメタ分割を抽出する(ステップS22)。ここで分類対象とされるパラメタ分割は、パラメタ分割情報に示されるパラメタの分割に限られず、例えば、パラメタ間制約情報やパラメタ値情報の対象範囲等で示されるパラメタの分割も含まれ得る。
パラメタ分解部121は、例えば、パラメタ分割情報、パラメタ間制約情報およびパラメタ値情報をパラメタごとに分類し、分類されたパラメタごとのパラメタ分割情報、パラメタ間制約情報およびパラメタ値情報から、当該パラメタの分解位置を示すパラメタ分割を抽出してもよい。パラメタの分類は、例えば、各情報からパラメタの名称等の識別子を参照し、同じ識別子を含む情報を1つのグループにまとめてもよい。その場合、パラメタ間制約情報は、少なくとも2つのグループに属することになる。
例えば、図3~図5に示す情報に対して名称で情報を分類すると、図3のパラメタ分割情報のNo.1とNo.3、図4のパラメタ間制約情報のNo.1とNo.2、図5のパラメタ値情報のNo.1とNo.3とが1つのパラメタ(パラメタ“AA”)に関する情報として分類される。また、図3のパラメタ分割情報のNo.2とNo.4、図4のパラメタ間制約情報のNo.1とNo.2、図5のパラメタ値情報のNo.2とNo.4とが1つのパラメタ(パラメタ“BB”)に関する情報として分類される。そして、パラメタ分解部121は、分類されたこれら情報により、パラメタ“AA”のパラメタ分割として分割位置“{16}”および“{24}”を抽出し、パラメタ“BB”のパラメタ分割として分割位置“{16}”および“{24}”を抽出する。
なお、パラメタ間制約情報およびパラメタ値情報におけるパラメタ分割が、要件として入力されるパラメタ分割情報に集約されている場合、パラメタ分解部121は、パラメタ分割情報のみを対象にして、該情報をパラメタごとに分類してもよい。
次に、パラメタ分解部121は、対象パラメタごとに、抽出したパラメタ分割を合成する(ステップS23)。パラメタ分解部121は、パラメタ分割の合成を、既に説明したように、当該パラメタの全ての分割位置の和集合をとることにより行えばよい。
次に、パラメタ分解部121は、合成後のパラメタ分割に基づいてパラメタの再分割を行い、対象パラメタを単位ブロックに分解する(ステップS24)。
例えば、パラメタ“AA”について、合成後のパラメタ分割として、分割位置“{16}”と“{24}”を示すパラメタ分割が得られたとする。その場合、パラメタ分解部121は、パラメタ“AA”をそれら分割位置で各々分割し、3つの単位ブロックに分解する。
最後に、パラメタ分解部121は、分解結果をパラメタ情報やパラメタ分割情報に反映して終了する(ステップS25)。パラメタ分解部121は、このような一連の処理を、分類されたパラメタの全てに対して行う。
なお、反映後のパラメタ情報やパラメタ分割情報は、制約分解部122、パラメタ値分解部123およびパラメタ分類部131に出力される。このとき、パラメタ分解部121は、制約分解部122に、要件として入力されたパラメタ間制約情報を一緒に出力してもよい。同様に、パラメタ分解部121は、パラメタ値分解部123に、要件として入力されたパラメタ値情報を一緒に出力してもよい。なお、パラメタ間制約情報の制約分解部122への出力およびパラメタ値情報のパラメタ分解部121への出力は、要件入力部11が行ってもよい。
また、図18は、制約分解部122によるパラメタ間制約の分解動作のより詳細な例を示すフローチャートである。図18に示す動作は、上記のステップS12の要件分解動作のうちの一部に相当する。
図18に示す例では、まず、制約分解部122は、入力としてパラメタの単位ブロックへの分解結果が反映されたパラメタ情報またはパラメタ分割情報と、分解前のパラメタ間制約情報とを取得する(ステップS31)。
次に、制約分解部122は、全てのパラメタ間制約情報を、制約関係にある対象とされるパラメタの組み合わせごとに分類する(ステップS32)。なお、パラメタ間制約情報が制約式で表現されている場合、制約分解部122は、右辺と左辺のパラメタ組が一致するパラメタ間制約情報を1つのグループに分類すればよい。例えば、パラメタ“AA”と“BB”の組み合わせに対してパラメタ間制約情報が登録されていれば、制約分解部122は、同じ組み合わせのパラメタ間制約情報を1つのグループにまとめる。他の組み合わせの場合も同様に、制約分解部122は、グループ内が全て同じ組み合わせのパラメタ間制約情報となるようにグループ化する。
次に、制約分解部122は、同じパラメタの組み合わせで分類されたパラメタ間制約情報に対して、単位ブロックごとの規定となるよう制約展開規則を適用して制約を分解する(ステップS33)。制約分解部122は、分類されたパラメタ間制約情報で示される制約のうち単位ブロックよりも広い範囲を対象範囲とする制約に対して単位ブロックごとの規定となるよう所定の制約展開規則を適用して該制約を分解してもよい。
例えば、分類の結果、図4のパラメタ間制約情報のうちパラメタ“AA”と“BB”間の制約が得られた場合、そのうちの対象範囲“[1,24]”となっているNo.1の制約が分解対象の制約として選ばれる。そして、当該制約は、単位ブロックごとに制約が規定されるよう、より具体的には、対象範囲“[1,16]”と“[17,24] ”の異なる2つの制約として分解された上で、これら制約を論理和で接続される。このとき、当該制約に対して、図9に示す制約展開規則が適用される。なお、図9に示す制約展開規則は、「2つの対象パラメタのある対象範囲“[a,c] ”の値が異なる」という制約が、これら対象パラメタの単位ブロックの情報に基づいて「2つの対象パラメタのそれぞれ“[a,b] ”を範囲とする第1の単位ブロック間、またはそれぞれ“[b+1,c] ”を範囲とする第2の単位ブロック間のいずれの単位ブロック間の値が異なる」という2つの単位ブロック間の制約の論理和に展開されることを表している。制約展開規則は、例えば、このような、分解前の制約とその対象パラメタ組に含まれるパラメタの分解結果(単位ブロックの情報)とに対して、当該制約の分解結果とされる単位ブロック間の制約の組み合わせを指定するものであってもよい。なお、当該制約展開規則によれば、2以上の対象パラメタ間で規定される制約についても同様に分解可能である。
制約分解部122は、分解後の制約と分解対象とされなかった制約間の論理関係に従って、全体の制約(論理式)を更新した上で、結果をパラメタ間制約情報に反映する(ステップS34)。制約分解部122は、このような一連の処理を、分類されたパラメタの組み合わせの全てに対して行う。
なお、反映後のパラメタ間制約情報は、パラメタ分類部131に出力される。
また、図19は、パラメタ値分解部123によるパラメタ値分解動作のより詳細な例を示すフローチャートである。図19に示す動作は、上記のステップS12の要件分解動作のうちの一部に相当する。
図19に示す例では、まず、パラメタ値分解部123は、入力としてパラメタの単位ブロックへの分解結果が反映されたパラメタ情報またはパラメタ分割情報と、分解前のパラメタ値情報とを取得する(ステップS41)。
次に、パラメタ値分解部123は、取得した全てのパラメタ値情報を、パラメタごとに分類する(ステップS42)。
次に、パラメタ値分解部123は、パラメタごとに分類されたパラメタ値情報に対して、単位ブロックごとの規定となるようパラメタ値を分解する(ステップS43)。パラメタ値分解部123は、分類されたパラメタ値情報のパラメタ値の条件で示されるパラメタ値のうち単位ブロックよりも広い対象範囲を有するパラメタ値に対して単位ブロックごとの規定となるようにパラメタ値の条件で示されるパラメタ値を分解してもよい。
例えば、分類の結果、図5のパラメタ値情報のうちパラメタ“AA”のパラメタ値情報が得られた場合、そのうちの対象範囲“[1,24]”となっているNo.3のパラメタ値情報で示されるパラメタ値が分解対象のパラメタ値として選ばれる。そして、当該パラメタ値は、単位ブロックごとにパラメタ値が規定されるように、より具体的には、対象範囲“[1,16]”と“[17,24] ”の異なる対象範囲に対するパラメタ値の条件に分解される。
なお、図11に示すパラメタ値の分解例は、パラメタ“AA”の分解結果として示される第1~第3の単位ブロックの情報に従い、上位24ビットに対して規定されたパラメタ値“192.168.1 ~192.168.8 ”を、第1の単位ブロックと第2の単位ブロックの境界である16ビット目で分解し、結果として第1の単位ブロックのパラメタ値“192.168 ”と、第2の単位ブロックのパラメタ値“1~8 ”とを得た例である。
最後に、パラメタ値分解部123は、分解結果をパラメタ値情報に反映する(ステップS44)。パラメタ値分解部123は、このような一連の処理を、分類されたパラメタの全てに対して行う。
なお、反映後のパラメタ値情報は、パラメタ値付与部132に出力される。
また、図20は、割当部13によるパラメタ値割当動作のより詳細な例を示すフローチャートである。図20に示す動作は、上記のステップS14のパラメタ値割当動作に相当する。
図20に示す例では、まず、割当部13のパラメタ分類部131は、入力としてパラメタの単位ブロックへの分解結果が反映されたパラメタ情報またはパラメタ分割情報と、単位ブロックへの分解が完了したパラメタ間制約情報とを取得する(ステップS51)。
次に、パラメタ分類部131は、単位ブロック分解後のパラメタ間の制約に基づいて、全ての対象パラメタの全ての単位ブロックを分類する(ステップS52)。
例えば、パラメタ分類部131は、パラメタ分解部121と制約分解部122とにより導出される対象パラメタの単位ブロックとそれら単位ブロック間の制約の情報を基に、値付与の対象とされる単位ブロック群を一つないし複数のユニット類に等号「=」で分類し、さらに異なるユニット類同士の関係性の情報(不等号「≠」)を明示した辺によってこれらを接続したグラフを導出してもよい。
パラメタ分類部131によって導出されたグラフは、パラメタ値付与部132に出力される。
次いで、パラメタ値付与部132は、パラメタ分類部131より、パラメタの単位ブロック群の分類結果を示すグラフを取得すると、単位ブロック分解後のパラメタ値情報に基づいて、各単位ブロックにパラメタ値を割り当てる(ステップS53)。
以下、具体例を用いて上記の動作を説明する。まず、要件として図2に示すパラメタ情報、図3に示すパラメタ分割情報、図4(b)に示すパラメタ間制約情報および図5に示すパラメタ値情報が入力されたとする。
要件分解部12では、まずパラメタ分解部121が、入力された要件に基づいて、対象パラメタごとにパラメタ分割の合成を行う。本例では、パラメタ名称が“AA”と“BB”であるIPv4アドレスの分割位置として、16ビット目(図中の“{16}”)と24ビット目(図中の“{24}”)とが与えられている。パラメタ分解部121は、パラメタ“AA”および“BB”の合成後のパラメタ分割として、分割位置“{16,24} ”を示す分解後のパラメタ分割情報を出力する。また、パラメタ分解部121は、パラメタ“AA”および“BB”について得られた合成後のパラメタ分割に従い、パラメタ“AA”および“BB”をそれぞれ3つの単位ブロックに分解する。
図8に示す例は、本例におけるパラメタの分解結果である。パラメタ分解部121は、入力されたパラメタ“AA”と“BB”のパラメタ情報に対して、パラメタごとに、合成後のパラメタの分割位置を参照して単位ブロックに分解する。本例では、パラメタ分解部121は、パラメタ“AA”および“BB”に対して、それぞれ上位から16ビット目と24ビット目で分割して3つの単位ブロックを得る。
各対象パラメタが単位ブロックに分解された後、制約分解部122が、要件として入力されたパラメタ間制約を単位ブロックごとに分解する。
本例では、制約分解部122が、図11のD31で示すパラメタ間制約情報を取得し、図中の実線の矢印方向で示されるD33のパラメタ間制約に分解する。このとき、図中のD32で示すように、単位ブロックへの分解結果が示されたパラメタ情報またはパラメタ分割情報が参照される。制約分解部122は、図11に示すように、パラメタの組み合わせが共通するパラメタ間制約の中から、当該組み合わせに各パラメタの単位ブロックを部分的に含む(すなわち、対象範囲と単位ブロックとが部分的に一致する)制約に対して制約展開規則を適用して、単位ブロックごとに制約が規定されるよう分解する。分解後、制約分解部122は、パラメタの組み合わせが共通するパラメタ間制約群に対して、論理演算(AND/OR演算)を行い論理式を更新する。本例では、No.1-1の制約とNo.2の制約の組み合わせは矛盾を含む組み合わせであるので削除され、最終的に、No.1-2の制約とNo.2の制約の組み合わせのみが残る。
制約分解部122の動作と並行して、パラメタ値分解部123が、要件として入力されたパラメタ値(より具体的にはパラメタ値の条件で示されるパラメタ値)を単位ブロックごとに分解する。
本例では、パラメタ値分解部123が、図12のD41で示すパラメタ値情報を取得し、図中の実線の矢印方向で示されるD43のパラメタ値に分解する。このとき、図中のD42で示すように、単位ブロックへの分解結果が示されたパラメタ情報またはパラメタ分割情報が参照される。パラメタ値分解部123は、図12に示すように、パラメタの名称が共通するパラメタ値の中から、当該パラメタの単位ブロックを部分的に含む(すなわち、対象範囲と単位ブロックとが部分的に一致する)パラメタ値に対して単位ブロックごとにパラメタ値が規定されるよう分解する。本例では、パラメタ値分解部123は、対象範囲が“[1,24]”であるNo.3のパラメタ値“192.168.1 ~192.168.8 ”を、対象範囲“[1,16]”に対するパラメタ値“192.168 ”と、対象範囲“[17,24] ”に対するパラメタ値“1~8 ”とに分解する。なお、図12では、パラメタ“AA”のパラメタ値情報のみが示されているが、パラメタ値分解部123は、パラメタ“BB”についても同様の処理を行う。
このようにして要件分解部12による要件の分解が完了すると、割当部13のパラメタ分類部131が、図14に示すように、分割後のパラメタ間制約に基づいて各対象パラメタの各単位ブロックを分類する。本例では、パラメタ“AA”の第1の単位ブロックとパラメタ“BB”の第1の単位ブロックは、分解後のパラメタ間制約によって同じ値を持たなければならないものとして、1つのグループに分類される。一方で、パラメタ“AA”の第2の単位ブロックとパラメタ“BB”の第2の単位ブロックは、分解後のパラメタ間制約によって異なる値を持たなければならないものとして、異なるグループに分類された上で、その旨を示すグループ間接続がされている。パラメタ“AA”の第3の単位ブロックとパラメタ“BB”の第3の単位ブロックは、いずれもパラメタ間制約が存在しないため、別のグループに分類されても同一のグループに分類されてもよいが、ここでは別のグループに分類されている。なお、本例では、パラメタ分類部131は、Unionfindアルゴリズムを用いてグループ分けを行っている。
パラメタ分類部131による対象パラメタの単位ブロックの分類が完了すると、パラメタ値付与部132が、当該分類結果と、分解後のパラメタ値情報とに基づいてパラメタ値を割り当てる。パラメタ値付与部132は、例えば、グラフ彩色アルゴリズムを用いて、各単位ブロックに値を割り当ててもよい。
以上のように、本実施形態では、要件分解部12が、入力された要件を走査することにより人手を介さずにパラメタ内の分解位置を最適化し、最適化された分割位置にしたがって各種の要件(パラメタ間の制約や付与するパラメタ値)を分解する。このため、パラメタ値付与装置10は、分割位置や要件入力の書式が固定されていない各種パラメタに対しても、効率よく正しいパラメタ値を付与することができる。
例えば、本実施形態によれば、人手で要件の書式を整える必要がないため、IPアドレスのようなパラメタ値を付与する区切りが固定でないようなパラメタであっても、自動で、かつ効率よく正しいパラメタ値を付与することができる。
一例として、IPアドレスに値を割り当てることを考える。複数の機器にそれぞれ付されるIPアドレスに対して、ネットワークマスクとして“192.168.*.*/16”を採用する人がいる一方で、サブネットワークマスクとして“192.168.10.*/24~192.168.20.*/24”を採用したい人がいる場合、それぞれのネットワークマスクの違いを考慮してIPアドレスの割り振りを考えなければならない。このようなIPアドレス間の(部分的な)依存関係はシステムの規模が大きくなるにつれて増大し、人手で管理することは難しくなる。しかし、本実施形態によれば、人手で要件の書式を整える必要がないため、IPアドレスのようなパラメタ値を付与する区切りが固定でないようなパラメタであっても、効率よく正しいパラメタ値を付与することができる。
なお、予め定められている要素ごと(例えば、IPv4アドレスであれば8ビット×4つのブロックに分割する、URLであればホスト部とポート部等)に、要件を分解した場合、まとめて値が付与できるようなブロック(上記の例でいえば、IPv4アドレス“AA”と“BB”の上位1~16ビット部等)であってもさらに小さく分解されたり、逆に分けて値を付与しなければいけないブロック(例えば、URLのホスト部に含まれるサーバ名称が指定されるブロック等)であっても、十分な粒度のブロックに分解されない等、適応的な分割ができない。
なお、予め定められている要素ごとに分割せず、例えば、特許文献2に記載されているような、対象とする複数の変数それぞれの表現形式における1要素当たりのビット数の最大公約数を利用する方法等も考えられるが、既に説明したように最大公約数のビット長で均一に分割することが必ずしも最適な分割方法とは限らない。極端な例として、あるパラメタの上位1ビットに対して値の条件が与えられるとともに、該パラメタの上位16ビットに対して別の条件が与えられた場合、特許文献1に記載された方法のように最大公約数を用いると、該パラメタが1ビットずつ(合計16パート)に分割されるケースも考えられる。なお、本実施形態によれば、該パラメタは、上位1ビットとそれに続く15ビットの2つのパートに分解されるだけで済む。このような適切でない分解が行われると、制約の分解等でプログラムの計算量が膨大化して処理負荷が増すため、好ましくない。また、特許文献2に記載された方法は、1要素当たりのビット数を基準に分割を行うため、可変長のパラメタには適用されず、汎用性に乏しい。
これに対して、本実施形態では、対象パラメタごとに、入力された要件で示される分解位置に応じて単位ブロックを定めるので、上記のような無駄な分解をするおそれがない。したがって、制約の分解のための処理負荷が最小限で済み、効率よく正しいパラメタ値が付与される。また、本実施形態では、対象パラメタごとに、入力された要件で示される分解位置に応じて単位ブロックを定めるので、パラメタが可変長であっても特に問題なく適用可能である。
実施形態2.
次に、本発明の第2の実施形態を説明する。図21は、本発明の第2の実施形態のパラメタ値付与装置の概要を示すブロック図である。図21に示すパラメタ値付与装置500は、要件入力部501と、パラメタ分解部502と、制約分解部503と、パラメタ値分解部504と、割当部505とを備える。
要件入力部501は、対象パラメタである1つまたは複数のパラメタへの値付与に関する要件として、対象パラメタ間もしくは対象パラメタを構成する任意の要素間の制約を示す制約情報と、対象パラメタまたはその任意の要素に対するパラメタ値の条件を示すパラメタ値情報とを入力する。
パラメタ分解部502は、要件として入力された情報に基づいて、対象パラメタの各々を、1つ以上の単位ブロックに分解する。
制約分解部503は、対象パラメタの単位ブロックへの分解結果に基づいて、制約情報で示される制約を、単位ブロック間の制約に分解し、分解後の単位ブロック間の制約を再編成する。
パラメタ値分解部504は、対象パラメタの単位ブロックへの分解結果に基づいて、要件としてのパラメタ値情報で示されるパラメタ値の条件を、単位ブロックに対するパラメタ値の条件に分解する。
割当部505は、対象パラメタの単位ブロックへの分解結果、単位ブロック間の制約および単位ブロックに対するパラメタ値の条件に基づいて、対象パラメタの各々に値を付与する。
このような構成を備えることにより、構成が固定でないパラメタに対しても、元々の自由度を残したまま入力される要件に従って正しい値を付与できる。
なお、上記構成において、パラメタ分解部502は、制約情報で示される制約が適用されるパラメタ内の対象範囲の情報、およびパラメタ値情報で示されるパラメタ値の条件が適用されるパラメタ内の対象範囲の情報の少なくともいずれかに基づいて、対象パラメタごとに、当該パラメタ内の分割位置を抽出し、抽出された分割位置に対応するパラメタ分割を合成して、対象パラメタの各々を1つ以上の単位ブロックに分解してもよい。
また、制約情報は、制約関係を有する1つまたは複数のパラメタの情報と、該制約関係が適用されるそれぞれのパラメタ内の対象範囲の情報と、適用される制約の情報とを含み、制約は、値の相等関係または不等関係を含み、パラメタ値情報は、付与対象とされるパラメタの情報と、パラメタ内の対象範囲の情報と、該対象範囲に付与されるパラメタ値の条件とを含んでいてもよい。
また、制約分解部503は、制約情報に、制約関係を有するパラメタ内の対象範囲が当該パラメタの対応する位置にある単位ブロックよりも広い範囲を示す制約が含まれている場合に、当該制約を分解してもよい。
要件入力部501は、要件として、パラメタ分割の対象とされるパラメタの情報と、パラメタ内における任意の1つまたは複数の分割位置の情報とを含むパラメタ分割情報をさらに入力し、パラメタ分解部502は、パラメタ分割情報を含む要件として入力された情報に基づいて、対象パラメタごとに、当該パラメタ内の分割位置を抽出し、抽出された分割位置に対応するパラメタ分割を合成して、対象パラメタの各々を1つ以上の単位ブロックに分解してもよい。
パラメタ分解部502は、対象パラメタごとに、要件として入力される情報により示されるパラメタ内の分割位置の和集合をとることでパラメタ分割を合成し、最終的に残った分割位置で当該対象パラメタを分割してもよい。
また、図1に示す割当部13のように、割当部505も、対象パラメタの単位ブロックへの分解結果と、単位ブロック間の制約とに基づいて、対象パラメタの全ての単位ブロックを分類するパラメタ分類部と、単位ブロックの分類結果と、単位ブロックに対するパラメタ値の条件とに基づいて、分類後の単位ブロックの各々に対して値を付与する値付与部とを含んでいてもよい。
そのような構成において、パラメタ分類部は、対象パラメタの全ての単位ブロックを、同じ値が付与される単位ブロック同士でグループ化された1つまたは複数のグループに分類し、さらに、分類後のグループを、グループ間の関係性を示す辺によって接続したグラフを導出し、値付与部は、グラフで示される単位ブロックのグループおよびグループ間の関係性と、単位ブロックに対するパラメタ値の条件とに基づいて、分類後の単位ブロックの各々に対して値を付与してもよい。
また、図22は、本発明の各実施形態にかかるコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU(Central Processing Unit )1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、ディスプレイ装置1005と、入力デバイス1006とを備える。
上述した実施形態は、コンピュータ1000に実装されてもよい。その場合、該装置の動作は、プログラムの形式で補助記憶装置1003に記憶されていてもよい。CPU1001は、プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、そのプログラムに従って実施形態における所定の処理を実施する。なお、CPU1001は、プログラムに従って動作する情報処理装置の一例であり、CPU以外にも、例えば、MPU(Micro Processing Unit )やMCU(Memory Control Unit )やGPU(Graphics Processing Unit)等を備えていてもよい。
補助記憶装置1003は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000がそのプログラムを主記憶装置1002に展開し、各実施形態における所定の処理を実行してもよい。
また、プログラムは、実施形態における所定の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置1003に既に記憶されている他のプログラムとの組み合わせで実施形態における所定の処理を実現する差分プログラムであってもよい。
インタフェース1004は、他の装置との間で情報の送受信を行う。また、ディスプレイ装置1005は、ユーザに情報を提示する。また、入力デバイス1006は、ユーザからの情報の入力を受け付ける。
また、実施形態における処理内容によっては、コンピュータ1000の一部の要素は省略可能である。例えば、コンピュータ1000がユーザに情報を提示しないのであれば、ディスプレイ装置1005は省略可能である。例えば、コンピュータ1000がユーザから情報入力を受け付けないのであれば、入力デバイス1006は省略可能である。
また、上記の各構成要素の一部または全部は、汎用または専用の回路(Circuitry )、プロセッサ等やこれらの組み合わせによって実施される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、上記の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
上記の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2018年8月28日に出願された日本特許出願2018-158971を基礎とする優先権を主張し、その開示の全てをここに取り込む。
産業上の利用の可能性
本発明は、構成が固定でないパラメタに自動で値を付与する用途に好適に適用可能である。