JP4311327B2 - ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体 - Google Patents

ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体 Download PDF

Info

Publication number
JP4311327B2
JP4311327B2 JP2004291338A JP2004291338A JP4311327B2 JP 4311327 B2 JP4311327 B2 JP 4311327B2 JP 2004291338 A JP2004291338 A JP 2004291338A JP 2004291338 A JP2004291338 A JP 2004291338A JP 4311327 B2 JP4311327 B2 JP 4311327B2
Authority
JP
Japan
Prior art keywords
source code
template
generated
information
design information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004291338A
Other languages
English (en)
Other versions
JP2006107025A (ja
Inventor
純一 福本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2004291338A priority Critical patent/JP4311327B2/ja
Publication of JP2006107025A publication Critical patent/JP2006107025A/ja
Application granted granted Critical
Publication of JP4311327B2 publication Critical patent/JP4311327B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、設計情報とテンプレートとを利用して複数のソースコードを自動的に生成するソースコード自動生成技術に関し、特に、設計情報を更新した後、再度、更新後の設計情報を利用してソースコードを自動生成する際の処理を効率的に行うことができるソースコード自動生成技術に関する。
従来からソースコードを自動生成する技術としては、種々の技術が提案されている。例えば、設計情報とテンプレートとからソースコードを自動生成する技術(例えば、特許文献1参照)や、バージョンの異なるソースコードの差分を抽出し、抽出した差分と元のソースコードとに基づいて新たなソースコードを自動生成する技術(例えば、特許文献2参照)等が知られている。
一方、近年、JakartaプロジェクトのテンプレートエンジンであるVelocityが注目されるようになってきており、このVelocityを利用してソースコードを自動生成するということが考えられる。Velocityを利用してソースコード自動生成装置を構成しようとした場合、その構成は、例えば、図3に示すものとなる。
図3を参照すると、ソースコード自動生成装置100は、テンプレート解析手段11と、設計情報合成手段12と、ユーザコーディング抽出手段13と、ユーザコーディング合成手段14とを含んでいる。また、ソースコード自動生成装置100には、磁気ディスク装置などによって実現されるソースコード記憶部20が接続されている。
ソースコード記憶部20には、複数のソースコードF1〜Fnが登録されている。このソースコードF1〜Fnは、設計情報Bの更新前の設計情報である更新前設計情報Bb(図示せず)と、テンプレートAとに基づいてソースコード自動生成装置100が自動生成したものである。
テンプレート解析手段11は、テンプレートAを入力し、設計情報Bによって置換される識別子を基準にして字句解析,構文解析を行い、テンプレート構造木を生成する機能を有する。なお、字句解析,構文解析のルールは、JakartaプロジェクトにおけるテンプレートエンジンVelocity(バージョン1.3.1)の文法に従う。
図4はテンプレートAの一例を示す図である。テンプレートAは、ソースコードD1〜Dmを生成するためのスケルトンコードであり、以下の要素から成り立っている。
・業務ロジック固有の設計情報Bに依存せずにソースコードD1〜Dmに展開されるソースコードひな型部
・設計情報Bによって置換されることを想定して特定の識別子を付与したマクロ置換部
・設計情報合成手段12により繰り返し処理が行われることを想定して特定の識別子を付与したループ制御部
・設計情報合成手段12により分岐処理が行われることを想定して特定の識別子を付与した分岐制御部
・自動生成後に開発者によってコーディングが行われることを想定して特定の識別子を付与されたユーザコーディング部
なお、図4に示したテンプレートAはあくまで一例であり、図5に示すようなテンプレートAも存在する。また、図6は、図5に示したテンプレートAから生成されるテンプレート構文木の一例を示す。
ユーザコーディング抽出手段13は、ソースコード記憶部20に登録されている各ソースコードF1〜Fnを再生成前ソースコードC1〜Cnとして入力し、各再生成前ソースコードC1〜Cnからユーザコーディング部を抽出する。
設計情報合成手段12は、テンプレート解析手段11が生成したテンプレート構文木と、XML形式の設計情報Bとに基づいて、自動生成ソースコードE1〜Emを生成する。この処理を詳しく説明すると、設計情報合成手段12は、テンプレート構文木の各ノードの内の、ソースコードひな型部に対応するノードの内容はそのままとし、他のノードの内容を設計情報Bの対応するタグの情報で置き換えることにより、ソースコード断片を生成する。その後、ソースコード断片を生成順につなぎ合わせることにより、自動生成ソースコードE1〜mを生成する。図7に、テンプレート構文木と設計情報Bとから、ソースコード断片および自動生成ソースコードE1,E2が生成される様子を示す。
図7の例では、テンプレート構文木の第1番目のノード“public class”は、ソースコードひな型部に対応するノードであるので、その内容がそのままソースコード断片中に配置される。テンプレート構文木の第2番目のノード“${system.class name}”は、マクロ置換部に対応するノードであるので、その内容が設計情報B中の対応するタグ<class name=“Utility1”>の情報“Utility1”で置き換えられ、ソースコード断片中に配置される。他のノードについても同様の処理が行われる。また、図7に示した例は、設計情報B中にタグ<class name=“Utility1”>とタグ<class name=“Utility2”>とが含まれているので、2つの自動生成コードE1,E2が生成される。
ユーザコーディング合成手段14は、自動生成ソースコードE1,E2とユーザコーディング抽出手段13が抽出したユーザコーディング部とを合成することによりソースコードDk(1<k<m)を生成し、生成したソースコードDkをソースコード記憶部20に格納する。その際、生成したソースコードDkと同一のファイル名(設計情報からテンプレート毎に決まった規則に基づいて決定される)やclass nameを持つソースコードがソースコード記憶部20に格納されている場合は、今回生成したソースコードDkで置換し、そのようなソースコードが存在しない場合は、今回生成したソースコードDkをソースコード記憶部20に新規登録する。図8に、テンプレートA,設計情報Bおよび再生成前ソースコードC1,C2の一例を示すと共に、それらに基づいて生成されるソースコードD1,D2の一例を示す。
特開2003−140893号公報 特開平5−274126号公報
図3に示したソースコード自動生成装置100によれば、テンプレートAと設計情報Bとを入力することにより、複数のソースコードD1〜Dmを自動生成することができる。しかし、ソースコード自動生成装置100は、生成した各ソースコードについて、そのソースコードとファイル名やclass nameが同一の再生成前ソースコードがソースコード記憶部20に登録されているか否かを調べ、登録されていない場合には、今回生成したソースコードを新規登録し、登録されている場合には、今回生成したソースコードで置き換えるという処理を行っているだけであるので、次のような問題があった。
即ち、更新前設計情報Bbに基づいてソースコードF1〜Fnを自動生成した後、設計情報Bに基づいてソースコードを生成した場合、ソースコードF1〜Fnの中に今回生成したソースコードと差分がないソースコードが存在しても、全てのソースコードF1〜Fnが今回生成されたソースコードで置換されるため、ソースコードの書き出し処理に多くの時間が費やされてしまうという問題があった。
更に、実行オブジェクトを再ビルドする際には、ソースコード記憶部20に登録されている全てのソースコードを対象にしてリコンパイルを行うことが必要になる。よって、大規模プロジェクトにおいて膨大な数のソースコードを利用して再ビルドを行う場合に膨大な時間がかかってしまい現実的でないという問題があった。
このような問題点を解決するには、例えば、次のようにすることが考えられる。変更後の設計情報Bに基づいて生成したソースコードをソースコード記憶部20とは別の一時記憶領域(例えば、磁気ディスク上の領域)に書き出し、その後、ソースコード記憶部20に登録されている再生成前ソースコードと一時記憶領域に登録されているソースコードとを比較し、差分がある再生成前ソースコードのみを今回生成したソースコードで置換する。また、今回新たに生成されたソースコードは、ソースコード記憶部20に新規登録する。その際、置換,新規登録したソースコードを特定するソースコード特定情報(例えば、ファイル名やclass name)を記録しておく。そして、実行オブジェクトの再ビルド時には、ソースコード記憶部20に登録されているソースコードの内、上記記録しておいたソースコード特定情報によって特定されるソースコードのみをリコンパイルする。このようにすれば、リコンパイルするソースコードの数を減らすことが可能になる。しかし、この方法でも、生成したソースコードを全て一時記憶領域に書き出さなければならず、効率が悪いという問題がある。以上のような問題点については、特許文献1,2でも全く言及されていない。
そこで、本発明の第1の目的は、生成したソースコードの書き出し処理に要する時間を短縮することにある。
更に、本発明の第2の目的は、実行オブジェクトの再ビルドを効率的に行えるようにすることにある。
本発明にかかる第1のソースコード自動生成装置は、
テンプレートと設計情報とを入力してソースコードを生成するソースコード自動生成装置であって、
前記テンプレートは、前記設計情報に依存せずにソースコードに展開されるソースコードひな型部と、前記設計情報中の該当タグ情報によって置換されるマクロ置換部とを含み、
前記設計情報は、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含み、且つ、
前記テンプレートと前記設計情報の更新前の情報である更新前設計情報とに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部と、
前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成するテンプレート解析手段と、
生成するソースコード毎に、前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する設計情報合成手段と、
該設計情報合成手段で生成されたソースコード毎に、前記ソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換するソースコード比較手段とを備える。
本発明にかかる第2のソースコード自動生成装置は、第1のソースコード自動生成装置において、
リコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部を備え、且つ、
前記ソースコード比較手段は、前記置換したソースコードを特定するソースコード特定情報を前記ソースコード特定情報記憶部に登録する。
本発明にかかる第3のソースコード自動生成装置は、第1または第2のソースコード自動生成装置において、
前記ソースコード比較手段は、前記設計情報合成手段で生成されるソースコードそれぞれについて、前記設計情報合成手段がソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行う。
本発明にかかる第1のソースコード自動生成方法は、
テンプレートと設計情報とを入力してソースコードを生成するソースコード自動生成方法であって、
前記テンプレートは、前記設計情報に依存せずにソースコードに展開されるソースコードひな型部と、前記設計情報中の該当タグ情報によって置換されるマクロ置換部とを含み、
前記設計情報は、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含み、且つ、
コンピュータが、前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成する第1のステップと、
前記コンピュータが、生成するソースコード毎に、前記第1のステップで生成された前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する第2のステップと、
前記コンピュータが、前記第2のステップで生成されたソースコード毎に、前記テンプレートおよび前記設計情報の更新前の情報である更新前設計情報に基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換する第3のステップとを含む。
本発明にかかる第2のソースコード自動生成方法は、第1のソースコード自動生成方法において、
前記第3のステップでは、前記コンピュータがリコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部に、前記置換したソースコードを特定するソースコード特定情報を登録する。
本発明にかかる第3のソースコード自動生成方法は、第1または第2のソースコード自動生成方法において、
前記第3のステップでは、前記コンピュータが前記第2のステップで生成されるソースコードそれぞれについて、前記第2のステップでソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行う。
本発明にかかる第1のプログラムは、
設計情報に依存せずにソースコードに展開されるソースコードひな型部および前記設計情報中の該当タグ情報によって置換されるマクロ置換部とを含むテンプレートと、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含む設計情報とを入力してソースコードを生成するソースコード自動生成装置をコンピュータによって実現するためのプログラムであって、
前記コンピュータを、
前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成するテンプレート解析手段、
生成するソースコード毎に、前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する設計情報合成手段、
該設計情報合成手段で生成されたソースコード毎に、前記テンプレートおよび前記設計情報の更新前の情報である更新前設計情報に基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換するソースコード比較手段として機能させる。
本発明にかかる第2のプログラムは、第1のプログラムにおいて、
前記コンピュータは、リコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部を備え、且つ、
前記ソースコード比較手段は、前記置換したソースコードを特定するソースコード特定情報を前記ソースコード特定情報記憶部に登録する。
本発明にかかる第3のプログラムは、第1または第2のプログラムにおいて、
前記ソースコード比較手段は、前記設計情報合成手段で生成されるソースコードそれぞれについて、前記設計情報合成手段がソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行う。
本発明にかかる第1の記録媒体は、
設計情報に依存せずにソースコードに展開されるソースコードひな型部および前記設計情報中の該当タグ情報によって置換されるマクロ置換部とを含むテンプレートと、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含む設計情報とを入力してソースコードを生成するソースコード自動生成装置をコンピュータによって実現するためのプログラムを記録した記録媒体であって、
前記コンピュータを、
前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成するテンプレート解析手段、
生成するソースコード毎に、前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する設計情報合成手段、
該設計情報合成手段で生成されたソースコード毎に、前記テンプレートおよび前記設計情報の更新前の情報である更新前設計情報に基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換するソースコード比較手段として機能させるプログラムを記録している。
本発明にかかる第2の記録媒体は、第1の記録媒体において、
前記コンピュータは、リコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部を備え、且つ、
前記コンピュータによって実現されるソースコード比較手段に、更に、前記置換したソースコードを特定するソースコード特定情報を前記ソースコード特定情報記憶部に登録する処理を行わせるためのプログラムを記録している。
本発明にかかる第3の記録媒体は、第1または第2の記録媒体において、
前記コンピュータによって実現される前記ソースコード比較手段に、更に、前記設計情報合成手段で生成されるソースコードそれぞれについて、前記設計情報合成手段がソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行わせるためのプログラムが記録されている。
〔作用〕
本発明のソースコード自動生成装置は、設計情報とテンプレートとに基づいて複数のソースコードを生成する。その際、各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片とソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較する。そして、差分があった場合のみ、上記対応する再生成前ソースコードを今回生成したソースコードで置換する。このように、生成したソースコードの内、再生成前ソースコードと差分があるものだけを書き出すので、ソースコードの書き出し処理に要する時間を短くすることができる。
また、本発明のソースコード自動生成装置では、置換したソースコードを特定するソースコード特定情報を保存するようにしている。このようにしておくことにより、実行オブジェクトの再ビルド時には、保存されているソースコード特定情報によって示されるソースコードについてのみリコンパイルを行えば良くなるので、再ビルドを効率的に行うことが可能になる。
本発明にかかるソースコード自動生成装置,ソースコード自動生成方法、プログラム及び記録媒体によれば、ソースコードの書き出し処理に要する時間を短くすることができる。その理由は、各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片とソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較し、差分があった場合のみ、上記対応する再生成前ソースコードを今回生成したソースコードで置換するようにしているからである。
更に、本発明にかかるソースコード自動生成装置,ソースコード自動生成方法、プログラム及び記録媒体よれば、実行オブジェクトの再ビルドを効率的に行うことが可能になる。その理由は、再生成前ソースコードと置換したソースコードを特定するソースコード特定情報を保存するようにしているからである。
次に本発明の実施の形態について図面を参照して詳細に説明する。
〔実施の形態の構成の説明〕
図1は本発明にかかるソースコード自動生成装置の実施の形態の構成例を示すブロック図である。同図を参照すると、ソースコード自動生成装置10は、テンプレート解析手段1と、設計情報合成手段2と、ユーザコーディング抽出手段3と、ユーザコーディング合成手段4と、ソースコード比較手段5と、作業領域6と、ソースコード特定情報管理部7と、差分検出済みフラグ8とを備えている。また、ソースコード自動生成装置10には磁気ディスク装置などによって実現されるソースコード記憶部20が接続されている。
ソースコード記憶部20には、複数のソースコード(再生成前ソースコード)F1〜Fnが登録されている。このソースコードF1〜Fnは、設計情報Bの更新前の設計情報である更新前設計情報Bb(図示せず)と、テンプレートAとに基づいてソースコード自動生成装置10が自動生成したものである。
テンプレート解析手段1は、図3に示したテンプレート解析手段11と同様の機能を有するものであり、テンプレートAに対して、設計情報Bによって置換されることを目的とした識別子を基準にして字句解析,構文解析を行い、テンプレート構文木を生成する機能を有する。字句解析、構文解析のルールは、JakartaプロジェクトにおけるテンプレートエンジンVelocity(バージョン1.3.1)の文法に従う。
設計情報合成手段2は、図3に示した設計情報合成手段12と同様の機能を有するものであり、テンプレート解析手段1が生成したテンプレート構文木中の識別子と、XML形式で記述された設計情報Bとに基づいてソースコード断片を合成する機能や、合成したソースコード断片をつなぎ合わせて自動生成ソースコードを生成する機能を有する。なお、設計情報合成手段2は、メインメモリ上に設けられた作業領域6を利用してソースコード断片の合成処理および自動生成ソースコードの生成処理を行う。
ユーザコーディング抽出手段3は、図3に示したユーザコーディング抽出手段13と同様の機能を有するものであり、ソースコード記憶部20からソースコードF1〜Fnを再生成前ソースコードC1〜Cnとして読み込み、ユーザコーディング部を抽出する機能を有する。
ソースコード比較手段5は、作業領域6上に生成されたソースコード断片と再生成前ソースコードCkの対応する部位の比較を行い、文字列として差分があるかどうかを判定する機能を有する。更に、差分があると判定したソースコード断片を含む自動生成ソースコードに対応するソースコード(上記自動生成ソースコードとユーザコーディング部とを合成することにより生成されるソースコード)を特定するソースコード特定情報(例えば、上記自動生成ソースコード中のclass name)をソースコード特定情報管理部7に登録する機能を有する。
ユーザコーディング合成手段4は、作業領域6上に生成された自動生成ソースコードと、ユーザコーディング抽出手段3で抽出された該当するユーザコーディング部とを合成することによりソースコードDkを生成する機能を有する。更に、ユーザコーディング合成手段4は、生成したソースコードDkと対応する再生成前ソースコード(例えば、class nameが同じソースコード)がソースコード記憶部20に登録されている場合は、今回生成したソースコードDkで置換し、登録されていなければ、今回生成したソースコードDkを新規登録する機能を有する。
なお、ソースコード自動生成装置10はコンピュータによって実現可能であり、コンピュータによって実現する場合には、例えば、次のようにする。コンピュータをソースコード自動生成装置として機能させるためのプログラムを記録したディスク,半導体メモリ,その他の記録媒体を用意し、上記プログラムをコンピュータに読み取らせる。コンピュータは読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上にテンプレート解析手段1,設計情報合成手段2,ユーザコーディング抽出手段3,ユーザコーディング合成手段4,ソースコード比較手段5を実現する。
〔実施の形態の動作の説明〕
次に、図2のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。図2には、テンプレートAと設計情報Bから、生成前ソースコードC1〜Cnを参照してソースコードD1〜Dmを自動生成する一連の流れが記述されている。
ソースコード自動生成装置10上のテンプレート解析手段1は、図4や図5に示すテンプレートAを入力し、それに含まれている識別子を基準として字句解析,構文解析を行い、図6に示すようなテンプレート構文木を生成する(ステップS1)。
その後、ユーザコーディング抽出手段3が、ソースコード記憶部20に登録されている各ソースコードF1〜Fnを再生成前ソースコードC1〜Cnとして入力し、入力した再生成前ソースコードC1〜Cnからユーザコーディング部を抽出し、再生成前ソースコードC1〜Cnのclass nameと対応付けて保持しておく(ステップS2)。
その後、テンプレート解析手段1によって生成されたテンプレート構文木の各ノードに対して次のような処理を行う。
先ず、設計情報合成手段2が未処理のノードの内の最も先頭に近いノードに注目し、それがソースコードひな型部に対応するノードであるか否かを判断する(ステップS3)。
そして、ソースコードひな型部に対応するノードである場合(ステップS3がYES)は、そのノードの内容を作業領域6に配置することにより、ソースコード断片を生成し、更に、生成したソースコード断片を自動生成ソースコードの末尾につなげる(ステップS5)。これに対して、ソースコードひな型部に対応するノードでない場合は(ステップS3がNO)、設計情報B中の対応するタグの情報を読み込み(ステップS4)、読み込んだ情報を作業領域6に配置することによりソースコード断片を生成し、更に、生成したソースコード断片を自動生成ソースコードの末尾につなげる(ステップS5)。例えば、図7に示したテンプレート構文木の第1番目のノードに注目した場合は、ソースコードひな型部に対応するノードであるので(ステップS3がYES)、そのノードの内容“public class”を作業領域6に配置することにより、ソースコード断片を生成し、更に、public classを自動生成ソースコードの先頭に配置する(ステップS5)。また、例えば、図7に示したテンプレート構文木の第2番目のノードに注目した場合は、ソースコードひな型部に対応するノードではないので(ステップS3がNO)、設計情報B中の対応するタグの情報“Utilty1”を読み込み(ステップS4)、それを作業領域6上に配置することにより、ソースコード断片を生成し、更に、Utilty1をpublic classにつなげる(ステップS5)。
その後、設計情報合成手段2は、差分検出済みフラグ8が“1”になっているか否かを調べる(ステップS6)。なお、差分検出済みフラグ8は、初期状態においては、“0”になっている。そして、差分検出済みフラグ8が“1”であれば(ステップS6がYES)、次のノードの処理に移行する。これに対して、差分検出済みフラグ8が“0”であれば(ステップS6がNO)、既に、class nameを含むソースコード断片を生成しているか否かを調べることにより、比較対象再生成前ソースコードを特定できるか否かを判断する(ステップS7)。
そして、比較対象再生成前ソースコードを特定できないと判断した場合(ステップS7がNO)は、次のノードの処理に移行する。これに対して、比較対象再生成前ソースコードを特定できると判断した場合(ステップS7がYES)は、ソースコード比較手段5に対して比較指示を与える。
ソースコード比較手段5は、比較指示が入力されると、比較処理を行っていない新たに生成されたソースコード断片と、再生前ソースコードC1〜Cnの内の、class nameによって特定される比較対象再生成前ソースコードCkの対応部位とを比較し、差分があるか否かを調べる(ステップS8,S9)。そして、比較不一致の場合(ステップS9がNO)は、差分検出済みフラグ8を“1”に変更する処理およびソースコード特定情報管理部7に今回生成するソースコードのclass nameを登録する処理を行った後(ステップS10)、制御を設計情報合成手段2に戻す。これにより、設計情報合成手段2は、次のノードの処理に移行する。これに対して、比較一致の場合(ステップS9がYES)は、ソースコード比較手段5は、差分検出済みフラグ8を“1”に変更することなく、次のノードの処理に移行する。なお、ステップS8において、比較対象再生成前ソースコードを特定できなかった場合、即ち、再生成前ソースコードC1〜Cnの中に、今回生成するソースコードとclass nameが同一の再生成前ソースコードが存在しない場合には、ステップS9の判断結果をNOとする。
ここで、ステップS8で行う処理の一具体例を説明する。設計情報合成手段2から比較指示が入力されると、ソースコード比較手段5は、比較処理を行っていないソースコード断片と同じバイト数分の情報を比較対象再生成前ソースコードCkから読み込む。なお、読み込み開始位置は、比較対象再生成前ソースコードCkのユーザコーディング部の次の文字から比較済みバイト数(初期値は「0」)だけ進んだ位置とする。その後、比較処理を行っていないソース断片中の文字と、比較対象再生成前ソースコードCkから読み込んだ文字との対応するもの同士を比較する。その後、比較済みバイト数を比較を行ったバイト数だけインクリメントする。
以上の処理を全てのノードについて行うと、設計情報合成手段2は、差分検出済みフラグ8が“1”であるか否かを調べる(ステップS11)。
差分検出済みフラグ8が“0”の場合、即ち、今回生成するソースコードと再生成前ソースコードが同一である場合(ステップS11がNO)は、設計情報の最後まで処理を行ったか否かを調べる(ステップS13)。最後まで処理を行っている場合(ステップS13がYES)は、処理を終了し、そうでない場合(ステップS13がNO)は、差分検出済みフラグ8を“0”にすると共に、比較済みバイト数を「0」とした後(ステップS14)、再び、ステップS3の処理を行う。
これに対して、差分検出済みフラグ8が“1”の場合、即ち、今回生成するソースコードと再生成前ソースコードとが異なる場合(ステップS11がYES)は、ユーザコーディング合成手段4に対して合成指示を出力する(ステップS12)。これにより、ユーザコーディング合成手段4は、作業領域6上に生成されている自動生成ソースコードと、ユーザコーディング抽出手段3が抽出しているユーザコーディング部の内の該当するもの(class nameが同一のもの)とを合成することにより、ソースコードを生成し、生成したソースコードをソースコード記憶部20に書き出す。その際、class nameが同一の再生成前ソースコードがソースコード記憶部20に登録されている場合は、その再生成前ソースコードを今回生成したソースコードで置換し、class nameが同一の再生成前ソースコードが存在しない場合は、今回生成したソースコードをソースコード記憶部20に新規登録する。
なお、ソースコードの生成後に実行オブジェクトを再ビルドする場合には、ソースコード記憶部20に登録されているソースコードの内、ソースコード特定情報管理部7に登録されているソースコード特定情報によって特定されるソースコードのみリコンパイルする。従って、全てのソースコードをリコンパイルする場合に比較して実行オブジェクトの再ビルドを効率的に行うことが可能になる。また、上述した実施の形態では、比較対象再生成前ソースコードをclass nameにより特定するようにしたが、ファイル名(設計情報からテンプレート毎に決まった規則に基づいて決定される)により特定するようにしても良い。また、上述した実施の形態では、class nameをソースコード特定情報としたが、ファイル名をソースコード特定情報としても良い。
〔実施の形態の効果〕
本実施の形態では、テンプレートAと設計情報Bとに基づいて各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片とソースコード記憶部20に登録されている対応する再生成前ソースコードC1〜Cn(F1〜Fn)の該当部位とを比較し、差分があった場合のみ、上記対応する再生成前ソースコードを今回生成したソースコードで置換するようにしているので、ソースコードの書き出し処理に要する時間を短縮することができる。
更に、本実施の形態では、ソースコード記憶部20に登録されている再生成前ソースコードと置換したソースコードを特定するソースコード特定情報をソースコード特定情報管理部7に保存しておくので、実行オブジェクトの再ビルドを効率的に行うことが可能になる。
更に、本実施の形態では、ソースコード断片とソースコード記憶部20に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後(差分検出済みフラグ8が“1”となった後)は、比較処理を行わないようにしているので、差分比較にかかる時間の節約を図ることができる。
本発明によれば、大規模システムにおけるソフトウェアのリビジョンアップに対応した実行オブジェクトを生成する際のソースコードの自動生成および再生成したソースコードを用いた再ビルドといった用途に適用することができる。また、大規模システムでない場合でも、実行オブジェクトのリビジョン管理を行い、更新の必要がないオブジェクトの生成を再度行いたくない場合のソースコードの自動生成および再生成したソースコードを用いた再ビルドといった用途にも適用可能である。
本発明にかかるソースコード自動生成装置の実施の形態の構成例を示すブロック図である。 ソースコード自動生成装置10の処理例を示すフローチャートである。 Velocityを利用して構成されるソースコード自動生成装置100の構成例を示すブロック図である。 テンプレートAの一例を示す図である。 テンプレートAの他の例を示す図である。 テンプレートAからテンプレート構文木の一例を示す図である。 テンプレート構文木および設計情報Bから生成されるソースコード断片および自動生成ソースコードの一例を示す図である。 テンプレートA,設計情報Bおよび再生成前ソースコードC1,C2から生成されるソースコードD1,D2の一例を示す図である。
符号の説明
10,100…ソースコード自動生成装置
1,11…テンプレート解析手段
2,12…設計情報合成手段
3,13…ユーザコーディング抽出手段
4,14…ユーザコーディング合成手段
5…ソースコード比較手段
6…作業領域
7…ソースコード特定情報管理部
8…差分検出済みフラグ
20…ソースコード記憶部
A…テンプレート
B…設計情報
C1〜Cn…再生成前ソースコード
D1〜Dm…ソースコード
E1〜Em…自動生成ソースコード
F1〜Fn…ソースコード

Claims (12)

  1. テンプレートと設計情報とを入力してソースコードを生成するソースコード自動生成装置であって、
    前記テンプレートは、前記設計情報に依存せずにソースコードに展開されるソースコードひな型部と、前記設計情報中の該当タグ情報によって置換されるマクロ置換部とを含み、
    前記設計情報は、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含み、且つ、
    前記テンプレートと前記設計情報の更新前の情報である更新前設計情報とに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部と、
    前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成するテンプレート解析手段と、
    生成するソースコード毎に、前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する設計情報合成手段と、
    該設計情報合成手段で生成されたソースコード毎に、前記ソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換するソースコード比較手段とを備えることを特徴とするソースコード自動生成装置。
  2. 請求項1記載のソースコード自動生成装置において、
    リコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部を備え、且つ、
    前記ソースコード比較手段は、前記置換したソースコードを特定するソースコード特定情報を前記ソースコード特定情報記憶部に登録することを特徴とするソースコード自動生成装置。
  3. 請求項1または2記載のソースコード自動生成装置において、
    前記ソースコード比較手段は、前記設計情報合成手段で生成されるソースコードそれぞれについて、前記設計情報合成手段がソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行うことを特徴とするソースコード自動生成装置。
  4. テンプレートと設計情報とを入力してソースコードを生成するソースコード自動生成方法であって、
    前記テンプレートは、前記設計情報に依存せずにソースコードに展開されるソースコードひな型部と、前記設計情報中の該当タグ情報によって置換されるマクロ置換部とを含み、
    前記設計情報は、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含み、且つ、
    コンピュータが、前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成する第1のステップと、
    前記コンピュータが、生成するソースコード毎に、前記第1のステップで生成された前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する第2のステップと、
    前記コンピュータが、前記第2のステップで生成されたソースコード毎に、前記テンプレートおよび前記設計情報の更新前の情報である更新前設計情報に基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換する第3のステップとを含むことを特徴とするソースコード自動生成方法。
  5. 請求項4記載のソースコード自動生成方法において、
    前記第3のステップでは、前記コンピュータが、リコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部に、前記置換したソースコードを特定するソースコード特定情報を登録することを特徴とするソースコード自動生成方法。
  6. 請求項4または5記載のソースコード自動生成方法において、
    前記第3のステップでは、前記コンピュータが、前記第2のステップで生成されるソースコードそれぞれについて、前記第2のステップでソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行うことを特徴とするソースコード自動生成方法。
  7. 設計情報に依存せずにソースコードに展開されるソースコードひな型部および前記設計情報中の該当タグ情報によって置換されるマクロ置換部を含むテンプレートと、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含む設計情報とを入力してソースコードを生成するソースコード自動生成装置をコンピュータによって実現するためのプログラムであって、
    前記コンピュータを、
    前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成するテンプレート解析手段、
    生成するソースコード毎に、前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する設計情報合成手段、
    該設計情報合成手段で生成されたソースコード毎に、前記テンプレートおよび前記設計情報の更新前の情報である更新前設計情報に基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換するソースコード比較手段として機能させるためのプログラム。
  8. 請求項7記載のプログラムにおいて、
    前記コンピュータは、リコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部を備え、且つ、
    前記コンピュータによって実現される前記ソースコード比較手段は、前記置換したソースコードを特定するソースコード特定情報を前記ソースコード特定情報記憶部に登録することを特徴とするプログラム。
  9. 請求項7または8記載のプログラムにおいて、
    前記コンピュータによって実現される前記ソースコード比較手段は、前記設計情報合成手段で生成されるソースコードそれぞれについて、前記設計情報合成手段がソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行うことを特徴とするプログラム。
  10. 設計情報に依存せずにソースコードに展開されるソースコードひな型部および前記設計情報中の該当タグ情報によって置換されるマクロ置換部を含むテンプレートと、生成する複数のソースコードそれぞれに対するタグ情報であって、前記テンプレートのマクロ置換部と置換するタグ情報を含む設計情報とを入力してソースコードを生成するソースコード自動生成装置をコンピュータによって実現するためのプログラムを記録した記録媒体であって、
    前記コンピュータを、
    前記テンプレートを解析し、該テンプレート中のソースコードひな型部およびマクロ置換部それぞれに対応したノードを配置したテンプレート構文木を生成するテンプレート解析手段、
    生成するソースコード毎に、前記テンプレート構文木の各ノードを順次処理対象にして、そのノードがソースコードひな型部に対応するものである場合は、該ノードの内容をソースコード断片として生成中のソースコードの末尾につなげ、マクロ置換部に対応するものである場合は、現在生成しているソースコードについてのタグ情報であって現在処理対象にしているノードと対応するタグ情報をソースコード断片として前記生成中のソースコードの末尾につなげることによりソースコードを生成する設計情報合成手段、
    該設計情報合成手段で生成されたソースコード毎に、前記テンプレートおよび前記設計情報の更新前の情報である更新前設計情報に基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部に登録されている対応する再生成前ソースコードと比較して差分の有無を判定し、差分有りと判定したソースコードについてのみ、そのソースコードで前記ソースコード記憶部に登録されている対応する再生成前ソースコードを置換するソースコード比較手段として機能させるためのプログラムを記録した記録媒体。
  11. 請求項10記載の記録媒体において、
    前記コンピュータは、リコンパイルする必要があるソースコードを特定するソースコード特定情報が登録されるソースコード特定情報記憶部を備え、且つ、
    前記コンピュータによって実現される前記ソースコード比較手段に、更に、前記置換したソースコードを特定するソースコード特定情報を前記ソースコード特定情報記憶部に登録する処理を行わせるためのプログラムを記録した記録媒体。
  12. 請求項10または11記載の記録媒体において、
    前記コンピュータによって実現される前記ソースコード比較手段に、更に、前記設計情報合成手段で生成されるソースコードそれぞれについて、前記設計情報合成手段がソースコード断片を前記生成中のソースコードの末尾に追加する毎に、前記ソースコード断片と、対応する再生成前ソースコードの該当部分とを比較して差分の有無を判定するという処理を、差分有りと判定するか、或いは差分有りと判定することなく生成するソースコードの最後のソースコード断片についての比較処理を行うまで、繰り返し行わせるためのプログラムを記録した記録媒体。
JP2004291338A 2004-10-04 2004-10-04 ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体 Expired - Fee Related JP4311327B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004291338A JP4311327B2 (ja) 2004-10-04 2004-10-04 ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004291338A JP4311327B2 (ja) 2004-10-04 2004-10-04 ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体

Publications (2)

Publication Number Publication Date
JP2006107025A JP2006107025A (ja) 2006-04-20
JP4311327B2 true JP4311327B2 (ja) 2009-08-12

Family

ID=36376707

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004291338A Expired - Fee Related JP4311327B2 (ja) 2004-10-04 2004-10-04 ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP4311327B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100866211B1 (ko) 2007-01-03 2008-10-30 삼성전자주식회사 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법
JP5844347B2 (ja) * 2013-12-27 2016-01-13 株式会社おおとり コンピュータプログラム生成装置
JP6842971B2 (ja) * 2017-03-31 2021-03-17 株式会社日立社会情報サービス テンプレート生成装置、テンプレート生成方法およびプログラム

Also Published As

Publication number Publication date
JP2006107025A (ja) 2006-04-20

Similar Documents

Publication Publication Date Title
JP3373517B2 (ja) 個人の言語によるプログラム作成システム
JP4924976B2 (ja) ソフトウェア開発支援システム
JP5128440B2 (ja) ソフトウェア分析装置
CN1981266A (zh) 为优化的程序生成展开信息
US8196093B2 (en) Apparatus and method for componentizing legacy system
JP4311327B2 (ja) ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
JP2008225898A (ja) 変換装置、変換プログラム及び変換方法
JP2001175464A (ja) 情報処理装置、情報処理方法および情報処理プログラムを格納したコンピュータ読取り可能な記録媒体
JP6702072B2 (ja) 制御プログラム、装置、及び方法
JP2010176594A (ja) ソースコードバージョン管理プログラム及びソースコードバージョン管理方法
JPH06110733A (ja) プログラムのテストケース生成装置
JP2010020680A (ja) 情報処理装置及びプログラム
Fraternali et al. Almost rerere: An approach for automating conflict resolution from similar resolved conflicts
JPH0667871A (ja) プログラム自動更新方式
JP2012123664A (ja) ビルド実行支援システム、ビルド実行支援方法、及びビルド実行支援プログラム
JP3357563B2 (ja) 運用ログデータ管理装置
JP2002041287A (ja) 再利用部品抽出装置、再利用部品抽出方法及びその装置での処理をコンピュータに行なわせるためのプログラムを格納した記憶媒体
JP2000089945A (ja) 統合型ソフトウエア開発支援システム
JP3823465B2 (ja) 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体
JP3823466B2 (ja) 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体
JPH09101886A (ja) プログラム部品の自動抽出・再利用装置
JP2001236211A (ja) 分散システム
CN114048175A (zh) 多语言文件生成方法及装置
Funke Model based test specifications: Developing of test specifications in a semi automatic model based way
JP3823463B2 (ja) 時系列イベントデータを含むデータの処理装置および方法、時系列イベントデータ処理用プログラムが記録された記録媒体ならびに時系列イベントデータを含むデータが記録された記録媒体

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080818

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090421

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090504

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4311327

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140522

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees