(57)【要約】【課題】命名規約に則ったシンボル名の決定を支援する。【解決手段】データ記憶部１２は、解析用辞書データ１２０と、変換辞書データ１２１と、命名規約データ１２２と、を記憶する。コメント解析部１３０は、ユーザによる所定操作に応じて、ソースコード中のコメント文から、指定されたシンボルに対応するコメント部分を抽出し、抽出したコメント部分を解析用辞書データ１２０を用いて解析する。シンボル名候補生成部１３１は、コメント解析部１３０の解析結果を用いて、命名規約データ１２２から、解析したコメント部分に対応する名称生成パターンを取得すると共に、コメント解析部１３０の解析結果と、変換辞書データ１２１と、に基づいて、コメント部分に含まれる見出し語に対応する英語表記を取得し、取得した英語表記と、取得した名称生成パターンと、に基づいて、シンボルの名称候補を生成する。【選択図】図１
2014081715.tif 000002
【特許請求の範囲】
【請求項１】
ユーザからの操作を受け付ける入力部と、
所定の形態素と、見出し語とが対応付けられたコメント解析用辞書データと、前記見出し語と、１又は複数の英語表記とが対応付けられた変換辞書データと、シンボルの種別毎に、コメントパターンと、名称生成パターンとが対応付けられた命名規約データと、を記憶するデータ記憶部と、
ユーザによる所定操作に応じて、ソースコード中のコメント文から、指定されたシンボルに対応するコメント部分を抽出し、抽出したコメント部分を前記コメント解析用辞書データを用いて解析するコメント解析部と、
前記命名規約データから、前記コメント解析部の解析結果に対応する前記コメントパターンを検索することで、前記コメント部分に対応する前記名称生成パターンを取得すると共に、前記コメント解析部の解析結果と、前記変換辞書データと、に基づいて、前記コメント部分に含まれる見出し語に対応する英語表記を取得し、取得した英語表記と、取得した前記名称生成パターンと、に基づいて、前記コメント文における前記指定されたシンボルの名称候補を生成するシンボル名候補生成部と、を備える、
ことを特徴とするプログラム作成支援装置。
【請求項２】
前記シンボルは、関数又は引数の何れかである、
ことを特徴とする請求項１に記載のプログラム作成支援装置。
【請求項３】
前記データ記憶部は、ユーザによって既に作成された複数の関数のソースコードが記述されたソースファイルをさらに記憶し、
前記シンボル名候補生成部によって前記指定されたシンボルの名称候補が生成された後、前記ソースファイルから、前記指定されたシンボルについての作成済みの名称を取得し、取得した作成済みの名称を用いて、前記生成された各候補の順位を決定する候補順位決定部をさらに備える、
ことを特徴とする請求項１又は２に記載のプログラム作成支援装置。
【請求項４】
コンピュータを、
ユーザによる所定操作に応じて、ソースコード中のコメント文から、指定されたシンボルに対応するコメント部分を抽出し、抽出したコメント部分を、所定の形態素と、見出し語とが対応付けられたコメント解析用辞書データを用いて解析するコメント解析部、
シンボルの種別毎に、コメントパターンと、名称生成パターンとが対応付けられた命名規約データから、前記コメント解析部の解析結果に対応する前記コメントパターンを検索することで、前記コメント部分に対応する前記名称生成パターンを取得すると共に、前記コメント解析部の解析結果と、前記見出し語と１又は複数の英語表記とが対応付けられた変換辞書データと、に基づいて、前記コメント部分に含まれる見出し語に対応する英語表記を取得し、取得した英語表記と、取得した前記名称生成パターンと、に基づいて、前記コメント文における前記指定されたシンボルの名称候補を生成するシンボル名候補生成部、として機能させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの作成を支援する技術に関し、特に、シンボル名の決定を支援する技術に関する。
【背景技術】
【０００２】
大規模なプログラムを複数の作業者が共同して開発するようなケースでは、各作業者は、当該企業あるいは開発チームにおいて予め決められたコーディングのルールに則って、コーディング作業を行うのが一般的である。
【０００３】
例えば、特許文献１には、作成されたソースコードのコーディングスタイルが、予め定義されたコーディング規則に適合しているか否かを自動的に診断し、その結果をユーザに提示する装置が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２８１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コーディング規約の主たるものとして、命名規約が挙げられる。命名規約とは、関数名や変数名等のシンボル名を決定するためのルールを定めたものである。各シンボル名が、ルール通りに作成されると、ソースコードの可読性や視認性が向上し、保守性を高めるというメリットが得られる。
【０００６】
その一方、各作業者が、コーディングの際、命名規約を遵守して逐一シンボル名を決定するのは容易な作業とはいえず、シンボル数が多い場合では、大きな作業負担になり、コーディングの作業効率を低下させてしまうという問題もある。
【０００７】
したがって、プログラムのコーディング作業の際のこのようなシンボル名の決定に関し、作業者を支援する有効な技術の提案が望まれているのが実情である。
【０００８】
本発明は、上記実情に鑑みてになされたものであり、プログラム作成において、命名規約に則ったシンボル名の決定を支援するプログラム作成支援装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明に係るプログラム作成支援装置は、
ユーザからの操作を受け付ける入力部と、
所定の形態素と、見出し語とが対応付けられたコメント解析用辞書データと、前記見出し語と、１又は複数の英語表記とが対応付けられた変換辞書データと、シンボルの種別毎に、コメントパターンと、名称生成パターンとが対応付けられた命名規約データと、を記憶するデータ記憶部と、
ユーザによる所定操作に応じて、ソースコード中のコメント文から、指定されたシンボルに対応するコメント部分を抽出し、抽出したコメント部分を前記コメント解析用辞書データを用いて解析するコメント解析部と、
前記命名規約データから、前記コメント解析部の解析結果に対応する前記コメントパターンを検索することで、前記コメント部分に対応する前記名称生成パターンを取得すると共に、前記コメント解析部の解析結果と、前記変換辞書データと、に基づいて、前記コメント部分に含まれる見出し語に対応する英語表記を取得し、取得した英語表記と、取得した前記名称生成パターンと、に基づいて、前記コメント文における前記指定されたシンボルの名称候補を生成するシンボル名候補生成部と、を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ソースコードのコメント文から、指定されたシンボルの名称候補を自動的に生成する。このため、ユーザは、シンボル名を決定する負担から解放され、作業効率の向上が図れる。また、シンボル名が、命名規約に則って生成されるため、ソースコードの可読性や視認性が向上し、保守性が高まるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態１に係るプログラム作成支援装置の構成を示すブロック図である。
【図２】ソースコードに記述されるコメント文の一例を示す図である。
【図３】解析用辞書データの一例を示す図である。
【図４】解析用辞書データにおける各形態素の品詞の種類を示す図である。
【図５】変換辞書データの一例を示す図である。
【図６】命名規約データの一例を示す図である。
【図７】実施形態１のプログラム作成支援装置により生成された関数名候補の一覧（その１）を示す図である。
【図８】実施形態１のプログラム作成支援装置により生成された関数名候補の一覧（その２）を示す図である。
【図９】シンボル名候補生成処理の手順を示すフローチャートである。
【図１０】シンボル指定画面の一例を示す図である。
【図１１】関数コメント解析処理の手順を示すフローチャートである。
【図１２】引数コメント解析処理の手順を示すフローチャートである。
【図１３】関数名候補生成処理の手順を示すフローチャートである。
【図１４】不適切な関数コメントの一例を示す図である。
【図１５】エラーメッセージ画面の一例を示す図である。
【図１６】実施形態１のプログラム作成支援装置により生成された引数名候補の一覧を示す図である。
【図１７】本発明の実施形態２に係るプログラム作成支援装置の構成を示すブロック図である。
【図１８】関係辞書データの一例を示す図である。
【図１９】作成済みのソースコードの一例を示す図である。
【図２０】関数候補順位決定処理の手順を示すフローチャートである。
【図２１】最関連関数名決定処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００１３】
（実施形態１）
図１は、本発明の実施形態１に係るプログラム作成支援装置１の構成を示すブロック図である。このプログラム作成支援装置１は、プログラムのコーディング作業を支援する装置である。
【００１４】
プログラム作成支援装置１は、一般的なパーソナルコンピュータであり、図１に示すように、入力部１０と、表示部１１と、データ記憶部１２と、制御部１３と、を備える。
【００１５】
入力部１０は、キーボード、マウス、キーパッド、タッチパッドやタッチパネル等から構成され、ユーザからの入力操作を受け付け、受け付けた入力操作に係る信号を制御部１３に送出する。表示部１１は、ＣＲＴや液晶モニタ等から構成され、制御部１３の制御の下、ユーザ操作用の画面等の表示を行う。
【００１６】
データ記憶部１２は、読み書き可能な不揮発性の半導体メモリやハードディスクドライブ等から構成される外部記憶装置であり、後述する複数の辞書データ、命名規約データ、コーディング作業を支援するためプログラム、作成済みのソースコード等、本発明特有のデータ及びプログラムや、その他、プログラム作成支援装置１で使用される様々なデータ等を記憶する。
【００１７】
制御部１３は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等を含んで構成され、入力部１０、表示部１１、データ記憶部１２を制御し、それに付随して、これらとの間でデータの授受を行う。制御部１３は、機能的には、コメント解析部１３０と、シンボル名候補生成部１３１と、を備える。これらの各機能部は、ＣＰＵ等が、データ記憶部１２に記憶されている上記のプログラムを実行することで実現する。
【００１８】
コメント解析部１３０は、ユーザが作成中（コーディング中）のソースコードにおけるコメント文の解析を行う。より詳細には、コメント解析部１３０は、作成対象となる関数のソースコードの先頭から数行に亘って記述されるコメント文（図２参照）において、ユーザが指定したシンボルの種類（本実施形態では、関数又は引数）についてのコメント部分を解析する。
【００１９】
本実施形態では、コメント文には、図２に示すように、「関数名」、「機能」、「引数」、「戻り値」の各項目が含まれており、「関数名」には、決定した関数名が記述され（図２の例では、空白）、「機能」には、この関数の機能説明が記述され、「引数」には、引数（パラメータ）の型、引数名（図２の例では、空白）及び意味が記述され、「戻り値」には、戻り値及び意味が記述されるものとする。なお、関数名、引数名が未決定であっても、ユーザは、例えば、ｄｍｙ（）やＸＸＸＸＸ（）等、ダミー名を記述してもよい。
【００２０】
コメント解析部１３０は、ユーザにより、名称を決定したいシンボルとして「関数」が指定されると、コメント文において、“機能：”から“引数：”までに記述されている部分の解析を行う。また、ユーザにより「引数」が指定されると、“引数：”から“戻り値：”までに記述されている部分の解析を行う。
【００２１】
コメント解析部１３０は、関数又は引数のコメント部分を形態素解析すると共に、データ記憶部１２に記憶されている解析用辞書データ１２０を用いて、各形態素を正規化した語（見出し語）に変換する。解析用辞書データ１２０は、図３に示すように、「形態素」と、「見出し語」と、含むレコードが複数登録されたデータテーブルである。図４に、各形態素の品詞の種類を示す。コメント解析部１３０は、解析した結果をシンボル名候補生成部１３１に供給する。
【００２２】
シンボル名候補生成部１３１は、コメント解析部１３０の解析結果と、データ記憶部１２に記憶されている変換辞書データ１２１及び命名規約データ１２２と、に基づいて、当該命名対象のシンボル（関数又は引数）の名称候補を生成する。変換辞書データ１２１とは、図５に示すように、「見出し語」と、「カテゴリ」と、「英語表記」と、を含むレコードが複数登録されたデータテーブルである。
【００２３】
「見出し語」には、コメントに含まれる可能性のある形態素を正規化した語が設定される。「カテゴリ」には、作成対象のプログラムにおいて、「見出し語」が属する概念上のカテゴリが設定される。「英語表記」には、「見出し語」に対応する英語のテキストデータ（文字列）が設定される。また「英語表記」には、「フル表記」、「短縮１」〜「短縮３」が含まれる。「フル表記」とは、「見出し語」に対応する英語を略さずに表した英語のテキストデータが設定される。「短縮１」〜「短縮３」は、「見出し語」に対応する英語を省略して表したテキストデータが設定され、短縮の度合い（短縮レベル）は、「短縮１」＜「短縮２」＜「短縮３」となっている。なお、「見出し語」によっては、「短縮２」あるいは「短縮２」及び「短縮３」に設定されるデータが存在しない場合もある。
【００２４】
命名規約データ１２２は、シンボル名を生成するためのルールを定めたデータテーブルである。図６に示すように、命名規約データ１２２には、「シンボル」と、「コメントパターン」と、「名称生成パターン」と、を含むレコードが複数登録されている。
【００２５】
「シンボル」には、関数又は引数を示す情報が設定される。「コメントパターン」には、コメント内容をパターン化した情報が設定される。「名称生成パターン」には、シンボル名の生成パターンが設定される。なお、「名称生成パターン」に、複数のパターンが設定される場合もある。
【００２６】
例えば、図２に示すコメント文の場合では、関数に対応するコメント、即ち、“シリアルでフレームを送る”には、“シリアル”、“フレーム”及び“送信”の３つの見出し語が含まれる。したがって、このコメントには、＜通信Ｉ／Ｆ＞、＜通信データ＞及び＜通信処理＞といった複数のカテゴリが含まれていることなる。このため、このコメント内容は、命名規約データ１２２における番号１のレコードの「コメントパターン」と一致し、「名称生成パターン」は、＜通信Ｉ／Ｆ＞の英語表記＋＜通信処理＞の英語表記＋＜通信データ＞の英語表記となる。
【００２７】
シンボル名候補生成部１３１は、上記のようにして、シンボル名の候補を生成し、生成したシンボル名候補の一覧を表示部１１を介して所定態様で表示する。例えば、図２に示すコメント文の場合では、生成される関数名の候補は、図７に示すようになる。また、例えば、関数に対応するコメントが、“整数をバイト列に変換する”の場合では、生成される関数名の候補は、図８に示すようになる。
【００２８】
図９は、以上のように構成された本実施形態の制御部１３が実行するシンボル名候補生成処理の手順を示すフローチャートである。ユーザにより、入力部１０を介して、データ記憶部１２に記憶されている所定のプログラム（コーディング支援プログラム）を起動させるための所定操作が行われると、制御部１３は、表示部１１に、ソースコード編集用の画面（コーディング画面）を表示する。シンボル名候補生成処理は、このコーディング画面を介して、ユーザにより、図２に示すような新規の関数についてのコメントが記述され、所定操作（例えば、マウスの右クリック等）が行われることで開始される。
【００２９】
先ず、コメント解析部１３０は、当該コーディング画面にて表示されているコメント文を取り込んで、ＲＡＭ等に展開する（ステップＳ１０１）。また、コメント解析部１３０は、図１０に示すような、名称を生成するシンボル対象をユーザに指定させるためのメニュー画面（シンボル指定画面１００１）をコーディング画面上にポップアップ表示する（ステップＳ１０２）。
【００３０】
このシンボル指定画面１００１にて、ユーザにより、関数ボタン１００２が押下操作されると（ステップＳ１０３；ＹＥＳ）、コメント解析部１３０は、取り込んだコメント文中の関数に対応するコメント部分（関数コメント）を解析する処理（関数コメント解析処理）を実行する（ステップＳ１０４）。一方、ユーザにより、引数ボタン１００３が押下操作されると（ステップＳ１０３；ＮＯ）、コメント解析部１３０は、取り込んだコメント文中の引数に対応するコメント部分（引数コメント）を解析する処理（引数コメント解析処理）を実行する（ステップＳ１０５）。
【００３１】
図１１は、関数コメント解析処理の手順を示すフローチャートである。先ず、コメント解析部１３０は、取り込んだコメント文から関数コメントを抽出する（ステップＳ２０１）。例えば、図２の例では、コメント文から“シリアルでフレームを送る”が、関数コメントとして抽出される。
【００３２】
次に、コメント解析部１３０は、抽出した関数コメントを形態素解析すると共に、解析用辞書データ１２０（図３参照）を用いて、当該関数コメントに含まれる各形態素を見出し語に変換する（ステップＳ２０２）。そして、コメント解析部１３０は、処理結果をシンボル名候補生成部１３１に供給する（ステップＳ２０３）。
【００３３】
例えば、関数コメントが、図２に示す“シリアルでフレームを送る”の場合、コメント解析部１３０は、“シリアル、フレーム、送信”を解析結果としてシンボル名候補生成部１３１に供給する。また、関数コメントが、例えば、“整数をバイト列に変換する”の場合、コメント解析部１３０は、“整数、を、バイト例、に”を解析結果としてシンボル名候補生成部１３１に供給する。
【００３４】
図１２は、引数コメント解析処理の手順を示すフローチャートである。この処理では、コメント解析部１３０は、取り込んだコメント文から、一の引数に対応する引数コメントを抽出する（ステップＳ３０１）。例えば、図２の場合では、コメント文から“フレーム”が、一の引数コメントとして抽出される。
【００３５】
コメント解析部１３０は、抽出した引数コメントを形態素解析すると共に、解析用辞書データ１２０（図３参照）を用いて、当該引数コメントに含まれる各形態素を見出し語に変換する（ステップＳ３０２）。次に、コメント解析部１３０は、コメント文に未処理の引数コメントがあるか否かをチェックする（ステップＳ３０３）。未処理の引数コメントがある場合（ステップＳ３０３；ＹＥＳ）、コメント解析部１３０の処理はステップＳ３０１に戻る。ステップＳ３０１では、例えば、コメント文から“フレーム長”が抽出される。
【００３６】
一方、コメント文に未処理の引数コメントがない場合（ステップＳ３０３；ＮＯ）、コメント解析部１３０は、処理結果をシンボル名候補生成部１３１に供給する（ステップＳ３０４）。
【００３７】
例えば、引数コメント“フレーム”については、コメント解析部１３０は、“フレーム”を解析結果としてシンボル名候補生成部１３１に供給する。また、引数コメント“フレーム長”については、コメント解析部１３０は、“フレーム、長さ”を解析結果としてシンボル名候補生成部１３１に供給する。
【００３８】
図９に戻り、ステップＳ１０４の処理が完了すると、シンボル名候補生成部１３１は、関数名候補生成処理を実行する（ステップＳ１０６）。
【００３９】
図１３は、関数名候補生成処理の手順を示すフローチャートである。シンボル名候補生成部１３１は、コメント解析部１３０から供給された解析結果に含まれる各「見出し語」を、図５に示す変換辞書データ１２１を参照して、対応する「カテゴリ」に変換することで、命名規約データ１２２（図６参照）から、当該関数コメントに対応する名称生成パターンを検索する（ステップＳ４０１）。
【００４０】
対応する名称生成パターンが見つかった場合（ステップＳ４０２；ＹＥＳ）、シンボル名候補生成部１３１は、当該名称生成パターンと、変換辞書データ１２１と、に基づいて、当該関数の名称を生成する（ステップＳ４０３）。具体的には、シンボル名候補生成部１３１は、当該名称生成パターンにおける各「見出し語」について、変換辞書データ１２１を参照して対応する英語表記を取得し、取得した英語表記を当該名称生成パターンが示す通りに合成することで、当該関数の名称を生成する。この際、シンボル名候補生成部１３１は、フル表記同士だけでなく、「フル表記」、「短縮１」〜「短縮３」の全ての組み合わせで合成することで、複数の関数名候補を生成する。
【００４１】
シンボル名候補生成部１３１は、生成した関数名候補の一覧をコーディング画面上にポップアップ表示する（ステップＳ４０４）。一方、対応する名称生成パターンが見つからなかった場合（ステップＳ４０２；ＮＯ）、シンボル名候補生成部１３１は、シンボル名を自動生成できない旨のエラーメッセージ画面をコーディング画面上にポップアップ表示する（ステップＳ４０５）。その際、エラーメッセージ画面に、不足する「見出し語」についての情報等を表示してもよい。例えば、図１４に示すように、関数コメントが“フレームを送る”の場合、図１５に示すようなエラーメッセージ画面を表示してもよい。
【００４２】
図９に戻り、ステップＳ１０５の処理が完了すると、シンボル名候補生成部１３１は、引数名候補生成処理を実行する（ステップＳ１０７）。この処理は、上述した関数名候補生成処理とほぼ同様のロジックであるため説明を省略する。例えば、引数コメントが“フレーム長”の場合、表示される引数名の一覧は、図１６に示すようになる。
【００４３】
以上のように、本実施形態のプログラム作成支援装置１によれば、作成中のソースコードのコメント文の解析を行い、その解析結果と、予め決められた命名規約と、に基づいて、関数名や引数名等のシンボル名を自動的に生成し、ユーザ（作業者）に提示する。したがって、ユーザは、シンボル名を決定する負担から解放され、作業効率の向上が図れる。また、シンボル名が、命名規約に則って生成されるため、ソースコードの可読性や視認性が向上し、当該ソフトウェアプログラムの保守性が高まるという効果を奏する。
【００４４】
（実施形態２）
続いて、本発明の実施形態２に係るプログラム作成支援装置について説明する。なお、以下の説明において、実施形態１と共通する構成要素等については、同一の符号を付し、その説明を省略する。
【００４５】
図１７は、本発明の実施形態２に係るプログラム作成支援装置１Ａの構成を示すブロック図である。プログラム作成支援装置１Ａは、実施形態１のプログラム作成支援装置１と同様、一般的なパーソナルコンピュータであり、図１７に示すように、入力部１０と、表示部１１と、データ記憶部１２Ａと、制御部１３Ａと、を備える。
【００４６】
データ記憶部１２Ａは、実施形態１のデータ記憶部１２と同様、読み書き可能な不揮発性の半導体メモリやハードディスクドライブ等から構成される外部記憶装置である。データ記憶部１２Ａには、解析用辞書データ１２０、変換辞書データ１２１、命名規約データ１２２といった実施形態１のデータ記憶部１２に記憶されるデータと同様のデータが記憶される。さらに、データ記憶部１２Ａには、関係辞書データ１２３と、ソースファイル１２４と、が記憶される。
【００４７】
関係辞書データ１２３は、図１８に示すように、所定の関係にある「見出し語」同士と、その関係内容と、を含むレコードが複数登録されたデータテーブルである。本実施形態では、関係辞書データ１２３には、“送信”と“受信”等、反対関係にある「見出し語」同士、“送信”と“出力”等、同類関係にある「見出し語」同士が登録されている。
【００４８】
ソースファイル１２４は、ユーザによって既に作成された複数の関数のソースコード（図１９参照）が記述されたファイルである。
【００４９】
制御部１３Ａは、実施形態１の制御部１３と同様、ＣＰＵ、ＲＯＭ、ＲＡＭ等を含んで構成される。制御部１３Ａは、実施形態１の制御部１３と同様、機能的には、コメント解析部１３０と、シンボル名候補生成部１３１と、を備える。さらに、制御部１３Ａは、作成済シンボル名取得部１３２と、候補順位決定部１３３と、を備える。
【００５０】
作成済シンボル名取得部１３２は、所定のタイミングで、データ記憶１２Ａに記憶されているソースファイル１２４から、名称作成対象のシンボル名（関数名又は引数名）を全て取得する。本実施形態では、作成済シンボル名取得部１３２は、シンボル名候補生成部１３１によってシンボル名候補の作成が完了すると起動する。シンボル名候補生成部１３１によって関数名候補が作成された場合には、作成済シンボル名取得部１３２は、ソースファイル１２４から、作成済みの関数の名称を全て取得する。一方、シンボル名候補生成部１３１によって引数名候補が作成された場合には、ソースファイル１２４から、作成済みの関数における引数名を全て取得する。
【００５１】
なお、作成済シンボル名取得部１３２は、ユーザによってその内容がコーディングされた関数をシンボル名の取得対象とし、ＯＳ等により提供される汎用関数は取得対象としない。
【００５２】
作成済シンボル名取得部１３２は、取得した複数のシンボル名（関数名又は引数名）をＲＡＭ又はデータ記憶部１２Ａに一時的に保存する。
【００５３】
候補順位決定部１３３は、作成済シンボル名取得部１３２によって取得された複数のシンボル名の内から、シンボル名候補生成部１３１によって生成されたシンボル名候補群と最も関連度が高いシンボル名を抽出する。そして、候補順位決定部１３３は、この抽出した最も関連度が高いシンボル名を用いて、各シンボル名候補の順位を決定する。候補順位決定部１３３は、各シンボル名候補を、決定した順位に並べた一覧を表示部１１を介して所定態様で表示して、ユーザに提示する。
【００５４】
図２０は、候補順位決定部１３３により実行される関数候補順位決定処理の手順を示すフローチャートである。この処理は、シンボル名候補生成部１３１によって関数名候補群が作成され、作成済シンボル名取得部１３２により、ソースファイル１２４から、作成済みの関数の名称が全て取得された後に実行される。
【００５５】
先ず、候補順位決定部１３３は、取得された複数の関数名の内から、シンボル名候補群と最も関連度の高いものを決定する処理（最関連関数名決定処理）を実行する（ステップＳ５０１）。
【００５６】
図２１は、最関連関数名決定処理の手順を示すフローチャートである。先ず、候補順位決定部１３３は、取得された関数名の内から１つを選択し、部分文字列を抽出する（ステップＳ６０１）。部分文字列とは、合成する前の各「見出し語」に対応する英語表記である。本実施形態では、各「見出し語」に対応する英語表記の先頭文字は、大文字となっており、候補順位決定部１３３は、関数名から、大文字部分をデリミタとして、部分文字列を抽出する。例えば、関数名が“SeriRcvFrame”の場合は、“Seri”、“Rcv”及び“Frame”が部分文字列として抽出される。また、関数名のアルファベット以外の文字（例えば、“２”）についても、部分文字列として抽出する。
【００５７】
候補順位決定部１３３は、変換辞書データ１２１を参照して、抽出した各部分文字列に対応する「見出し語」を取得する（ステップＳ６０２）。なお、特定の部分文字列（例えば、“Ｉ”、“Ｒ”、“Ｓ”等）については、「見出し語」が異なる場合もあるため、候補順位決定部１３３は、当該関数名に対応する作成済みのソースコードのコメント文を参照して、対応する「見出し語」を取得する。
【００５８】
候補順位決定部１３３は、選択した関数名が、生成された関数名候補群と同一の命名ルール、即ち、命名規約データ１２２における同一の名称生成パターンで生成されたものであるか否かを判定する（ステップＳ６０３）。双方が、同一の名称生成パターンで生成されたものである場合（ステップＳ６０３；ＹＥＳ）、候補順位決定部１３３は、当該選択した関数名に対応する評価値（初期値は０）に５点加算する（ステップＳ６０４）。
【００５９】
次に、候補順位決定部１３３は、抽出した各部分文字列に対応する「見出し語」の何れかに、生成された関数名候補群に対応する各「見出し語」と反対関係にあるものが存在するか否かを判定する（ステップＳ６０５）。その結果、反対関係にある「見出し語」が存在する場合（ステップＳ６０５；ＹＥＳ）、候補順位決定部１３３は、対応する評価値に４点加算する（ステップＳ６０６）。
【００６０】
次に、候補順位決定部１３３は、抽出した各部分文字列に対応する「見出し語」の何れかに、生成された関数名候補群に対応する各「見出し語」と同類関係にあるものが存在するか否かを判定する（ステップＳ６０７）。その結果、同類関係にある「見出し語」が存在する場合（ステップＳ６０７；ＹＥＳ）、候補順位決定部１３３は、対応する評価値に３点加算する（ステップＳ６０８）。
【００６１】
候補順位決定部１３３は、取得された全ての関数名について上記の処理が完了したか否かを判定する（ステップＳ６０９）。全ての関数名について処理が完了していない場合（ステップＳ６０９；ＮＯ）、候補順位決定部１３３の処理はステップＳ６０１に戻る。一方、全ての関数名について処理が完了した場合（ステップＳ６０９；ＹＥＳ）、候補順位決定部１３３は、最も評価値が大きい関数名を、関数名候補群と最も関連度が高い関数名（最関連関数名）であるとして決定する（ステップＳ６１０）。
【００６２】
図２０に戻り、ステップＳ５０２では、候補順位決定部１３３は、上記決定した最関連関数名に対応する全「見出し語」及び関数名候補群に対応する全「見出し語」のそれぞれから、部分文字列の合成順に従って、１つずつ選択する。候補順位決定部１３３は、それぞれ選択した「見出し語」が同一であるか否かを判定する（ステップＳ５０３）。その結果、同一である場合（ステップＳ５０３；ＹＥＳ）、候補順位決定部１３３は、関数名候補群の内、この「見出し語」に対応する部分文字列（英語表記）が、最関連関数名の当該「見出し語」に対応する部分文字列と同一である関数名候補を、他の関数名候補より高い順位にする（ステップＳ５０４）。
【００６３】
一方、それぞれ選択した「見出し語」が同一でない場合（ステップＳ５０３；ＮＯ）、候補順位決定部１３３は、選択した双方の「見出し語」同士に、関係辞書データ１２３で定められた所定の関係があるか否かを判定する（ステップＳ５０５）。その結果、双方の「見出し語」同士に所定の関係がある場合（ステップＳ５０５；ＹＥＳ）、候補順位決定部１３３は、関数名候補群の内、関数名候補群側の当該「見出し語」に対応する部分文字列（英語表記）の形式が、最関連関数名側の当該「見出し語」に対応する部分文字列の形式と同一である関数名候補を、他の関数名候補より高い順位にする（ステップＳ５０６）。ここで、部分文字列（英語表記）の形式が同一であるとは、例えば、どちらもフル表記であるか、あるいは、短縮のレベル（短縮１〜３）が同一である場合をいう。
【００６４】
候補順位決定部１３３は、最関連関数名に対応する全「見出し語」及び関数名候補群に対応する全「見出し語」について、少なくとも何れか一方が選択済みであるか否かを判定する（ステップＳ５０７）。選択済みでない場合（ステップＳ５０７；ＮＯ）、候補順位決定部１３３の処理は、ステップＳ５０２に戻る。一方、選択済みである場合（ステップＳ５０７；ＹＥＳ）、候補順位決定部１３３は、関数名候補の一覧を決定した順位で表示する（ステップＳ５０８）。
【００６５】
例えば、シンボル名候補生成部１３１により、図２に示すコメント文から関数名の候補が生成された場合であって、最関連関数名が“ＳｅｒｉＲｃｖＦｒａｍｅ（）”の場合、候補順位決定部１３３による処理の結果、最も順位の高い関数名候補は、“ＳｅｒｉＳｎｄＦｒａｍｅ（）”となる。また、例えば、“整数をバイト列に変換する”という関数コメントから関数名の候補が生成された場合であって、最関連関数名が“Ｂｙｔｅｓ２Ｉｎｔ（）”の場合、候補順位決定部１３３による処理の結果、最も順位の高い関数名候補は、“Ｉｎｔ２Ｂｙｔｅｓ（）”となる。
【００６６】
なお、候補順位決定部１３３により実行される引数候補順位決定処理のロジックは、上述した関数候補順位決定処理と同様であるため、その説明は省略する。
【００６７】
以上のように、本実施形態のプログラム作成支援装置１Ａによれば、作成中のソースコードのコメント文から自動的に生成した関数名や引数名等のシンボル名候補の順位を、作成済み関数の名称に基づいて決定し、ユーザに提示することができる。したがって、シンボル名の統一性がより向上する。
【００６８】
なお、本発明は、上記各実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【００６９】
例えば、上記実施形態１、２のプログラム作成支援装置１、１Ａが各々実行したプログラムを、既存のパーソナルコンピュータ（ＰＣ）等に適用することで、当該ＰＣを本発明に係るプログラム作成支援装置として機能させることも可能である。
【００７０】
このようなプログラムの配布方法は任意であり、例えば、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto Optical Disk）、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。  
【符号の説明】
【００７１】
１，１Ａ  プログラム作成支援装置、１０  入力部、１１  表示部、１２，１２Ａ  データ記憶部、１３，１３Ａ  制御部、１２０  解析用辞書データ、１２１  変換辞書データ、１２２  命名規約データ、１２３  関係辞書データ、１２４  ソースファイル、１３０  コメント解析部、１３１  シンボル名候補生成部、１３２  作成済シンボル名取得部、１３３  候補順位決定部
【図１】
2014081715.tif 000003
【図２】
2014081715.tif 000004
【図３】
2014081715.tif 000005
【図４】
2014081715.tif 000006
【図５】
2014081715.tif 000007
【図６】
2014081715.tif 000008
【図７】
2014081715.tif 000009
【図８】
2014081715.tif 000010
【図９】
2014081715.tif 000011
【図１０】
2014081715.tif 000012
【図１１】
2014081715.tif 000013
【図１２】
2014081715.tif 000014
【図１３】
2014081715.tif 000015
【図１４】
2014081715.tif 000016
【図１５】
2014081715.tif 000017
【図１６】
2014081715.tif 000018
【図１７】
2014081715.tif 000019
【図１８】
2014081715.tif 000020
【図１９】
2014081715.tif 000021
【図２０】
2014081715.tif 000022
【図２１】
2014081715.tif 000023