(57)【要約】【課題】変数または関数の意味の分かりやすさと、プログラムの構造の見やすさを両立する。【解決手段】入力制御部２６３は、編集中のソースコードである第１のソースコード２７１に、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、文字列を、第２のソースコード２７２に入力する。また、名称取得部２６４は、第１のソースコード２７１に、第１の名称が入力された場合に、第１の名称より短い名称である第２の名称を取得する。また、入力制御部２６３は、名称取得部２６４によって取得された第２の名称を、第２のソースコード２７２に入力する。【選択図】図２
2017204246.tif 000002
【特許請求の範囲】
【請求項１】
編集中のソースコードである第１のソースコードに、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、前記文字列を、第２のソースコードに入力する第１の入力制御部と、
前記第１のソースコードに、前記第１の名称が入力された場合に、前記第１の名称より短い名称である第２の名称を取得する名称取得部と、
前記名称取得部によって取得された前記第２の名称を、前記第２のソースコードに入力する第２の入力制御部と、
を有することを特徴とする開発支援システム。
【請求項２】
前記第１のソースコードを表示部に表示させる第１の表示制御部と、
前記第２のソースコードを表示部に表示させる第２の表示制御部と、
をさらに有することを特徴とする請求項１に記載の開発支援システム。
【請求項３】
前記第１の名称と、前記第２の入力制御部によって入力された前記第２の名称と、を対応付けて第１の記憶部に格納する第１の格納部をさらに有し、
前記名称取得部は、前記第１のソースコードに、前記第１の名称が入力された場合に、前記第１の記憶部から、前記第１の名称に対応付けられた前記第２の名称を取得することを特徴とする請求項１または２に記載の開発支援システム。
【請求項４】
前記第２の入力制御部によって入力された前記第２の名称それぞれの出現回数を第２の記憶部に格納する第２の格納部と、
前記第２の記憶部を参照し、前記第２の名称それぞれの出現回数を基に、所定の計算方法により前記第２の名称それぞれのスコアを計算する計算部と、
前記第２の名称のうち、前記計算部によって計算されたスコアの順位が所定の順位以上である第２の名称をユーザに提示する提示部と、
をさらに有し、
前記名称取得部は、前記提示部によって提示された前記第２の名称のうち、前記ユーザによって選択された第２の名称を取得することを特徴とする請求項１から３のいずれか１項に記載の開発支援システム。
【請求項５】
前記第２の格納部は、前記第２のソースコードのうち、前記第１のソースコードとの類似度の順位が所定の順位以上である第２のソースコードに、前記第２の入力制御部によって入力された前記第２の名称それぞれの出現回数を第２の記憶部に格納することを特徴とする請求項４に記載の開発支援システム。
【請求項６】
サーバと、前記サーバに接続された複数の端末と、を有する開発支援システムであって、
前記端末は、
編集中のソースコードである第１のソースコードに、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、前記文字列を、第２のソースコードに入力する第１の入力制御部と、
前記サーバに備えられた、前記第１の名称より短い名称である第２の名称それぞれの出現回数を前記第２のソースコードごとに記憶する第２の記憶部を参照し、前記第２のソースコードのうち、前記第１のソースコードとの類似度の順位が所定の順位以上である第２のソースコードの、前記第２の名称それぞれの出現回数を基に、所定の計算方法により前記第２の名称それぞれのスコアを計算する計算部と、
前記第２の名称のうち、前記計算部によって計算されたスコアの順位が所定の順位以上である第２の名称をユーザに提示する提示部と、
前記提示部によって提示された前記第２の名称のうち、前記ユーザによって選択された第２の名称を取得する名称取得部と、
前記名称取得部によって取得された前記第２の名称を、前記第２のソースコードに入力する第２の入力制御部と、
前記第２の入力制御部によって入力された前記第２の名称それぞれの出現回数を前記第２の記憶部に、前記第２のソースコードごとに格納する第２の格納部と、
を有することを特徴とする開発支援システム。
【請求項７】
開発支援システムで実行される開発支援方法であって、
編集中のソースコードである第１のソースコードに、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、前記文字列を、第２のソースコードに入力する第１の入力制御工程と、
前記第１のソースコードに、前記第１の名称が入力された場合に、前記第１の名称より短い名称である第２の名称を取得する名称取得工程と、
前記名称取得工程によって取得された前記第２の名称を、前記第２のソースコードに入力する第２の入力制御工程と、
を含んだことを特徴とする開発支援方法。
【請求項８】
編集中のソースコードである第１のソースコードに、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、前記文字列を、第２のソースコードに入力する第１の入力制御ステップと、
前記第１のソースコードに、前記第１の名称が入力された場合に、前記第１の名称より短い名称である第２の名称を取得する名称取得ステップと、
前記名称取得ステップによって取得された前記第２の名称を、前記第２のソースコードに入力する第２の入力制御ステップと、
をコンピュータに実行させることを特徴とする開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発支援システム、開発支援方法および開発支援プログラムに関する。
【背景技術】
【０００２】
統合開発環境（ＩＤＥ：Integrated  Development  Environment）等を用いてプログラミングを行う際、可読性の高いコードを書くことが重要である。また、変数や関数の命名は、プログラムの可読性の向上を目的として作成された命名規則に従って行われる場合がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】eclipse、[online]、[平成２８年４月２７日検索]、インターネット（http://www.eclipse.org/）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のプログラミングにおいては、変数または関数の意味の分かりやすさと、プログラムの構造の見やすさを両立することが困難であるという問題があった。
【０００５】
例えば、変数や関数には説明的な長い名称を付けることを規定した命名規則に従って作成されたソースコードでは、変数または関数の意味が明確になり分かりやすくなるが、プログラムの構造が分かりにくい場合がある。
【０００６】
一方、変数や関数には短い名称を付けることを規定した命名規則に従って作成されたソースコードでは、プログラムの構造は分かりやすくなるが、変数または関数の意味が分かりにくくなる場合がある。
【課題を解決するための手段】
【０００７】
本発明の開発支援システムは、編集中のソースコードである第１のソースコードに、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、前記文字列を、第２のソースコードに入力する第１の入力制御部と、前記第１のソースコードに、前記第１の名称が入力された場合に、前記第１の名称より短い名称である第２の名称を取得する名称取得部と、前記名称取得部によって取得された前記第２の名称を、前記第２のソースコードに入力する第２の入力制御部と、を有することを特徴とする。
【０００８】
本発明の開発支援方法は、開発支援システムで実行される開発支援方法であって、編集中のソースコードである第１のソースコードに、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、前記文字列を、第２のソースコードに入力する第１の入力制御工程と、前記第１のソースコードに、前記第１の名称が入力された場合に、前記第１の名称より短い名称である第２の名称を取得する名称取得工程と、前記名称取得工程によって取得された前記第２の名称を、前記第２のソースコードに入力する第２の入力制御工程と、を含んだことを特徴とする。
【０００９】
本発明の開発支援プログラムは、編集中のソースコードである第１のソースコードに、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、前記文字列を、第２のソースコードに入力する第１の入力制御ステップと、前記第１のソースコードに、前記第１の名称が入力された場合に、前記第１の名称より短い名称である第２の名称を取得する名称取得ステップと、前記名称取得ステップによって取得された前記第２の名称を、前記第２のソースコードに入力する第２の入力制御ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、変数または関数の意味の分かりやすさと、プログラムの構造の見やすさを両立することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施形態に係る開発支援システムの構成の一例を示す図である。
【図２】図２は、開発者端末の構成の一例を示す図である。
【図３】図３は、開発者端末に表示される画面の一例を示す図である。
【図４】図４は、命名情報のデータ構成の一例を示す図である。
【図５】図５は、単語情報のデータ構成の一例を示す図である。
【図６】図６は、開発者端末に表示される画面の一例を示す図である。
【図７】図７は、第１の実施形態に係る開発支援システムの処理の流れを示すフローチャートである。
【図８】図８は、プログラムが実行されることにより開発者端末が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願に係る開発支援システム、開発支援方法および開発支援プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１３】
［第１の実施形態の構成］
まず、図１を用いて、第１の実施形態に係る開発支援システムの構成について説明する。図１は、第１の実施形態に係る開発支援システムの構成の一例を示す図である。図１に示すように、開発支援システム１は、サーバ１０および開発者端末２０を有する。開発者端末２０は、例えばＩＤＥがインストールされたパーソナルコンピュータである。また、サーバ１０および開発者端末２０は、例えば、有線または無線のＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）等の任意の種類の通信網によって接続されている。なお、開発支援システム１に含まれる開発者端末２０の数は、図示の数に限定されず、任意の数とすることができる。
【００１４】
また、図１に示すように、サーバ１０は記憶部１１を有する。記憶部１１は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク等の記憶装置である。なお、記憶部１１は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。記憶部１１は、サーバ１０で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。さらに、記憶部１１は、プログラムの実行で用いられる各種情報を記憶する。また、記憶部１１は、命名情報１１１および単語情報１１２を記憶する。命名情報１１１および単語情報１１２については後述する。
【００１５】
図２を用いて、開発者端末２０の構成について説明する。図２は、開発者端末の構成の一例を示す図である。図２に示すように、開発者端末２０は、通信部２１、入力部２２、出力部２３、制御部２４および記憶部２７を有する。
【００１６】
通信部２１は、ネットワークを介して、他の装置との間でデータ通信を行う。例えば、通信部２１はＮＩＣ（Network  Interface  Card）である。また、通信部２１は、サーバ１０との間でデータの送受信を行う。
【００１７】
入力部２２は、プログラムの開発者、すなわちユーザからの入力を受け付ける。入力部２２は、例えば、ユーザによって定義された変数または関数の名称の入力を受け付ける。また、入力部２２は、例えば、ユーザによって定義された変数または関数の名称以外の文字列の入力を受け付ける。ユーザによって定義された変数または関数の名称以外の文字列は、例えば、プログラム言語における予約語（例えば、プログラム言語C++におけるfor、if、class等）である。この場合、入力部２２は、例えば、マウスやキーボード等の入力装置である。出力部２３は、画面の表示等により、データを出力する。出力部２３は、例えば、編集中のソースコード等を表示するディスプレイ等の表示装置である。
【００１８】
制御部２４は、開発者端末２０全体を制御する。制御部２４は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路である。また、制御部２４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部２４は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２４は、開発部２５および支援部２６を有する。
【００１９】
記憶部２７は、サーバ１０の記憶部１１と同様に、ＨＤＤ、ＳＳＤ、光ディスク等の記憶装置や、ＲＡＭ、フラッシュメモリ、ＮＶＳＲＡＭ等の半導体メモリによって実現される。また、記憶部２７は、制御部２４で実行されるＯＳや各種プログラムを記憶する。さらに、記憶部２７は、プログラムの実行で用いられる各種情報を記憶する。また、記憶部２７は、第１のソースコード２７１および第２のソースコード２７２を記憶する。第１のソースコード２７１および第２のソースコード２７２については後述する。また、記憶部２７は、ＩＤＥを実行するためのプログラムを記憶する。
【００２０】
ここで、開発部２５は、記憶部２７に記憶されたプログラムに基づき、ＩＤＥを実行する。開発部２５は、ＩＤＥを実行することにより、ユーザが編集中のソースコードである第１のソースコード２７１を、表示部として機能する出力部２３に表示させる。このとき、開発部２５は、第１の表示制御部として機能する。また、開発部２５は、第１のソースコード２７１を、プログラム開発のためのツールを利用可能なＧＵＩ（Graphical  User  Interface）を用いて表示してもよい。
【００２１】
支援部２６は、開発部２５によって実行されるＩＤＥを用いてプログラミングを行うユーザの支援を行う。支援部２６は、ユーザによる変数または関数の命名の支援を行う。図２に示すように、支援部２６は、生成部２６１、表示制御部２６２、入力制御部２６３、名称取得部２６４、格納部２６５、計算部２６６および提示部２６７を有する。
【００２２】
生成部２６１は、第１のソースコード２７１の複製である第２のソースコード２７２を生成する。このとき、複製元の第１のソースコード２７１は、文字列が入力されていないものであってもよい。例えば、生成部２６１は、第１のソースコード２７１を記述するためのファイルが作成された時点で、当該ファイルの複製を作成し、第２のソースコード２７２としてもよい。生成部２６１は、生成した第２のソースコード２７２を記憶部２７に格納する。
【００２３】
表示制御部２６２は、記憶部２７を参照し、第２のソースコード２７２を、表示部として機能する出力部２３に表示させる。このとき、表示制御部２６２は、第２の表示制御部として機能する。なお、ユーザによる第１のソースコード２７１の編集および支援部２６の各部による処理が行われている間、表示制御部２６２は、第２のソースコード２７２を常に表示させるようにしてもよい。また、表示制御部２６２は、ユーザによる表示の要求があった場合にのみ第２のソースコード２７２を表示させるようにしてもよい。
【００２４】
入力制御部２６３は、入力部２２に入力された文字列が、ユーザによって定義された変数または関数の名称であるか否かを判定する。入力制御部２６３は、例えば、開発部２５によって実行されているＩＤＥによる判定結果を基に、文字列がユーザによって定義された変数または関数の名称であると判定した文字列であるか否かを判定する。
【００２５】
入力制御部２６３は、入力部２２に入力された文字列が、ユーザによって定義された変数または関数の名称以外の文字列であると判定した場合、当該文字列を第２のソースコード２７２に入力する。また、入力制御部２６３によって、入力部２２に入力された文字列が、ユーザによって定義された変数または関数の名称、すなわち第１の名称であると判定された場合、名称取得部２６４は、第１の名称より短い名称、すなわち第２の名称を取得する。そして、入力制御部２６３は、名称取得部２６４によって取得された第２の名称を、第２のソースコード２７２に入力する。
【００２６】
名称取得部２６４は、ユーザによって手動で入力された第２の名称を取得するようにしてもよい。このとき、図３に示すように、名称取得部２６４は、各ソースコードの編集中の箇所をフォーカス表示することで、ユーザに第２の名称の入力を促すようにしてもよい。図３は、開発者端末に表示される画面の一例を示す図である。
【００２７】
図３の例では、出力部２３は、第１のソースコード２７１を表示する画面２３ａおよび第２のソースコード２７２を表示する画面２３ｂを表示する。なお、このとき、開発部２５は、出力部２３に画面２３ａを表示させている。また、表示制御部２６２は、出力部２３に画面２３ｂを表示させている。ここで、名称取得部２６４は、画面２３ａ上で、第１のソースコード２７１の編集中の箇所をフォーカス表示すると同時に、第２のソースコード２７２の対応する箇所をフォーカス表示するように出力部２３を制御する。また、このとき、名称取得部２６４は、画面２３ａ上にテキストボックスを表示させ、当該テキストボックスに入力された文字列を第２の名称として取得してもよい。
【００２８】
図３の例では、例えば、第１のソースコード２７１に、変数名「configrationCount」が第１の名称として入力された際に、名称取得部２６４は、第２の名称として「j」を取得する。そして、入力制御部２６３は、第２のソースコードの、第１の名称が入力された箇所に対応する箇所に、第２の名称「j」を入力する。
【００２９】
格納部２６５は、第１の名称と、入力制御部２６３によって入力された第２の名称と、を対応付けてサーバ１０の記憶部１１に、命名情報１１１として格納する。このとき、格納部２６５は、第１の格納部として機能する。例えば、格納部２６５は、入力制御部２６３によって第２の名称が入力されるたびに命名情報１１１の登録または更新を行う。
【００３０】
図４は、命名情報のデータ構成の一例を示す図である。図４に示すように、命名情報１１１は、プロジェクト、第１の名称、第２の名称等の項目を有する。なお、図４に示した命名情報１１１の各項目は一例であり、命名情報１１１はその他の項目を有してもよい。プロジェクトの項目は、第１の名称および第２の名称が入力されたプロジェクトを識別するためのＩＤ等を記憶する領域である。また、第１の名称および第２の名称の項目は、それぞれ、ユーザによって入力された第１の名称と、当該第１の名称に対応する第２の名称を記憶する領域である。
【００３１】
例えば、図４の１行目の例では、プロジェクト「project1」において、ユーザによって第１の名称として「interediateData」が入力された際に、入力制御部２６３によって第２の名称として「data」が入力されたことを示している。
【００３２】
サーバ１０の記憶部１１に、命名情報１１１が記憶されている場合、名称取得部２６４は、第１のソースコード２７１に、第１の名称が入力された場合に、サーバ１０の記憶部１１の命名情報１１１から、同一のプロジェクトにおける当該第１の名称に対応付けられた第２の名称を取得することができる。例えば、第１のソースコード２７１に、第１の名称として「interediateData」が入力された際に、名称取得部２６４は、第２の名称として「data」を自動的に取得する。
【００３３】
そして、入力制御部２６３は、第２のソースコード２７２の、第１の名称が入力された箇所に対応する箇所に、名称取得部２６４によって第２の名称として取得された「data」を入力する。これによって、第２の名称の取得および入力が自動化されるため、ユーザの作業量を減らすことができる。
【００３４】
また、格納部２６５は、入力制御部２６３によって入力された第２の名称それぞれの出現回数をサーバ１０の記憶部１１に、単語情報１１２として格納する。このとき、格納部２６５は、第２の格納部として機能する。例えば、格納部２６５は、入力制御部２６３によって第２の名称が入力されるたびに単語情報１１２の登録または更新を行うようにしてもよいし、あらかじめ設定された所定の期間ごとに、記憶部２７に記憶されている第２のソースコード２７２を参照し、単語情報１１２の登録または更新を行うようにしてもよい。
【００３５】
図５は、単語情報のデータ構成の一例を示す図である。図５に示すように、単語情報１１２は、単語、回数等の項目を有する。なお、図５に示した単語情報１１２の各項目は一例であり、単語情報１１２はその他の項目を有してもよい。
【００３６】
単語の項目は、第２の名称を単語として記憶する領域である。なお、単語の項目は、第２の名称を一般の辞書を用いて分解した単語を記憶してもよい。また、回数の項目は、単語の出現回数を記憶する領域である。例えば、図５の１行目の例では、「jackAve」という単語の出現回数が５０回であることを示している。
【００３７】
サーバ１０の記憶部１１に、単語情報１１２が記憶されている場合、開発者端末２０は、所定の方法で計算された各単語のスコアに基づいて、第２の名称の候補となる単語のリコメンドをユーザに対し行い、リコメンドした単語のうち、ユーザによって選択された単語を第２の名称とすることができる。
【００３８】
計算部２６６は、記憶部１１の単語情報１１２を参照し、第２の名称それぞれの出現回数を基に、所定の計算方法により第２の名称それぞれのスコアを計算する。まず、計算部２６６は、単語情報１１２の単語の集合をｘｔ＝｛ａ１，ａ２，…，ａＮ｝とし、各単語の出現回数から、各単語の出現確率ｐ（ｘ１，ｘ２，…，ｘＮ）を計算する。そして、計算部２６６は、例えば、ナイーブベイズ法を利用した式（１）によってスコアを計算する。
【００３９】
【数１】
2017204246.tif 000003
【００４０】
提示部２６７は、第２の名称のうち、計算部２６６によって計算されたスコアの順位が所定の順位以上である第２の名称をユーザに提示する。例えば、図６に示すように、提示部２６７は、計算部２６６によって計算されたｒｅｃｃｏｍｅｎｄ＿ｓｃｏｒｅの順位が３位以上である第２の名称をユーザに提示する。図６は、開発者端末に表示される画面の一例を示す図である。図６の例では、「jackAve」、「Data」および「outData」が提示部２６７によって提示されている。
【００４１】
そして、名称取得部２６４は、提示部２６７によって提示された第２の名称のうち、ユーザによって選択された第２の名称を取得する。なお、ユーザが提示された第２の名称を選択せずに手動で別の名称を入力した場合は、名称取得部２６４は、当該ユーザが入力した名称を第２の名称として取得することもできる。さらに、手動で入力された名称は、格納部２６５によって単語情報１１２に追加される。
【００４２】
なお、単語情報１１２が大量に記憶されている場合であっても式（１）の計算は非常に短時間で行うことが可能であるため、単語情報１１２の量を増やすことで、計算による負荷をほとんど増加させることなく、より精度の高いリコメンドを行うことが可能となる。
【００４３】
また、格納部２６５は、サーバ１０に接続されている全ての開発者端末２０で作成された第２のソースコード２７２を基に単語情報１１２を作成し格納してもよいし、所定の条件を満たす第２のソースコード２７２を基に単語情報１１２を作成し格納してもよい。
【００４４】
例えば、格納部２６５は、第２のソースコード２７２のうち、第１のソースコード２７１との類似度の順位が所定の順位以上である第２のソースコード２７２に、入力制御部２６３によって入力された第２の名称それぞれの出現回数を記憶部１１に単語情報１１２として格納する。このとき、格納部２６５は、例えばｔｆ−ｉｄｆを用いて類似度を計算する。
【００４５】
また、格納部２６５は、類似度の計算を、第２のソースコード２７２の第２の名称だけでなく、第２のソースコード２７２に対応する第１のソースコード２７１の第１の名称や、変数や関数の名称以外の文字列を用いて行うことができる。
【００４６】
これにより、計算部２６６は、編集中の第１のソースコード２７１に対応する第２のソースコード２７２との類似度が所定の順位以上の第２のソースコードに出現する単語に関する単語情報１１２を基に第２の名称それぞれのスコアを計算することができる。この場合、編集中の第１のソースコード２７１に対応する第２のソースコード２７２に、より適した第２の名称が候補として提示されることになる。
【００４７】
［第１の実施形態の処理］
図７を用いて、開発支援システム１の処理の流れについて説明する。図７は、第１の実施形態に係る開発支援システムの処理の流れを示すフローチャートである。図７に示すように、まず開発者端末２０の生成部２６１は、ユーザによって編集されている第１のソースコードの複製である第２のソースコードを生成する（ステップＳ１）。
【００４８】
ここで、開発支援システム１は、第１のソースコードに文字列が入力されるまで待機する（ステップＳ２、Ｎｏ）。第１のソースコードに文字列が入力された場合（ステップＳ、Ｙｅｓ）、かつ入力された文字列が変数名または関数名でない場合（ステップＳ３、Ｎｏ）、入力制御部２６３は、当該文字列を第２のソースコードに入力する（ステップＳ９）。そして、開発支援システム１は、さらに文字列の入力が行われるまで待機する（ステップＳ２）。
【００４９】
第１のソースコードに文字列が入力された場合（ステップＳ２、Ｙｅｓ）、かつ入力された文字列が変数名または関数名である場合（ステップＳ３、Ｙｅｓ）であって、さらに入力された変数名または関数名が、サーバ１０の記憶部１１に命名情報１１１として記憶されている場合（ステップＳ４、Ｙｅｓ）、名称取得部２６４は、命名情報１１１から入力された変数名または関数名に対応する第２の名称を自動的に取得する（ステップＳ８）。そして、入力制御部２６３は、名称取得部２６４が取得した第２の名称を、第２のソースコードに入力する（ステップＳ９）。
【００５０】
一方、第１のソースコードに文字列が入力された場合（ステップＳ２、Ｙｅｓ）、かつ入力された文字列が変数名または関数名である場合（ステップＳ３、Ｙｅｓ）であって、さらに入力された変数名または関数名が、サーバ１０の記憶部１１に命名情報１１１として記憶されていない場合（ステップＳ４、Ｎｏ）、計算部２６６は、サーバ１０の記憶部１１に記憶されている単語情報１１２を参照し、各単語のスコアを計算する（ステップＳ５）。そして、提示部２６７は、スコアの順位が所定以上である単語を、第２の名称の候補として提示する（ステップＳ６）。
【００５１】
そして、名称取得部２６４は、ユーザが提示部２６７によって提示された候補から選択すること、もしくは手動によって入力された名称を第２の名称として取得する（ステップＳ７）。入力制御部２６３は、名称取得部２６４が取得した第２の名称を、第２のソースコードに入力する（ステップＳ９）。
【００５２】
［第１の実施形態の効果］
入力制御部２６３は、編集中のソースコードである第１のソースコード２７１に、ユーザによって定義された変数または関数の名称である第１の名称以外の文字列が入力された場合に、文字列を、第２のソースコード２７２に入力する。また、名称取得部２６４は、第１のソースコード２７１に、第１の名称が入力された場合に、第１の名称より短い名称である第２の名称を取得する。また、入力制御部２６３は、名称取得部２６４によって取得された第２の名称を、第２のソースコード２７２に入力する。
【００５３】
これにより、詳細な可読性が高い第１のソースコードと、構造の可読性が高い第２のソースコードの両方を得ることができる。第１のソースコードでは、関数や変数の名称として説明的な長い名称を使用することで、関数や変数の意味が一意に解釈されやすくなるため、詳細な可読性が高くなる。また、第２のソースコードでは、関数や変数の名称として第１のソースコードと比べて短い名称を使用することで、人間がソースコードを読む場合に、全体の文法の構造を把握しやすくなるため、構造の可読性が高くなる。
【００５４】
特に、オブジェクト指向で作成されたソースコードの場合、オブジェクト名の後ろに大量のメソッド名が付く場合があるため、構造の可読性を高めることが重要である。このように、本実施形態によれば、変数または関数の意味の分かりやすさと、プログラムの構造の見やすさを両立することができる。
【００５５】
開発部２５は、第１のソースコード２７１を表示部に表示させる。また、表示制御部２６２は、第２のソースコード２７２を表示部に表示させる。これにより、ユーザは第１のソースコードおよび第２のソースコードの両方を確認しつつプログラミングを行うことができるようになる。なお、例えば出力部２３が表示部として機能する。
【００５６】
格納部２６５は、第１の名称と、入力制御部２６３によって入力された第２の名称と、を対応付けて記憶部１１に格納する。そして、名称取得部２６４は、第１のソースコード２７１に、第１の名称が入力された場合に、記憶部１１から、第１の名称に対応付けられた第２の名称を取得する。これにより、一度入力された第２の名称は、次回から自動的に入力されるようになるため、ユーザの作業量を減らすことができるようになる。
【００５７】
格納部２６５は、入力制御部２６３によって入力された第２の名称それぞれの出現回数を記憶部１１に格納する。計算部２６６は、記憶部１１を参照し、第２の名称それぞれの出現回数を基に、所定の計算方法により第２の名称それぞれのスコアを計算する。そして、提示部２６７は、第２の名称のうち、計算部２６６によって計算されたスコアの順位が所定の順位以上である第２の名称をユーザに提示する。そして、名称取得部２６４は、提示部２６７によって提示された第２の名称のうち、ユーザによって選択された第２の名称を取得する。このように、第２の名称の候補をリコメンドすることにより、ユーザが第２の名称を命名する際の時間を短縮することができる。
【００５８】
格納部２６５は、第２のソースコード２７２のうち、第１のソースコード２７１との類似度の順位が所定の順位以上である第２のソースコード２７２に、入力制御部２６３によって入力された第２の名称それぞれの出現回数を記憶部１１に格納する。これにより、編集中のソースコードにより適合した第２の名称をリコメンドすることが可能になる。
【００５９】
開発者端末２０は、入力制御部２６３と、計算部２６６と、提示部２６７と、名称取得部２６４と、入力制御部２６３と、格納部２６５と、を有する。また、サーバ１０は、記憶部１１を有する。このような構成にすることで、サーバ１０の記憶部１１には複数の開発者端末２０からの命名情報１１１や単語情報１１２を記憶させることができ、例えばプロジェクトメンバで当該情報を共有することで、より第２の名称の命名を効率良く行うことができるようになる。
【００６０】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６１】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６２】
［プログラム］
一実施形態として、開発支援システム１のサーバ１０および開発者端末２０は、パッケージソフトウェアやオンラインソフトウェアとして上記の試験を実行する試験プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の試験プログラムを情報処理装置に実行させることにより、情報処理装置を開発支援システム１のサーバ１０および開発者端末２０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【００６３】
また、開発支援システム１は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の開発支援に関するサービスを提供する開発支援サーバ装置として実装することもできる。例えば、開発支援サーバ装置は、ユーザの第１のソースコードへの入力内容を入力とし、第２のソースコードを出力とする開発支援サービスを提供するサーバ装置として実装される。この場合、開発支援サーバ装置は、Ｗｅｂサーバとして実装することとしてもよいし、アウトソーシングによって上記の試験に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【００６４】
図８は、プログラムが実行されることにより開発者端末が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００６５】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００６６】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、開発者端末２０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、開発者端末２０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００６７】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００６８】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３およびプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３およびプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００６９】
１  開発支援システム
１０  サーバ
１１、２７  記憶部
２０  開発者端末
２１  通信部
２２  入力部
２３  出力部
２４  制御部
２５  開発部
２６  支援部
１１１  命名情報
１１２  単語情報
２６１  生成部
２６２  表示制御部
２６３  入力制御部
２６４  名称取得部
２６５  格納部
２６６  計算部
２６７  提示部
２７１  第１のソースコード
２７２  第２のソースコード
【図１】
2017204246.tif 000004
【図２】
2017204246.tif 000005
【図３】
2017204246.tif 000006
【図４】
2017204246.tif 000007
【図５】
2017204246.tif 000008
【図６】
2017204246.tif 000009
【図７】
2017204246.tif 000010
【図８】
2017204246.tif 000011