"オブジェクトを操作する操作命令を再現するプログラムの生成を支援する装置であって、ユーザが入力した前記操作命令を受け付ける受付部と、前記受付部にて受け付けた前記操作命令を示す操作命令情報を記録する操作命令情報記録部と、前記受付部にて受け付けた前記操作命令が前記オブジェクトに名前を付ける命名命令である場合に、当該オブジェクトに当該命名命令で指定された名前を付けることなく、当該オブジェクトに当該指定された名前を対応付けた命名情報を記録する命名情報記録部と、前記プログラムのコードの生成指示に応じて、前記操作命令情報記録部により記録された前記操作命令情報を順次取得する取得部と、前記取得部により取得された前記操作命令情報が前記オブジェクトを生成する生成命令を示す場合には、前記コードを生成せず、前記取得部により取得された前記操作命令情報が前記命名命令を示す場合には、前記オブジェクトを宣言する前記コードを生成し、前記取得部により取得された前記操作命令情報が前記生成命令でもなく前記命名命令でもない他の操作命令を示す場合には、前記命名情報記録部により前記命名情報が記録されていれば、当該命名情報において前記オブジェクトに対応付けられた名前を用いて、当該オブジェクトを操作する前記コードを生成し、前記命名情報記録部により前記命名情報が記録されていなければ、前記オブジェクトの値を用いて、当該オブジェクトを操作する前記コードを生成する生成部と、前記生成部により生成された前記コードを表示する表示部とを含む、装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記他の操作命令を示す場合に、前記命名情報記録部により当該他の操作命令の引数である引数オブジェクトについて前記命名情報が記録されていれば、当該命名情報において当該引数オブジェクトに対応付けられた名前を用いて、前記オブジェクトを操作する前記コードを生成し、前記命名情報記録部により前記他の操作命令の引数である引数オブジェクトについて前記命名情報が記録されていなければ、当該引数オブジェクトの値を用いて、前記オブジェクトを操作する前記コードを生成する、請求項1の装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記命名命令を示し、前記オブジェクトを生成した命令がコンストラクタ命令である場合に、前記命名情報記録部により当該コンストラクタ命令の引数である引数オブジェクトについて前記命名情報が記録されていれば、当該命名情報において当該引数オブジェクトに対応付けられた名前を用いて、当該オブジェクトを宣言する前記コードを生成し、前記命名情報記録部により前記コンストラクタ命令の引数である引数オブジェクトについて前記命名情報が記録されていなければ、当該引数オブジェクトの値を用いて、当該オブジェクトを宣言する前記コードを生成する、請求項1又は請求項2の装置。前記生成部は、前記オブジェクトの値を用いて前記コードが生成された箇所の数を計数し、前記表示部は、前記生成部により計数された前記箇所の数が予め定められた閾値以上である場合に、前記オブジェクトに名前を付けることを推奨する情報を更に表示する、請求項1乃至請求項3の何れかの装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記生成命令を示す場合に、前記オブジェクトに名前が付けられておらず、当該オブジェクトが後続の前記操作命令で参照されている状況が発生すれば、当該状況の発生数を計数し、前記表示部は、前記生成部により計数された前記発生数が予め定められた閾値以上である場合に、前記オブジェクトに名前を付けることを推奨する情報を更に表示する、請求項1乃至請求項3の何れかの装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記他の操作命令を示す場合に、前記命名情報記録部により前記命名情報が記録されていない状況が発生すれば、当該状況の発生数を計数し、前記表示部は、前記生成部により計数された前記発生数が予め定められた閾値以上である場合に、前記オブジェクトに名前を付けることを推奨する情報を更に表示する、請求項1乃至請求項3の何れかの装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記他の操作命令を示す場合に、前記命名情報記録部により当該他の操作命令の引数である引数オブジェクトについて前記命名情報が記録されていない状況が発生すれば、当該状況の発生数を計数し、前記表示部は、前記生成部により計数された前記発生数が予め定められた閾値以上である場合に、前記引数オブジェクトに名前を付けることを推奨する情報を更に表示する、請求項1乃至請求項3の何れかの装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記命名命令を示し、前記オブジェクトを生成した命令がコンストラクタ命令である場合に、前記命名情報記録部により当該コンストラクタ命令の引数である引数オブジェクトについて前記命名情報が記録されていない状況が発生すれば、当該状況の発生数を計数し、前記表示部は、前記生成部により計数された前記発生数が予め定められた閾値以上である場合に、前記引数オブジェクトに名前を付けることを推奨する情報を更に表示する、請求項1乃至請求項3の何れかの装置。オブジェクトを操作する操作命令を再現するプログラムの生成を支援する装置であって、ユーザが入力した前記操作命令を受け付ける受付部と、前記受付部にて受け付けた前記操作命令を示す操作命令情報を記録する操作命令情報記録部と、前記受付部にて受け付けた前記操作命令が前記オブジェクトに名前を付ける命名命令である場合に、当該オブジェクトに当該命名命令で指定された名前を付けることなく、当該オブジェクトに当該指定された名前を対応付けた命名情報を記録する命名情報記録部と、前記受付部にて受け付けた前記操作命令が前記オブジェクトを生成する生成命令である場合に、当該オブジェクトに当該生成命令を示す生成命令情報を対応付けた生成情報を記録する生成情報記録部と、前記プログラムのコードの生成指示に応じて、前記操作命令情報記録部により記録された前記操作命令情報を順次取得する取得部と、前記取得部により取得された前記操作命令情報が前記生成命令を示す場合には、前記コードを生成せず、前記取得部により取得された前記操作命令情報が前記命名命令を示し、前記オブジェクトを生成した命令が宣言命令である場合には、当該操作命令情報に基づいて得られた当該オブジェクトの名前を用いて、当該オブジェクトを宣言する前記コードを生成し、前記取得部により取得された前記操作命令情報が前記命名命令を示し、前記オブジェクトを生成した命令がコンストラクタ命令である場合には、当該操作命令情報に基づいて得られた当該オブジェクトの名前を用いると共に、前記命名情報記録部により当該コンストラクタ命令の引数である引数オブジェクトについて前記命名情報が記録されていれば、当該命名情報において当該引数オブジェクトに対応付けられた名前を用いて、当該オブジェクトを宣言する前記コードを生成し、前記命名情報記録部により前記コンストラクタ命令の引数である引数オブジェクトについて前記命名情報が記録されていなければ、前記生成情報記録部により記録された前記生成情報において当該引数オブジェクトに対応付けられた当該生成命令情報に基づいて得られた当該引数オブジェクトの値を用いて、当該オブジェクトを宣言する前記コードを生成し、前記取得部により取得された前記操作命令情報が前記生成命令でもなく前記命名命令でもない他の操作命令を示す場合には、前記命名情報記録部により前記命名情報が記録されていれば、当該命名情報において前記オブジェクトに対応付けられた名前を用いて、当該オブジェクトを操作する前記コードを生成し、前記命名情報記録部により前記命名情報が記録されていなければ、前記生成情報記録部により記録された前記生成情報において前記オブジェクトに対応付けられた前記生成命令情報に基づいて得られた前記オブジェクトの値を用いて、当該オブジェクトを操作する前記コードを生成し、前記命名情報記録部により当該他の操作命令の引数である引数オブジェクトについて前記命名情報が記録されていれば、当該命名情報において当該引数オブジェクトに対応付けられた名前を用いて、当該オブジェクトを操作する前記コードを生成し、前記命名情報記録部により前記他の操作命令の引数である引数オブジェクトについて前記命名情報が記録されていなければ、前記生成情報記録部により記録された前記生成情報において当該引数オブジェクトに対応付けられた前記生成命令情報に基づいて得られた当該引数オブジェクトの値を用いて、当該オブジェクトを操作する前記コードを生成する生成部と、前記生成部により生成された前記コードを表示する表示部とを含む、装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記生成命令を示す場合に、前記オブジェクトに名前が付けられておらず、当該オブジェクトが後続の前記操作命令で参照されている第1の状況が発生すれば、当該第1の状況の発生数である第1の発生数を計数し、前記取得部により取得された前記操作命令情報が前記他の操作命令を示す場合に、前記命名情報記録部により前記命名情報が記録されていない第2の状況が発生すれば、当該第2の状況の発生数である第2の発生数を計数し、前記表示部は、前記生成部により計数された前記第1の発生数と前記第2の発生数との和が予め定められた閾値以上である場合に、前記オブジェクトに名前を付けることを推奨する情報を更に表示する、請求項9の装置。前記生成部は、前記取得部により取得された前記操作命令情報が前記他の操作命令を示す場合に、前記命名情報記録部により当該他の操作命令の引数である前記引数オブジェクトについて前記命名情報が記録されていない第3の状況が発生すれば、当該第3の状況の発生数である第3の発生数を計数し、前記取得部により取得された前記操作命令情報が前記命名命令を示し、前記オブジェクトを生成した命令がコンストラクタ命令である場合に、前記命名情報記録部により当該コンストラクタ命令の引数である前記引数オブジェクトについて前記命名情報が記録されていない第4の状況が発生すれば、当該第4の状況の発生数である第4の発生数を計数し、前記表示部は、前記生成部により計数された前記第3の発生数と前記第4の発生数との和が予め定められた閾値以上である場合に、前記引数オブジェクトに名前を付けることを推奨する情報を更に表示する、請求項10の装置。オブジェクトを操作する操作命令を再現するプログラムの生成を支援する方法であって、ユーザが入力した前記操作命令を受け付けるステップと、受け付けた前記操作命令を示す操作命令情報を記録するステップと、受け付けた前記操作命令が前記オブジェクトに名前を付ける命名命令である場合に、当該オブジェクトに当該命名命令で指定された名前を付けることなく、当該オブジェクトに当該指定された名前を対応付けた命名情報を記録するステップと、前記プログラムのコードの生成指示に応じて、記録された前記操作命令情報を順次取得するステップと、取得された前記操作命令情報が前記オブジェクトを生成する生成命令を示す場合には、前記コードを生成せず、取得された前記操作命令情報が前記命名命令を示す場合には、前記オブジェクトを宣言する前記コードを生成し、取得された前記操作命令情報が前記生成命令でもなく前記命名命令でもない他の操作命令を示す場合には、前記命名情報が記録されていれば、当該命名情報において前記オブジェクトに対応付けられた名前を用いて、当該オブジェクトを操作する前記コードを生成し、前記命名情報が記録されていなければ、前記オブジェクトの値を用いて、当該オブジェクトを操作する前記コードを生成するステップと、生成された前記コードを表示するステップとを含む、方法。オブジェクトを操作する操作命令を再現するプログラムの生成を支援する装置としてコンピュータを機能させるプログラムであって、前記コンピュータを、ユーザが入力した前記操作命令を受け付ける受付部と、前記受付部にて受け付けた前記操作命令を示す操作命令情報を記録する操作命令情報記録部と、前記受付部にて受け付けた前記操作命令が前記オブジェクトに名前を付ける命名命令である場合に、当該オブジェクトに当該命名命令で指定された名前を付けることなく、当該オブジェクトに当該指定された名前を対応付けた命名情報を記録する命名情報記録部と、前記プログラムのコードの生成指示に応じて、前記操作命令情報記録部により記録された前記操作命令情報を順次取得する取得部と、前記取得部により取得された前記操作命令情報が前記オブジェクトを生成する生成命令を示す場合には、前記コードを生成せず、前記取得部により取得された前記操作命令情報が前記命名命令を示す場合には、前記オブジェクトを宣言する前記コードを生成し、前記取得部により取得された前記操作命令情報が前記生成命令でもなく前記命名命令でもない他の操作命令を示す場合には、前記命名情報記録部により前記命名情報が記録されていれば、当該命名情報において前記オブジェクトに対応付けられた名前を用いて、当該オブジェクトを操作する前記コードを生成し、前記命名情報記録部により前記命名情報が記録されていなければ、前記オブジェクトの値を用いて、当該オブジェクトを操作する前記コードを生成する生成部と、前記生成部により生成された前記コードを表示する表示部ととして機能させる、プログラム。一般に、マクロによってプログラムコードを自動生成するシステムは、全ての対象オブジェクトに機械的に命名する。ところが、全ての対象オブジェクトに機械的に命名したのでは、操作者の意図が反映されたプログラムコードを生成できない。具体的には、第一に、全ての対象オブジェクトに命名することにより、操作対象のオブジェクトを、操作において指定する値のみが重要なオブジェクトと、命名して再利用するオブジェクトとに区別したいという意図が反映されたプログラムコードを生成できない。その結果、無駄な変数宣言を行うことになり、宣言のリソースが無駄に使用されるという問題が生じる。また、例えば、インラインで表現できる値が、別の箇所で変数として宣言されることにもなり、理解の妨げになるという問題も生じる。また、第二に、対象オブジェクトに機械的に命名することにより、操作対象のオブジェクトに操作コンテキストにおける名称を指定したい例えば、文字列オブジェクトにstring1、string2ではなく、title、contentという意味が分かり易い名称を指定したいという意図が反映されたプログラムコードを生成できない。その結果、プログラムコードの可読性が低下するという問題が生じる。尚、特許文献1は、モデルの可読性を向上するための技術であるので、本発明とは異なる。また、特許文献2、3は、プログラムコードの可読性を向上するものであるが、操作対象のオブジェクトを、操作において指定する値のみが重要なオブジェクトと、命名して再利用するオブジェクトとに区別したり、操作対象のオブジェクトに操作コンテキストにおける名称を指定したりするものではない。更に、特許文献4は、プログラムソースの無駄を省くものではあるが、やはり、操作対象のオブジェクトを、操作において指定する値のみが重要なオブジェクトと、命名して再利用するオブジェクトとに区別したり、操作対象のオブジェクトに操作コンテキストにおける名称を指定したりするものではない。本発明の目的は、操作対象のオブジェクトを命名された名前で記述すべきオブジェクトと値で記述すべきオブジェクトとに区別したプログラムコードを生成することにある。本発明の他の目的は、操作対象のオブジェクトをユーザが指定した名前で記述したプログラムコードを生成することにある。かかる目的のもと、本発明は、オブジェクトを操作する操作命令を再現するプログラムの生成を支援する装置であって、ユーザが入力した操作命令を受け付ける受付部と、受付部にて受け付けた操作命令を示す操作命令情報を記録する操作命令情報記録部と、受付部にて受け付けた操作命令がオブジェクトに名前を付ける命名命令である場合に、オブジェクトに命名命令で指定された名前を付けることなく、オブジェクトに指定された名前を対応付けた命名情報を記録する命名情報記録部と、プログラムのコードの生成指示に応じて、操作命令情報記録部により記録された操作命令情報を順次取得する取得部と、取得部により取得された操作命令情報がオブジェクトを生成する生成命令を示す場合には、コードを生成せず、取得部により取得された操作命令情報が命名命令を示す場合には、オブジェクトを宣言するコードを生成し、取得部により取得された操作命令情報が生成命令でもなく命名命令でもない他の操作命令を示す場合には、命名情報記録部により命名情報が記録されていれば、命名情報においてオブジェクトに対応付けられた名前を用いて、オブジェクトを操作するコードを生成し、命名情報記録部により命名情報が記録されていなければ、オブジェクトの値を用いて、オブジェクトを操作するコードを生成する生成部と、生成部により生成されたコードを表示する表示部とを含む、装置を提供する。ここで、生成部は、取得部により取得された操作命令情報が他の操作命令を示す場合に、命名情報記録部により他の操作命令の引数である引数オブジェクトについて命名情報が記録されていれば、命名情報において引数オブジェクトに対応付けられた名前を用いて、オブジェクトを操作するコードを生成し、命名情報記録部により他の操作命令の引数である引数オブジェクトについて命名情報が記録されていなければ、引数オブジェクトの値を用いて、オブジェクトを操作するコードを生成する、ものであってよい。また、生成部は、取得部により取得された操作命令情報が命名命令を示し、オブジェクトを生成した命令がコンストラクタ命令である場合に、命名情報記録部によりコンストラクタ命令の引数である引数オブジェクトについて命名情報が記録されていれば、命名情報において引数オブジェクトに対応付けられた名前を用いて、オブジェクトを宣言するコードを生成し、命名情報記録部によりコンストラクタ命令の引数である引数オブジェクトについて命名情報が記録されていなければ、引数オブジェクトの値を用いて、オブジェクトを宣言するコードを生成する、ものであってよい。加えて、生成部は、オブジェクトの値を用いてコードが生成された箇所の数を計数し、表示部は、生成部により計数された箇所の数が予め定められた閾値以上である場合に、オブジェクトに名前を付けることを推奨する情報を更に表示する、ものであってよい。また、生成部は、取得部により取得された操作命令情報が生成命令を示す場合に、オブジェクトに名前が付けられておらず、オブジェクトが後続の操作命令で参照されている状況が発生すれば、状況の発生数を計数し、表示部は、生成部により計数された発生数が予め定められた閾値以上である場合に、オブジェクトに名前を付けることを推奨する情報を更に表示する、ものであってよい。また、生成部は、取得部により取得された操作命令情報が他の操作命令を示す場合に、命名情報記録部により命名情報が記録されていない状況が発生すれば、状況の発生数を計数し、表示部は、生成部により計数された発生数が予め定められた閾値以上である場合に、オブジェクトに名前を付けることを推奨する情報を更に表示する、ものであってよい。更に、生成部は、取得部により取得された操作命令情報が他の操作命令を示す場合に、命名情報記録部により他の操作命令の引数である引数オブジェクトについて命名情報が記録されていない状況が発生すれば、状況の発生数を計数し、表示部は、生成部により計数された発生数が予め定められた閾値以上である場合に、引数オブジェクトに名前を付けることを推奨する情報を更に表示する、ものであってよい。更にまた、生成部は、取得部により取得された操作命令情報が命名命令を示し、オブジェクトを生成した命令がコンストラクタ命令である場合に、命名情報記録部によりコンストラクタ命令の引数である引数オブジェクトについて命名情報が記録されていない状況が発生すれば、状況の発生数を計数し、表示部は、生成部により計数された発生数が予め定められた閾値以上である場合に、引数オブジェクトに名前を付けることを推奨する情報を更に表示する、ものであってよい。また、本発明は、オブジェクトを操作する操作命令を再現するプログラムの生成を支援する装置であって、ユーザが入力した操作命令を受け付ける受付部と、受付部にて受け付けた操作命令を示す操作命令情報を記録する操作命令情報記録部と、受付部にて受け付けた操作命令がオブジェクトに名前を付ける命名命令である場合に、オブジェクトに命名命令で指定された名前を付けることなく、オブジェクトに指定された名前を対応付けた命名情報を記録する命名情報記録部と、受付部にて受け付けた操作命令がオブジェクトを生成する生成命令である場合に、オブジェクトに生成命令を示す生成命令情報を対応付けた生成情報を記録する生成情報記録部と、プログラムのコードの生成指示に応じて、操作命令情報記録部により記録された操作命令情報を順次取得する取得部と、取得部により取得された操作命令情報が生成命令を示す場合には、コードを生成せず、取得部により取得された操作命令情報が命名命令を示し、オブジェクトを生成した命令が宣言命令である場合には、操作命令情報に基づいて得られたオブジェクトの名前を用いて、オブジェクトを宣言するコードを生成し、取得部により取得された操作命令情報が命名命令を示し、オブジェクトを生成した命令がコンストラクタ命令である場合には、操作命令情報に基づいて得られたオブジェクトの名前を用いると共に、命名情報記録部によりコンストラクタ命令の引数である引数オブジェクトについて命名情報が記録されていれば、命名情報において引数オブジェクトに対応付けられた名前を用いて、オブジェクトを宣言するコードを生成し、命名情報記録部によりコンストラクタ命令の引数である引数オブジェクトについて命名情報が記録されていなければ、生成情報記録部により記録された生成情報において引数オブジェクトに対応付けられた生成命令情報に基づいて得られた引数オブジェクトの値を用いて、オブジェクトを宣言するコードを生成し、取得部により取得された操作命令情報が生成命令でもなく命名命令でもない他の操作命令を示す場合には、命名情報記録部により命名情報が記録されていれば、命名情報においてオブジェクトに対応付けられた名前を用いて、オブジェクトを操作するコードを生成し、命名情報記録部により命名情報が記録されていなければ、生成情報記録部により記録された生成情報においてオブジェクトに対応付けられた生成命令情報に基づいて得られたオブジェクトの値を用いて、オブジェクトを操作するコードを生成し、命名情報記録部により他の操作命令の引数である引数オブジェクトについて命名情報が記録されていれば、命名情報において引数オブジェクトに対応付けられた名前を用いて、オブジェクトを操作するコードを生成し、命名情報記録部により他の操作命令の引数である引数オブジェクトについて命名情報が記録されていなければ、生成情報記録部により記録された生成情報において引数オブジェクトに対応付けられた生成命令情報に基づいて得られた引数オブジェクトの値を用いて、オブジェクトを操作するコードを生成する生成部と、生成部により生成されたコードを表示する表示部とを含む、装置も提供する。ここで、生成部は、取得部により取得された操作命令情報が生成命令を示す場合に、オブジェクトに名前が付けられておらず、オブジェクトが後続の操作命令で参照されている第1の状況が発生すれば、第1の状況の発生数である第1の発生数を計数し、取得部により取得された操作命令情報が他の操作命令を示す場合に、命名情報記録部により命名情報が記録されていない第2の状況が発生すれば、第2の状況の発生数である第2の発生数を計数し、表示部は、生成部により計数された第1の発生数と第2の発生数との和が予め定められた閾値以上である場合に、オブジェクトに名前を付けることを推奨する情報を更に表示する、ものであってよい。また、生成部は、取得部により取得された操作命令情報が他の操作命令を示す場合に、命名情報記録部により他の操作命令の引数である引数オブジェクトについて命名情報が記録されていない第3の状況が発生すれば、第3の状況の発生数である第3の発生数を計数し、取得部により取得された操作命令情報が命名命令を示し、オブジェクトを生成した命令がコンストラクタ命令である場合に、命名情報記録部によりコンストラクタ命令の引数である引数オブジェクトについて命名情報が記録されていない第4の状況が発生すれば、第4の状況の発生数である第4の発生数を計数し、表示部は、生成部により計数された第3の発生数と第4の発生数との和が予め定められた閾値以上である場合に、引数オブジェクトに名前を付けることを推奨する情報を更に表示する、ものであってよい。更に、本発明は、オブジェクトを操作する操作命令を再現するプログラムの生成を支援する方法であって、ユーザが入力した操作命令を受け付けるステップと、受け付けた操作命令を示す操作命令情報を記録するステップと、受け付けた操作命令がオブジェクトに名前を付ける命名命令である場合に、オブジェクトに命名命令で指定された名前を付けることなく、オブジェクトに指定された名前を対応付けた命名情報を記録するステップと、プログラムのコードの生成指示に応じて、記録された操作命令情報を順次取得するステップと、取得された操作命令情報がオブジェクトを生成する生成命令を示す場合には、コードを生成せず、取得された操作命令情報が命名命令を示す場合には、オブジェクトを宣言するコードを生成し、取得された操作命令情報が生成命令でもなく命名命令でもない他の操作命令を示す場合には、命名情報が記録されていれば、命名情報においてオブジェクトに対応付けられた名前を用いて、オブジェクトを操作するコードを生成し、命名情報が記録されていなければ、オブジェクトの値を用いて、オブジェクトを操作するコードを生成するステップと、生成されたコードを表示するステップとを含む、方法も提供する。更にまた、本発明は、オブジェクトを操作する操作命令を再現するプログラムの生成を支援する装置としてコンピュータを機能させるプログラムであって、コンピュータを、ユーザが入力した操作命令を受け付ける受付部と、受付部にて受け付けた操作命令を示す操作命令情報を記録する操作命令情報記録部と、受付部にて受け付けた操作命令がオブジェクトに名前を付ける命名命令である場合に、オブジェクトに命名命令で指定された名前を付けることなく、オブジェクトに指定された名前を対応付けた命名情報を記録する命名情報記録部と、プログラムのコードの生成指示に応じて、操作命令情報記録部により記録された操作命令情報を順次取得する取得部と、取得部により取得された操作命令情報がオブジェクトを生成する生成命令を示す場合には、コードを生成せず、取得部により取得された操作命令情報が命名命令を示す場合には、オブジェクトを宣言するコードを生成し、取得部により取得された操作命令情報が生成命令でもなく命名命令でもない他の操作命令を示す場合には、命名情報記録部により命名情報が記録されていれば、命名情報においてオブジェクトに対応付けられた名前を用いて、オブジェクトを操作するコードを生成し、命名情報記録部により命名情報が記録されていなければ、オブジェクトの値を用いて、オブジェクトを操作するコードを生成する生成部と、生成部により生成されたコードを表示する表示部として機能させる、プログラムも提供する。本発明によれば、操作対象のオブジェクトを命名された名前で記述すべきオブジェクトと値で記述すべきオブジェクトとに区別したプログラムコードを生成できるようになる。以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。[プログラム生成装置の機能構成]図1は、本実施の形態におけるプログラム生成装置10の機能構成例を示した図である。図示するように、プログラム生成装置10は、対象オブジェクト記憶部11と、対象オブジェクト管理部12と、操作インターフェイス部13と、実行履歴記憶部14と、コード生成部15と、コード表示部16とを備える。対象オブジェクト記憶部11は、操作対象のオブジェクト以下、対象オブジェクトというを記憶する。ここで、対象オブジェクトは、文字列、数値、フレーム、ファイル等、Java登録商標で扱うことの可能な如何なるオブジェクトでもよい。対象オブジェクト管理部12は、作業中の対象オブジェクトの状態を表すために導入された操作対象モデルにより実現される。ここで、操作対象モデルは、対象オブジェクト記憶部11に記憶された対象オブジェクトを包むラッパーオブジェクトである。まず、操作対象モデルは、1つの対象オブジェクトに対応付けられているので、対象オブジェクトへの参照情報例えば、対象オブジェクトのIDのフィールドを持つ。また、操作対象モデルは、対象オブジェクトへの命名が指示された名前のフィールドも持つ。尚、操作対象モデルは対象オブジェクトに対応付けられているので、対象オブジェクトへの命名が指示された名前は、操作対象モデルに付けられた名前と捉えることができる。更に、操作対象モデルは、機能を定義したメソッドを持つ。メソッドには、まず、操作命令を表す命令情報を生成する機能が定義される。この命令情報は、対象オブジェクトへの命名命令を表す命令情報を除き、対象オブジェクトに対して操作命令を実行する。例えば、操作命令が対象オブジェクトを生成する命令であるとすると、命令情報は、その命令内容と、対象オブジェクトの生成に関与する操作対象モデルへの参照情報とを含む。また、メソッドには、命令情報を命令実行順序表21後述に登録する機能、操作対象モデルに付けられた名前と操作対象モデルとの対応情報を名前-モデルマッピング表22後述に登録する機能、及び、命令情報とその命令情報によって生成された操作対象モデルとの対応情報を命令情報-モデルマッピング表23後述に登録する機能も定義される。本実施の形態では、操作命令を示す操作命令情報の一例として、命令情報を用いており、オブジェクトに指定された名前を対応付けた命名情報の一例として、名前とその名前が付けられた操作対象モデルとの対応情報を用いており、オブジェクトに生成命令を示す生成命令情報を対応付けた生成情報の一例として、命令情報とその命令情報が表す操作命令によって生成された操作対象モデルとの対応情報を用いている。また、操作命令情報を記録する操作命令情報記録部、命名情報を記録する命名情報記録部、生成情報を記録する生成情報記録部の一例として、対象オブジェクト管理部12を設けている。尚、図では、対象オブジェクト記憶部11と対象オブジェクト管理部12とのペアを1つだけ示したが、クラスのインスタンスの数だけ、このペアは設けられるものとする。操作インターフェイス部13は、対象オブジェクトに対応する操作対象モデルと、対象オブジェクトに対して予め定義された操作命令の一覧とを表示機構90d図14参照に表示する。また、キーボード/マウス90iで一覧の中から選択された操作命令を受け付ける。ここで、操作命令には、対象オブジェクトに命名する命令が含まれる。操作対象モデルが作業中の対象オブジェクトの状態を表すので、操作インターフェイス部13は、作業中の対象オブジェクトに暫定の名前を付けてこれを表示する。言い換えると、対象オブジェクトに名前が付いていることを表示するように操作対象モデルが指示してくるので、対象オブジェクトが文字列xxxである場合に、対象オブジェクトに名前が付いていなければ単にxxxと表示し、対象オブジェクトにnamexという名前が付いていればnamexxxxと表示する。本実施の形態では、操作命令を受け付ける受付部の一例として、操作インターフェイス部13を設けている。実行履歴記憶部14は、操作命令が実行される都度、実行履歴を記憶する。コード生成部15は、実行履歴記憶部14に記憶された実行履歴をプログラムコードに変換する。本実施の形態では、操作命令情報を順次取得する取得部、コードを生成する生成部の一例として、コード生成部15を設けている。コード表示部16は、コード生成部15が生成したプログラムコードを表示機構90d図14参照に出力する。本実施の形態では、コードを表示する表示部の一例として、コード表示部16を設けている。また、実行履歴記憶部14は、命令実行順序表21と、名前-モデルマッピング表22と、命令情報-モデルマッピング表23とを記憶する。命令実行順序表21は、操作命令が実行される都度生成された命令情報を実行された順に保持する表形式のデータである。名前-モデルマッピング表22は、操作対象モデルに付けられた名前と、操作対象モデルとの対応情報を保持する表形式のデータである。命令情報-モデルマッピング表23は、命令情報と、その命令情報によって生成された操作対象モデルとの対応情報を保持する表形式のデータである。尚、これらの機能のうち、対象オブジェクト管理部12、操作インターフェイス部13、コード生成部15、及び、コード表示部16は、CPU90a図14参照が磁気ディスク装置90g図14参照に記憶されたプログラムをメインメモリ90c図14参照に読み込んで実行することにより実現される。また、対象オブジェクト記憶部11及び実行履歴記憶部14は、例えば磁気ディスク装置90g図14参照により実現される。[プログラム生成装置の概略動作1]図2は、プログラム生成装置の第1の概略動作を説明するためのユーザ操作の流れを示したフローチャートである。尚、実際は、ユーザ操作は操作対象モデルに対して行われる。しかしながら、ユーザ操作が対象オブジェクトへの命名を指示する操作である場合を除き、ユーザ操作に応じて対象オブジェクト管理部12が対象オブジェクトに対して操作命令を実行するので、ここでは、ユーザ操作を対象オブジェクトに対する操作と捉えて説明する。まず、ユーザは、javalangStringクラスのインスタンスAとして文字列指定された文字列を生成するステップ1。次に、ユーザは、ステップ1で生成されたjavalangStringクラスのインスタンスAをjavaxswingJFrameクラスのコンストラクタに与えてjavaxswingJFrameクラスのインスタンスXを生成するステップ2。そして、ステップ2で生成されたjavaxswingJFrameクラスのインスタンスXへのfooFrameの命名を指示するステップ3。次いで、ユーザは、javalangStringクラスのインスタンスBとして文字列指定された別文字列を生成するステップ4。そして、ステップ4で生成されたjavalangStringクラスのインスタンスBへのnewTitleの命名を指示するステップ5。その後、ユーザは、ステップ4で生成されたjavalangStringクラスのインスタンスBをステップ2で生成されたjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドを実行するステップ6。また、ステップ1で生成されたjavalangStringクラスのインスタンスAをステップ2で生成されたjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドを実行するステップ7。図3は、図2に示したユーザ操作における各ステップの操作が行われたときに生成されるプログラムコードについて説明するための図である。尚、図では、実際には表出されないコードも、説明の便宜上、破線で囲んで示している。まず、コード301は、javalangStringクラスのインスタンスAを生成するコードである。ステップ1の操作が行われた時点で、javalangStringクラスのインスタンスAは生成されたが命名されていないので、コード301は表出されない。また、コード302,303は、javalangStringクラスのインスタンスAをjavaxswingJFrameクラスのコンストラクタに与えてjavaxswingJFrameクラスのインスタンスXを生成するコードである。ステップ2の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXは生成されたが命名されていないので、コード302は表出されない。一方、ステップ3の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXは命名されているので、コード303は表出される。ここで、javalangStringクラスのインスタンスAは命名されていないので、指定された文字列がインライン展開されている。更に、コード304,305は、javalangStringクラスのインスタンスBを生成するコードである。ステップ4の操作が行われた時点で、javalangStringクラスのインスタンスBは生成されたが命名されていないので、コード304は表出されない。一方、ステップ5の操作が行われた時点で、javalangStringクラスのインスタンスBは命名されているので、コード305は表出される。また、コード306は、javalangStringクラスのインスタンスBをjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドを実行するコードである。ステップ6の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXもjavalangStringクラスのインスタンスBも命名されているので、これらのインスタンスが変数として書き出されたコード306が表出される。更に、コード307は、javalangStringクラスのインスタンスAをjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドを実行するコードである。ステップ7の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXは命名されているが、javalangStringクラスのインスタンスAは命名されていないので、前者のインスタンスだけが変数として書き出され、後者のインスタンスとしては指定された文字列がインライン展開されたコード307が書き出される。このように、javalangStringクラスのインスタンスAは、命名されていないので、常に値として扱われる。つまり、プログラム上では、このインスタンスが出現する都度、このインスタンスを格納する領域がメモリ空間に確保され、その領域は不要になれば捨てられる。一方、javalangStringクラスのインスタンスBは、javalangStringクラスのインスタンスAと同じ文字列であるが、命名されているので、変数としてアクセスする対象となっている。[プログラム生成装置の概略動作2]図4は、プログラム生成装置の第2の概略動作を説明するためのユーザ操作の流れを示したフローチャートである。尚、実際は、ユーザ操作は操作対象モデルに対して行われる。しかしながら、ユーザ操作が対象オブジェクトへの命名を指示する操作である場合を除き、ユーザ操作に応じて対象オブジェクト管理部12が対象オブジェクトに対して操作命令を実行するので、ここでは、ユーザ操作を対象オブジェクトに対する操作と捉えて説明する。まず、ユーザは、図2のステップ1~ステップ7で示した操作を行う。そして最後に、ステップ1で生成されたjavalangStringクラスのインスタンスAへのbarTitleの命名を指示するステップ8。図5は、図4に示したユーザ操作における各ステップの操作が行われたときに生成されるプログラムコードについて説明するための図である。尚、図では、実際には表出されないコードも、説明の便宜上、破線で囲んで示している。まず、コード351,358は、javalangStringクラスのインスタンスAを生成するコードである。ステップ1の操作が行われた時点で、javalangStringクラスのインスタンスAは生成されたが命名されていないので、コード351は表出されない。一方、ステップ8でjavalangStringクラスのインスタンスAにbarTitleと命名した時点で、このインスタンスの生成ポイントに宣言文であるコード358が発生する。また、コード352,353は、javalangStringクラスのインスタンスAをjavaxswingJFrameクラスのコンストラクタに与えてjavaxswingJFrameクラスのインスタンスXを生成するコードである。ステップ2の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXは生成されたが命名されていないので、コード352は表出されない。一方、ステップ3の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXは命名されているので、コード353は表出される。ここで、javalangStringクラスのインスタンスAは、ステップ3の操作が行われた時点では命名されていなかったので図3のようにインライン展開されたが、ステップ8でbarTitleと命名されると、変数として書き出される。更に、コード354,355は、javalangStringクラスのインスタンスBを生成するコードである。ステップ4の操作が行われた時点で、javalangStringクラスのインスタンスBは生成されたが命名されていないので、コード354は表出されない。一方、ステップ5の操作が行われた時点で、javalangStringクラスのインスタンスBは命名されているので、コード355は表出される。また、コード356は、javalangStringクラスのインスタンスBをjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドを実行するコードである。ステップ6の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXもjavalangStringクラスのインスタンスBも命名されているので、これらのインスタンスが変数として書き出されたコード356が表出される。更に、コード357は、javalangStringクラスのインスタンスAをjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドを実行するコードである。ステップ7の操作が行われた時点で、javaxswingJFrameクラスのインスタンスXは命名されているが、javalangStringクラスのインスタンスAは命名されていなかったので、前者のインスタンスだけが変数として書き出され、後者のインスタンスは図3のようにインライン展開された。しかし、後者のインスタンスも、ステップ8でbarTitleと命名されると、変数として書き出される。このように、javalangStringクラスのインスタンスAに後から命名した場合であっても、その命名がプログラムコード全体に反映され、変数として扱うことができる。[プログラム生成装置の動作]プログラム生成装置10は、大きく分けて以下の2つの動作を行う。第一に、操作インターフェイス部13での対象オブジェクトに対する操作に応じた動作である。この操作中に必要に応じて対象オブジェクトに対する命名操作が行われるので、その命名操作に応じた動作も行う。第二に、最新のプログラムコードを生成して表示画面に表示する動作である。以下、この2つの動作について順に説明する。対象オブジェクト操作時の動作ユーザの指示により操作インターフェイス部13が対象オブジェクト管理部12に操作命令を伝えると、対象オブジェクト管理部12はこの操作命令に基づく動作を行う。ここで、操作命令は、関数の実行、フィールド値の取得、配列要素の取り出し等の操作命令に加えて、特に、対象オブジェクトに対する命名命令を含むものとする。図6は、このときの対象オブジェクト管理部12の動作例を示したフローチャートである。図示するように、まず、対象オブジェクト管理部12は、操作インターフェイス部13から伝えられた操作命令を表す命令情報を生成するステップ101。次に、対象オブジェクト管理部12は、操作インターフェイス部13から伝えられた操作命令が対象オブジェクトに対する命名命令であるかどうかを判定するステップ102。その結果、伝えられた操作命令が対象オブジェクトに対する命名命令であると判定されれば、対象オブジェクト管理部12は、対象オブジェクトに対しては何もせず、命名された名前と、対象オブジェクトに対応する操作対象モデルとの対応を、名前-モデルマッピング表22に登録するステップ103。そして、ステップ101で生成した命令情報を命令実行順序表21に追加するステップ108。一方、伝えられた操作命令が対象オブジェクトに対する命名命令でないと判定されれば、対象オブジェクト管理部12は、ステップ101で生成した命令情報により、対象オブジェクトに対して操作を実行するステップ104。そして、操作を実行した結果として新たなオブジェクトが生成されるかどうかを判定するステップ105。尚、このように新たなオブジェクトを生成する生成命令としては、例えば、宣言命令、コンストラクタ命令がある。ここで、新たなオブジェクトが生成されると判定されれば、対象オブジェクト管理部12は、この新たなオブジェクトを包むラッパーオブジェクトである新たな操作対象モデルを生成し、この新たな操作対象モデルに新たな対象オブジェクトを参照させるステップ106。また、この新たな操作対象モデルがステップ101で生成された命令情報によって作成されたことを、命令情報-モデルマッピング表23に登録するステップ107。そして、ステップ101で生成した命令情報を命令実行順序表21に追加するステップ108。また、新たなオブジェクトが生成されないと判定されれば、対象オブジェクト管理部12は、新たな操作対象モデルの生成や命令情報-モデルマッピング表23への情報の登録を行うことなく、ステップ101で生成した命令情報を命令実行順序表21に追加するステップ108。ここで、上記動作により命令実行順序表21、名前-モデルマッピング表22、命令情報-モデルマッピング表23に登録される情報の内容について説明する。尚、ここでは、図2に示したユーザ操作が行われた場合を例にとって説明する。図7は、図2に示したユーザ操作に応じて上記動作が行われた場合の命令実行順序表21の登録内容の例を示した図である。図示するように、命令実行順序表21には、順序情報と命令情報との対応が登録される。ここで、順序情報は、対応する命令情報で表される操作命令が何番目に実行されたものであるかを示す情報である。また、命令情報は、ユーザが指示した操作命令を表す情報であり、操作対象モデル,命令,引数という書式で示す。但し、操作対象モデルとしては、その管理対象である対象オブジェクトを示している。図2に示したユーザ操作では、まず、ステップ1でjavalangStringクラスのインスタンスAとして文字列指定された文字列が生成されたので、順序情報1と命令情報javalangStringクラス,宣言,指定された文字列との対応が登録されている。次に、ステップ2でjavalangStringクラスのインスタンスAをjavaxswingJFrameクラスのコンストラクタに与えてjavaxswingJFrameクラスのインスタンスXが生成されたので、順序情報2と命令情報javaxswingJFrameクラス,コンストラクタ,javalangStringクラスのインスタンスAとの対応が登録されている。そして、ステップ3でjavaxswingJFrameクラスのインスタンスXへのfooFrameの命名が指示されたので、順序情報3と命令情報javaxswingJFrameクラスのインスタンスX,命名,fooFrameとの対応が登録されている。次いで、ステップ4でjavalangStringクラスのインスタンスBとして文字列指定された別文字列が生成されたので、順序情報4と命令情報javalangStringクラス,宣言,指定された別文字列との対応が登録されている。そして、ステップ5でjavalangStringクラスのインスタンスBへのnewTitleの命名が指示されたので、順序情報5と命令情報javalangStringクラスのインスタンスB,命名,newTitleとの対応が登録されている。その後、ステップ6でjavalangStringクラスのインスタンスBをjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドが実行されたので、順序情報6と命令情報javaxswingJFrameクラスのインスタンスX,setTitleメソッド,javalangStringクラスのインスタンスBとの対応が登録されている。また、ステップ7でjavalangStringクラスのインスタンスAをjavaxswingJFrameクラスのインスタンスXに与えてsetTitleメソッドが実行されたので、順序情報7と命令情報javaxswingJFrameクラスのインスタンスX,setTitleメソッド,javalangStringクラスのインスタンスAとの対応が登録されている。図8は、図2に示したユーザ操作に応じて上記動作が行われた場合の名前-モデルマッピング表22の登録内容の例を示した図である。図示するように、名前-モデルマッピング表22には、名前と操作対象モデルとの対応が登録される。ここで、名前は、命名命令によって対象オブジェクトへの命名が指示された名前である。また、操作対象モデルは、その名前の命名が指示された対象オブジェクトを管理する操作対象モデルである。尚、ここでも、操作対象モデルとしては、その管理対象である対象オブジェクトを示している。図2に示したユーザ操作では、ステップ3でjavaxswingJFrameクラスのインスタンスXへのfooFrameの命名が指示されたので、名前fooFrameと操作対象モデルjavaxswingJFrameクラスのインスタンスXとの対応が登録されている。また、ステップ5でjavalangStringクラスのインスタンスBへのnewTitleの命名が指示されたので、名前newTitleと操作対象モデルjavalangStringクラスのインスタンスBとの対応が登録されている。図9は、図2に示したユーザ操作に応じて上記動作が行われた場合の命令情報-モデルマッピング表23の登録内容の例を示した図である。図示するように、命令情報-モデルマッピング表23には、命令情報と操作対象モデルとの対応が登録される。ここで、命令情報は、対象オブジェクトを生成した操作命令を表す情報である。また、操作対象モデルは、その命令情報が表す操作命令によって生成された対象オブジェクトを管理する操作対象モデルである。尚、ここでも、操作対象モデルとしては、その管理対象である対象オブジェクトを示している。図2に示したユーザ操作では、ステップ1でjavalangStringクラスのインスタンスAが生成されたので、命令情報javalangStringクラス,宣言,指定された文字列と操作対象モデルjavalangStringクラスのインスタンスAとの対応が登録されている。また、ステップ2でjavaxswingJFrameクラスのインスタンスXが生成されたので、命令情報javaxswingJFrameクラス,コンストラクタ,javalangStringクラスのインスタンスAと操作対象モデルjavaxswingJFrameクラスのインスタンスXとの対応が登録されている。更に、ステップ4でjavalangStringクラスのインスタンスBが生成されたので、命令情報javalangStringクラス,宣言,指定された別文字列と操作対象モデルjavalangStringクラスのインスタンスBの対応が登録されている。プログラムコード生成時の動作ユーザが例えば図2に示すような操作を行った後、プログラムコードの生成を指示すると、コード生成部15はプログラムコードを生成する動作を行う。或いは、コンピュータの指示により、コード生成部15はプログラムコードを生成する動作を行ってもよい。コード生成部15は、動作を開始すると、まず、コードが格納されていないコードバッファを用意する。また、コード生成部15は、名前-モデルマッピング表22に登録されている操作対象モデルを作成した命令を命令情報-モデルマッピング表23にて調べ、命令実行順序表21上で、その操作対象モデルを作成した命令を削除し、その操作対象モデルを命名した命令をその位置に移動する。図10は、このときの命令実行順序表21の登録内容の例を示した図である。まず、図8の名前-モデルマッピング表22を参照すると、この表に登録されている操作対象モデルはjavaxswingJFrameクラスのインスタンスX及びjavalangStringクラスのインスタンスBである。次に、図9の命令情報-モデルマッピング表23を参照すると、これらを生成した命令情報はそれぞれjavaxswingJFrameクラス,コンストラクタ,javalangStringクラスのインスタンスA及びjavalangStringクラス,宣言,指定された別文字列である。従って、図7の命令実行順序表21に対して、順序情報2のレコードを削除して順序情報3のレコードをその位置に移動させ、かつ、順序情報4のレコードを削除して順序情報5のレコードがその位置に移動させる変更を施すことにより、図10の命令実行順序表21を生成する。尚、ここで命名された操作対象モデルを生成する命令情報を削除したことは、操作命令情報がオブジェクトを生成する生成命令を示す場合にコードを生成しないことの一例である。さて、このような準備が整うと、コード生成部15は、実際にプログラムコードを生成する処理に移る。図11は、このときのコード生成部15の動作例を示したフローチャートである。図示するように、コード生成部15は、まず、命令実行順序表21から命令情報の総数を得て、この命令情報の総数を、処理中の命令情報の位置をカウントする変数iに代入するステップ121。次に、コード生成部15は、変数iを1ずつ減らしながら0になるまで、ステップ122~132の処理を繰り返し実行する。以下、変数iについてのステップ122~132の処理内容について説明する。最初に、コード生成部15は、命令実行順序表21で最初からi番目にある命令情報、つまり、順序情報iに対応する命令情報を取り出すステップ122。そして、操作対象モデルに命名する命令を表す命令情報が取り出されたかどうかを判定するステップ123。その結果、操作対象モデルに命名する命令を表す命令情報が取り出されたと判定されれば、コード生成部15は、まず、変数名宣言コード断片を生成するステップ124。ここで、変数名宣言コード断片とは、変数名を宣言するためのコード断片であり、例えば、Stringクラスの変数newTitleを宣言する場合は、StringnewTitleという文字列が該当する。次に、コード生成部15は、命令情報における操作対象モデルを生成した命令情報を、命令情報-モデルマッピング表23から取り出すステップ125。そして、コード生成部15は、命令情報コード化処理を呼び出し、コード断片を取得するステップ126。尚、この命令情報コード化処理の呼び出しは、ステップ125で取り出した操作対象モデルを生成した命令情報モデル生成命令情報をパラメータとして行われる。このパラメータはステップ126の括弧内にも示している。また、命令情報コード化処理から返されるコード断片は、命令や値等を表すものであり、図2の例で言えば、newjavaxswingJFrame、指定された別文字列が該当する。以下、命令情報コード化処理から返されたコード断片は、命令情報コード化処理を呼ぶことで得られたコード断片という意味で命令情報コード断片と称する。次いで、コード生成部15は、ステップ124で生成した変数名宣言コード断片と、ステップ126で取得した命令情報コード断片とを代入記号で結ぶことにより、プログラムコードの行であるコード行を生成するステップ127。一方、ステップ123にて、操作対象モデルに命名する命令を表す命令情報が取り出されなかったと判定されれば、コード生成部15は、操作対象モデルを生成する命令を表す命令情報が取り出されたかどうかを判定するステップ128。そして、操作対象モデルを生成する命令を表す命令情報が取り出されたと判定されれば、コード生成部15は、その操作対象モデルが命名されておらず、後続の命令情報命令実行順序表21でより大きな順序情報に対応付けられた命令情報において参照されているかどうか命令情報における操作対象モデル又は引数となっているかどうかを判定するステップ129。その操作対象モデルが命名されておらず、後続の命令で参照されていると判定されれば、コード生成部15は、名称が未決定の状態で操作対象モデルがコード化されたことを示す参照カウンタCNTに1を加算するステップ130。また、ステップ128にて、操作対象モデルを生成する命令を表す命令情報が取り出されなかったと判定された場合、又は、ステップ129にて、その操作対象モデルが命名されている、若しくは、後続の命令で参照されていない、と判定された場合、コード生成部15は、命令情報コード化処理を呼び出し、命令情報コード断片を取得するステップ131。尚、この命令情報コード化処理の呼び出しは、ステップ122で取り出したi番目の命令情報をパラメータとして行われる。このパラメータはステップ131の括弧内にも示している。また、命令情報コード化処理から返される命令情報コード断片は、命令を表すものであり、図2の例で言えば、fooFramesetTitle等が該当する。即ち、ここで得られる命令情報コード断片は、プログラムコードの行であるコード行である。その後、コード生成部15は、コードバッファの最初の行として、ステップ127又はステップ131で得られたコード行を追加するステップ132。尚、ステップ130が実行された場合は、コード行は得られていないので、コードバッファには何も追加しない。そして、上述したように、コード生成部15は、変数iを1ずつ減らしながら0になるまで以上の処理を繰り返すので、コード生成部15は、処理中の命令情報の位置をカウントする変数iを1カウントダウンしステップ133、カウントダウンしたことにより変数iが0になったかどうかを判定するステップ134。その結果、コード生成部15は、変数iが0になっていなければ、ステップ122へ処理を進めるが、変数iが0になっていれば、コードバッファに格納された全てのコードと、操作対象モデルごとの参照カウンタCNTの値とをコード表示部16に出力するステップ135。これにより、コード表示部16は、コード生成部15により生成されたコードを表示機構90d図14参照に表示する。その際、予め定められた閾値例えば2以上になっている参照カウンタCNTに対応する操作対象モデルに命名することを推奨する情報も表示する。ここで、図11のステップ126,131、又は、後述する図13のステップ165で呼び出される命令情報コード化処理について詳細に説明する。図12は、命令情報コード化処理の流れを示したフローチャートである。図示するように、コード生成部15は、呼び出されるときに渡された命令情報が、宣言命令を表す命令情報であるかどうかを判定するステップ141。ここで、宣言命令とは、操作対象モデルを宣言する命令であり、図2の例で言えば、命令情報javalangStringクラス,宣言,指定された文字列で表される命令が該当する。まず、呼び出されるときに渡された命令情報が、宣言命令を表す命令情報でないと判定された場合について述べる。この場合、コード生成部15は、渡された命令情報がコンストラクタ命令を表す命令情報であるかどうかを判定するステップ142。ここで、コンストラクタ命令とは、対象オブジェクトを生成するときに実行する命令であり、図2の例で言えば、命令情報javaxswingJFrameクラス,コンストラクタ,javalangStringクラスのインスタンスAで表される命令が該当する。その結果、渡された命令情報がコンストラクタ命令を表す命令情報でないと判定されれば、コード生成部15は、モデルコード化処理を呼び出すステップ143。尚、このモデルコード化処理の呼び出しは、渡された命令情報における操作対象モデルをパラメータとして行われる。このパラメータはステップ143の括弧内にも示している。また、モデルコード化処理から返されるコード断片は、変数名や値等を表すものであり、図2の例で言えば、fooFrame等が該当する。以下、モデルコード化処理から返されたコード断片は、モデルコード化処理を呼ぶことで得られたコード断片という意味でモデルコード断片と称する。但し、ここで返されたコード断片は、操作対象モデルをパラメータとしてモデルコード化処理を呼ぶことで得られたコード断片であるので、特に操作対象モデルコード断片と称する。一方、渡された命令情報がコンストラクタ命令を表す命令情報であると判定されれば、コード生成部15は、コンストラクタ部分のコード断片コンストラクタコード断片を生成するステップ144。ここで、コンストラクタコード断片は、図2の例で言えば、newjavaxswingJframe及びが該当する。その後、コード生成部15は、渡された命令情報に引数があるかどうかを判定するステップ145。ここで、渡された命令情報に引数がないと判定されれば、何もしないが、渡された命令情報に引数があると判定されれば、コード生成部15は、モデルコード化処理を呼び出すステップ146。尚、このモデルコード化処理の呼び出しは、その引数をパラメータとして行われる。このパラメータはステップ146の括弧内にも示している。また、モデルコード化処理から返されるモデルコード断片は、変数名や値等を表すものであり、図2の例で言えば、指定された文字列等が該当する。但し、ここで返されたコード断片は、引数をパラメータとしてモデルコード化処理を呼ぶことで得られたコード断片であるので、特に引数コード断片と称する。そして、コード生成部15は、操作対象モデルコード断片と命令内容と引数コード断片とを組み合わせることにより、又は、コンストラクタコード断片と引数コード断片とを組み合わせることにより、命令情報コード断片を生成し、これを返すステップ147。ここで、例えば、操作対象モデルコード断片がfooFrame、引数コード断片が指定された文字列、命令内容がsetTitleであるすると、命令情報コード断片はfooFramesetTitleとなる。尚、このステップ147は、渡された命令情報がコンストラクタ命令を表す命令情報であると判定された場合や、渡された命令情報に引数がないと判定された場合にも実行されるものとして設けたが、これらの場合にはそれぞれの場合に適したステップを別に設けてもよい。次に、呼び出されるときに渡された命令情報が、宣言命令を表す命令情報であると判定された場合について述べる。この場合、コード生成部15は、値を表す命令情報コード断片又はクラス参照を表す命令情報コード断片を生成し、これを返すステップ148。ここで、値を表す命令情報コード断片は、例えば、指定された文字列、1、-1である。また、クラス参照を表す命令情報コード断片は、例えば、javalangStringである。ここで、図12のステップ143,146で呼び出されるモデルコード化処理について詳細に説明する。図13は、モデルコード化処理の流れを示したフローチャートである。図示するように、コード生成部15は、名前-モデルマッピング表22を参照し、呼び出されるときに渡された対象操作対象モデル又は引数に名前が付いているかどうかを確認しステップ161、対象が命名済みかどうかを判定するステップ162。その結果、対象が命名済みであると判定されれば、コード生成部15は、対象に付けられた変数名を表すモデルコード断片を生成し、これを返すステップ163。ここで、変数名を表すモデルコード断片は、例えば、fooFrameである。一方、対象が命名済みでないと判定されれば、コード生成部15は、まず、対象を生成した命令情報を命令情報-モデルマッピング表23から取り出すステップ164。次に、コード生成部15は、命令情報コード化処理を呼び出し、命令情報コード断片を取得するステップ165。尚、この命令情報コード化処理の呼び出しは、ステップ164で取り出した対象を生成した命令情報をパラメータとして行われる。このパラメータはステップ165の括弧内にも示している。また、命令情報コード化処理から返される命令情報コード断片は、命令、値等を表すものであり、図2の例で言えば、指定された文字列等が該当する。次いで、コード生成部15は、名称が未決定の状態で対象がコード化されたことを示す参照カウンタCNTに1を加算するステップ166。その後、コード生成部15は、ステップ165で取得した命令情報コード断片をモデルコード断片として返すステップ167。プログラムコード生成時の動作の具体例ここでは、図10に示した命令実行順序表21の各行の命令情報を図11のステップ122で取り出した場合のステップ123~132の動作図12及び図13の各ステップの動作を含むについて、具体的に説明する。1順序情報5に対応する命令情報javaxswingJFrameクラスのインスタンスX,setTitleメソッド,javalangStringクラスのインスタンスAを取り出した場合図11において、コード生成部15は、生成命令でも命名命令でもない他の操作命令の一例であるsetTitleメソッドが取り出されたことから、ステップ123で、操作対象モデルに命名する命令を表す命令情報が取り出されなかったと判定し、ステップ128で、操作対象モデルを生成する命令を表す命令情報が取り出されなかったと判定し、ステップ131で、この命令情報をパラメータとして命令情報コード化処理を呼び出す。すると、図12において、コード生成部15は、ステップ141で、この命令情報が宣言命令を表さないと判定し、ステップ142で、この命令情報がコンストラクタ命令を表さないと判定し、ステップ143で、この命令情報における操作対象モデルjavaxswingJFrameクラスのインスタンスXをパラメータとしてモデルコード化処理を呼び出す。すると、図13において、コード生成部15は、ステップ161で、名前-モデルマッピング表22を参照し、この操作対象モデルjavaxswingJFrameクラスのインスタンスXに名前が付いているかどうかを確認し、ステップ162で、fooFrameと命名済みであると判定し、ステップ163で、変数名を表すモデルコード断片fooFrameを返す。ここで、fooFrameは、オブジェクトに対応付けられた名前の一例である。これにより、図12に戻り、コード生成部15は、ステップ145で、命令情報コード化処理が呼び出されたときのパラメータである命令情報に引数があると判定し、ステップ146で、この命令情報における引数javalangStringクラスのインスタンスAをパラメータとしてモデルコード化処理を呼び出す。すると、図13において、コード生成部15は、ステップ161で、名前-モデルマッピング表22を参照し、引数javalangStringクラスのインスタンスAに名前が付いているかどうかを確認し、ステップ162で、命名済みでないと判定し、ステップ164で、この引数を生成した命令情報を返す。これにより、図11に戻り、コード生成部15は、ステップ132で、コード行fooFramesetTitleをコードバッファの最初の行に追加する。2順序情報4に対応する命令情報javaxswingJFrameクラスのインスタンスX,setTitleメソッド,javalangStringクラスのインスタンスBを取り出した場合図11において、コード生成部15は、生成命令でも命名命令でもない他の操作命令の一例であるsetTitleメソッドが取り出されたことから、ステップ123で、操作対象モデルに命名する命令を表す命令情報が取り出されなかったと判定し、ステップ128で、操作対象モデルを生成する命令を表す命令情報が取り出されなかったと判定し、ステップ131で、この命令情報をパラメータとして命令情報コード化処理を呼び出す。すると、図12において、コード生成部15は、ステップ141で、この命令情報が宣言命令を表さないと判定し、ステップ142で、この命令情報がコンストラクタ命令を表さないと判定し、ステップ143で、この命令情報における操作対象モデルjavaxswingJFrameクラスのインスタンスXをパラメータとしてモデルコード化処理を呼び出す。すると、図13において、コード生成部15は、ステップ161で、名前-モデルマッピング表22を参照し、この操作対象モデルjavaxswingJFrameクラスのインスタンスXに名前が付いているかどうかを確認し、ステップ162で、fooFrameと命名済みであると判定し、ステップ163で、変数名を表すモデルコード断片fooFrameを返す。ここで、fooFrameは、オブジェクトに対応付けられた名前の一例である。これにより、図12に戻り、コード生成部15は、ステップ145で、命令情報コード化処理が呼び出されたときのパラメータである命令情報に引数があると判定し、ステップ146で、この命令情報における引数javalangStringクラスのインスタンスBをパラメータとしてモデルコード化処理を呼び出す。すると、図13において、コード生成部15は、ステップ161で、名前-モデルマッピング表22を参照し、引数javalangStringクラスのインスタンスBに名前が付いているかどうかを確認し、ステップ162で、newTitleと命名済みであると判定し、ステップ163で、変数名を表すモデルコード断片newTitleを返す。ここで、newTitleは、引数オブジェクトに対応付けられた名前の一例である。これにより、図12に戻り、コード生成部15は、ステップ147で、命令情報コード断片fooFramesetTitleを返す。これにより、図11に戻り、コード生成部15は、ステップ132で、コード行fooFramesetTitleをコードバッファの最初の行に追加する。3順序情報3に対応する命令情報javalangStringクラスのインスタンスB,命名,newTitleを取り出した場合図11において、コード生成部15は、ステップ123で、操作対象モデルに命名する命令を表す命令情報が取り出されたと判定し、ステップ124で、変数名宣言コード断片StringnewTitleを生成し、ステップ125で、操作対象モデルjavalangStringクラスのインスタンスBを生成した命令情報javalangStringクラス宣言指定された別文字列を命令情報-モデルマッピング表23から取り出し、ステップ126で、この命令情報をパラメータとして命令情報コード化処理を呼び出す。すると、図12において、コード生成部15は、ステップ141で、この命令情報が宣言命令を表すと判定し、ステップ148で、命令情報コード断片指定された別文字列を返す。これにより、図11に戻り、コード生成部15は、ステップ127で、コード行StringnewTitle指定された別文字列を生成し、ステップ132で、このコード行をコードバッファの最初の行に追加する。4順序情報2に対応する命令情報javaxswingJFrameクラスのインスタンスX,命名,fooFrameを取り出した場合図11において、コード生成部15は、ステップ123で、操作対象モデルに命名する命令を表す命令情報が取り出されたと判定し、ステップ124で、変数名宣言コード断片javaxswingJFramefooFrameを生成し、ステップ125で、操作対象モデルjavaxswingJFrameクラスのインスタンスXを生成した命令情報javaxswingJFrameクラス,コンストラクタ,javalangStringクラスのインスタンスAを命令情報-モデルマッピング表23から取り出し、ステップ126で、この命令情報をパラメータとして命令情報コード化処理を呼び出す。すると、図12において、コード生成部15は、ステップ141で、この命令情報が宣言命令を表さないと判定し、ステップ142で、この命令情報がコンストラクタ命令を表すと判定し、ステップ144で、コンストラクタコード断片newjavaxswingJFrame及びを生成し、ステップ145で、この命令情報に引数があると判定し、ステップ146で、この命令情報における引数javalangStringクラスのインスタンスAをパラメータとしてモデルコード化処理を呼び出す。すると、図13において、コード生成部15は、ステップ161で、名前-モデルマッピング表22を参照し、引数javalangStringクラスのインスタンスAに名前が付いているかどうかを確認し、ステップ162で、命名済みでないと判定し、ステップ164で、この引数を生成した命令情報javalangStringクラス宣言指定された文字列を命令情報-モデルマッピング表23から取り出し、ステップ165で、この命令情報をパラメータとして命令情報コード化処理を呼び出す。すると、図12において、コード生成部15は、ステップ141で、この命令情報が宣言命令を表すと判定し、ステップ148で、命令情報コード断片指定された文字列を返す。これにより、図13に戻り、コード生成部15は、ステップ166で、操作対象モデルjavalangStringクラスのインスタンスAに対する参照カウンタCNTに1を加算し、ステップ167で、命令情報コード断片指定された文字列をモデルコード断片指定された文字列として返す。ここで、指定された文字列は、引数オブジェクトの値の一例である。これにより、図12に戻り、コード生成部15は、ステップ147で、命令情報コード断片newjavaxswingJFrame指定された文字列を返す。これにより、図11に戻り、コード生成部15は、ステップ127で、コード行javaxswingJFramefooFramenewjavaxswingJFrame指定された文字列を生成し、ステップ132で、このコード行をコードバッファの最初の行に追加する。5順序情報1に対応する命令情報javalangStringクラス,宣言,指定された文字列を取り出した場合図11において、コード生成部15は、ステップ123で、操作対象モデルに命名する命令を表す命令情報が取り出されなかったと判定し、ステップ128で、操作対象モデルを生成する命令を表す命令情報が取り出されたと判定し、ステップ129で、操作対象モデルjavalangStringクラスのインスタンスAが命名されておらず、後続の命令情報で参照されていると判定し、ステップ130で、操作対象モデルjavalangStringクラスのインスタンスAに対する参照カウンタCNTに1を加算する。そして、上記1~5に示した処理を行うことにより、図3に示したプログラムコードが生成される。尚、ここでは、図2に示したユーザ操作が行われた場合におけるプログラム生成装置10の動作の具体例について述べたが、図4に示したユーザ操作が行われた場合におけるプログラム生成装置10の動作は次のようになる。即ち、まず、対象オブジェクト管理部12が、命令実行順序表21に、図7に示した情報に加えて、順序情報8の命令情報javalangStringクラスのインスタンスA,命名,barTitleを登録し、名前-モデルマッピング表22に、図8に示した情報に加えて、名前barTitleと操作対象モデルjavalangStringクラスのインスタンスAとの対応情報を登録する。これにより、コード生成部15は、命令実行順序表21において、順序情報1に対応する命令情報javalangStringクラス,宣言,指定された文字列を削除し、順序情報8に対応する命令情報javalangStringクラスのインスタンスA,命名,barTitleを順序情報1の位置に移動しておく。次に、上記1~4に示したのと同様の処理を行う。図2のユーザ操作が行われた場合の処理と、図4のユーザ操作が行われた場合の処理との違いは、前者においては、図13のステップ162でjavalangStringクラスのインスタンスAが命名済みでないと判定し、ステップ164~167を実行することでモデルコード断片指定された文字列を取得していたのに対し、後者においては、図13のステップ162でjavalangStringクラスのインスタンスAが命名済みであると判定し、ステップ163を実行することでモデルコード断片barTitleを取得している点である。その後、上記5の代わりに、順序情報1に対応する命令情報javalangStringクラスのインスタンスA,命名,barTitleを取り出した場合の処理を行う。このような処理を行うことにより、図5に示したプログラムコードが生成される。尚、本実施の形態では、Java登録商標のVMVirtualMachine内のオブジェクトを操作対象として説明したが、本発明で操作対象とするオブジェクトは、これに限られるものではない。このように、本実施の形態では、対象オブジェクトに対する命名を、機械的に行うのではなく、外部から名前を受け付けて行うようにした。これにより、対象オブジェクトが命名された場合にのみ、プログラムコード上で変数宣言が発生するので、理解困難な変数宣言が行われなくなる。言い換えると、対象オブジェクトが命名されない場合は、不要な変数宣言が省略されるので、より可読性の高いプログラムコードを生成できるようになった。また、本実施の形態では、後で使われない対象オブジェクトに対して命名しないことを許容した。これにより、自然に記述したプログラムコードにより近いプログラムコードを生成できるようになった。最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図14は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPUCentralProcessingUnit90aと、M/Bマザーボードチップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置HDD90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。尚、図14において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGPAcceleratedGraphicsPortを介して接続されてもよいが、表示機構90dがPCIExpress対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCIExpressPCIeバスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCIExpressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATAATAttachment、パラレル転送のATA、PCIPeripheralComponentsInterconnectを用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USBUniversalSerialBusを用いることができる。ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム装置又は機器、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリRAM、リードオンリーメモリROM、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク-リードオンリーメモリCD-ROM、コンパクトディスク-リード/ライトCD-R/W及びDVDが含まれる。以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。"