(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-25
(45)【発行日】2023-02-02
(54)【発明の名称】解析装置、解析方法、および解析プログラム
(51)【国際特許分類】
G06F 8/70 20180101AFI20230126BHJP
【FI】
G06F8/70
(21)【出願番号】P 2019018848
(22)【出願日】2019-02-05
【審査請求日】2021-06-01
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100083806
【氏名又は名称】三好 秀和
(74)【代理人】
【識別番号】100129230
【氏名又は名称】工藤 理恵
(72)【発明者】
【氏名】大柳 浩之
【審査官】杉浦 孝光
(56)【参考文献】
【文献】特開2018-010580(JP,A)
【文献】特開2015-212911(JP,A)
【文献】大柳浩之、外4名,OpSへの適用に向けたOSS評価法の検討,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2019年01月17日,Vol.118 No.420,pp.15-20
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/70- 8/77
(57)【特許請求の範囲】
【請求項1】
解析装置であって、
接続元OSS(Open Source Software)の第1ソースコードと、接続先OSSの第2ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得部と、
第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を算出する第1解析部と、
前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を算出する第2解析部と、
第1相性度および第2相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第3解析部と、を備えること
を特徴とする解析装置。
【請求項2】
請求項1記載の解析装置であって、
前記接続元OSSと前記接続先OSSとを結ぶ接続線を、前記接続相性度に応じた太さまたは種類で描画した画像を生成する可視化部を、備えること
を特徴とする解析装置。
【請求項3】
請求項2記載の解析装置であって、
第3解析部は、前記接続相性度を記憶部に記憶し、
前記可視化部は、前記記憶部に前記接続元OSSに対応する他の接続先OSSとの接続相性度が記憶されている場合、前記他の接続先OSSとの接続相性度を基づいて、前記接続元OSSと前記他の接続先OSSとを結ぶ接続線を、前記画像に描画すること
を特徴とする解析装置。
【請求項4】
請求項1から3のいずれか1項に記載の解析装置であって、
第1相性度の重みおよび第2相性度の重みの少なくとも1つを受け付ける受付部を、備え、
第3解析部は、前記重みを用いて前記接続相性度を算出すること
を特徴とする解析装置。
【請求項5】
解析装置であって、
接続元ソフトウェアの第1ソースコードと、接続先ソフトウェアの第2ソースコードと、前記接続元ソフトウェアおよび前記接続先ソフトウェアの接続用プラグインと、を取得する取得部と、
第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を算出する第1解析部と、
前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を算出する第2解析部と、
第1相性度および第2相性度を用いて、前記接続元ソフトウェアと前記接続先ソフトウェアとの接続相性度を算出する第3解析部と、を備えること
を特徴とする解析装置。
【請求項6】
コンピュータが行う解析方法であって、
接続元OSS(Open Source Software)の第1ソースコードと、接続先OSSの第2ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得ステップと、
第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を算出する第1解析ステップと、
前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を算出する第2解析ステップと、
第1相性度および第2相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第3解析ステップと、を行うこと
を特徴とする解析方法。
【請求項7】
請求項6記載の解析方法であって、
前記接続元OSSと前記接続先OSSとを結ぶ接続線を、前記接続相性度に応じた太さまたは種類で描画した画像を生成する可視化ステップを、行うこと
を特徴とする解析
方法。
【請求項8】
請求項1から5のいずれか1項に記載の解析装置として、コンピュータを機能させること、を特徴とする解析プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、OSSなどのソフトウェアの接続相性を解析する解析装置、解析方法、および解析プログラムに関する。
【背景技術】
【0002】
OpS(Operation Support System)などのシステムの機能を部品化し、部品化した各機能をOSS(Open Source Software)により実現することで、システムの開発期間の短縮、開発費の削減、拡張性の向上などが期待されている。OpSは、通信サービスを提供している事業者(キャリア)が、サービスを構築および運営するために必要なシステムである。OSSは、ソースコードの改変や再配布が自由に認められている無償のソフトウェアである。
【0003】
また、プログラムの複雑度を算出する技術が存在する(特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
複数のOSSを組み合わせてシステムを構築する際にはOSS間の接続が必須である。OSS間の接続にあたっては、OSSが高度化している他、流通データ(syslog, file, stdin/out)の可否などが接続先のOSS毎に異なり、対応状況が変化する。このため、システム開発の都度、複数のOSSの組合せの決定には手作業による調査が必要となる。
【0006】
将来的には、候補となるOSSの数が膨大になることが予想され、これにより、OSSの選択肢が多くなる。そのため、最適なOSSを選択するための調査の稼働負荷が増大し、システム開発の迅速化が損なわれるという問題が発生する。
【0007】
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、OSSなどのソフトウェア間の接続相性を解析する技術を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明の一態様は、解析装置であって、接続元OSS(Open Source Software)の第1ソースコードと、接続先OSSの第2ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得部と、第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を算出する第1解析部と、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を算出する第2解析部と、第1相性度および第2相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第3解析部と、を備える。
【0009】
本発明の一態様は、解析装置であって、接続元ソフトウェアの第1ソースコードと、接続先ソフトウェアの第2ソースコードと、前記接続元ソフトウェアおよび前記接続先ソフトウェアの接続用プラグインと、を取得する取得部と、第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を算出する第1解析部と、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を算出する第2解析部と、第1相性度および第2相性度を用いて、前記接続元ソフトウェアと前記接続先ソフトウェアとの接続相性度を算出する第3解析部と、を備える。
【0010】
本発明の一態様は、コンピュータが行う解析方法であって、接続元OSS(Open Source Software)の第1ソースコードと、接続先OSSの第2ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得ステップと、第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を算出する第1解析ステップと、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を算出する第2解析ステップと、第1相性度および第2相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第3解析ステップと、を行う。
【0011】
本発明の一態様は、上記解析装置として、コンピュータを機能させることを特徴とする解析プログラムである。
【発明の効果】
【0012】
本発明によれば、OSSなどのソフトウェア間の接続相性を解析する技術を提供することができる。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施形態の概要を説明するための説明図である。
【
図2】本発明の実施形態に係る解析システムの全体構成図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について、図面を参照して説明する。なお、以下の本実施形態では、OSSについて説明するが、本発明はOSSに限定されるものではなく、OSS以外のソフトウェア間の接続相性を解析してもよい。
【0015】
図1は、本発明の実施形態の概要を説明するための説明図である。本実施形態では、複数のOSS(Open Source Software)を用いて、あるシステム9を構築するものとする。図示する例では、3つのOSSと、独自に開発したソフトウェアとを用いて、システムを構築することを想定している。
【0016】
この場合、機能Cを提供するOSS-Cは、機能Bを提供するOSS-Bと接続するため、事前にOSS-CとOSS-Bとの間の接続相性を解析する必要がある。本実施形態では、手作業による調査、または、OSS-CおよびOSS-Bを実際にシステム9に実装することなく、OSS-CおよびOSS-Bの接続相性を解析する。ここで、OSS-Cは接続元OSSで、OSS-Bは接続先OSSである。
【0017】
本実施形態では、プラグインの充実度を用いて接続相性を解析する。具体的には、OSSのプラグインには、OSS本体のソースコードに含まれるプラグイン(本体プラグイン)と、外部プラグインとしてOSSリポジトリから取得する接続用プラグインの2種類が存在する。本実施形態では、これら2つのプラグインを対象に接続相性を解析する。なお、OSS-BとOSS-Aと間の接続相性についても、本実施形態では、同様に解析することができる。
【0018】
図2は、本発明の実施形態に係る解析システムの全体を示すシステム構成図である。図示する解析システムは、解析装置1と、ユーザ端末2と、OSSリポジトリ3とを備える。
【0019】
OSSリポジトリ3は、複数のOSSに関する様々な情報を一元的に管理するデータベースである。
【0020】
ユーザ端末2は、解析装置1に解析対象のOSSを入力するとともに、解析装置1の解析結果を表示する装置である。ユーザ端末2には、例えば、PC、タブレット、スマートフォンなどのコンピュータが用いられる。
【0021】
解析装置1は、OSS間の接続の相性を解析する装置である。解析装置1には、例えば、サーバ、PCなどのコンピュータが用いられる。図示する解析装置1は、受付部11と、取得部12と、解析部13と、可視化部14と、記憶部15とを備える。
【0022】
受付部11は、解析対象の2つのOSSが指定された解析要求を、ユーザ端末2から受け付ける。例えば、解析要求には、接続元OSSおよび接続先OSSの名称などの識別情報が含まれる。本実施形態では、接続元OSSおよび接続先OSSの名称が含まれるものとする。また、受付部11は、第1相性度の重みおよび第2相性度の重みの少なくとも1つを受け付けてもよい。
【0023】
取得部12は、接続元OSSの第1ソースコードと、接続先OSSの第2ソースコードと、接続元OSSおよび接続先OSSの接続用プラグイン(外部プラグイン)とを、OSSリポジトリ3から取得する。
【0024】
解析部13は、第1解析部131と、第2解析部132と、第3解析部133とを備える。第1解析部131は、第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を解析および算出する。第2解析部132は、接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を解析および算出する。第3解析部133は、第1相性度および第2相性度を用いて、接続元OSSと接続先OSSとの接続相性度を算出する。また、第3解析部133は、重みを用いて接続相性度を算出してもよい。第1解析部131、第2解析部132および、第3解析部133は、それぞれの分析結果を記憶部15に記憶する。
【0025】
可視化部14は、接続元OSSと接続先OSSとを結ぶ接続線を、解析部13が算出した接続相性度に応じた太さまたは種類で描画した画像(解析結果画像)を生成する。可視化部14は、生成した画像をユーザ端末2に送信し、ユーザ端末2のディスプレイ(出力装置)に表示させる。また、可視化部14は、記憶部15に接続元OSSに対応する他の接続先OSSとの接続相性度が記憶されている場合、他の接続先OSSとの接続相性度を基づいて、接続元OSSと他の接続先OSSとを結ぶ接続線を、生成する画像に描画してもよい。
【0026】
次に、解析部13の処理について説明する。
【0027】
図3は、第1解析部131の処理を説明するための説明図である。図示する例では、接続元OSSとして「fluentd」を、接続先OSSとして「Elasticsearch」を用いる。
【0028】
第1解析部131は、取得部12がOSSリポジトリ3から取得した、接続元OSSのソースコードおよび接続先OSSのソースコードを解析する。すなわち、第1解析部131は、本体プラグインを解析する。
【0029】
具体的には、第1解析部131は、接続元OSSのソースコードに含まれるアウトプットプラグインと、接続先OSSのソースコードに含まれるインプットプラグインとで重複するデータ形式の数に基づいて、接続元OSSと接続先OSSとの第1相性度を解析する。アウトプットプラグインと、インプットプラグインとでデータ形式が重複する場合、接続先OSSは接続元OSSをサポート済みであるとみなすことができる。そのため、本実施形態では、第1解析部131は、アウトプットプラグインと、インプットプラグインとで重複するデータ形式をカウントし、重複するデータ形式の数を第1相性度とする。
【0030】
図示する例では、アウトプットプラグイン31のデータ形式は、「file」、「syslog」、「json」である。インプットプラグイン32のデータ形式は、「syslog」、「json」である。したがって、重複するデータ形式は、「syslog」および「json」の2つである。この場合、第1解析部131は、第1相性度を「2」と解析する。このように、第1解析部131は、流通データ(syslog、json、file、stdin/outなど)の重複を解析し、第1相性度を算出する。
【0031】
図4は、第2解析部132の処理を説明するための説明図である。図示する例でも、接続元OSSとして「fluentd」を、接続先OSSとして「Elasticsearch」を用いる。
【0032】
第2解析部132は、取得部12がOSSリポジトリ3から取得した接続用プラグインのソースコードを解析する。接続用プラグインは、接続元OSSと接続先OSSとを接続するための外部プラグインである。
【0033】
第2解析部132は、接続用プラグインのソースコードに含まれる関数の数およびインスタンスの数に基づいて、接続元OSSと接続先OSSとの第2相性度を解析する。関数は、接続用プラグインのソースコードに記述されたメソッドを意味する。例えば、前記ソースコードのプログラミング言語がRubyの場合、第2解析部132は、前記ソースコードの中で「def xxxx」と記述された記述部分(コード)の数をカウントすることで、前記ソースコードに含まれる関数の数を解析する。
【0034】
また、インスタンスは、関数で使用する変数を意味する。接続用プラグインのソースコードのプログラミング言語がRubyの場合、第2解析部132は、前記ソースコードの中で「@xxxx」と記述された記述部分の数をカウントすることで、前記ソースコードに含まれるインスタンスの数を解析する。
【0035】
図示する例では、OSSリポジトリ3から取得した接続用プラグインは、第1の接続用プラグイン(fluentd-filter-Elasticsearch)41と、第2の接続用プラグイン(fluentd-output-Elasticsearch)42の2である。第1の接続用プラグインでは、関数の数は20で、インスタンスの数は10であり、関数およびインスタンスの合計は30である。第2の接続用プラグインでは、関数の数は15で、インスタンスの数は5であり、関数およびインスタンスの合計は20である。この場合、第2解析部132は、第1の接続用プラグインおよび第2接続用プラグインの関数の数およびインスタンスの数を合計した「50」を、第2相性度とする。
【0036】
なお、接続用プラグインがOSSリポジトリ3に存在しない場合、すなわち、接続用プラグインがOSSリポジトリ3から取得できない場合、第2相性度は0となる。
【0037】
第3解析部133は、第1相性度および第2相性度を用いて、接続元OSSと接続先OSSとの接続相性度を算出する。
【0038】
例えば、第3解析部133は、第1相性度と第2相性度との合計を接続相性度としてもよい。また、第3解析部133は、第1相性度と第2相性度の少なくとも1つに、重み(重み係数)を乗算し、重みを乗算した後の第1相性度と第2相性度値とを加算して接続相性度としてもよい。重みを用いる場合、第3解析部133は、以下の式により接続相性度を算出する。
【0039】
接続相性度=第1相性度×第1相性度の重み+第2相性度×第2相性度の重み
第1相性度の重み、および、第2相性度の重みは、それぞれ所定の値を用いてよく、あるいは、ユーザがユーザ端末2を用いて指定した値を用いてもよい。また、ユーザは、第1相性度の重み、および、第2相性度の重みの少なくとも1つを指定してもよい。
【0040】
第1相性度を優先する場合は、第1相性度用の重みを比較的大きな値とし、第2相性度用の重みを比較的小さな値とする。この場合、
図3および
図4に示す相性度を用いた接続相性度の例は、以下のとおりである。
【0041】
2(第1相性度)×100(第1相性度の重み)+50(第2相性度)×1(第2相性度の重み)=250
また、第2相性度を優先する場合は、第2相性度用の重みを比較的大きな値とし、第1相性度用の重みを比較的小さな値とする。この場合、
図3および
図4に示す相性度を用いた接続相性度の例は、以下のとおりである。
【0042】
2(第1相性度)×10(第1相性度の重み)+50(第2相性度)×5(第2相性度の重み)=270
次に、本実施形態の解析装置1が行う解析処理について説明する。
【0043】
図5は、本実施形態の解析処理を示すフローチャートである。
【0044】
ユーザは、所望の2つのOSSの接続相性の解析要求をユーザ端末2に入力する。ユーザ端末2は、ユーザが入力した解析要求を解析装置1に送信する。これにより、解析装置1の受付部11は、2つのOSSが指定された解析要求を、ユーザ端末2から受信する(ステップS11)。
【0045】
解析要求には、接続元OSSおよび接続先OSSの名称(識別情報)が含まれる。また、ユーザが、第1相性度の重みおよび第2相性度の重みの少なくとも1つを、ユーザ端末2に入力した場合、解析要求には第1相性度の重みおよび第2相性度の重みの少なくとも1つが含まれる。
【0046】
取得部12は、OSSリポジトリ3にアクセスする。そして、取得部12は、解析要求に含まれる接続元OSSおよび接続先OSSをキーとして、接続元OSSのソースコード、接続先OSSのソースコードをOSSリポジトリ3から取得する。また、取得部12は、接続元OSSおよび接続先OSSをキーとして、接続用プラグインをOSSリポジトリ3から取得する(ステップS12)。
【0047】
第1解析部131は、接続元OSSのソースコードのアウトプットプラグインと、接続先OSSのソースコードのインプットプラグインとを解析し、アウトプットプラグインとインプットプラグインで重複するデータ形式の数をカウントする。そして、第1解析部131は、重複するデータ形式の数に基づいて第1相性度を算出する(ステップS13)。
【0048】
第2解析部132は、接続用プラグインのソースコードを解析し、ソースコードに含まれる関数の数およびインスタンスの数をカウントする。そして、第2解析部132は、関数の数およびインスタンスの数に基づいて、第2相性度を算出する(ステップS14)。複数の接続用プラグインを取得した場合、第2解析部132は、接続用プラグイン毎に関数の数およびインスタンスの数をカウントし、これらの合計に基づいて第2相性度を算出する。
【0049】
第3解析部133は、第1相性度および第2相性度を用いて、接続元OSSと接続先OSSとの接続相性度を算出する(ステップS15)。また、第3解析部133は、ステップS11の解析要求に重みが含まれている場合、重みを用いて接続相性度を算出する。
【0050】
可視化部14は、接続元OSSと接続先OSSとを結ぶ接続線を、第3解析部133が算出した接続相性度に応じた太さまたは種類で描画した画像を生成する。そして、可視化部14は、生成した画像をユーザ端末2に送信し、ユーザ端末2のディスプレイに表示させる(ステップ16)。
【0051】
第3解析部133は、算出した接続相性度などの分析結果を記憶部15に記憶する(ステップS17)。また、第1解析部131および第2解析部132も、分析結果を記憶部に記憶する。
【0052】
図6は、可視化部14が生成し、ユーザ端末2に表示される分析結果画像の一例を示す図である。図示する画像では、解析要求で指定された接続元OSS(fluentd)と、接続先OSS(Elasticsearch)との接続線61を、第3解析部133が算出した接続相性度(図示する例では35)に応じた太さで描画する。また、図示する例では、接続相性度が0以外の場合は実線で描画し、接続相性度が0の場合は点線で描画する。接続相性度が0の場合は、第1相性度および第2相性度が0の場合である。図示するように、可視化部14は、検索した接続用プラグイン64についても画像に描画してもよい。
【0053】
また、図示する例では、可視化部14は、記憶部15に接続元OSSに対応する他の接続先OSS65、66との解析結果(接続相性度等)が記憶されている場合、他の接続先OSS65、66との解析結果に基づいて、接続元OSSと他の接続先OSSとを結ぶ接続線62、63を、生成する画像に描画してもよい。なお、可視化部14は、他の接続先OSS66(NewOSS)との接続相性度は0であるため、接続元OSSとの接続線63を、点線で描画する。
【0054】
以上説明した本実施形態の解析装置1は、接続元OSSの第1ソースコードと、接続先OSSの第2ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得部12と、第1ソースコードのアウトプットプラグインと、第2ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第1相性度を算出する第1解析部131と、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第2相性度を算出する第2解析部132と、第1相性度および第2相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第3解析部133と、を備える。
【0055】
これにより本実施形態では、手作業による調査やOSSの実装を行うことなく、OSS間の接続の相性(プラグインの充実度)を解析することができる。したがって、本実施形態では、大規模システムの開発において、システムを部品化し、各部品をOSSなどの既存のソフトウェアで実現する際に、適切なOSSを迅速に選定し、適用することで、システム開発の期間および開発費用を大幅に削減することができる。また、適切なOSSを選定することで、システムの拡張性を向上することができる。
【0056】
また、本実施形態の解析装置1は、接続元OSSと接続先OSSとを結ぶ接続線を、接続相性度に応じた太さまたは種類で描画した画像を生成する可視化部を備える。これにより、本実施形態では、ユーザは、OSSの接続相性度を、一目で(直感的に)理解することができる。
【0057】
なお、上記説明した解析装置1には、例えば、CPU(Central Processing Unit、プロセッサ)と、メモリと、ストレージ(HDD:Hard Disk Drive、SSD:Solid State Drive)と、通信装置と、入力装置と、出力装置とを備える汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPUがメモリ上にロードされた所定のプログラムを実行することにより、解析装置1の各機能が実現される。また、解析装置1用のプログラムは、HDD、SSD、USBメモリ、CD-ROM、DVD-ROM、MOなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【0058】
また、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、上記実施形態では、OSS間の接続相性を解析することとしたが、本発明はOSSに限定されるものではなく、OSS以外のソフトウェア間の接続相性を解析してもよい。
【符号の説明】
【0059】
1 :解析装置
11 :受付部
12 :取得部
13 :解析部
131:第1解析部
132:第2解析部
133:第3解析部
14 :可視化部
15 :記憶部
2 :ユーザ端末
3 :OSSリポジトリ