(57)【要約】【課題】自然言語で記述された文書の不備、特にその文書が文書作成者の意図した通りの内容となっていない不備を自動で検出する。【解決手段】実施形態の文書不備検出プログラムは、コンピュータに、文書の内容を有向グラフで表した文書分析モデルＤ１と、所定単位の文書要素ごとにカテゴリを対応付けたカテゴリ情報Ｄ２とを取得し、文書分析モデルＤ１の各モデル要素が属するカテゴリを判定するカテゴリ判定部１１の機能と、カテゴリ判定結果Ｄ３を予め定められたカテゴリ関係判定ルールＤ４と照合して、文書分析モデルＤ１における複数のカテゴリ間の関係を判定するカテゴリ関係判定部１２の機能と、文書作成者が意図する複数のカテゴリ間の関係を示すカテゴリ関係制約情報Ｄ６を取得し、カテゴリ関係判定結果Ｄ５をカテゴリ関係制約情報Ｄ６と照合して、文書の不備を検出する不備検出部１３の機能と、を実現させる。【選択図】図２
2018010349.tif 000002
【特許請求の範囲】
【請求項１】
自然言語で記述された文書の不備を検出するための文書不備検出プログラムであって、
コンピュータに、
前記文書の内容を有向グラフで表した文書分析モデルと、前記文書における所定単位の文書要素ごとに意味的な分類を表すカテゴリを対応付けたカテゴリ情報とを取得し、前記文書分析モデルを構成する各モデル要素が属するカテゴリを、前記カテゴリ情報に基づいて判定するカテゴリ判定部の機能と、
前記カテゴリ判定部の判定結果を、予め定められたカテゴリ関係判定ルールと照合して、前記文書分析モデルにおける複数のカテゴリ間の関係を判定するカテゴリ関係判定部の機能と、
前記文書の作成者が意図する複数のカテゴリ間の関係を示すカテゴリ関係制約情報を取得し、前記カテゴリ関係判定部により判定された複数のカテゴリ間の関係を、前記カテゴリ関係制約情報と照合して、前記文書の不備を検出する不備検出部の機能と、を実現させるための文書不備検出プログラム。
【請求項２】
前記モデル要素は、前記文書中の文節に対応するノード要素と、２つのノード要素を繋ぐエッジ要素とを含む、請求項１に記載の文書不備検出プログラム。
【請求項３】
前記文書要素は文節よりも大きい単位であり、
前記文書分析モデルの各ノード要素は、前記文書中で当該ノード要素に対応する文節が出現する前記文書要素の識別情報を保持し、
前記カテゴリ判定部は、前記識別情報と前記カテゴリ情報とに基づいて前記文書分析モデルの各ノード要素が属するカテゴリを判定し、同じカテゴリに属すると判定した２つのノード要素を繋ぐエッジ要素を、２つのノード要素と同じカテゴリに属すると判定する、請求項２に記載の文書不備検出プログラム。
【請求項４】
前記カテゴリ関係判定ルールは、ノード要素の入力側のエッジ要素が属するカテゴリと、当該ノード要素の出力側のエッジ要素が属するカテゴリとが異なる場合に、これら２つのカテゴリ間に順序関係があると判定するルールを含む、請求項２または３に記載の文書不備検出プログラム。
【請求項５】
前記カテゴリ関係判定ルールは、ノード要素の入力側のエッジ要素が２つのカテゴリに属し、当該ノード要素の出力側の２つのエッジ要素のうち、一方が入力側のエッジ要素が属する２つのカテゴリの一方に属し、他方が入力側のエッジ要素が属する２つのカテゴリの他方に属する場合に、これら２つのカテゴリ間に並行・選択の関係があると判定するルールを含む、請求項２乃至４のいずれか一項に記載の文書不備検出プログラム。
【請求項６】
自然言語で記述された文書の不備を検出する文書不備検出装置であって、
前記文書の内容を有向グラフで表した文書分析モデルと、前記文書における所定単位の文書要素ごとに意味的な分類を表すカテゴリを対応付けたカテゴリ情報とを取得し、前記文書分析モデルを構成する各モデル要素が属するカテゴリを、前記カテゴリ情報に基づいて判定するカテゴリ判定部と、
前記カテゴリ判定部の判定結果を、予め定められたカテゴリ関係判定ルールと照合して、前記文書分析モデルにおける複数のカテゴリ間の関係を判定するカテゴリ関係判定部と、
前記文書の作成者が意図する複数のカテゴリ間の関係を示すカテゴリ関係制約情報を取得し、前記カテゴリ関係判定部により判定された複数のカテゴリ間の関係を、前記カテゴリ関係制約情報と照合して、前記文書の不備を検出する不備検出部と、を備える文書不備検出装置。
【請求項７】
自然言語で記述された文書の不備を検出するための文書不備検出方法であって、
前記文書の内容を有向グラフで表した文書分析モデルと、前記文書における所定単位の文書要素ごとに意味的な分類を表すカテゴリを対応付けたカテゴリ情報とを取得し、前記文書分析モデルを構成する各モデル要素が属するカテゴリを、前記カテゴリ情報に基づいて判定する第１のステップと、
前記第１のステップの判定結果を、予め定められたカテゴリ関係判定ルールと照合して、前記文書分析モデルにおける複数のカテゴリ間の関係を判定する第２のステップと、
前記文書の作成者が意図する複数のカテゴリ間の関係を示すカテゴリ関係制約情報を取得し、前記第２のステップにより判定された複数のカテゴリ間の関係を、前記カテゴリ関係制約情報と照合して、前記文書の不備を検出する第３のステップと、を含む文書不備検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、文書不備検出プログラム、文書不備検出装置および文書不備検出方法に関する。
【背景技術】
【０００２】
ソフトウェア開発では、仕様を記述した仕様書をもとにソフトウェアが構築されている。このようなソフトウェアの仕様書の多くは自然言語で記述される。仕様作成者が自然言語で仕様を記述するとき、意図した通りに記述することが難しく、仕様書内に不備が存在してしまうことがある。仕様書の不備を見つけるために人手によるレビューなども行われるが、近年のソフトウェア開発の大規模、複雑化に伴い仕様の規模が大きくなっているため、すべてを人手でチェックすることは難しい。このため、仕様作成者が意図した通りの内容となっていない仕様書の不備を自動で検出できる仕組みの構築が望まれている。
【０００３】
なお、このようなニーズはソフトウェアの仕様書に限らず、文書作成者がある意図をもって自然言語で記述した文書において共通のニーズである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−８１６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、自然言語で記述された文書の不備、特にその文書が文書作成者の意図した通りの内容となっていない不備を自動で検出できる文書不備検出プログラム、文書不備検出装置および文書不備検出方法を提供することである。
【課題を解決するための手段】
【０００６】
実施形態の文書不備検出プログラムは、コンピュータに、カテゴリ判定部の機能と、カテゴリ関係判定部の機能と、不備検出部の機能と、を実現させる。カテゴリ判定部は、前記文書の内容を有向グラフで表した文書分析モデルと、前記文書における所定単位の文書要素ごとに意味的な分類を表すカテゴリを対応付けたカテゴリ情報とを取得し、前記文書分析モデルを構成する各モデル要素が属するカテゴリを、前記カテゴリ情報に基づいて判定する。カテゴリ関係判定部は、前記カテゴリ判定部の判定結果を、予め定められたカテゴリ関係判定ルールと照合して、前記文書分析モデルにおける複数のカテゴリ間の関係を判定する。不備検出部は、前記文書の作成者が意図する複数のカテゴリ間の関係を示すカテゴリ関係制約情報を取得し、前記カテゴリ関係判定部により判定された複数のカテゴリ間の関係を、前記カテゴリ関係制約情報と照合して、前記文書の不備を検出する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態の文書不備検出装置のハードウェア構成例を示すブロック図である。
【図２】図２は、実施形態の文書不備検出装置の機能的な構成例を示すブロック図である。
【図３】図３は、検証の対象となる仕様書の具体例を示す図である。
【図４】図４は、文書分析モデルの一例を示す図である。
【図５】図５は、カテゴリ情報の一例を示す図である。
【図６】図６は、カテゴリ判定部の処理を説明する図である。
【図７】図７は、カテゴリ判定結果の一例を示す図である。
【図８】図８は、カテゴリ関係判定ルールの一例を示す図である。
【図９】図９は、カテゴリ関係判定部の処理を説明する図である。
【図１０】図１０は、カテゴリ関係判定結果の一例を示す図である。
【図１１】図１１は、カテゴリ関係制約情報の一例を示す図である。
【図１２】図１２は、不備検出部の処理を説明する図である。
【図１３】図１３は、不備検出結果の一例を示す図である。
【図１４】図１４は、不備検出結果をもとに仕様書の不備を修正する例を説明する図である。
【図１５】図１５は、実施形態の文書不備検出装置による処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、実施形態の文書不備検出プログラム、文書不備検出装置および文書不備検出方法を、図面を参照して詳細に説明する。
【０００９】
＜実施形態の概要＞
まず、本実施形態の概要について説明する。本実施形態は、自然言語で記述された文書の不備、特にその文書が文書作成者の意図した通りの内容となっていない不備を自動で検出するものである。以下では、自然言語で記述された文書の一例として、ソフトウェア開発において作成される仕様書を例に挙げて説明する。仕様書は仕様を記述した文書である。本実施形態では、仕様書に含まれる個々の文をそれぞれ「仕様文」と呼ぶ。文は句点間の文字列であり、１以上の文節を含む。仕様書は通常、複数の仕様文の集合として作成される。
【００１０】
本実施形態では、仕様作成者が仕様を記述する上で想定しているソフトウェアが満たすべき大局的な振る舞いを、「仕様の意図」と呼ぶ。この仕様の意図は、仕様をカテゴリに分類したときのカテゴリ間の関係（特に因果関係）で表現することができる。ここでカテゴリとは、仕様の意味的な分類を表す。例えば、複数の機能を実現するソフトウェアの仕様では、各機能のそれぞれを１つのカテゴリと捉えることができる。また、機能以外にも、例えば、機器構成や状態ごとにカテゴリを設定することもできる。
【００１１】
カテゴリ間の因果関係とは、あるカテゴリと別のカテゴリとの間に存在する因果の関係性を表す。カテゴリ間の因果関係には、「順序関係」と「並行・選択の関係」とが含まれる。順序関係は、あるカテゴリに属する仕様と別のカテゴリに属する仕様とが順番に実施されるという関係性を表す。並行・選択の関係は、あるカテゴリに属する仕様と別のカテゴリに属する仕様とが同じタイミングで実施される、または、ある共通した条件をもとにどちらかの仕様のみが実施されるという関係性を表す。
【００１２】
カテゴリ間に因果関係があるならば、それらのカテゴリに属する仕様間にも因果関係が存在する。仕様書が仕様作成者の意図した通りの内容となっていない不備を検出するとは、仕様書が仕様の意図、つまり仕様作成者が意図したカテゴリ間の因果関係を満たしていないことを検出することである。
【００１３】
本実施形態では、仕様書の分析に「文書分析モデル」を用いる。文書分析モデルは、文書（本実施形態では仕様書）の内容を有向グラフで表したモデルである。本実施形態では、文書分析モデルを用いて仕様を分析することにより、文書分析モデルにおける複数のカテゴリ間の因果関係を判定する。この判定には、「カテゴリ情報」と「カテゴリ関係判定ルール」とを用いる。カテゴリ情報は、仕様書に含まれる各仕様文に対してカテゴリを対応付けた情報であり、例えば仕様作成者によって仕様書とは別途作成され、本実施形態の文書不備検出装置に対して外部入力される。また、カテゴリ関係判定ルールは、文書分析モデルを構成する各モデル要素が属しているカテゴリをもとに、文書分析モデルにおける複数のカテゴリ間の因果関係を判定するためのルールであり、予め定められて本実施形態の文書不備検出装置に保持されている。
【００１４】
本実施形態の文書不備検出装置は、カテゴリ情報に基づいて文書分析モデルを構成する各モデル要素が属するカテゴリを判定する。そして、その判定結果をカテゴリ関係判定ルールと照合することにより、文書分析モデルにおける複数のカテゴリ間の因果関係を判定する。なお、カテゴリ情報は仕様文単位に限らず、仕様書における所定単位の文書要素ごとにカテゴリが対応付けられた情報であればよい。所定単位は文よりも小さな単位である文節であってもよいし、文よりも大きな単位である段落などであってもよい。
【００１５】
また、本実施形態では、以上のように判定した文書分析モデルにおけるカテゴリ間の因果関係が、仕様作成者の意図したカテゴリ間の因果関係と一致するか否かを検査することにより、仕様書の不備を検出する。仕様作成者の意図したカテゴリ間の因果関係は、「カテゴリ関係制約情報」によって示される。カテゴリ関係制約情報は、カテゴリ情報と同様に、例えば仕様作成者によって仕様書とは別途作成され、本実施形態の文書不備検出装置に対して外部入力される。つまり、このカテゴリ関係制約情報は、上述のカテゴリ情報とともに、仕様の意図を表す情報として本実施形態の文書不備検出装置に入力される。本実施形態の文書不備検出装置は、カテゴリ関係判定ルールを用いて判定した文書分析モデルにおける複数のカテゴリ間の因果関係をカテゴリ関係制約情報と照合することにより、カテゴリ関係制約情報で示されるカテゴリ間の因果関係（これを「カテゴリ関係制約」と呼ぶ）を仕様書が満たしているかどうかを判定し、カテゴリ関係制約を満たしていない場合にそれを仕様書の不備として検出する。
【００１６】
仕様書の内容を有向グラフで表した文書分析モデルとしては、下記の参考文献に記載されている「要求分析モデル」を利用することができる。本実施形態では、下記の参考文献に記載されている装置によって検証の対象となる仕様書の文書分析モデルが事前に生成され、文書不備検出装置に対して外部入力されるものとする。仕様書から文書分析モデルを生成する処理は、文書不備検出装置の内部で行ってもよい。なお、本実施形態では、下記の参考文献において「要求分析モデル要素の構成部品」と呼んでいるノードやエッジを、モデル要素（「ノード要素」、「エッジ要素」）と呼ぶ。文書分析モデルは、ノード要素とエッジ要素とを含む複数のモデル要素により構成される。
参考文献：特開２０１４−２３８６９７号公報
【００１７】
なお、文書分析モデルは、文書の内容を有向グラフで表したモデルであればよく、参考文献に記載の要求分析モデル以外の他のモデルを用いてもよい。文書の内容を有向フラグで表したモデルとは、例えば、データフローダイヤグラムをベースに制御の主体が切り替わることを表したモデル、異なるノード間でデータの授受が存在することを表したモデルなどである。
【００１８】
＜装置構成＞
次に、本実施形態の文書不備検出装置の具体的な構成例について説明する。図１は、本実施形態の文書不備検出装置１０のハードウェア構成例を示すブロック図である。本実施形態の文書不備検出装置１０は、例えば、通常のコンピュータとしてのハードウェアを備え、このハードウェアとソフトウェア（文書不備検出プログラム）との協働により、自然言語で記述された仕様書の不備、特にその仕様書が仕様作成者の意図した通りの内容となっていない不備を自動で検出する。
【００１９】
すなわち、本実施形態の文書不備検出装置１０は、例えば図１に示すように、情報処理を行うＣＰＵ１０１、ＢＩＯＳなどを記憶した読み出し専用メモリであるＲＯＭ１０２、各種データを書き換え可能に記憶するＲＡＭ１０３、各種のデータやプログラムを格納するＨＤＤ１０４、記憶媒体１１０を用いて情報を保管したり外部に情報を配布したり外部から情報を入手するための媒体駆動装置１０５、ユーザがＣＰＵ１０１に命令や情報などを入力するためのキーボードやマウスなどの入力装置１０６、および、処理経過や結果などをユーザに表示する液晶ディスプレイなどの表示装置１０７などを備え、これら各部間で送受信されるデータをバスコントローラ１０８が調停して動作する。
【００２０】
このようなハードウェア構成を有する文書不備検出装置１０では、ユーザが電源を投入するとＣＰＵ１０１がＲＯＭ１０２内のローダーというプログラムを起動させ、ＨＤＤ１０４よりＯＳ（Operating  System）というコンピュータのハードウェアとソフトウェアとを管理するプログラムをＲＡＭ１０３に読み込み、このＯＳを起動させる。このようなＯＳは、ユーザの操作に応じてプログラムを起動したり、情報を読み込んだり、保存を行ったりする。ＯＳのうち代表的なものとしては、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）などが知られている。これらのＯＳ上で動作するプログラムをアプリケーションプログラムと呼んでいる。なお、アプリケーションプログラムは、所定のＯＳ上で動作するものに限らず、後述の各種処理の一部の実行をＯＳに肩代わりさせるものであってもよいし、所定のアプリケーションソフトやＯＳなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
【００２１】
ここで、本実施形態の文書不備検出装置１０は、アプリケーションプログラムとして、本実施形態の文書不備検出プログラムをＨＤＤ１０４に記憶している。本実施形態の文書不備検出プログラムは、例えば、ＣＤ−ＲＯＭやＤＶＤなどの各種の光ディスク、各種光磁気ディスク、フレキシブルディスクなどの各種磁気ディスク、半導体メモリなどの各種方式のメディアなどの記憶媒体１１０に記録されて提供され、ＨＤＤ１０４にインストールされる。また、本実施形態の文書不備検出プログラムは、例えばネットワークを利用した通信により外部からダウンロードされ、ＨＤＤ１０４にインストールされてもよい。
【００２２】
以上のようなハードウェア構成を採用する場合、ＣＰＵ１０１がＯＳ上で動作する文書不備検出プログラムに従って各種の演算処理を実行することにより、コンピュータを本実施形態の文書不備検出装置１０として動作させて、後述の機能的な構成要素をコンピュータ上で実現させることができる。なお、本実施形態では、文書不備検出装置１０を構成する後述の機能的な構成要素のすべてをコンピュータ上で実現することを想定するが、これら機能的な構成要素の一部あるいは全部を、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field-programmable  Gate  Array）などの専用のハードウェアを用いて実現することもできる。
【００２３】
また、本実施形態では、文書不備検出装置１０が単体の装置として構成されていることを想定するが、文書不備検出装置１０は単体の装置として構成されている必要はなく、物理的に分離されてネットワークを介して接続された複数の装置により構成されていてもよい。また、文書不備検出装置１０は、例えば、クラウドシステム上で動作する仮想マシンとして実現されていてもよい。
【００２４】
図２は、本実施形態の文書不備検出装置１０の機能的な構成例を示すブロック図である。本実施形態の文書不備検出装置１０は、上述の文書不備検出プログラムを実行することにより実現される機能的な構成要素として、カテゴリ判定部１１と、カテゴリ関係判定部１２と、不備検出部１３とを備える。
【００２５】
カテゴリ判定部１１は、文書分析モデルＤ１とカテゴリ情報Ｄ２とを取得し、カテゴリ情報Ｄ２に基づいて文書分析モデルＤ１を構成する各モデル要素が属するカテゴリを判定し、カテゴリ判定結果Ｄ３を生成する。
【００２６】
文書分析モデルＤ１は、上述のように、検証の対象となる仕様書の内容を有向グラフで表したものであり、本実施形態の文書不備検出装置１０に対して外部入力されて、カテゴリ判定部１１により取得される。文書分析モデルＤ１は、複数のモデル要素から構成される。モデル要素には、検証の対象となる仕様書の仕様文中に出現する文節に対応したノード要素と、２つのノード要素を繋ぐエッジ要素とが含まれる。
【００２７】
ノード要素は、要素名、要素タイプ、および出現箇所データを持つ。要素名は、当該ノード要素を一意に識別するための文字列である。要素タイプは、当該ノード要素のタイプを示す。本実施形態では、ノード要素のタイプは、データフローダイヤグラムの形式における「プロセス」または「データストア」であることを想定するが、これに限らない。出現箇所データは、検証の対象となる仕様書において当該ノード要素に対応する文節が出現する仕様文の識別情報（仕様文識別子）である。当該ノード要素が複数の仕様文で出現する場合は、それら複数の仕様文の識別情報のすべてが出現箇所データに含まれる。なお、カテゴリ情報Ｄ２が仕様文単位ではなく、ノード要素に対応する文節単位でカテゴリを対応付けた情報である場合は、ノード要素が出現箇所データを持たない構成であってもよい。
【００２８】
エッジ要素は、要素名、要素タイプ、ソースノード名、およびターゲットノード名を持つ。要素名は、当該エッジ要素を一意に識別するための文字列である。要素タイプは、当該エッジ要素のタイプを示す。本実施形態では、エッジ要素のタイプは、データフローダイヤグラムの形式における「データフロー」であることを想定するが、これに限らない。ソースノード名は、当該エッジ要素の尾側のノード要素の要素名である。ターゲットノード名は、当該エッジ要素の頭側のノード要素の要素名である。
【００２９】
図３は、検証の対象となる仕様書の具体例を示す図であり、図４は、図３に示す仕様書から生成される文書分析モデルＤ１の一例を示す図である。図３に例示する仕様書は、エレベータのフロアボタンを押したときのリフトの移動に関する仕様、特に、フロアボタンを２回押したときにキャンセルする処理を含む仕様を記述したものである。この図３に示す仕様書に対して構文解析を含む自然言語解析を行うことにより、例えば図４に示すように、データフローダイヤグラムの形式で表現可能な文書分析モデルＤ１が生成される。この図４に例示する文書分析モデルＤ１において、プロセスやデータストアで表されるモデル要素がノード要素であり、データフローで表されるモデル要素がエッジ要素である。なお、検証の対象となる仕様書から文書分析モデルＤ１を生成する処理の具体的な内容については、上述の参考文献に記載されているため、ここでは詳細な説明を省略する。
【００３０】
カテゴリ情報Ｄ２は、上述のように、検証の対象となる仕様書に含まれる各仕様文に対してカテゴリを対応付けた情報であり、例えば、仕様作成者によって仕様書とは別途作成される。このカテゴリ情報Ｄ２は、本実施形態の文書不備検出装置１０に対して外部入力されて、カテゴリ判定部１１により取得される。
【００３１】
図５は、カテゴリ情報Ｄ２の一例を示す図であり、図３に示した仕様書に含まれる各仕様文にカテゴリを対応付けたものである。図５に例示するカテゴリ情報Ｄ２では、仕様文を識別する仕様文識別子とカテゴリの識別子とが対応付けられている。この図５に示すカテゴリ情報Ｄ２により、仕様文１および仕様文２は「ボタン」のカテゴリに属する仕様を記述したものであり、仕様文３および仕様文６は「ランプ」のカテゴリに属する仕様を記述したものであり、仕様文４は「スケジューラ」のカテゴリに属する仕様を記述したものであり、仕様文５は「リフト」のカテゴリに属する仕様を記述したものであることが示される。
【００３２】
カテゴリ判定部１１は、例えば、文書分析モデルＤ１に含まれるノード要素の出現箇所データをもとに、検証の対象となる仕様書において当該ノード要素に対応する文節が出現する仕様文を特定する。そして、カテゴリ判定部１１は、特定した仕様文の仕様文識別子をキーとしてカテゴリ情報Ｄ２を検索することにより、当該ノード要素が属するカテゴリを判定する。
【００３３】
図６は、カテゴリ判定部１１の処理を説明する図である。この図６では、図４に示した文書分析モデルＤ１に含まれる「行き先リスト」のノード要素が属するカテゴリを判定する例を示している。「行き先リスト」のノード要素の出現箇所データから、検証の対象となる仕様書において、「行き先リスト」のノード要素に対応する文節が仕様文１、仕様文２および仕様文４で出現することが分かる。そして、図５に示したカテゴリ情報Ｄ２から、仕様文１と仕様文２に対応するカテゴリは「ボタン」であり、仕様文４に対応するカテゴリは「スケジューラ」であることが分かるので、カテゴリ判定部１１は、「行き先リスト」のノード要素が「ボタン」と「スケジューラ」のカテゴリに属すると判定する。
【００３４】
カテゴリ判定部１１は、文書分析モデルＤ１に含まれるすべてのノード要素について以上の処理を繰り返すことで、各ノード要素のカテゴリを判定する。そして、同じカテゴリに属すると判定した２つのノード要素を繋ぐエッジ要素を、それら２つのノード要素と同じカテゴリに属すると判定する。このカテゴリ判定部１１の処理により、文書分析モデルＤ１を構成するすべてのモデル要素を複数のカテゴリに分類することができる。カテゴリ判定結果Ｄ３は、カテゴリ判定部１１による判定の結果を登録したデータであり、例えば、文書分析モデルＤ１の各モデル要素に対して、当該モデル要素が属するカテゴリの識別子を付加したデータとして生成することができる。
【００３５】
図７は、カテゴリ判定結果Ｄ３の一例を示す図であり、図４に示した文書分析モデルＤ１を構成する各モデル要素が属するカテゴリを、図５に示したカテゴリ情報Ｄ２に基づいて判定した結果を示している。この図７に例示するカテゴリ判定結果Ｄ３から、図４に示した文書分析モデルＤ１を構成する各モデル要素は、「ボタン」、「ランプ」、「スケジューラ」および「リフト」の複数のカテゴリのうちの少なくともいずれかに属することが分かる。文書分析モデルＤ１を構成するノード要素は、２以上のカテゴリに属する場合もある。図７の例では、「ユーザ」のノード要素および「フロアボタンを押す」のノード要素は「ボタン」と「ランプ」の２つのカテゴリに属し、「行き先リスト」のノード要素は「ボタン」と「スケジューラ」の２つのカテゴリに属している。
【００３６】
カテゴリ関係判定部１２は、カテゴリ判定部１１により生成されたカテゴリ判定結果Ｄ３をカテゴリ関係判定ルールＤ４と照合して、文書分析モデルＤ１における複数のカテゴリ間の因果関係を判定し、カテゴリ関係判定結果Ｄ５を生成する。
【００３７】
カテゴリ関係判定ルールＤ４は、上述のように、文書分析モデルＤ１を構成する各モデル要素が属しているカテゴリをもとに、文書分析モデルＤ１における複数のカテゴリ間の因果関係を判定するための予め定められたルールである。本実施形態では、カテゴリ関係判定ルールＤ４が、カテゴリ間の順序関係を判定するルールと並行・選択の関係を判定するルールとを含むものとする。
【００３８】
図８は、カテゴリ関係判定ルールＤ４の一例を示す図であり、１行目が順序関係を判定するルール、２行目が並行・選択の関係を判定するルールをそれぞれ示している。この図８に示すカテゴリ関係判定ルールＤ４は、判定条件情報と、カテゴリ取得情報と、関係プロパティ情報とから構成される。
【００３９】
判定条件情報は、文書分析モデルＤ１のノード要素に対する入力側のエッジ要素（以下、「入力エッジ」と呼ぶ）と出力側のエッジ要素（以下、「出力エッジ」と呼ぶ）との関係から、カテゴリ間に関係があると判定するための条件を示す。図８の例では、ノード要素に対して入力エッジと出力エッジのカテゴリが異なることが、順序関係を判定するルールの判定条件情報として示されている。また、ノード要素に対して入力エッジが２つのカテゴリに属し、２つの出力エッジの一方が２つのカテゴリの一方に属し、２つの出力エッジの他方が２つのカテゴリの他方に属することが、並行・選択の関係を判定するルールの判定条件情報として示されている。
【００４０】
カテゴリ取得情報は、ソースカテゴリとターゲットカテゴリとを含む。ソースカテゴリは、判定条件情報で示される判定条件に一致するときに、どの要素のカテゴリをソースにするかを示している。ターゲットカテゴリは、判定条件情報で示される判定条件に一致するときに、どの要素のカテゴリをターゲットにするかを示している。図８の例では、順序関係を判定するルールの判定条件に一致するとき、入力エッジのカテゴリがソースカテゴリとなり、出力エッジのカテゴリがターゲットカテゴリとなることを示している。また、並行・選択の関係を判定するルールの判定条件に一致するとき、入力エッジが属する２つのカテゴリのどちらかがソースカテゴリとなり、２つの出力エッジのどちらかのカテゴリがターゲットカテゴリとなる（ただし、ソースカテゴリとターゲットカテゴリは異なる）ことを示している。
【００４１】
関係プロパティ情報は、判定条件で示される判定条件に一致するときに得られるカテゴリ間の関係性を示している。図８の例では、順序関係を判定するルールの判定条件に一致するとき、ソースカテゴリとターゲットカテゴリとの間に順序関係があることを示している。また、並行・選択の関係を判定するルールの判定条件に一致するとき、ソースカテゴリとターゲットカテゴリとの間に並行・選択の関係があることを示している。
【００４２】
カテゴリ関係判定部１２は、上述のカテゴリ判定結果Ｄ３をカテゴリ関係判定ルールＤ４と照合し、文書分析モデルＤ１のノード要素に対する入力エッジと出力エッジの関係が、カテゴリ関係判定ルールＤ４の判定条件に一致する部分を探すことで、文書分析モデルＤ１における複数のカテゴリ間の関係を判定する。
【００４３】
図９は、カテゴリ関係判定部１２の処理を説明する図であり、（ａ）は順序関係の判定例、（ｂ）は並行・選択の関係の判定例をそれぞれ示している。図７に示したカテゴリ判定結果Ｄ３の「行き先リスト」のノード要素に着目すると、このノード要素の入力エッジは「ボタン」のカテゴリに属し、出力エッジは「スケジューラ」のカテゴリに属している。したがって、カテゴリ関係判定部１２は、文書分析モデルＤ１における「ボタン」のカテゴリと「スケジューラ」のカテゴリとの間に、「ボタン」をソースカテゴリとし「スケジューラ」をターゲットカテゴリとする順序関係が存在すると判定する。また、図７に示したカテゴリ判定結果Ｄ３の「フロアボタンを押す」のノード要素に着目すると、このノード要素の入力エッジが「ボタン」と「ランプ」の２つのカテゴリに属し、２つの出力エッジの一方が「ボタン」のカテゴリに属し、他方が「ランプ」のカテゴリに属している。したがって、カテゴリ関係判定部１２は、文書分析モデルＤ１における「ボタン」のカテゴリと「ランプ」のカテゴリとの間に、「ボタン」をソースカテゴリとし「ランプ」をターゲットカテゴリとする（逆でもよい）並行・選択の関係が存在すると判定する。
【００４４】
カテゴリ関係判定部１２は、カテゴリ関係判定ルールＤ４に含まれるすべてのルールについて、判定条件に一致する部分を文書分析モデルＤ１から探し出してカテゴリ間の関係を判定し、カテゴリ関係判定結果Ｄ５を生成する。カテゴリ関係判定結果Ｄ５は、カテゴリ関係判定部１２による判定の結果を登録したデータである。
【００４５】
図１０は、カテゴリ関係判定結果Ｄ５の一例を示す図であり、（ａ）が表形式で表したカテゴリ関係判定結果Ｄ５の例を示し、（ｂ）が図形式で表したカテゴリ関係判定結果Ｄ５の例を示している。この図１０に示すカテゴリ関係判定結果Ｄ５は、カテゴリ関係情報と、関係プロパティ情報とから構成される。カテゴリ関係情報は、ソースカテゴリの識別子とターゲットカテゴリの識別子とを含む。関係プロパティ情報は、カテゴリ間の関係性を示す情報である。図１０に示すカテゴリ関係判定結果Ｄ５から、文書分析モデルＤ１の「ボタン」のカテゴリと「スケジューラ」のカテゴリとの間には順序関係があると判定され、「ボタン」のカテゴリと「ランプ」のカテゴリとの間には並行・選択の関係があると判定されたことが分かる。
【００４６】
不備検出部１３は、カテゴリ関係制約情報Ｄ６を取得し、カテゴリ関係判定部１２により生成されたカテゴリ関係判定結果Ｄ５をカテゴリ関係制約情報Ｄ６と照合して仕様書の不備を検出し、不備検出結果Ｄ７を生成して出力する。
【００４７】
カテゴリ関係制約情報Ｄ６は、上述のように、仕様作成者の意図した複数のカテゴリ間の因果関係（カテゴリ関係制約）を示す情報であり、上述のカテゴリ情報Ｄ２と同様に、仕様の意図を表す情報として、例えば仕様作成者によって仕様書とは別途作成される。このカテゴリ関係制約情報Ｄ６は、本実施形態の文書不備検出装置１０に対して外部入力されて、不備検出部１３により取得される。
【００４８】
図１１は、カテゴリ関係制約情報Ｄ６の一例を示す図であり、（ａ）が表形式で表したカテゴリ関係制約情報Ｄ６の例を示し、（ｂ）が図形式で表したカテゴリ関係制約情報Ｄ６の例を示している。この図１１に示すカテゴリ関係制約情報Ｄ６は、図１０に示したカテゴリ関係判定結果Ｄ５と同様のデータ構造とされ、カテゴリ関係情報と、関係プロパティ情報とから構成される。図１１に示すカテゴリ関係制約情報Ｄ６は、「ボタン」のカテゴリと「スケジューラ」のカテゴリとの間、「スケジューラ」のカテゴリと「リフト」のカテゴリとの間、「スケジューラ」のカテゴリと「ランプ」のカテゴリとの間、「ボタン」のカテゴリと「ランプ」のカテゴリとの間にそれぞれ順序関係があり、「リフト」のカテゴリと「ランプ」のカテゴリとの間には並行・選択の関係があることを、仕様作成者が意図していることを示している。
【００４９】
不備検出部１３は、上述のカテゴリ関係判定結果Ｄ５をカテゴリ関係制約情報Ｄ６と照合し、カテゴリ関係判定結果Ｄ５がカテゴリ関係制約情報Ｄ６と一致するかどうかを検査することにより、仕様書がカテゴリ関係制約を満たしているかどうかを判定する。そして、仕様書がカテゴリ関係制約を満たしていなければ、カテゴリ関係制約を満たしていないことを仕様書の不備として検出する。具体的には、不備検出部１３は、カテゴリ関係制約情報Ｄ６のソースカテゴリ、ターゲットカテゴリおよび関係プロパティ情報のすべてが一致するデータがカテゴリ関係判定結果Ｄ５に含まれていれば、仕様書がそのカテゴリ関係制約を満たしていると判定する。また、不備検出部１３は、カテゴリ関係制約情報Ｄ６のソースカテゴリおよびターゲットカテゴリと一致するデータがカテゴリ関係判定結果Ｄ５に含まれているが、そのデータの関係プロパティ情報がカテゴリ関係制約情報Ｄ６と相違する場合は、仕様書がそのカテゴリ関係制約の一部を満たしていないと判定する。また、不備検出部１３は、カテゴリ関係制約情報Ｄ６のソースカテゴリおよびターゲットカテゴリと一致するデータがカテゴリ関係判定結果Ｄ５に含まれていない場合は、仕様書がそのカテゴリ関係制約を完全に満たしていないと判定する。
【００５０】
図１２は、不備検出部１３の処理を説明する図であり、（ａ）はカテゴリ関係判定結果Ｄ５およびカテゴリ関係制約情報Ｄ６が表形式の場合の例を示し、（ｂ）はカテゴリ関係判定結果Ｄ５およびカテゴリ関係制約情報Ｄ６が図形式の場合の例を示している。この図１２の例では、「ボタン」のカテゴリと「スケジューラ」のカテゴリとの間ではカテゴリ関係制約を満たしているが、「スケジューラ」のカテゴリと「リフト」のカテゴリとの間、「スケジューラ」のカテゴリと「ランプ」のカテゴリとの間、「リフト」のカテゴリと「ランプ」のカテゴリとの間で、それぞれカテゴリ関係制約を完全に満たしていないことが分かる。また、「ボタン」のカテゴリと「ランプ」のカテゴリとの間では、カテゴリ制約条件の一部を満たしていないことが分かる。不備検出部１３は、これらのカテゴリ関係制約を完全に満たしていない、あるいは一部を満たしていないことを仕様書の不備として検出し、不備検出結果Ｄ７を生成する。不備検出結果Ｄ７は、不備検出部１３が検出した仕様書の不備を登録したデータである。この不備検出結果Ｄ７は、不備検出部１３から出力される際に予め用意した定型文や図の形式に変換される。これにより、仕様書の修正が必要な箇所をユーザに分かり易く提示することができる。
【００５１】
図１３は、不備検出部１３から出力される不備検出結果Ｄ７の一例を示す図であり、（ａ）が定型文に変換された不備検出結果Ｄ７の例を示し、（ｂ）が図の形式に変換された不備検出結果Ｄ７の例を示している。文形式の不備検出結果Ｄ７では、カテゴリ関係制約を完全に満たしていない仕様書の不備を、仕様の抜け漏れがあるとの指摘によりユーザに提示し、カテゴリ関係制約の一部を満たしていない仕様書の不備を、仕様の曖昧性があるとの指摘によりユーザに提示している。また、図形式の不備検出結果Ｄ７では、カテゴリ関係制約を完全に満たしていない仕様書の不備を「×」マーク、カテゴリ関係制約の一部を満たしていない仕様書の不備を「△」マークによりユーザに提示している。
【００５２】
なお、不備検出部１３による不備検出結果Ｄ７の出力は、図１に示した表示装置１０７による表示であってもよいし、ネットワークを利用した通信により外部装置に表示させる形態であってもよい。また、不備検出部１３が生成した不備検出結果Ｄ７を図１に示したＨＤＤ１０４などに保存しておき、仕様書の検証を行うユーザが必要に応じて参照できるようにしてもよい。
【００５３】
不備検出結果Ｄ７を参照したユーザは、この不備検出結果Ｄ７をもとに仕様書の不備を修正することができる。図１４は、図１３に例示した不備検出結果Ｄ７をもとに仕様書の不備を修正する例を説明する図であり、（ａ）が元の仕様書を示し、（ｂ）が修正後の仕様書を示している。修正後の仕様書では、元の仕様書に対して仕様文Ｘが追加され、また、仕様文３と仕様文６とが修正されている。
【００５４】
仕様文Ｘの追加は、図１３に例示した不備検出結果Ｄ７の指摘１に基づく修正である。すなわち、指摘１により「スケジューラ」と「リフト」との間の順序関係に対応する仕様が抜け漏れていることをユーザが認識し、「スケジューリングの結果から移動要求を作成する」という「スケジューラ」のカテゴリに属する仕様文Ｘを追加している。
【００５５】
また、仕様文３の修正は、図１３に例示した不備検出結果Ｄ７の指摘２および指摘３に基づく修正である。すなわち、指摘２により「スケジューラ」と「ランプ」との間の順序関係に対応する仕様が抜け漏れていることをユーザが認識し、仕様文３の「ユーザがフロアボタンを押したとき、」との記述を「移動要求を取得したとき、」に変更している。また、指摘３では「リフト」と「ランプ」との間の並行・選択の関係に対応する仕様が抜け漏れていることが指摘されているが、この仕様文３の修正により、仕様文３が属する「ランプ」のカテゴリと仕様文５が属する「リフト」のカテゴリとが並行の関係になる。
【００５６】
また、仕様文６の修正は、図１３に例示した不備検出結果Ｄ７の指摘４に基づく修正である。すなわち、指摘４により「ボタン」と「ランプ」との間の順序関係に対応する仕様が抜け漏れているために「ボタン」と「ランプ」との間の関係が曖昧になっていることをユーザが認識し、仕様文６に対して「フロア情報を削除したとき、」という条件を追加している。これにより、仕様文２が属する「ボタン」のカテゴリと仕様文６が属する「ランプ」のカテゴリとが順序関係を持つようになる。
【００５７】
以上のように、本実施形態の文書不備検出装置１０は、不備検出結果Ｄ７を出力してユーザに提示することにより、仕様書が仕様の意図を満たすように記述されていないことについてユーザに気づきを与え、仕様書の適切な修正を促すことができる。
【００５８】
＜動作説明＞
次に、以上のように構成される本実施形態の文書不備検出装置１０の動作の概要を図１５に沿って説明する。図１５は、本実施形態の文書不備検出装置１０による処理手順の一例を示すフローチャートである。文書不備検出装置１０は、図１５に示すステップＳ１０１からステップＳ１１６の処理を順次実行して、仕様書の不備を検出する。
【００５９】
ステップＳ１０１：本実施形態の文書不備検出装置１０による処理が開始されると、まず、カテゴリ判定部１１が、検証の対象となる仕様書をもとに生成された文書分析モデルＤ１を取得して、次のステップＳ１０２に進む。
【００６０】
ステップＳ１０２：カテゴリ判定部１１が、検証の対象となる仕様書に含まれる仕様文ごとにカテゴリを対応付けた情報であるカテゴリ情報Ｄ２を取得して、次のステップＳ１０３に進む。なお、ステップＳ１０１の処理とステップＳ１０２の処理の順番は逆であってもよい。
【００６１】
ステップＳ１０３：カテゴリ判定部１１が、ステップＳ１０２で取得したカテゴリ情報Ｄ２に基づいて、ステップＳ１０１で取得した文書分析モデルＤ１を構成する各モデル要素のカテゴリを判定し、次のステップＳ１０４に進む。
【００６２】
ステップＳ１０４：カテゴリ判定部１１が、ステップＳ１０３で判定した各モデル要素のカテゴリをカテゴリ判定結果Ｄ３に登録し、次のステップＳ１０５に進む。なお、ステップＳ１０３の処理とステップＳ１０４の処理は、モデル要素ごとに繰り返し行ってもよい。すなわち、カテゴリ判定部１１は、１つのモデル要素のカテゴリを判定したらそれをカテゴリ判定結果Ｄ３に登録する処理を繰り返し、文書分析モデルＤ１を構成するすべてのモデル要素のカテゴリをカテゴリ判定結果Ｄ３に登録した後、次のステップＳ１０５に進むようにしてもよい。
【００６３】
ステップＳ１０５：カテゴリ関係判定部１２が、予め定められたカテゴリ関係判定ルールＤ４を１つ取り出して、次のステップＳ１０６に進む。
【００６４】
ステップＳ１０６：カテゴリ関係判定部１２が、カテゴリ判定結果Ｄ３をステップＳ１０５で取り出したカテゴリ関係判定ルールＤ４と照合し、このカテゴリ関係判定ルールＤ４の判定条件に一致する部分があるか否かを判定する。そして、判定条件に一致する部分があれば（ステップＳ１０６：Ｙｅｓ）、次のステップＳ１０７に進み、判定条件に一致する部分がなければ（ステップＳ１０６：Ｎｏ）、ステップＳ１０９に進む。
【００６５】
ステップＳ１０７：カテゴリ関係判定部１２が、判定条件に一致する部分のカテゴリ間の関係をカテゴリ関係判定結果Ｄ５に登録し、次のステップＳ１０８に進む。
【００６６】
ステップＳ１０８：カテゴリ関係判定部１２が、すべてのノード要素に対してステップＳ１０５で取り出したカテゴリ関係判定ルールＤ４を確認したかを判定する。そして、すべてのノード要素に対してカテゴリ関係判定ルールＤ４を確認した場合は（ステップＳ１０８：Ｙｅｓ）、次のステップＳ１０９に進み、カテゴリ関係判定ルールＤ４の確認を行っていないノード要素があれば（ステップＳ１０８：Ｎｏ）、ステップＳ１０６に戻って未確認のノード要素に対して処理を繰り返す。
【００６７】
ステップＳ１０９：カテゴリ関係判定部１２が、カテゴリ関係判定ルールＤ４をすべて取り出したか否かを判定する。そして、カテゴリ関係判定ルールＤ４をすべて取り出していれば（ステップＳ１０９：Ｙｅｓ）、次のステップＳ１１０に進み、取り出していないカテゴリ関係判定ルールＤ４があれば（ステップＳ１０９：Ｎｏ）、ステップＳ１０５に戻って以降の処理を繰り返す。
【００６８】
ステップＳ１１０：不備検出部１３が、カテゴリ関係制約を示すカテゴリ関係制約情報Ｄ６を取得して、次のステップＳ１１１に進む。なお、カテゴリ関係制約情報Ｄ６は、ステップＳ１０２でカテゴリ情報Ｄ２を取得する際に併せて取得してもよい。
【００６９】
ステップＳ１１１：不備検出部１３が、ステップＳ１１０で取得したカテゴリ関係制約情報Ｄ６を１つ取り出して、次のステップＳ１１２に進む。
【００７０】
ステップＳ１１２：不備検出部１３が、カテゴリ関係判定結果Ｄ５を１つ取り出して、次のステップＳ１１３に進む。なお、ステップＳ１１１の処理とステップＳ１１２の処理の順番は逆であってもよい。
【００７１】
ステップＳ１１３：不備検出部１３が、ステップＳ１１１で取り出したカテゴリ関係制約情報Ｄ６とステップＳ１１２で取り出したカテゴリ関係判定結果Ｄ５とを比較して、両者が一致するか否かを判定する。そして、両者が一致しない場合は（ステップＳ１１３：Ｎｏ）、次のステップＳ１１４に進み、両者が一致する場合は（ステップＳ１１３：Ｙｅｓ）、ステップＳ１１１で取り出したカテゴリ関係制約情報Ｄ６が示すカテゴリ関係制約を満たしているため、ステップＳ１１６に進む。
【００７２】
ステップＳ１１４：不備検出部１３が、カテゴリ関係判定結果Ｄ５をすべて取り出したか否かを判定する。そして、カテゴリ関係判定結果Ｄ５をすべて取り出していれば（ステップＳ１１４：Ｙｅｓ）、ステップＳ１１１で取り出したカテゴリ関係制約情報Ｄ６が示すカテゴリ関係制約を満たしていないため、次のステップＳ１１５に進み、取り出していないカテゴリ関係判定結果Ｄ５があれば（ステップＳ１１４：Ｎｏ）、ステップＳ１１２に戻って以降の処理を繰り返す。
【００７３】
ステップＳ１１５：不備検出部１３が、カテゴリ関係制約を満たしていない不備を不備検出結果Ｄ７に登録し、次のステップＳ１１６に進む。
【００７４】
ステップＳ１１６：不備検出部１３が、カテゴリ関係制約情報Ｄ６をすべて取り出したか否かを判定する。そして、カテゴリ関係制約情報Ｄ６をすべて取り出していれば（ステップＳ１１６：Ｙｅｓ）、次のステップＳ１１７に進み、取り出していないカテゴリ関係制約情報Ｄ６があれば（ステップＳ１１６：Ｎｏ）、ステップＳ１１１に戻って以降の処理を繰り返す。
【００７５】
ステップＳ１１７：不備検出部１３が、不備検出結果Ｄ７を出力して、一連の処理を終了する。
【００７６】
＜実施形態の効果＞
以上、具体例を挙げながら詳細に説明したように、本実施形態によれば、自然言語で記述された仕様書の不備、特にその仕様書が仕様作成者の意図した通りの内容となっていない不備を自動で検出することができる。これにより、仕様書の検証作業にかかるコストを低減させることができるとともに、仕様書の不備によって発生する開発の手戻り工数の削減を図ることができる。
【００７７】
自然言語で記述された仕様書の不備を検出する方法としては、仕様書を自然言語解析することで、動詞、主語、目的語、事前条件、事後条件を意味表現データとして取得し、そのデータが既定のルールに一致しているか検査することで仕様書の不備を検出する方法が知られている。しかしこの方法では、例えば文単位での主語の抜け漏れ、述語の抜け漏れなど、仕様書の局所的な不備を検出することはできるものの、ソフトウェアの大局的な振る舞いの視点で見たときに表れる仕様の抜け漏れを検出することはできない。これに対し本実施形態では、カテゴリを用いて仕様書が仕様作成者の意図通りに記述されているか確認することで、大局的な振る舞いの視点から見たときに存在する仕様書の不備を検出することができる。
【００７８】
なお、上述の実施形態では、自然言語で記述された文書の一例としてソフトウェア開発において作成される仕様書を例示したが、本発明を適用可能な文書は仕様書に限らない。例えば、種々の手順書（マニュアル）や取扱い説明書、料理のレシピなど、文書作成者が段落間の関係性などを指定できる文書の不備を検出する用途において、本発明は広く適用可能である。
【００７９】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８０】
１０  文書不備検出装置
１１  カテゴリ判定部
１２  カテゴリ関係判定部
１３  不備検出部
Ｄ１  文書分析モデル
Ｄ２  カテゴリ情報
Ｄ３  カテゴリ判定結果
Ｄ４  カテゴリ関係判定ルール
Ｄ５  カテゴリ関係判定結果
Ｄ６  カテゴリ関係制約情報
Ｄ７  不備検出結果
【図１】
2018010349.tif 000003
【図２】
2018010349.tif 000004
【図３】
2018010349.tif 000005
【図４】
2018010349.tif 000006
【図５】
2018010349.tif 000007
【図６】
2018010349.tif 000008
【図７】
2018010349.tif 000009
【図８】
2018010349.tif 000010
【図９】
2018010349.tif 000011
【図１０】
2018010349.tif 000012
【図１１】
2018010349.tif 000013
【図１２】
2018010349.tif 000014
【図１３】
2018010349.tif 000015
【図１４】
2018010349.tif 000016
【図１５】
2018010349.tif 000017