(57)【特許請求の範囲】
【請求項１】
プログラムの構文を解析する構文解析手段と、
前記構文解析手段により構文を解析した前記プログラムに含まれる関数、変数又はコメントを特定する関数／変数／コメント特定手段と、
関数又は変数との位置関係により指定されるコメントをインデックス化するための複数のコメント解析ルールの中から、ユーザ操作により指定された１以上のコメント解析ルールに基づいて、前記プログラムに含まれるコメントを抽出し、当該抽出したコメントを形態素解析して、前記関数／変数／コメント特定手段により特定した前記関数又は前記変数を検索するための検索用インデックスを生成するコメント解析手段と、
前記関数／変数／コメント特定手段により特定した前記関数又は前記変数と、前記コメント解析手段により生成した前記検索用インデックスと、に基づいて、前記関数又は前記変数に対応する検索用インデックスを含んだ名前データベースを作成する名前データベース作成手段と、
を備える名前データベース作成装置。
【請求項２】
コンピュータが、
プログラムの構文を解析する構文解析ステップと、
前記構文解析ステップにおいて構文を解析した前記プログラムに含まれる関数、変数又はコメントを特定する関数／変数／コメント特定ステップと、
関数又は変数との位置関係により指定されるコメントをインデックス化するための複数のコメント解析ルールの中から、ユーザ操作により指定された１以上のコメント解析ルールに基づいて、前記プログラムに含まれるコメントを抽出し、当該抽出したコメントを形態素解析して、前記関数／変数／コメント特定ステップにおいて特定した前記関数又は前記変数を検索するための検索用インデックスを生成するコメント解析ステップと、
前記関数／変数／コメント特定ステップにおいて特定した前記関数又は前記変数と、前記コメント解析ステップにおいて生成した前記検索用インデックスと、に基づいて、前記関数又は前記変数に対応する検索用インデックスを含んだ名前データベースを作成する名前データベース作成ステップと、を実行する方法。
【請求項３】
請求項２に記載の方法を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワーク上のプログラムに基づいて名前データベースを作成する名前データベース作成装置、方法及びプログラムに関する。
【背景技術】
【０００２】
近時、通信ネットワーク上には、万人に利用を許可したオープンソースプログラムが広く提供されている（非特許文献１）。オープンソースプログラムとは、ソフトウェアの設計図にあたるソースコードを、インターネット等を通じて無償で公開し、誰でもそのソフトウェアの改良、再配布が行なえるようにするものである。
一方、プログラマがプログラミング作業を行う際には、関数名や変数名を含んだ構文で形成されるプログラムを入力しているが、目的とするプログラムを作成するため、目的にマッチする関数名や変数名を都度考慮しているのが現状である。
【非特許文献１】［ｏｎｌｉｎｅ］、２００４年９月１８日更新、ＩＴ用語辞典、［２００８年５月１５日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｅ−ｗｏｒｄｓ．ｊｐ／ｗ／Ｅ３８２ＡＡＥ３８３ＢＣＥ３８３９７Ｅ３８３Ｂ３Ｅ３８２ＢＤＥ３８３ＢＣＥ３８２Ｂ９．ｈｔｍｌ＞
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、オープンソースプログラムには、参考となるべき良質なプログラムが多く、このようなオープンソースプログラムに含まれている関数名や変数名を参考としてプログラミングすることができれば非常に便利ではあるが、このような技術は未だ存在していないのが現状である。
そこで、本発明では、このような事情を考慮して提案されるものであり、プログラムに基づいて関数名や変数名の参考となる名前データベースを作成する名前データベース作成装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記目的を達成するために、本発明者は、プログラムを解析することにより名前データベースを作成する仕組みを見出し、本発明を想到するに至った。
【０００５】
（１）  プログラムの構文を解析する構文解析手段と、
前記構文解析手段により構文を解析した前記プログラムに含まれる関数、変数又はコメントを特定する関数／変数／コメント特定手段と、
所定のコメント解析ルールに基づいて、前記プログラムに含まれるコメントを解析し、特定した前記関数又は前記変数を検索するためのインデックスを生成するコメント解析手段と、
前記関数／変数／コメント特定手段により特定した前記関数又は前記変数と、前記コメント解析手段により生成した前記検索用インデックスと、に基づいて、前記関数又は前記変数に対応する検索用インデックスを含んだ名前データベースを作成する名前データベース作成手段と、
を備える名前データベース作成装置。
【０００６】
本発明のこのような発明の構成によれば、関数／変数／コメント特定手段により特定した関数又は変数と、コメント解析手段により生成した検索用インデックスと、に基づいて、関数又は変数に対応する検索用インデックスを含む名前データベースを作成することができる。その結果、プログラムにおいて実際に使用されている関数又は変数を、コメントの語句をクエリーとして検索可能な状態で記憶することができる。
【０００７】
（２）  前記コメント解析手段は、前記コメントを形態素解析することにより前記検索用インデックスを生成することを特徴とする、名前データベース作成装置。
【０００８】
本発明のこのような発明の構成によれば、前記名前データベース作成装置は、コメントを形態素解析することにより検索用インデックスを作成するので、検索用インデックスの作成を容易に行うことができる。
【０００９】
（３）  コンピュータが、
プログラムの構文を解析する構文解析ステップと、
前記構文解析ステップにおいて構文を解析した前記プログラムに含まれる関数、変数又はコメントを特定する関数／変数／コメント特定ステップと、
所定のコメント解析ルールに基づいて、前記プログラムに含まれるコメントを解析し、特定した前記関数又は前記変数を検索するためのインデックスを生成するコメント解析ステップと、
前記関数／変数／コメント特定ステップにおいて特定した前記関数又は前記変数と、前記コメント解析ステップにおいて生成した前記検索用インデックスと、に基づいて、前記関数又は前記変数に対応する検索用インデックスを含んだ名前データベースを作成する名前データベース作成ステップと、を実行する方法。
【００１０】
本発明のこのような発明の構成によれば、（１）と同様の効果を奏することができる。
【００１１】
（４）  （３）に記載のステップを前記コンピュータに実行させるプログラム。
【００１２】
本発明のこのような発明の構成によれば（１）と同様の効果を奏することができる。
【発明の効果】
【００１３】
この発明によれば、関数／変数／コメント特定手段により特定した関数、変数又はコメントと、コメント解析手段により生成した検索用インデックスと、に基づいて、関数、変数又はコメントに対応する検索用インデックスを含む名前データベースを作成する名前データベース作成装置を提供することにより、プログラムにおいて実際に使用されている関数又は変数が、コメントの語句をクエリーとして検索可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施するための最良の形態について図を参照しながら説明する。なお、これはあくまでも一例であって、本発明の技術的範囲はこれに限られるものではない。
【００１５】
［データベース装置と関連要素の全体構成］
図１は、本実施形態に係る名前データベース作成装置１と関連要素の全体構成を示す図である。
本実施形態に係る名前データベース作成装置１は、プログラム２にアクセスすることができる。なお、当該アクセスの手段は、名前データベース作成装置１の記憶装置に記憶したものに直接アクセスしてもよいし、通信ネットワークを介してアクセスしてもよい。
【００１６】
名前データベース作成装置１は、構文解析手段１０と、関数／変数／コメント特定手段１１と、コメント解析手段１２と、名前データベース作成手段１４と、を備えており、コメント解析手段１２はコメント解析ルールデータベース１３を参照可能に構成されており、名前データベース作成手段１４は名前データベース１５を作成する。
【００１７】
構文解析手段１０は、通信ネットワーク上のオープンソースプログラムを含むプログラム２の構文を解析する。関数／変数／コメント特定手段１１は、構文解析手段１０により構文が解析されたプログラム２に含まれる関数、変数又はコメントを特定する。コメント解析手段１２は、コメント解析ルールデータベース１３から、所定のコメント解析ルールを読み出して、構文解析手段１０により構文が解析されたプログラム２に含まれるコメントを解析し、検索用インデックスを生成する。
名前データベース作成手段１４は、関数／変数／コメント特定手段１１により特定した関数又は変数と、コメント解析手段１２により生成した検索用インデックスと、に基づいて、関数又は変数に対応する検索用インデックスを含んだデータベース（ここでは名前データベース１５）を作成する。
【００１８】
［コメント解析ルールデータベースの概要］
図２は、コメント解析ルールデータベース１３の概要を示す図である。ここでは、ルールＩＤ毎にコメント解析ルールが予め記憶されている。
ルール「Ｒ０００１」は、関数定義の直上又は直右に含まれるコメントの語句を当該関数名についてインデックス化するものである。ルール「Ｒ０００２」は、関数定義内に含まれるコメントの語句を当該関数名についてインデックス化するものである。ルール「Ｒ００１２」は、変数定義の直右のコメントを当該関数名についてインデックス化するものである。ルール「Ｒ００１３」は、関数定義の直上のコメントを当該関数の返り値変数についてインデックス化するものである。
【００１９】
このようなコメント解析ルールは後述するデータベース化処理に使用され、どのルールを適用するかは、ユーザが予め選択することができる。
【００２０】
［名前データベース１５の概要］
図３は、名前データベース１５の概要を示す図である。ここでは、ＩＤ毎に、関数／変数名、検索用インデックスが記憶されている。このようなデータベースは、後述するデータベース作成処理により作成される。
【００２１】
ここでは、関数／変数名「ｔｏＫａｔａｋａｎａ」に対応する検索用インデックスが「平仮名」、「カタカナ」、「変換」、「平仮名以外」、「そのまま」とされている。また、関数／変数名「ｒｓ」に対応する検索用インデックスが「平仮名」、「カタカナ」、「変換」、「文字列」とされている。
このような検索用インデックスは、形態素解析によりコメントから抽出された語句であってよい。
【００２２】
［名前データベース作成装置１の基本動作］
図４はプログラム２の一例を示す図である。図５は、名前データベース作成装置１の処理手順を示すフローチャートである。図６は、適用ルール選択画面について示す図である。
【００２３】
Ｓ１０：構文解析手段１０は、プログラム２に含まれる構文を解析する。より具体的には、図４に示すようなプログラム２のソースコードを読み込んで、プログラミング言語（この例ではｊａｖａ（登録商標））の文法に従って、関数定義、変数定義、ループ構造、条件分岐等の予約語を解読する。従って、構文解析手段１０は、読み込むプログラム２が書かれたプログラミング言語それぞれに応じて、その文法を解釈する機能を有する。
【００２４】
Ｓ１１：関数／変数／コメント特定手段１１は、構文解析手段が解析したプログラム２に含まれる関数名及び変数名を特定する。より具体的には、例えば、図４のソースコードの場合には、「ｔｏＫａｔａｋａｎａ」を関数名として特定する。同様にして、「ｒｓ」を変数名として特定する。
【００２５】
Ｓ１２：コメント解析手段１２は、コメント解析ルールデータベース１３を参照して、予め選択されているコメント解析ルールに基づいて検索用インデックスを生成する。具体的には、例えば、ステップＳ１１で特定された関数名「ｔｏＫａｔａｋａｎａ」に対して、ルールＩＤ「Ｒ０００２」が予め選択されている場合には、ルール「関数定義内に含まれるコメントの語句を当該関数名についてインデックス化」に従い、関数「ｔｏＫａｔａｋａｎａ」の定義内に含まれるコメント「平仮名を含む文字列」、「平仮名がカタカナに変換された文字列」、「平仮名のときカタカナに変換」、及び「平仮名以外は、そのまま」に基づいてインデックスを生成する。この場合、それぞれのコメントを形態素解析して、「ｔｏＫａｔａｋａｎａ」を検索するためのインデックスを生成してよい。
【００２６】
同様にして、ステップＳ１１で特定された変数名「ｒｓ」に対して、ルールＩＤ「Ｒ００１３」が予め選択されている場合には、ルール「関数定義の直上のコメントを当該関数の返り値変数についてインデックス化」に従い、関数「ｔｏＫａｔａｋａｎａ」の定義直下のコメント「平仮名を含む文字列」及び「平仮名がカタカナに変換された文字列」に基づいてインデックスを生成する。この場合も同様に、それぞれのコメントを形態素解析して、「ｒｓ」を検索するためのインデックスを生成してよい。
【００２７】
名前データベース作成装置１は、上述のような検索用インデックスを生成するためのコメント解析ルールの指定を受け付けるために、図６に示すような選択画面１６を表示する。ユーザは、このような選択画面１６を参照し、解析するプログラム２のコメントのつけ方に応じて、チェックボックス１６Ａの入力により適宜コメント解析ルールを入れ替えて、名前データベース１５を作成することができる。
【００２８】
Ｓ１３：名前データベース作成手段１４は、関数／変数／コメント特定手段１１により特定した関数名又は変数名と、コメント解析手段１２により生成した検索用インデックスを対応付けて、名前データベース１５を作成する。具体的には、例えば、関数名「ｔｏＫａｔａｋａｎａ」に対応して、検索用インデックス「平仮名」、「カタカナ」、「変換」、「平仮名以外」、「そのまま」を対応付けて記憶する。同様に変数名「ｒｓ」に対して、検索用インデックス「平仮名」、「カタカナ」、「変換」、「文字列」を対応付けて記憶する。
【００２９】
本実施形態によれば、このような構成の名前データベース１５を作成するので、プログラマがプログラミングする際に、検索用インデックスをキーとした関数名又は変数名の検索をすることが可能となるので利便である。
【００３０】
［名前データベース作成装置１のハードウェア構成］
図７は、本実施形態に係る名前データベース作成装置１のハードウェア構成を示す図である。
名前データベース作成装置１は、制御部を構成するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１０、バスライン２００、通信Ｉ／Ｆ（Ｉ／Ｆ：インタフェース）３２０、メインメモリ３３０、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）３４０、表示装置３５０、Ｉ／Ｏコントローラ３６０、キーボード及びマウス等の入力装置３７０、ハードディスク３８０、光ディスクドライブ３９０、並びに半導体メモリ４１０を備える。尚、ハードディスク３８０、光ディスクドライブ３９０、並びに、半導体メモリ４１０をまとめて記憶装置４２０と呼ぶ。
【００３１】
制御部は、名前データベース作成装置１を統括的に制御する部分であり、ハードディスク３８０に記憶された各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【００３２】
通信Ｉ／Ｆ３２０は、名前データベース作成装置１が、通信ネットワークＮを介して情報を送受信する場合のネットワーク・アダプタである。通信Ｉ／Ｆ３２０は、モデム、ケーブル・モデム及びイーサネット（登録商標）・アダプタを含んでよい。
【００３３】
ＢＩＯＳ３４０は、名前データベース作成装置１の起動時にＣＰＵ３１０が実行するブートプログラムや、名前データベース作成装置１がハードウェアに依存するプログラム等を記録する。
【００３４】
表示装置３５０は、ブラウン管液晶装置（ＣＲＴ）、液晶表示装置（ＬＣＤ）等のディスプレイ装置を含む。
【００３５】
Ｉ／Ｏコントローラ３６０には、ハードディスク３８０、光ディスクドライブ３９０、及び半導体メモリ４１０等の記憶装置４２０を接続することができる。
【００３６】
入力装置３７０は、プログラム２の入力に用いられる。
【００３７】
ハードディスク３８０は、本ハードウェアを名前データベース作成装置１として機能させるための各種プログラム、本発明の機能を実行するプログラム及び後述するテーブル及びレコードを記憶する。なお、名前データベース作成装置１は、外部に別途設けたハードディスク（図示せず）を外部記憶装置として利用することもできる。
【００３８】
光ディスクドライブ３９０としては、例えば、ＤＶＤ−ＲＯＭドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＡＭドライブ、ＣＤ−ＲＡＭドライブを使用することができる。この場合は各ドライブに対応した光ディスク４００を使用する。光ディスク４００から光ディスクドライブ３９０によりプログラム又はデータを読み取り、Ｉ／Ｏコントローラ３６０を介してメインメモリ３３０又はハードディスク３８０に提供することもできる。
【００３９】
なお、本発明でいうコンピュータとは、記憶装置４２０、ＣＰＵ３１０等を備えた情報処理装置をいい、名前データベース作成装置１は、記憶装置４２０、ＣＰＵ３１０等を備えた情報処理装置により構成され、この情報処理装置は、本発明のコンピュータの概念に含まれる。
【００４０】
この名前データベース作成装置１においては、構文解析手段１０、関数／変数／コメント特定手段１１、コメント解析手段１２、名前データベース作成手段１４は、ＣＰＵ３１０により構成する。また、コメント解析ルールデータベース１３、名前データベース１５は、記憶装置４２０により構成する。
【図面の簡単な説明】
【００４１】
【図１】本実施形態に係る名前データベース作成装置と関連要素の全体構成を示す図である。
【図２】コメント解析ルールデータベースの概要を示す図である。
【図３】名前データベースの概要を示す図である。
【図４】プログラムの一例を示す図である。
【図５】名前データベース作成装置の処理手順を示すフローチャートである。
【図６】適用ルール選択画面について示す図である。
【図７】本実施形態に係る名前データベース作成装置のハードウェア構成を示す図である。
【符号の説明】
【００４２】
１  名前データベース作成装置
２  プログラム
１０  構文解析手段
１１  関数／変数／コメント特定手段
１２  コメント解析手段
１４  名前データベース作成手段
【図１】
0005425417.tif 000002
【図２】
0005425417.tif 000003
【図３】
0005425417.tif 000004
【図４】
0005425417.tif 000005
【図５】
0005425417.tif 000006
【図６】
0005425417.tif 000007
【図７】
0005425417.tif 000008