(57)【要約】【課題】従来、ソフトウェア資産を有効に活用できなかった。【解決手段】ソースプログラムを構成する２種類以上の各要素を識別する要素識別子と、自然言語の要素言語情報との対応を示す２以上の要素対応情報が格納されるデータ辞書部と、ソースプログラムを解析し、要素識別子を抽出する解析部と、取得された１以上の各要素識別子に対応する要素言語情報をデータ辞書部から取得する取得部と、要素言語情報を用いて、自然言語のドキュメントを生成する生成部とを具備するドキュメント生成装置により、ソフトウェア資産を有効に活用するためのドキュメントを自動生成できる。【選択図】図１
2018106582.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムを構成する２種類以上の各要素を識別する要素識別子と、自然言語の情報である要素言語情報との対応を示す２以上の要素対応情報が格納されるデータ辞書部と、
ソースプログラムが格納されるソースプログラム格納部と、
前記ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子を抽出する解析部と、
前記解析部が取得した１以上の各要素識別子に対応する要素言語情報を前記データ辞書部から取得する取得部と、
前記取得部が取得した１以上の要素言語情報を用いて、自然言語の情報であるドキュメントを生成する生成部と、
前記生成部が生成したドキュメントを出力する出力部とを具備するドキュメント生成装置。
【請求項２】
ソースプログラムの中の制御を特定する制御情報と、自然言語の情報である制御言語情報との対応を示す２以上の制御対応情報が格納される制御対応情報格納部をさらに具備し、
前記解析部は、
前記ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出し、
前記取得部は、
前記解析部が取得した１以上の各要素識別子に対応する要素言語情報を前記データ辞書部から取得し、かつ前記解析部が取得した１以上の各制御構造情報に対応する制御言語情報を前記制御対応情報格納部から取得し、
前記生成部は、
前記取得部が取得した１以上の要素言語情報と１以上の制御言語情報とを用いて、自然言語の情報であるドキュメントを生成する請求項１記載のドキュメント生成装置。
【請求項３】
前記ソースプログラムは、
マイグレーション前のソースであり、
前記ソースプログラム格納部のソースプログラムを予め決められたルールに基づいて変形する前処理部をさらに具備し、
前記解析部は、
前記前処理部の処理結果のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出する請求項１または請求項２記載のドキュメント生成装置。
【請求項４】
前記ソースプログラムに対応する、自然言語により記載されたドキュメントが格納されるドキュメント格納部と、
前記ソースプログラムから抽出された要素識別子に対応する要素言語情報を、前記ドキュメントから取得する要素言語情取得部と、
前記要素言語情取得部が取得した要素言語情報と、対応する要素識別子との対応を示す要素対応情報を前記データ辞書部に蓄積する要素対応情報蓄積部とを具備する請求項１から請求項３いずれか一項に記載のドキュメント生成装置。
【請求項５】
前記ソースプログラムは１以上のコメントを有し、
前記ソースプログラムから抽出された要素識別子に対応する要素言語情報を、前記コメントから取得する要素言語情取得部と、
前記要素言語情取得部が取得した要素言語情報と、対応する要素識別子との対応を示す要素対応情報を前記データ辞書部に蓄積する要素対応情報蓄積部とを具備する請求項１からは請求項３いずれか一項に記載のドキュメント生成装置。
【請求項６】
前記要素識別子は、関数名、変数名、引数名のうちの２以上である請求項１から請求項５いずれか一項に記載のドキュメント生成装置。
【請求項７】
記録媒体は、
ソースプログラムを構成する２種類以上の各要素を識別する要素識別子と、自然言語の情報である要素言語情報との対応を示す２以上の要素対応情報が格納されるデータ辞書部と、
ソースプログラムが格納されるソースプログラム格納部とを具備し、
解析部、取得部、生成部、および出力部により実現されるドキュメント生成方法であって、
前記解析部が、前記ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子を抽出する解析ステップと、
前記取得部が、前記解析ステップで取得された１以上の各要素識別子に対応する要素言語情報を前記データ辞書部から取得する取得ステップと、
前記生成部が、前記取得ステップでが取得された１以上の要素言語情報を用いて、自然言語の情報であるドキュメントを生成する生成ステップと、
前記出力部が、前記生成ステップで生成されたドキュメントを出力する出力ステップとを具備するドキュメントの生産方法。
【請求項８】
コンピュータがアクセス可能な記録媒体は、
ソースプログラムを構成する２種類以上の各要素を識別する要素識別子と、自然言語の情報である要素言語情報との対応を示す２以上の要素対応情報が格納されるデータ辞書部と、
ソースプログラムが格納されるソースプログラム格納部とを具備し、
コンピュータを、
前記ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子を抽出する解析部と、
前記解析部が取得した１以上の各要素識別子に対応する要素言語情報を前記データ辞書部から取得する取得部と、
前記取得部が取得した１以上の要素言語情報を用いて、自然言語の情報であるドキュメントを生成する生成部と、
前記生成部が生成したドキュメントを出力する出力部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムからドキュメントを生成するドキュメント生成装置等に関するものである。
【背景技術】
【０００２】
従来、画面遷移定義および画面定義の２つの定義を統合した仕様書を自動生成する技術があった（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−４８５６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術においては、画面遷移定義および画面定義の２つの定義から画面に関する仕様書を自動生成するのみであり、企業の貴重なソフトウェア資産を有効に活用できなかった。
【課題を解決するための手段】
【０００５】
本第一の発明のドキュメント生成装置は、ソースプログラムを構成する２種類以上の各要素を識別する要素識別子と、自然言語の情報である要素言語情報との対応を示す２以上の要素対応情報が格納されるデータ辞書部と、ソースプログラムが格納されるソースプログラム格納部と、ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子を抽出する解析部と、解析部が取得した１以上の各要素識別子に対応する要素言語情報をデータ辞書部から取得する取得部と、取得部が取得した１以上の要素言語情報を用いて、自然言語の情報であるドキュメントを生成する生成部と、生成部が生成したドキュメントを出力する出力部とを具備するドキュメント生成装置である。
【０００６】
かかる構成により、企業の貴重なソフトウェア資産を有効に活用するためのドキュメントを自動生成できる。
【０００７】
また、本第二の発明のドキュメント生成装置は、第一の発明に対して、ソースプログラムの中の制御を特定する制御情報と、自然言語の情報である制御言語情報との対応を示す２以上の制御対応情報が格納される制御対応情報格納部をさらに具備し、解析部は、前記ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出し、取得部は、解析部が取得した１以上の各要素識別子に対応する要素言語情報をデータ辞書部から取得し、かつ解析部が取得した１以上の各制御構造情報に対応する制御言語情報を制御対応情報格納部から取得し、生成部は、取得部が取得した１以上の要素言語情報と１以上の制御言語情報とを用いて、自然言語の情報であるドキュメントを生成するドキュメント生成装置である。
かかる構成により、企業の貴重なソフトウェア資産を有効に活用するためのドキュメントを自動生成できる。
また、本第三の発明のドキュメント生成装置は、第一または第二の発明に対して、ソースプログラムは、マイグレーション前のソースであり、ソースプログラム格納部のソースプログラムを予め決められたルールに基づいて変形する前処理部をさらに具備し、解析部は、前処理部の処理結果のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出するドキュメント生成装置である。
【０００８】
かかる構成により、構造が変更されたプログラムに対して、ドキュメントを自動生成できる。
【０００９】
また、本第四の発明のドキュメント生成装置は、第一から第三いずれか１つの発明に対して、ソースプログラムに対応する、自然言語により記載されたドキュメントが格納されるドキュメント格納部と、ソースプログラムから抽出された要素識別子に対応する要素言語情報を、ドキュメントから取得する要素言語情取得部と、要素言語情取得部が取得した要素言語情報と、対応する要素識別子との対応を示す要素対応情報をデータ辞書部に蓄積する要素対応情報蓄積部とを具備するドキュメント生成装置である。
【００１０】
かかる構成により、古いドキュメントからドキュメントを自動生成するための辞書を自動構築できる。
【００１１】
また、本第五の発明のドキュメント生成装置は、第一から第三いずれか１つの発明に対して、ソースプログラムは１以上のコメントを有し、ソースプログラムから抽出された要素識別子に対応する要素言語情報を、コメントから取得する要素言語情取得部と、要素言語情取得部が取得した要素言語情報と、対応する要素識別子との対応を示す要素対応情報をデータ辞書部に蓄積する要素対応情報蓄積部とを具備するドキュメント生成装置である。
【００１２】
かかる構成により、プログラム中のコメントからドキュメントを自動生成するための辞書を自動構築できる。
【００１３】
また、本第六の発明のドキュメント生成装置は、第一から第五いずれか１つの発明に対して、要素識別子は、関数名、変数名、引数名のうちの２以上であるドキュメント生成装置であることは好適である。
【発明の効果】
【００１４】
本発明によるドキュメント生成装置によれば、企業の貴重なソフトウェア資産を有効に活用するためのドキュメントを自動生成できる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１におけるドキュメント生成装置１のブロック図
【図２】同ドキュメント生成装置１のドキュメント生成動作について説明するフローチャート
【図３】同ドキュメント生成装置１のデータ辞書蓄積動作について説明するフローチャート
【図４】同ソースプログラムの例を示す図
【図５】同ドキュメントの例を示す図
【図６】同データ辞書の例を示す図
【図７】同制御対応情報管理表の例を示す図
【図８】同変形後のソースの例を示す図
【図９】同蓄積されたドキュメントの例を示す図
【図１０】同データ辞書の例を示す図
【図１１】同コンピュータシステムの概観図
【図１２】同コンピュータシステムのブロック図
【発明を実施するための形態】
【００１６】
以下、ドキュメント生成装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００１７】
（実施の形態１）
本実施の形態において、ソースプログラム（以下、適宜、ソースという）を構成する要素（例えば、関数名、変数名、引数名など）と自然言語の情報との対応を示すデータ辞書、制御情報に対応する自然言語の情報との対応を示す制御対応情報を用いて、ソースからドキュメントを生成するドキュメント生成装置について説明する。
【００１８】
また、本実施の形態において、ソースはマイグレーション前のソースで、整構造化を行い、その結果のソースに対して、処理を行い、ドキュメントを生成するドキュメント生成装置について説明する。
【００１９】
また、本実施の形態において、データ辞書は、ドキュメントから自動取得したり、ソース内のコメントから取得したりするドキュメント生成装置について説明する。
【００２０】
また、本実施の形態において、
【００２１】
図１は、本実施の形態におけるドキュメント生成装置１のブロック図である。ドキュメント生成装置１は、格納部１１、処理部１２、および出力部１３を備える。
【００２２】
格納部１１は、ソースプログラム格納部１１１、ドキュメント格納部１１２、変形ルール格納部１１３、データ辞書部１１４、および制御対応情報格納部１１５を備える。
【００２３】
処理部１２は、要素言語情取得部１２１、要素対応情報蓄積部１２２、前処理部１２３、解析部１２４、取得部１２５、および生成部１２６を備える。
【００２４】
格納部１１は、各種の情報が格納される。各種の情報とは、例えば、ソースプログラム、ドキュメント、変形ルール、データ辞書、制御対応情報等である。
【００２５】
ソースプログラム格納部１１１は、ソースプログラムが格納される。ソースプログラムは、コンパイルされる対象でも良いし、インタプリタにより解釈される対象でも良い。また、ソースプログラムの言語は、例えば、ＣＯＢＯＬ、Ｃ言語、Ｃ＋＋、アセンブラ等であり、その言語の種類は問わない。また、ソースは、通常、１以上のファイルである。また、ソースとは、通常、マイグレーション前のソースである。
【００２６】
ドキュメント格納部１１２は、ソースプログラムに対応するドキュメントが格納される。このドキュメントは、自然言語により記載された資料であり、通常、ソースの仕様書である。ドキュメントの形式は、表形式、文章列等、問わない。ソースプログラム格納部１１１のソースプログラムと、ドキュメント格納部１１２のドキュメントとは、１対１、１対ｎ（ｎは２以上の自然数）、ｎ対１、ｎ対ｍ（ｍは２以上の自然数）に、対応付いている。また、ソースプログラムとドキュメントとの対応付けの方法は問わない、例えば、ソースプログラムと当該ソースに対応するドキュメントは、拡張子を除いたフェイル名が同一でも良いし、ドキュメントの中にソースのファイル名が記載されていても良いし、ソースのファイルと当該ソースに対応するドキュメントのファイルとがリンクされている等しても良い。
【００２７】
変形ルール格納部１１３は、１以上の変形ルールが格納されている。変形ルールとは、例えば、以下の（１）から（３）である。
（１）同一の命令群は、一の関数にまとめる、というルール。
（２）ＧＯＴＯ文を無くするために、ＧＯＴＯ文を置き換える、というルール。なお、本ルールは、例えば、ＧＯＴＯ文を、ＧＯＴＯ文の先の命令列に置き換え、ＧＯＴＯ文の先の命令列を削除する、といるルールである。
（３）実行されない箇所を削除する、というルール。
【００２８】
データ辞書部１１４は、１または２以上の要素対応情報が格納される。要素対応情報は、要素識別子と要素言語情報との対応を示す情報である。要素対応情報は、要素識別子と要素言語情報とを有する情報でも、両者の対応をとる情報である、と言える。要素識別子とは、ソースを構成する２種類以上の各要素を識別する情報である。要素とは、例えば、関数またはメソッド、変数、引数であり、ソースを構成する部品である。変数は、内部変数、外部変数と区別されていても良い。要素識別子は、例えば、関数名、変数名、引数名である。要素言語情報とは、要素を説明する情報であり、自然言語の情報である。要素言語情報は、通常、単語、句であるが、文でも良い。要素言語情報は、例えば、関数の意味を説明する文や句、変数の意味を説明する単語、引数の意味を説明する単語などである。要素識別子は、関数名、変数名、引数名のうちの２種類以上の情報のうちのいずれかを採り得ることは好適である。
【００２９】
制御対応情報格納部１１５は、１または２以上の制御対応情報が格納される。制御対応情報は、制御情報と制御言語情報との対応を示す情報である。制御対応情報は、制御情報と制御言語情報とを有する情報でも良い。制御情報と制御言語情報とを有する情報は、両者の対応を示す情報である、と言える。制御情報は、ソースの中の制御を特定する情報である。制御情報は、例えば、「if then else」、「for」、「while」、「goto」などである。制御情報は、制御を示すプログラムのパターンでも良い。制御言語情報は、制御情報を説明する情報である。制御言語情報は、自然言語の情報であり、例えば、文、文のパターン等である。制御言語情報は、例えば、「もし〜ならば・・・」、「もし〜なら、〜し、その他の場合は〜する」、「ループする」、「繰り返す」、「ジャンプする」等である。
【００３０】
処理部１２は、各種の処理を行う。各種の処理とは、例えば、要素言語情取得部１２１、要素対応情報蓄積部１２２、前処理部１２３、解析部１２４、取得部１２５、生成部１２６等が行う処理である。
【００３１】
要素言語情取得部１２１は、ソースプログラムから抽出された要素識別子に対応する要素言語情報を、ドキュメントから取得する。ドキュメントは、ソースプログラムに対応するドキュメントである。要素言語情取得部１２１は、通常、ドキュメントの構造の情報を保持しており、かかる構造の情報を用いて、要素識別子に対する説明である要素言語情報を、をドキュメントから取得する。
【００３２】
要素言語情取得部１２１は、ソースプログラムから抽出された要素識別子に対応する要素言語情報を、コメントから取得する。要素言語情取得部１２１は、例えば、要素識別子に対して予め決められた位置に配置されているコメントをソースから抽出し、当該コメント内の情報を要素言語情報として取得する。なお、予め決められた位置は、例えば、要素識別子の横、１行上、１行下である。
【００３３】
要素対応情報蓄積部１２２は、要素言語情取得部１２１が取得した要素言語情報と、対応する要素識別子との対応を示す要素対応情報をデータ辞書部１１４に蓄積する。
【００３４】
前処理部１２３は、ソースプログラム格納部１１１のソースプログラムを予め決められたルールに基づいて変形する。なお、予め決められたルールとは、上記の変形ルールである。前処理部１２３の処理自体は、公知技術であるので、詳細な説明を省略する。前処理部１２３の処理は、コンパイラの最適化技術が利用可能である。
【００３５】
解析部１２４は、ソースプログラム格納部１１１のソースプログラムを解析し、１以上の要素識別子を抽出する。また、解析部１２４は、ソースプログラム格納部１１１のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出することは好適である。
【００３６】
解析部１２４は、前処理部１２３の処理結果のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出することは好適である。制御構造情報は、制御情報と同じでも良いし、制御情報の変数の中に具体的な変数名等が挿入された情報でも良い。
【００３７】
取得部１２５は、解析部１２４が取得した１以上の各要素識別子に対応する要素言語情報をデータ辞書部１１４から取得する。取得部１２５は、解析部１２４が取得した１以上の各要素識別子に対応する要素言語情報をデータ辞書部１１４から取得し、かつ解析部１２４が取得した１以上の各制御構造情報に対応する制御言語情報を１以上の制御対応情報を用いて取得することは好適である。
【００３８】
生成部１２６は、取得部１２５が取得した１以上の要素言語情報を用いて、自然言語の情報であるドキュメントを生成する。生成部１２６は、取得部１２５が取得した１以上の要素言語情報と１以上の制御言語情報とを用いて、自然言語の情報であるドキュメントを生成する。自然言語の情報とは、通常、自然言語文であることは好適である。ただし、ドキュメントの形式やフォーマットは問わない。
【００３９】
出力部１３は、生成部１２６が生成したドキュメントを出力する。ここでの出力とは、通常、蓄積である。また、出力部１３は、ドキュメントを生成する元になったソース、または前処理部での処理結果のソースに対応付けて、ドキュメントを蓄積する。ただし、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、外部の装置への送信、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である、と考えても良い。
【００４０】
格納部１１、ソースプログラム格納部１１１、ドキュメント格納部１１２、変形ルール格納部１１３、データ辞書部１１４、および制御対応情報格納部１１５は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００４１】
格納部１１等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部１１等で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部１１等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部１１等で記憶されるようになってもよい。
【００４２】
処理部１２、要素言語情取得部１２１、要素対応情報蓄積部１２２、前処理部１２３、解析部１２４、取得部１２５、生成部１２６、および出力部１３は、通常、ＭＰＵやメモリ等から実現され得る。処理部１２等処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００４３】
次に、ドキュメント生成装置１がドキュメントを生成する処理の例について、図２のフローチャートを用いて説明する。
【００４４】
（ステップＳ２０１）前処理部１２３は、ドキュメント生成対象のソースをソースプログラム格納部１１１から読み出す。
【００４５】
（ステップＳ２０２）前処理部１２３は、ステップＳ２０１で読み出したソースを解析し、変形ルール格納部１１３の１以上のルールを用いて、ソースを変形し、変形後のソースを取得する。
【００４６】
（ステップＳ２０３）解析部１２４は、カウンタｉに１を代入する。
【００４７】
（ステップＳ２０４）解析部１２４は、解析対象のソース（ここでは、例えば、変形後のソース）に、ｉ番目の解析単位が存在するか否かを判断する。ｉ番目の解析単位が存在する場合はステップＳ２０５に行き、ｉ番目の解析単位が存在しない場合はステップＳ２１５に行く。なお、解析単位は、解析対象のソースの単位であり、例えば、ソースの命令単位、ソースの１行、またはソースの関数単位等である。
【００４８】
（ステップＳ２０５）解析部１２４は、ｉ番目の解析単位から、１以上の要素識別子、１以上の制御構造情報、１以上の定数のうちの１種類以上の情報を取得する。
【００４９】
（ステップＳ２０６）取得部１２５は、カウンタｊに１を代入する。
【００５０】
（ステップＳ２０７）取得部１２５は、ステップＳ２０５で取得された情報の中のｊ番目の情報が存在するか否かを判断する。ｊ番目の情報が存在する場合はステップＳ２０８に行き、ｊ番目の情報が存在しない場合はステップＳ２１４に行く。
【００５１】
（ステップＳ２０８）取得部１２５は、ｊ番目の情報が要素識別子であるか否かを判断する。要素識別子である場合はステップＳ２０９に行き、要素識別子でない場合はステップＳ２１０に行く。
【００５２】
（ステップＳ２０９）取得部１２５は、ｊ番目の情報に対応する要素言語情報をデータ辞書部１１４から取得し、図示しないバッファに一時蓄積する。ステップＳ２１３に行く。
【００５３】
（ステップＳ２１０）取得部１２５は、ｊ番目の情報が制御情報であるか否かを判断する。制御構造情報である場合はステップＳ２１１に行き、制御構造情報でない場合はステップＳ２１２に行く。
【００５４】
（ステップＳ２１１）取得部１２５は、ｊ番目の情報に対応する制御言語情報を制御対応情報格納部１１５から取得し、図示しないバッファに一時蓄積する。ステップＳ２１３に行く。
【００５５】
（ステップＳ２１２）取得部１２５は、ｊ番目の情報である定数を取得し、図示しないバッファに一時蓄積する。
【００５６】
（ステップＳ２１３）取得部１２５は、カウンタｊを１、インクリメントする。ステップＳ２０７に行く。
【００５７】
（ステップＳ２１４）生成部１２６は、バッファ内の１以上の要素言語情報、１以上の制御言語情報、１以上の定数のうちの１種類以上の情報を用いて、出力する情報を構成する。ステップＳ２０４に戻る。なお、出力する情報は、ドキュメントを構成する情報であり、自然言語の情報である。
【００５８】
（ステップＳ２１５）解析部１２４は、カウンタｉを１、インクリメントする。ステップＳ２０４に戻る。
【００５９】
（ステップＳ２１６）出力部１３は、生成部１２６がステップＳ２１４で構成した情報の集合であるドキュメントを出力する。処理を終了する。
【００６０】
次に、ドキュメント生成装置１がデータ辞書部１１４のデータ辞書を蓄積する動作例について、図３のフローチャートを用いて説明する。
【００６１】
（ステップＳ３０１）要素言語情取得部１２１は、データ辞書部１１４のデータ辞書を構築する対象のソースをソースプログラム格納部１１１から読み出す。
【００６２】
（ステップＳ３０２）要素言語情取得部１２１は、ステップＳ３０１で読み出したソースに対応するドキュメントをドキュメント格納部１１２から読み出す。
【００６３】
（ステップＳ３０３）要素言語情取得部１２１は、カウンタｉに１を代入する。
【００６４】
（ステップＳ３０４）要素言語情取得部１２１は、ステップＳ３０１で読み出したソースに、ｉ番目の解析単位が存在するか否かを判断する。ｉ番目の解析単位が存在する場合はステップＳ３０５に行き、ｉ番目の解析単位が存在しない場合は処理を終了する。
【００６５】
（ステップＳ３０５）要素言語情取得部１２１は、ｉ番目の解析単位から、１以上の要素識別子を取得する。なお、ここで、要素識別子を取得できない場合もあり得る。
【００６６】
（ステップＳ３０６）要素言語情取得部１２１は、カウンタｊに１を代入する。
【００６７】
（ステップＳ３０７）要素言語情取得部１２１は、ステップＳ２０５で取得された要素識別子の中のｊ番目の要素識別子が存在するか否かを判断する。ｊ番目の要素識別子が存在する場合はステップＳ３０８に行き、ｊ番目の情報が存在しない場合はステップＳ３１６に行く。
【００６８】
（ステップＳ３０８）要素言語情取得部１２１は、ステップＳ３０２で読み出したドキュメントから、ｊ番目の要素識別子に対応する対応言語情報を取得する。なお、ここで、対応言語情報を取得できない場合もあり得る。
【００６９】
（ステップＳ３０９）要素言語情取得部１２１は、ステップＳ３０９で対応言語情報を取得できたか否かを判断する。取得できた場合はステップＳ３１３に行き、取得できなかった場合はステップＳ３１０に行く。
【００７０】
（ステップＳ３１０）要素言語情取得部１２１は、ｉ番目の解析単位に対応するコメントをステップＳ３０１で読み出したソースから取得する。なお、ｉ番目の解析単位に対応するコメントは、ｉ番目の解析単位に対して予め決められた位置に配置されているコメントである。予め決められた位置とは、例えば、ｉ番目の解析単位の横、ｉ番目の解析単位の隣接する下の行、またはｉ番目の解析単位の隣接する上の行等である。また、ここで、コメントを取得できない場合もあり得る。
【００７１】
（ステップＳ３１１）要素言語情取得部１２１は、ステップＳ３１０で取得したコメントから対応言語情報を取得する。なお、ここで、対応言語情報を取得できない場合もあり得る。
【００７２】
（ステップＳ３１２）要素言語情取得部１２１は、ステップＳ３１１で対応言語情報を取得できたか否かを判断する。取得できた場合はステップＳ３１３に行き、取得できなかった場合はステップＳ３１５に行く。
【００７３】
（ステップＳ３１３）要素言語情取得部１２１は、ｊ番目の要素識別子と取得した対応言語情報とを用いて、要素対応情報を構成する。
【００７４】
（ステップＳ３１４）要素対応情報蓄積部１２２は、ステップＳ３１３で取得された要素対応情報をデータ辞書部１１４に蓄積する。
【００７５】
（ステップＳ３１５）要素言語情取得部１２１は、カウンタｊを１、インクリメントする。ステップＳ３０７に行く。
【００７６】
（ステップＳ３１６）要素言語情取得部１２１は、カウンタｉを１、インクリメントする。ステップＳ３０４に戻る。
【００７７】
なお、図３のフローチャートにおいて、一の要素識別子に対応する対応言語情報を、ドキュメントから取得できた場合に、当該一の要素識別子に対応する対応言語情報をコメントから取得は行わなかった。しかし、一の要素識別子に対応する対応言語情報を、ドキュメントから取得できた場合でも、コメントからも当該一の要素識別子に対応する対応言語情報を取得する処理を行っても良い。また、まず、コメントから一の要素識別子に対応する対応言語情報を取得しようとし、取得できなかった場合のみ、一の要素識別子に対応する対応言語情報をドキュメントから取得するようにしても良い。
【００７８】
以下、本実施の形態におけるドキュメント生成装置１の具体的な動作について説明する。以下、２つの具体例を説明する。具体例１は、ソースからドキュメントを生成する場合である。具体例２は、ドキュメント、ソース内のコメントからデータ辞書を構築する場合である。
【００７９】
（具体例１）
今、ソースプログラム格納部１１１に、図４に示すソースが格納されている、とする。また、ドキュメント格納部１１２には、図４のソースに対応するドキュメントであり、図５のドキュメントが格納されている、とする。図５のドキュメントは、例えば、過去に人手により作成されたドキュメントである。また、データ辞書部１１４には、図６に示すデータ辞書が格納されている、とする。データ辞書は、「ＩＤ」「要素識別子」「要素種類識別子」「要素言語情報」を有するレコードを１以上有する。「ＩＤ」はレコードを識別する情報である。「要素種類識別子」は要素識別子の種類を示す情報であり、「関数」、「引数」、「変数」「内部変数」「外部変数」等の値を採り得る。制御対応情報格納部１１５は、図７に示す制御対応情報管理表を格納している、とする。制御対応情報管理表は、「ＩＤ」「制御情報」「制御言語情報」を有するレコードを１以上有する。また、図７において「.*」は任意の文字が該当する。
【００８０】
具体例１において、ソースプログラム格納部１１１のソースから、図６に示すデータ辞書、図７に示す制御対応情報管理表を用いて、当該ソースに対応するドキュメントを生成する。
【００８１】
まず、前処理部１２３は、図４に示すソースをソースプログラム格納部１１１から読み出す。そして、前処理部１２３は、読み出したソースを解析し、変形ルール格納部１１３の１以上のルール（ここでは、ｇｏｔｏ文を無くするルール）を用いて、ソースを変形し、変形後のソースを取得する。ここで、変形後のソースは、図４のソースに対して、整構造化され、図４におけるｇｏｔｏ文が無くなっており、ｇｏｔｏ文である「ｇｏｔｏ  Ｌ１００；」がＬ１００の内容である「ｒｅｔ＝０；」に置き換えられ、「ｇｏｔｏ  Ｌ１０１；」がＬ１０１の内容である「ｒｅｔ＝−１；」に置き換えられる。そして、Ｌ１００の行、Ｌ１０１の行が削除される。かかる変形後のソースは、図８である。
【００８２】
次に、解析部１２４は、以下のように、図８のソースを解析単位で解析する。ここで、解析単位は、例えば、一行または一命令である、とする。
【００８３】
解析部１２４は、１行目の「ｆｕｎｃ＿１（ｉｎｔ  ＩＤ）」を取得し、要素識別子である関数名「ｆｕｎｃ＿１」、要素識別子である引数「ＩＤ」を取得する。
【００８４】
次に、取得部１２５は、１番目の情報「ｆｕｎｃ＿１」に対応する要素言語情報「ユーザ登録を行う」を図６のデータ辞書から取得する。また、取得部１２５は、２番目の情報「ＩＤ」に対応する要素言語情報「ユーザＩＤ」を図６のデータ辞書から取得する。
【００８５】
次に、生成部１２６は、「ｆｕｎｃ＿１」に対応する要素言語情報「ユーザ登録を行う」から「ユーザ登録を行う関数」を得る。生成部１２６は、要素識別子「ｆｕｎｃ＿１」に対応する要素種類識別子「関数」を、要素言語情報の最後に付加し、出力する情報を構成する。かかる処理は、取得した要素言語情報を変形する例である。
【００８６】
次に、生成部１２６は、要素言語情報「ユーザＩＤ」を用いて、「引数  ＩＤ→ユーザＩＤ」を得る。生成部１２６は、ＩＤの要素種類識別子「引数」を用いて、出力する情報「引数  ＩＤ→ユーザＩＤ」を得る。生成部１２６は、ＩＤの要素種類識別子が「引数」である場合、保持している「引数  ＄変数  →＄要素言語情報」というパターンの＄変数に「ＩＤ」、＄要素言語情報に「ユーザＩＤ」を代入し、出力する情報「引数  ＩＤ→ユーザＩＤ」を得る。つまり、生成部１２６は、取得された要素言語情報等を文字列パターンに適用し、出力する情報を得ても良い。
【００８７】
解析部１２４は、２行目の「ｉｎｔ  ｒｅｔ；  ／＊  リターン値  ＊／）」を取得し、当該解析単位から、要素識別子である変数「ｒｅｔ」を取得する。
【００８８】
次に、取得部１２５は、変数「ｒｅｔ」に対応する要素言語情報を図６のデータ辞書から取得しようとするが、取得できない。次に、取得部１２５は、変数「ｒｅｔ」に対応するコメント「／＊  リターン値  ＊／）」から要素言語情報「リターン値」を取得する。
【００８９】
次に、生成部１２６は、「ｒｅｔ」に対応する要素言語情報「リターン値」から、出力する情報「変数  ｒｅｔ→リターン値」を得る。
【００９０】
同様に、解析部１２４と取得部１２５と生成部１２６の処理により、出力する情報「変数  ａｇｅ→年令」「変数  ｎａｍｅ［１００］→名前」「変数  ａｄｒｅｓｓ［２００］→住所」「変数  ｔｅｌ→電話番号」を得る。
【００９１】
次に、解析部１２４は、ソースから「ｐｒｉｎｔｆ（"氏名を入力してください。￥ｎ"）；」を取得し、当該解析単位から、要素識別子である関数名「ｐｒｉｎｔｆ」を取得する。
【００９２】
次に、取得部１２５は、要素識別子「ｐｒｉｎｔｆ」に対応する要素言語情報「＆引数を出力する」を図６のデータ辞書から取得する。
【００９３】
次に、生成部１２６は、要素言語情報「＆引数を出力する」の変数「＄引数」に、ｐｒｉｎｔｆの引数「"氏名を入力してください。￥ｎ"」から改行"￥ｎ"を除いた文字列を代入し、要素言語情報「"氏名を入力してください。"を出力する。」を得る。そして、生成部１２６は、１番目の処理なので、「１．」を先頭に付加し、「１．"氏名を入力してください。"を出力する」という出力する情報を得る。
【００９４】
次に、解析部１２４は、ソースから「ｓｃａｎｆ（"％ｃ"，ｎａｍｅ）；」を取得し、要素識別子である関数名「ｓｃａｎｆ」を取得する。
【００９５】
次に、取得部１２５は、要素識別子「ｓｃａｎｆ」に対応する要素言語情報「ユーザに＄引数の入力を求める。」を図６のデータ辞書から取得する。
【００９６】
次に、生成部１２６は、要素言語情報「ユーザに＄引数の入力を求める。」の変数「＄引数」に、ｓｃａｎｆの引数「ｎａｍｅ」に対応する要素言語情報「名前」を代入し、出力する情報「ユーザに名前の入力を求める。」を得る。そして、生成部１２６は、２番目の処理なので、「２．」を先頭に付加し、「２．ユーザに名前の入力を求める。」を得る。
【００９７】
そして、同様に、生成部１２６は、「３．"年令を入力してください。"を出力する。」「４．ユーザに年令の入力を求める。」を得る。
【００９８】
次に、解析部１２４は、ソースから「ｉｆ（ＩＤ＞＝０）｛」を取得し、図７の制御情報「ｉｆ（．＊）」に合致する、と判断し、対応する制御言語情報「もし"．＊"の場合、」を図７の制御対応情報管理表から取得する。そして、取得部１２５は、「．＊」の位置に「ＩＤ＞＝０」を代入し、制御言語情報「もし"ＩＤ＞＝０"の場合、」を得る。そして、生成部１２６は、５番目の処理なので、「５．」を先頭に付加し、「５．もし"ＩＤ＞＝０"の場合、」を得る。
【００９９】
次に、解析部１２４は、ソースから「ｒｅｇｉｓｔ（＆ＩＤ，＆ａｇｅ,ｎａｍｅ，＆ｔｅｌ）；」を取得し、当該ソースから要素識別子である関数名「ｒｅｇｉｓｔ」を取得する。
【０１００】
次に、取得部１２５は、要素識別子「ｒｅｇｉｓｔ」に対応する要素言語情報「ユーザの情報をデータベースに登録する。」を図６のデータ辞書から取得する。
【０１０１】
次に、生成部１２６は、取得部１２５が取得した要素言語情報「ユーザの情報をデータベースに登録する。」を、出力する情報として取得する。なお、ここでは、制御情報の中なので、生成部１２６は、先頭に番号は付けない、とする。
【０１０２】
次に、解析部１２４は、ソースから「ｒｅｔ＝０；」を取得し、要素識別子である変数「ｒｅｔ」、制御情報「＝」、定数「０」を取得する。
【０１０３】
次に、取得部１２５は、要素識別子「ｒｅｔ」に対応する要素言語情報「リターン値」をコメントから取得する。また、取得部１２５は、制御情報「＝」に対応する制御言語情報「"．＊"に"．＊"を代入する。」
【０１０４】
次に、生成部１２６は、上記の取得した情報から、出力する情報「リターン値"ｒｅｔ"に"０"を代入する。」を得る。
【０１０５】
同様に、生成部１２６は、「６．その他の場合、」「リターン値"ｒｅｔ"に"−１"を代入する。」「ｎ．上位関数にリターン値を返す。」を得る。なお、ｎは７以上の自然数である。
【０１０６】
次に、出力部１３は、生成部１２６が構成した情報の集合であるドキュメントを格納部１１に蓄積する。なお、蓄積されたドキュメントの例は、図９である。図９は、関数名「ｆｕｎｃ＿１」を用いたファイル名（ここでは、「ｆｕｎｃ＿１．ｄｏｃ」）のファイルの中身である、とする。
【０１０７】
なお、本具体例において、前処理は行わずに、図４のソースからドキュメントを生成しても良い。
【０１０８】
（具体例２）
今、ソースプログラム格納部１１１に、図４に示すソースが格納されている、とする。また、ドキュメント格納部１１２に、図４のソースに対応するドキュメントである図５のドキュメントが格納されている、とする。
【０１０９】
かかる状況において、データ辞書を構築する処理について説明する。ここでは、前処理を行った結果である図８のソースを用いて、データ辞書を構築する、とする。つまり、図８のソースと図５のドキュメントから、データ辞書を構築する、とする。
【０１１０】
要素言語情取得部１２１は、図８のソースの１行目の解析単位から、要素識別子である関数名「ｆｕｎｃ＿１」、引数「ＩＤ」を取得する。
【０１１１】
次に、要素言語情取得部１２１は、関数名「ｆｕｎｃ＿１」に対応する対応言語情報を以下のように取得する。つまり、要素言語情取得部１２１は、図５の「ｆｕｎｃ＿１」のドキュメント（ｆｕｎｃ＿１．ｄｏｃというファイル）の「機能」に対応する文字列「ユーザ登録を行う」を取得する。なお、要素言語情取得部１２１は、ドキュメントの構造の情報を保持しており、かかる情報を用いて、関数の説明に対応する「機能」の領域の文字列を取得する。
【０１１２】
次に、要素言語情取得部１２１は、要素識別子「ｆｕｎｃ＿１」と取得した対応言語情報「ユーザ登録を行う」とを用いて、要素対応情報を構成する。なお、ここで、要素言語情取得部１２１は、「ｆｕｎｃ＿１」が関数であることも検知し、要素種類識別子「関数」も得て、要素対応情報を構成する。
【０１１３】
次に、要素対応情報蓄積部１２２は、構成された要素対応情報をデータ辞書に蓄積する。なお、かかる要素対応情報は、図１０の「ＩＤ＝１」のレコードである。
【０１１４】
次に、要素言語情取得部１２１は、引数「ＩＤ」に対応する対応言語情報「ユーザＩＤ」を図５のドキュメントから取得する。なお、要素言語情取得部１２１は、ドキュメントの構造の情報を保持しており、かかる情報を用いて、引数の説明に対応する「引数説明」の領域の文字列を取得する。
【０１１５】
次に、要素言語情取得部１２１は、要素識別子「ＩＤ」と取得した対応言語情報「ユーザＩＤ」と要素種類識別子「引数」を用いて、要素対応情報を構成する。
【０１１６】
次に、要素対応情報蓄積部１２２は、構成された要素対応情報をデータ辞書に蓄積する。なお、かかる要素対応情報は、図１０の「ＩＤ＝５」のレコードである。
【０１１７】
要素言語情取得部１２１は、図８のソースの２行目の解析単位から、要素識別子である変数「ｒｅｔ」を取得する。また、要素言語情取得部１２１は、「ｒｅｔ」の要素種類識別子「内部変数」も取得する。
【０１１８】
次に、要素言語情取得部１２１は、変数「ｒｅｔ」に対応する対応言語情報をドキュメントから取得しようとするが取得できなかった。そして、要素言語情取得部１２１は、変数「ｒｅｔ」に対応する対応言語情報「リターン値」をコメントから取得する。
【０１１９】
次に、要素言語情取得部１２１は、要素識別子「ｒｅｔ」、取得した対応言語情報「リターン値」、および要素種類識別子「内部変数」を用いて、要素対応情報を構成する。
【０１２０】
次に、要素対応情報蓄積部１２２は、構成された要素対応情報をデータ辞書に蓄積する。なお、かかる要素対応情報は、図１０の「ＩＤ＝３０」のレコードである。また、「ＩＤ＝３０」において、要素種類識別子が「内部変数」なので、要素対応情報蓄積部１２２は、その変数が属する関数「ｆｕｎｃ＿１」もデータ辞書に蓄積する。
【０１２１】
以降、同様にして、ソースの解析結果から、ドキュメントとコメントを用いて、データ辞書に複数の要素対応情報が蓄積される。
【０１２２】
以上、本実施の形態によれば、企業の貴重なソフトウェア資産を有効に活用するためのドキュメントを自動生成できる。
【０１２３】
また、本実施の形態によれば、構造が変更されたプログラムに対して、ドキュメントを自動生成できる。
【０１２４】
また、本実施の形態によれば、古いドキュメントからドキュメントを自動生成するための辞書を自動構築できる。
【０１２５】
さらに、本実施の形態によれば、プログラム中のコメントからドキュメントを自動生成するための辞書を自動構築できる。
【０１２６】
なお、本実施の形態において、制御対応情報格納部１１５は存在しなくても良い。かかる場合、解析部１２４は、ソースプログラム格納部１１１のソースプログラムを解析し、１以上の要素識別子を抽出する。また、かかる場合、取得部１２５は、解析部１２４が取得した１以上の各要素識別子に対応する要素言語情報をデータ辞書部１１４から取得する。
また、本実施の形態によれば、本実施の形態におけるドキュメント生成装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータがアクセス可能な記録媒体は、ソースプログラムを構成する２種類以上の各要素を識別する要素識別子と、自然言語の情報である要素言語情報との対応を示す２以上の要素対応情報が格納されるデータ辞書部と、ソースプログラムが格納されるソースプログラム格納部とを具備し、コンピュータを、前記ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子を抽出する解析部と、前記解析部が取得した１以上の各要素識別子に対応する要素言語情報を前記データ辞書部から取得する取得部と、前記取得部が取得した１以上の要素言語情報を用いて、自然言語の情報であるドキュメントを生成する生成部と、前記生成部が生成したドキュメントを出力する出力部として機能させるためのプログラムである。
また、上記プログラムにおいて、記録媒体は、ソースプログラムの中の制御を特定する制御情報と、自然言語の情報である制御言語情報との対応を示す２以上の制御対応情報が格納される制御対応情報格納部をさらに具備し、前記解析部は、前記ソースプログラム格納部のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出し、前記取得部は、前記解析部が取得した１以上の各要素識別子に対応する要素言語情報を前記データ辞書部から取得し、かつ前記解析部が取得した１以上の各制御構造情報に対応する制御言語情報を前記制御対応情報格納部から取得し、前記生成部は、前記取得部が取得した１以上の要素言語情報と１以上の制御言語情報とを用いて、自然言語の情報であるドキュメントを生成するものとして、コンピュータを機能させるためのプログラムである。
【０１２７】
上記プログラムにおいて、前記ソースプログラムは、マイグレーション前のソースであり、コンピュータを、前記ソースプログラム格納部のソースプログラムを予め決められたルールに基づいて変形する前処理部としてさらに機能させ、前記解析部は、前記前処理部の処理結果のソースプログラムを解析し、１以上の要素識別子と、プログラム中の制御を示す１以上の制御構造情報とを抽出するものとして、コンピュータを機能させるプログラムであることは好適である。
【０１２８】
上記プログラムにおいて、記録媒体は、前記ソースプログラムに対応する、自然言語により記載されたドキュメントが格納されるドキュメント格納部をさらに具備し、前記ソースプログラムから抽出された要素識別子に対応する要素言語情報を、前記ドキュメントから取得する要素言語情取得部と、前記要素言語情取得部が取得した要素言語情報と、対応する要素識別子との対応を示す要素対応情報を前記データ辞書部に蓄積する要素対応情報蓄積部として、さらにコンピュータを機能させるプログラムであることは好適である。
【０１２９】
上記プログラムにおいて、前記ソースプログラムは１以上のコメントを有し、前記ソースプログラムから抽出された要素識別子に対応する要素言語情報を、前記コメントから取得する要素言語情取得部と、前記要素言語情取得部が取得した要素言語情報と、対応する要素識別子との対応を示す要素対応情報を前記データ辞書部に蓄積する要素対応情報蓄積部として、コンピュータをさらに機能させるプログラムであることは好適である。
【０１３０】
また、図１１は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態のドキュメント生成装置等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図１１は、このコンピュータシステム３００の概観図であり、図１２は、システム３００のブロック図である。
【０１３１】
図１１において、コンピュータシステム３００は、ＣＤ−ＲＯＭドライブを３０１２含むコンピュータ３０１と、キーボード３０２と、マウス３０３と、モニタ３０４とを含む。
【０１３２】
図１２において、コンピュータ３０１は、ＣＤ−ＲＯＭドライブ３０１２と、ＭＰＵ３０１３と、バス３０１４と、ＲＯＭ３０１５と、ＲＡＭ３０１６と、ハードディスク３０１７とを含む。ＲＯＭ３０１５は、ブートアッププログラム等のプログラムを記憶している。ＲＡＭ３０１６は、ＭＰＵ３０１３に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供する。ハードディスク３０１７は、通常、アプリケーションプログラム、システムプログラム、及びデータを記憶している。ここでは、図示しないが、コンピュータ３０１は、さらに、ＬＡＮへの接続を提供するネットワークカードを含んでも良い。
【０１３３】
コンピュータシステム３００に、上述した実施の形態のドキュメント生成装置等の機能を実行させるプログラムは、ＣＤ−ＲＯＭ３１０１に記憶されて、ＣＤ−ＲＯＭドライブ３０１２に挿入され、さらにハードディスク３０１７に転送されても良い。また、プログラムは、図示しないネットワークを介してコンピュータ３０１に送信され、ハードディスク３０１７に記憶されても良い。プログラムは実行の際にＲＡＭ３０１６にロードされる。プログラムは、ＣＤ−ＲＯＭ３１０１またはネットワークから直接、ロードされても良い。
【０１３４】
プログラムは、コンピュータ３０１に、上述した実施の形態のドキュメント生成装置等の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切なモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム３００がどのように動作するかは周知であり、詳細な説明は省略する。
【０１３５】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理（ハードウェアでしか行われない処理）は含まれない。
【０１３６】
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０１３７】
また、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０１３８】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１３９】
以上のように、本発明にかかるドキュメント生成装置は、企業の貴重なソフトウェア資産を有効に活用するためのドキュメントを自動生成できるという効果を有し、ドキュメント生成装置等として有用である。
【符号の説明】
【０１４０】
１  ドキュメント生成装置
１１  格納部
１２  処理部
１３  出力部
１１１  ソースプログラム格納部
１１２  ドキュメント格納部
１１３  変形ルール格納部
１１４  データ辞書部
１１５  制御対応情報格納部
１２１  要素言語情取得部
１２２  要素対応情報蓄積部
１２３  前処理部
１２４  解析部
１２５  取得部
１２６  生成部
【図１】
2018106582.tif 000003
【図２】
2018106582.tif 000004
【図３】
2018106582.tif 000005
【図４】
2018106582.tif 000006
【図５】
2018106582.tif 000007
【図６】
2018106582.tif 000008
【図７】
2018106582.tif 000009
【図８】
2018106582.tif 000010
【図９】
2018106582.tif 000011
【図１０】
2018106582.tif 000012
【図１１】
2018106582.tif 000013
【図１２】
2018106582.tif 000014