(57)【要約】【課題】OSSなどのソフトウェア間の接続相性を解析する技術を提供する。【解決手段】解析装置１であって、接続元OSSの第１ソースコードと、接続先OSSの第２ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得部１２と、第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析部１３１と、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析部１３２と、第１相性度および第２相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第３解析部１３３と、を備える。【選択図】図２
2020126471.tif 000002
【特許請求の範囲】
【請求項１】
解析装置であって、
接続元OSS（Open Source Software）の第１ソースコードと、接続先OSSの第２ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得部と、
第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析部と、
前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析部と、
第１相性度および第２相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第３解析部と、を備えること
を特徴とする解析装置。
【請求項２】
請求項１記載の解析装置であって、
前記接続元OSSと前記接続先OSSとを結ぶ接続線を、前記接続相性度に応じた太さまたは種類で描画した画像を生成する可視化部を、備えること
を特徴とする解析装置。
【請求項３】
請求項２記載の解析装置であって、
第３解析部は、前記接続相性度を記憶部に記憶し、
前記可視化部は、前記記憶部に前記接続元OSSに対応する他の接続先OSSとの接続相性度が記憶されている場合、前記他の接続先OSSとの接続相性度を基づいて、前記接続元OSSと前記他の接続先OSSとを結ぶ接続線を、前記画像に描画すること
を特徴とする解析装置。
【請求項４】
請求項１から３のいずれか１項に記載の解析装置であって、
第１相性度の重みおよび第２相性度の重みの少なくとも１つを受け付ける受付部を、備え、
第３解析部は、前記重みを用いて前記接続相性度を算出すること
を特徴とする解析装置。
【請求項５】
解析装置であって、
接続元ソフトウェアの第１ソースコードと、接続先ソフトウェアの第２ソースコードと、前記接続元ソフトウェアおよび前記接続先ソフトウェアの接続用プラグインと、を取得する取得部と、
第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析部と、
前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析部と、
第１相性度および第２相性度を用いて、前記接続元ソフトウェアと前記接続先ソフトウェアとの接続相性度を算出する第３解析部と、を備えること
を特徴とする解析装置。
【請求項６】
コンピュータが行う解析方法であって、
接続元OSS（Open Source Software）の第１ソースコードと、接続先OSSの第２ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得ステップと、
第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析ステップと、
前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析ステップと、
第１相性度および第２相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第３解析ステップと、を行うこと
を特徴とする解析方法。
【請求項７】
請求項６記載の解析方法であって、
前記接続元OSSと前記接続先OSSとを結ぶ接続線を、前記接続相性度に応じた太さまたは種類で描画した画像を生成する可視化ステップを、行うこと
を特徴とする解析装置。
【請求項８】
請求項１から５のいずれか１項に記載の解析装置として、コンピュータを機能させること、を特徴とする解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、OSSなどのソフトウェアの接続相性を解析する解析装置、解析方法、および解析プログラムに関する。
【背景技術】
【０００２】
OpS（Operation Support System）などのシステムの機能を部品化し、部品化した各機能をOSS（Open Source Software）により実現することで、システムの開発期間の短縮、開発費の削減、拡張性の向上などが期待されている。OpSは、通信サービスを提供している事業者（キャリア）が、サービスを構築および運営するために必要なシステムである。OSSは、ソースコードの改変や再配布が自由に認められている無償のソフトウェアである。
【０００３】
また、プログラムの複雑度を算出する技術が存在する（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2014-032466号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のOSSを組み合わせてシステムを構築する際にはOSS間の接続が必須である。OSS間の接続にあたっては、OSSが高度化している他、流通データ（syslog, file, stdin/out）の可否などが接続先のOSS毎に異なり、対応状況が変化する。このため、システム開発の都度、複数のOSSの組合せの決定には手作業による調査が必要となる。
【０００６】
将来的には、候補となるOSSの数が膨大になることが予想され、これにより、OSSの選択肢が多くなる。そのため、最適なOSSを選択するための調査の稼働負荷が増大し、システム開発の迅速化が損なわれるという問題が発生する。
【０００７】
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、OSSなどのソフトウェア間の接続相性を解析する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の一態様は、解析装置であって、接続元OSS（Open Source Software）の第１ソースコードと、接続先OSSの第２ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得部と、第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析部と、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析部と、第１相性度および第２相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第３解析部と、を備える。
【０００９】
本発明の一態様は、解析装置であって、接続元ソフトウェアの第１ソースコードと、接続先ソフトウェアの第２ソースコードと、前記接続元ソフトウェアおよび前記接続先ソフトウェアの接続用プラグインと、を取得する取得部と、第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析部と、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析部と、第１相性度および第２相性度を用いて、前記接続元ソフトウェアと前記接続先ソフトウェアとの接続相性度を算出する第３解析部と、を備える。
【００１０】
本発明の一態様は、コンピュータが行う解析方法であって、接続元OSS（Open Source Software）の第１ソースコードと、接続先OSSの第２ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得ステップと、第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析ステップと、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析ステップと、第１相性度および第２相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第３解析ステップと、を行う。
【００１１】
本発明の一態様は、上記解析装置として、コンピュータを機能させることを特徴とする解析プログラムである。
【発明の効果】
【００１２】
本発明によれば、OSSなどのソフトウェア間の接続相性を解析する技術を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態の概要を説明するための説明図である。
【図２】本発明の実施形態に係る解析システムの全体構成図である。
【図３】第１相性度を説明するための図である。
【図４】第２相性度を説明するための図である。
【図５】解析処理を示すフローチャートである。
【図６】解析結果を示す画像の一例である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図面を参照して説明する。なお、以下の本実施形態では、OSSについて説明するが、本発明はOSSに限定されるものではなく、OSS以外のソフトウェア間の接続相性を解析してもよい。
【００１５】
図１は、本発明の実施形態の概要を説明するための説明図である。本実施形態では、複数のOSS（Open Source Software）を用いて、あるシステム９を構築するものとする。図示する例では、3つのOSSと、独自に開発したソフトウェアとを用いて、システムを構築することを想定している。
【００１６】
この場合、機能Cを提供するOSS-Cは、機能Bを提供するOSS-Bと接続するため、事前にOSS-CとOSS-Bとの間の接続相性を解析する必要がある。本実施形態では、手作業による調査、または、OSS-CおよびOSS-Bを実際にシステム９に実装することなく、OSS-CおよびOSS-Bの接続相性を解析する。ここで、OSS-Cは接続元OSSで、OSS-Bは接続先OSSである。
【００１７】
本実施形態では、プラグインの充実度を用いて接続相性を解析する。具体的には、OSSのプラグインには、OSS本体のソースコードに含まれるプラグイン（本体プラグイン）と、外部プラグインとしてOSSリポジトリから取得する接続用プラグインの２種類が存在する。本実施形態では、これら２つのプラグインを対象に接続相性を解析する。なお、OSS-BとOSS-Aと間の接続相性についても、本実施形態では、同様に解析することができる。
【００１８】
図２は、本発明の実施形態に係る解析システムの全体を示すシステム構成図である。図示する解析システムは、解析装置１と、ユーザ端末２と、OSSリポジトリ３とを備える。
【００１９】
OSSリポジトリ３は、複数のOSSに関する様々な情報を一元的に管理するデータベースである。
【００２０】
ユーザ端末２は、解析装置１に解析対象のOSSを入力するとともに、解析装置１の解析結果を表示する装置である。ユーザ端末２には、例えば、PC、タブレット、スマートフォンなどのコンピュータが用いられる。
【００２１】
解析装置１は、OSS間の接続の相性を解析する装置である。解析装置１には、例えば、サーバ、PCなどのコンピュータが用いられる。図示する解析装置１は、受付部１１と、取得部１２と、解析部１３と、可視化部１４と、記憶部１５とを備える。
【００２２】
受付部１１は、解析対象の２つのOSSが指定された解析要求を、ユーザ端末２から受け付ける。例えば、解析要求には、接続元OSSおよび接続先OSSの名称などの識別情報が含まれる。本実施形態では、接続元OSSおよび接続先OSSの名称が含まれるものとする。また、受付部１１は、第１相性度の重みおよび第２相性度の重みの少なくとも１つを受け付けてもよい。
【００２３】
取得部１２は、接続元OSSの第１ソースコードと、接続先OSSの第２ソースコードと、接続元OSSおよび接続先OSSの接続用プラグイン（外部プラグイン）とを、OSSリポジトリ３から取得する。
【００２４】
解析部１３は、第１解析部１３１と、第２解析部１３２と、第３解析部１３３とを備える。第１解析部１３１は、第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を解析および算出する。第２解析部１３２は、接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を解析および算出する。第３解析部１３３は、第１相性度および第２相性度を用いて、接続元OSSと接続先OSSとの接続相性度を算出する。また、第３解析部１３３は、重みを用いて接続相性度を算出してもよい。第１解析部１３１、第２解析部１３２および、第３解析部１３３は、それぞれの分析結果を記憶部１５に記憶する。
【００２５】
可視化部１４は、接続元OSSと接続先OSSとを結ぶ接続線を、解析部１３が算出した接続相性度に応じた太さまたは種類で描画した画像（解析結果画像）を生成する。可視化部１４は、生成した画像をユーザ端末２に送信し、ユーザ端末２のディスプレイ（出力装置）に表示させる。また、可視化部１４は、記憶部１５に接続元OSSに対応する他の接続先OSSとの接続相性度が記憶されている場合、他の接続先OSSとの接続相性度を基づいて、接続元OSSと他の接続先OSSとを結ぶ接続線を、生成する画像に描画してもよい。
【００２６】
次に、解析部１３の処理について説明する。
【００２７】
図３は、第１解析部１３１の処理を説明するための説明図である。図示する例では、接続元OSSとして「fluentd」を、接続先OSSとして「Elasticsearch」を用いる。
【００２８】
第１解析部１３１は、取得部１２がOSSリポジトリ３から取得した、接続元OSSのソースコードおよび接続先OSSのソースコードを解析する。すなわち、第１解析部１３１は、本体プラグインを解析する。
【００２９】
具体的には、第１解析部１３１は、接続元OSSのソースコードに含まれるアウトプットプラグインと、接続先OSSのソースコードに含まれるインプットプラグインとで重複するデータ形式の数に基づいて、接続元OSSと接続先OSSとの第１相性度を解析する。アウトプットプラグインと、インプットプラグインとでデータ形式が重複する場合、接続先OSSは接続元OSSをサポート済みであるとみなすことができる。そのため、本実施形態では、第１解析部１３１は、アウトプットプラグインと、インプットプラグインとで重複するデータ形式をカウントし、重複するデータ形式の数を第１相性度とする。
【００３０】
図示する例では、アウトプットプラグイン３１のデータ形式は、「file」、「syslog」、「json」である。インプットプラグイン３２のデータ形式は、「syslog」、「json」である。したがって、重複するデータ形式は、「syslog」および「json」の２つである。この場合、第１解析部１３１は、第１相性度を「２」と解析する。このように、第１解析部１３１は、流通データ（syslog、json、file、stdin/outなど）の重複を解析し、第１相性度を算出する。
【００３１】
図４は、第２解析部１３２の処理を説明するための説明図である。図示する例でも、接続元OSSとして「fluentd」を、接続先OSSとして「Elasticsearch」を用いる。
【００３２】
第２解析部１３２は、取得部１２がOSSリポジトリ３から取得した接続用プラグインのソースコードを解析する。接続用プラグインは、接続元OSSと接続先OSSとを接続するための外部プラグインである。
【００３３】
第２解析部１３２は、接続用プラグインのソースコードに含まれる関数の数およびインスタンスの数に基づいて、接続元OSSと接続先OSSとの第２相性度を解析する。関数は、接続用プラグインのソースコードに記述されたメソッドを意味する。例えば、前記ソースコードのプログラミング言語がRubyの場合、第２解析部１３２は、前記ソースコードの中で「def xxxx」と記述された記述部分（コード）の数をカウントすることで、前記ソースコードに含まれる関数の数を解析する。
【００３４】
また、インスタンスは、関数で使用する変数を意味する。接続用プラグインのソースコードのプログラミング言語がRubyの場合、第２解析部１３２は、前記ソースコードの中で「@xxxx」と記述された記述部分の数をカウントすることで、前記ソースコードに含まれるインスタンスの数を解析する。
【００３５】
図示する例では、OSSリポジトリ３から取得した接続用プラグインは、第１の接続用プラグイン（fluentd-filter-Elasticsearch）４１と、第２の接続用プラグイン（fluentd-output-Elasticsearch）４２の２である。第１の接続用プラグインでは、関数の数は２０で、インスタンスの数は１０であり、関数およびインスタンスの合計は３０である。第２の接続用プラグインでは、関数の数は１５で、インスタンスの数は５であり、関数およびインスタンスの合計は２０である。この場合、第２解析部１３２は、第１の接続用プラグインおよび第２接続用プラグインの関数の数およびインスタンスの数を合計した「50」を、第２相性度とする。
【００３６】
なお、接続用プラグインがOSSリポジトリ３に存在しない場合、すなわち、接続用プラグインがOSSリポジトリ３から取得できない場合、第２相性度は０となる。
【００３７】
第３解析部１３３は、第１相性度および第２相性度を用いて、接続元OSSと接続先OSSとの接続相性度を算出する。
【００３８】
例えば、第３解析部１３３は、第１相性度と第２相性度との合計を接続相性度としてもよい。また、第３解析部１３３は、第１相性度と第２相性度の少なくとも１つに、重み（重み係数）を乗算し、重みを乗算した後の第１相性度と第２相性度値とを加算して接続相性度としてもよい。重みを用いる場合、第３解析部１３３は、以下の式により接続相性度を算出する。
【００３９】
接続相性度＝第１相性度×第１相性度の重み＋第２相性度×第２相性度の重み
第１相性度の重み、および、第２相性度の重みは、それぞれ所定の値を用いてよく、あるいは、ユーザがユーザ端末２を用いて指定した値を用いてもよい。また、ユーザは、第１相性度の重み、および、第２相性度の重みの少なくとも１つを指定してもよい。
【００４０】
第１相性度を優先する場合は、第１相性度用の重みを比較的大きな値とし、第２相性度用の重みを比較的小さな値とする。この場合、図３および図４に示す相性度を用いた接続相性度の例は、以下のとおりである。
【００４１】
２（第１相性度）×１００（第１相性度の重み）＋５０（第２相性度）×１（第２相性度の重み）＝２５０
また、第２相性度を優先する場合は、第２相性度用の重みを比較的大きな値とし、第１相性度用の重みを比較的小さな値とする。この場合、図３および図４に示す相性度を用いた接続相性度の例は、以下のとおりである。
【００４２】
２（第１相性度）×１０（第１相性度の重み）＋５０（第２相性度）×５（第２相性度の重み）＝２７０
次に、本実施形態の解析装置１が行う解析処理について説明する。
【００４３】
図５は、本実施形態の解析処理を示すフローチャートである。
【００４４】
ユーザは、所望の２つのOSSの接続相性の解析要求をユーザ端末２に入力する。ユーザ端末２は、ユーザが入力した解析要求を解析装置１に送信する。これにより、解析装置１の受付部１１は、２つのOSSが指定された解析要求を、ユーザ端末２から受信する（ステップＳ１１）。
【００４５】
解析要求には、接続元OSSおよび接続先OSSの名称（識別情報）が含まれる。また、ユーザが、第１相性度の重みおよび第２相性度の重みの少なくとも１つを、ユーザ端末２に入力した場合、解析要求には第１相性度の重みおよび第２相性度の重みの少なくとも１つが含まれる。
【００４６】
取得部１２は、OSSリポジトリ３にアクセスする。そして、取得部１２は、解析要求に含まれる接続元OSSおよび接続先OSSをキーとして、接続元OSSのソースコード、接続先OSSのソースコードをOSSリポジトリ３から取得する。また、取得部１２は、接続元OSSおよび接続先OSSをキーとして、接続用プラグインをOSSリポジトリ３から取得する（ステップＳ１２）。
【００４７】
第１解析部１３１は、接続元OSSのソースコードのアウトプットプラグインと、接続先OSSのソースコードのインプットプラグインとを解析し、アウトプットプラグインとインプットプラグインで重複するデータ形式の数をカウントする。そして、第１解析部１３１は、重複するデータ形式の数に基づいて第１相性度を算出する（ステップＳ１３）。
【００４８】
第２解析部１３２は、接続用プラグインのソースコードを解析し、ソースコードに含まれる関数の数およびインスタンスの数をカウントする。そして、第２解析部１３２は、関数の数およびインスタンスの数に基づいて、第２相性度を算出する（ステップＳ１４）。複数の接続用プラグインを取得した場合、第２解析部１３２は、接続用プラグイン毎に関数の数およびインスタンスの数をカウントし、これらの合計に基づいて第２相性度を算出する。
【００４９】
第３解析部１３３は、第１相性度および第２相性度を用いて、接続元OSSと接続先OSSとの接続相性度を算出する（ステップＳ１５）。また、第３解析部１３３は、ステップＳ１１の解析要求に重みが含まれている場合、重みを用いて接続相性度を算出する。
【００５０】
可視化部１４は、接続元OSSと接続先OSSとを結ぶ接続線を、第３解析部１３３が算出した接続相性度に応じた太さまたは種類で描画した画像を生成する。そして、可視化部１４は、生成した画像をユーザ端末２に送信し、ユーザ端末２のディスプレイに表示させる（ステップ１６）。
【００５１】
第３解析部１３３は、算出した接続相性度などの分析結果を記憶部１５に記憶する（ステップＳ１７）。また、第１解析部１３１および第２解析部１３２も、分析結果を記憶部に記憶する。
【００５２】
図６は、可視化部１４が生成し、ユーザ端末２に表示される分析結果画像の一例を示す図である。図示する画像では、解析要求で指定された接続元OSS（fluentd）と、接続先OSS（Elasticsearch）との接続線６１を、第３解析部１３３が算出した接続相性度（図示する例では３５）に応じた太さで描画する。また、図示する例では、接続相性度が０以外の場合は実線で描画し、接続相性度が０の場合は点線で描画する。接続相性度が０の場合は、第１相性度および第２相性度が０の場合である。図示するように、可視化部１４は、検索した接続用プラグイン６４についても画像に描画してもよい。
【００５３】
また、図示する例では、可視化部１４は、記憶部１５に接続元OSSに対応する他の接続先OSS６５、６６との解析結果（接続相性度等）が記憶されている場合、他の接続先OSS６５、６６との解析結果に基づいて、接続元OSSと他の接続先OSSとを結ぶ接続線６２、６３を、生成する画像に描画してもよい。なお、可視化部１４は、他の接続先OSS６６（NewOSS）との接続相性度は０であるため、接続元OSSとの接続線６３を、点線で描画する。
【００５４】
以上説明した本実施形態の解析装置１は、接続元OSSの第１ソースコードと、接続先OSSの第２ソースコードと、前記接続元OSSおよび前記接続先OSSの接続用プラグインと、を取得する取得部１２と、第１ソースコードのアウトプットプラグインと、第２ソースコードのインプットプラグインとで重複するデータ形式の数に基づいて、第１相性度を算出する第１解析部１３１と、前記接続用プラグインに含まれる関数の数およびインスタンスの数に基づいて、第２相性度を算出する第２解析部１３２と、第１相性度および第２相性度を用いて、前記接続元OSSと前記接続先OSSとの接続相性度を算出する第３解析部１３３と、を備える。
【００５５】
これにより本実施形態では、手作業による調査やOSSの実装を行うことなく、OSS間の接続の相性（プラグインの充実度）を解析することができる。したがって、本実施形態では、大規模システムの開発において、システムを部品化し、各部品をOSSなどの既存のソフトウェアで実現する際に、適切なOSSを迅速に選定し、適用することで、システム開発の期間および開発費用を大幅に削減することができる。また、適切なOSSを選定することで、システムの拡張性を向上することができる。
【００５６】
また、本実施形態の解析装置１は、接続元OSSと接続先OSSとを結ぶ接続線を、接続相性度に応じた太さまたは種類で描画した画像を生成する可視化部を備える。これにより、本実施形態では、ユーザは、OSSの接続相性度を、一目で（直感的に）理解することができる。
【００５７】
なお、上記説明した解析装置１には、例えば、CPU（Central Processing Unit、プロセッサ）と、メモリと、ストレージ（HDD：Hard Disk Drive、SSD：Solid State Drive）と、通信装置と、入力装置と、出力装置とを備える汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPUがメモリ上にロードされた所定のプログラムを実行することにより、解析装置１の各機能が実現される。また、解析装置１用のプログラムは、HDD、SSD、USBメモリ、CD-ROM、DVD-ROM、MOなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【００５８】
また、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、上記実施形態では、OSS間の接続相性を解析することとしたが、本発明はOSSに限定されるものではなく、OSS以外のソフトウェア間の接続相性を解析してもよい。
【符号の説明】
【００５９】
１    ：解析装置
１１  ：受付部 
１２  ：取得部
１３  ：解析部
１３１：第１解析部
１３２：第２解析部
１３３：第３解析部
１４  ：可視化部
１５  ：記憶部
２    ：ユーザ端末
３    ：OSSリポジトリ
【図１】
2020126471.tif 000003
【図２】
2020126471.tif 000004
【図３】
2020126471.tif 000005
【図４】
2020126471.tif 000006
【図５】
2020126471.tif 000007
【図６】
2020126471.tif 000008