説明

プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体

【課題】ソースプログラムサイズに起因するソースプログラムから機械語への翻訳の失敗の発生を防ぐようなソースプログラムを自動生成すること。
【解決手段】プログラム生成部107は、ユーザ定義情報109に基づいて、ソースプログラム内の分割可能な箇所を識別するための分割識別情報を含むJSPプログラム111を生成し、プログラム分割部108は、生成されたJSPプログラム111に含まれる分割識別情報に基づいて、JSPプログラム111を分割して分割後JSPプログラム112を生成する構成を特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータで実行するプログラムを生成するプログラム生成制御に関する。
【背景技術】
【0002】
一般に、システム開発作業は、CASE(Computer Aided Software Engineering)ツール等のプログラム自動生成ツールを用いてソースプログラムを自動生成することによって、効率化されてきている。
【0003】
その例として、特許文献1は、データ項目(定義情報)や業務ルールを指定することにより、画面プログラムを含む基本的業務ロジック(ソースプログラム)を自動生成することを開示している。特許文献1では、利用者がプログラミングの知識が無くても、業務アプリケーションに関するソースプログラムを作成することができることが記載されている。
【特許文献1】特開2004−265278号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のプログラム自動生成ツールを用いることによって生成されたソースプログラムは、一般に冗長であり、指定された定義情報に応じてソースプログラムのサイズが大きくなってしまう。
【0005】
このように作成されたサイズが大きいソースプログラムは、以下の(1)〜(3)に示すような問題を生じる可能性があった。
【0006】
(1)ソースプログラムをコンパイルする際、コンパイラ毎にコンパイル可能なサイズ(以下、コンパイル制限値)がある。そのため、コンパイル制限値を越えるソースプログラムをコンパイルすると、コンパイルに失敗する恐れがある。
【0007】
例えば、特許文献1のように、特に生成されるプログラムがJSPの場合、(使用しているWebアプリケーションサーバによって)一旦Java(登録商標)ソースファイルに変換される。この場合、プログラム処理の多くの部分が1つのメソッド内に集中して変換されるため、Java(登録商標)コンパイラの「1メソッド64kB以内」という制限を越え易くなってしまう。即ち、コンパイルに失敗し易くなってしまう。
【0008】
そこで、このようなコンパイラの制限を越えてしまったソールファイルを、正常にコンパイルするために、利用者は、自動生成されたソースプログラムがコンパイル制限値内になるように、手動でソースプログラムを編集すること等が考えられる。
【0009】
(2)しかしながら、手動で編集することは非常に煩雑である。さらに、CASEツール等のプログラム自動生成ツールは、一般的にプログラミングの知識に乏しい利用者であってもプログラムを作成できるように供されたものであり、そのような利用者が手動で編集することは困難である。また、該利用者が手動で編集することによって、プログラムの品質を劣化させてしまう可能性もある。
【0010】
(3)利用者がソースプログラムを手動で変更することによって、CASEツールが維持するリソース間の関連付け情報の整合性を乱し、更には、動作しなくなる恐れがある。よって、動作保証の観点から、利用者が手動でソースプログラムを変更することを禁止しているシステムも多い。
【0011】
このため、利用者は、例えば、本来1画面に収まっていた画面入出力項目を複数画面に分けて設計し直し、正常にコンパイル出来るようにしなければならない。このような制限を加えられることにより、プログラムやシステムを自由な発想で設計することが困難となる。
【0012】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、ソースプログラムサイズに起因するソースプログラムから機械語への翻訳の失敗の発生を防ぐようなソースプログラムを自動作成する仕組を提供することである。
【課題を解決するための手段】
【0013】
本発明は、ソースプログラムを生成するプログラム生成装置において、入力されるプログラムの定義情報に基づいて、ソースプログラム内の分割可能な箇所を識別するための分割識別情報を含む第1ソースプログラムを生成する生成手段と、前記生成手段により生成された第1ソースプログラムに含まれる分割識別情報に基づいて、前記第1ソースプログラムを分割して複数の第2ソースプログラムを生成する分割手段と、を有することを特徴とする。
【発明の効果】
【0014】
本発明によれば、コンパイル制限値の制約を意識しなくても、設計者の自由な発想の下でシステム設計を行うことができ、ソースプログラムから機械語への翻訳の失敗を防ぐようなソースプログラムを容易に作成することができる。
【0015】
また、生成されるプログラム構造を意識しなくても、設計者の自由な発想の下でシステム設計を行うことができ、効率的にソースプログラムから機械語への翻訳が可能なソースプログラムを容易に作成できる効果を奏する。
【発明を実施するための最良の形態】
【0016】
〔第1実施形態〕
以下、図面を用いて本発明のプログラム生成装置の実施形態について説明する。
【0017】
本実施形態では、アプリケーションシステムを構成するプログラムや画面等のソフトウェアを自動生成するCASEツール環境において、特にJSPプログラムの自動生成について説明する。なお、本実施形態では、「プログラム」とはソースプログラムを示すものとする。
【0018】
また、CASEツール環境の説明は、本発明と直接関係のある部分についてのみ言及する。
【0019】
図1は、本発明の一実施形態を示すプログラム生成装置のシステム全体を示す構成図である。
【0020】
図1において、103はプログラム生成装置であり、パーソナルコンピュータ等の情報処理装置で構成される。102はキーボード,ポインティングデバイス(マウス等)の入力装置である。101はディスプレイ等の表示装置である。104はハードディスクドライブ(HDD)等の外部記憶装置である。
【0021】
図1に示すように、ユーザは表示装置101を閲覧し、入力装置102を操作することによってプログラム自動生成命令を指示する。そして、プログラム自動生成命令の指示を受けたプログラム生成装置103は、全体制御部105でJSPプログラムの自動生成を行う。以下、詳細に説明する。
【0022】
まず、プログラム自動生成命令を受けた画面制御部106は、プログラム生成部107に処理を委譲する。プログラム生成部107は、外部記憶装置(HDD)104に格納されるJSPプログラムテンプレート110(後述する図6)を元に、予め入力設定されたユーザ定義情報109(後述する図5)を適用し、JSPプログラムを生成し、JSPプログラム111(後述する図7)として外部記憶装置104に格納する。
【0023】
JSPプログラム111の作成後、プログラム生成部107は、プログラム分割部108に処理を委譲する。そして、プログラム分割部108は、JSPプログラム111を分割し、複数の分割プログラムを作成し、分割後JSPプログラム112(後述する図9,図10)として外部記憶装置104に格納する。
【0024】
なお、図1の構成は一例であり、用途や目的に応じて様々な構成例があることは云うまでもない。その他の構成例として、プログラム生成装置が、ネットワークと接続され、通信可能な不図示のパーソナルコンピュータ等の情報処理装置からプログラム自動生成命令を受けることによって、プログラムの自動生成を行うことも可能である。
【0025】
すなわち、本発明の機能が実現されるものであれば、単体の機器であっても、複数の機器からなるシステムであっても、ネットワークを介して処理が行われるシステムであっても本発明を適用することができる。
【0026】
また、ここで、ハードディスクドライブ(HDD)等の外部記憶装置104に記憶されたユーザ定義情報109やJSPプログラムテンプレート110、JSPプログラム111、分割後JSPプログラム112は、それぞれデータベース(DB)等に格納されているものとする。
【0027】
次に、図2を参照して、図1に示したプログラム生成装置103のハードウェア構成について説明する。
【0028】
図2は、図1のプログラム生成装置103のハードウェア構成を示すブロック図であり、図1と同一のものには同一の符号を付してある。
【0029】
図2おいて、201はCPU(中央演算処理装置)201であり、ROM203或いは外部記憶装置104に記憶されている制御プログラムに基づいて、システムバス211に接続されている各種デバイスとのアクセスを総括的に制御する構成となっている。
【0030】
システムバス211には、CPU201の主メモリ、ワークエリア等として機能するRAM(ランダム・アクセス・メモリ)202が接続されている。ROM203或いは外部記憶装置104には、CPU201の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステム(以下、「OS」という。)プログラム、プログラム生成装置103が実行する処理を実現するために必要な各種プログラム等が記憶されている。
【0031】
CPU201は、処理の実行に際して必要な各種プログラム等をRAM202にロードして、当該プログラム等を実行することで図1に示した全体制御部105の機能及び各種動作を実現するものである。
【0032】
入力装置コントローラ206は、ポインティングデバイス(不図示)やキーボード(不図示)等の入力装置102からの入力を制御する。表示装置コントローラ205は、CRTディスプレイや液晶ディスプレイ等の表示装置101の表示を制御する。メモリコントローラ207は、外部記憶装置104とのアクセスを制御する。
【0033】
外部記憶装置104は、上述した各種プログラムとして、図示しないブートプログラム、各種アプリケーションプログラム、フォントデータ、ユーザーファイル等を記憶する。
【0034】
通信I/F(通信インターフェース)204は、通信回線212を介してパーソナルコンピュータ等の情報処理装置に接続することができ、双方向通信が可能である。
【0035】
CPU201は、例えば、RAM202内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、表示装置101上でWYSIWYGを可能としている。また、CPU201は、表示装置101上のマウスカーソル(不図示)等で指示されたコマンドに基づいて、登録された種々なウィンドウを開き、種々のデータ処理を実行する。
【0036】
以下、図3〜図10を参照して、図1で示したプログラム生成装置103の全体制御部105で行われる処理全体について説明する。
【0037】
図3は、本発明における第1の制御処理手順の一例を示すフローチャートであり、図1で示したプログラム生成装置103の全体制御部105で行われる処理全体に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行する全体制御部105により実現される。なお、図中、S301〜S303は各ステップを示す。
【0038】
ステップS301において、入力装置102から入力されるプログラム自動生成命令の指示を受けると、全体制御部105内の画面制御部106は、プログラム生成部107に処理を委譲し、ステップS302に処理を進める。
【0039】
次に、ステップS302において、プログラム生成部107は、プログラム生成処理(詳細は図4に示す)を実行する。ステップ302の処理が終了すると、プログラム生成部107は、プログラム分割部108に処理を委譲し、ステップS303に処理を進める。
【0040】
ステップS303において、プログラム分割部108は、ステップ302で生成されたプログラムを分割する処理(詳細は図8に示す)を実行し、分割プログラムを生成し、処理を終了する。
【0041】
図4は、本発明における第2の制御処理手順の一例を示すフローチャートであり、図3のステップS302に示したプログラム生成処理に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行するプログラム生成部107により実現される。なお、図中、S401〜S403は各ステップを示す。
【0042】
プログラム生成部107は、まずステップS401において、外部記憶装置104に記憶されたユーザ定義情報109(図5)を抽出(取得)し、これをRAM202内に記憶する。
【0043】
ここで、ユーザ定義情報109の一例を図5に示す。
【0044】
図5は、図1に示したユーザ定義情報109の一例を示す図である。なお、ここでは一例としてアドレス帳の画面を定義したユーザ定義情報を示してある。
【0045】
図5に示すように、ユーザ定義情報109は、「IO」701、「IOITEM_ID」702、「IOITEM_NAME」703で構成される。
【0046】
「IO」701には「画面コード」が格納されている。また、「IOITEM_ID」702には「画面内の項目のコード」が格納されている。さらに、「IOITEM_NAME」703には「画面内の項目の表示名」が格納されている。
【0047】
以下、図4のフローチャートの説明に戻る。
【0048】
次に、ステップS402において、プログラム生成部107は、外部記憶装置104に記憶されたJSPプログラムテンプレート110を抽出(取得)し、RAM202内に記憶する。
【0049】
図4のステップS403において、プログラム生成部107は、ステップS401で取得したユーザ定義情報を、ステップS402で取得したJSPプログラムテンプレート110の所定の変数部分に、組み込むことによって、JSPプログラム(図7)を生成する。そして、生成されたJSPプログラムをJSPプログラム111として外部記憶装置104に格納し、処理を終了する。
【0050】
ここで、JSPプログラムテンプレート110の一例を図6に示す。
【0051】
図6は、図1に示したJSPプログラムテンプレート110の一例を示す図である。
【0052】
JSPプログラムテンプレート110には予め所定の変数部分810,811があり、上述したユーザ定義情報109の「IOITEM_NAME」703,「IOITEM_ID」702を、該変数部分810,811に組み込むことによって、後述する図4のステップS403で、JSPプログラム111が生成される。
【0053】
具体的に説明すると、図6の810に示す「<th>${ioitem.name}</th>」の変数部分(「${ioitem.name}」)には、図5の項目「IOITEM_NAME」703の列に格納されている「名前」や「電話番号」が組み込まれ、「<th>名前</th>」や「<th>電話番号</th>」になる。
【0054】
また、図6の811,812に示す「<logic:iterate id="${io}" name="bean" property="ioitems" >」,「<td><bean:write name="${io}" property="${ioitem.id}"/></td>」の変数部分(「${io}」)には、図5の項目「IO」701の列に格納されている「address」が組み込まれる。また、811の変数部分(「${ioitem.id}」)には、図5の項目「IOITEM_ID」702の列に格納されている「name」や「tel」が組み込まれる。即ち、811は「<logic:iterate id="address" name="bean" property="ioitems" >」になる。また、812は「<td><bean:write name="address" property="name"/></td>」や「<td><bean:write name="address" property="tel"/></td>」になる。この結果、後述するJSPプログラムが生成されていく。
【0055】
図7は、図1に示したJSPプログラム111の一例を示す図である。
【0056】
また、図6に示すJSPプログラムテンプレート110には、「プログラム分割」処理303で用いる分割識別情報が予め組み込まれている。
【0057】
ここで分割識別情報とは、図6に示すように、JSPプログラムテンプレート110に予め組み込まれている「分割エリア開始マーク804」、「分割エリア終了マーク805」、「グローバルエリア開始マーク801」、「グローバルエリア終了マーク802」等である。
【0058】
これらの分割識別情報801,802,804,805は、プログラムを分割しても矛盾が生じない箇所を識別するための情報である。すなわち、この分割識別情報のところで分割することが可能である。また、分割識別情報801,802,804,805は、コメント行として情報であり、プログラムそのものの機能に何ら影響を与えない情報である。
【0059】
ここで、「分割エリア開始マーク804」及び「分割エリア終了マーク805」で挟まれたエリアを「分割単位エリア806」と呼び、この「分割単位エリア806」に含まれる情報(プログラム)を「分割単位プログラム」と呼ぶことにする。
【0060】
また、「グローバルエリア開始マーク801」及び「グローバルエリア終了マーク802」で挟まれたエリアを「グローバルエリア803」と呼び、「グローバルエリア803」に含まれる情報を「グローバル情報」と呼ぶことにする。グローバル情報は、後で説明する分割プログラムに共通して必要な情報である。
【0061】
図8は、本発明における第3の制御処理手順の一例を示すフローチャートであり、図3のステップS303に示したプログラム分割処理に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行するプログラム分割部108により実現される。なお、図中、S501〜S512は各ステップを示す。
【0062】
プログラム分割部108は、まずステップS501において、ステップ302で生成されて外部記憶装置104等に記憶されたJSPプログラム111からプログラムコードを1エリア読み込む。具体的には、例えば、JSPプログラム111の先頭からプログラムコードを読み込む。その際に、分割識別情報である「グローバルエリア開始マーク801」及び「グローバルエリア終了マーク802」、又は、「分割エリア開始マーク804」及び「分割エリア終了マーク805」を検知し、検知された分割識別情報で識別(特定)されたエリアのプログラムコードを読み込む。このようにして、「グローバルエリア開始マーク801」及び「グローバルエリア終了マーク802」で特定される範囲(挟まれたエリア)の情報、又は、「分割エリア開始マーク804」及び「分割エリア終了マーク805」で特定される範囲(挟まれたエリア)の情報を読み込む。
【0063】
ステップS502では、プログラム分割部108は、ステップS501で読み込んだJSPプログラム111内の1エリアの情報が、「グローバル情報」か「分割単位プログラム」かを、分割識別情報に基づいて特定する。例えば、読み込んだ情報が「グローバルエリア開始マーク801」及び「グローバルエリア終了マーク802」で特定される範囲(挟まれたエリア)の情報であれば「グローバル情報」と特定する。また、読み込んだ情報が「分割エリア開始マーク804」及び「分割エリア終了マーク805」で特定される範囲(挟まれたエリア)の情報であれば「分割単位プログラム」と特定する。
【0064】
そして、ステップS503では、プログラム分割部108は、ステップ501で読み込まれた情報が「グローバル情報」であると判断した場合には、ステップ504に処理を進める。ステップS504では、プログラム分割部108は、ステップS501で読み込んだ情報を「グローバル情報」としてRAM202内に記憶し、ステップS512に処理を進める。
【0065】
一方、ステップS503で、プログラム分割部108が、ステップ501で読み込んだ情報が「グローバル情報」でないと判断した場合には、ステップ505に処理を進める。ステップS505では、プログラム分割部108は、ステップS501で読み込んだ情報が「分割単位プログラム」でないと判断した場合には、そのままステップS512に処理を進める。
【0066】
一方、ステップS505で、プログラム分割部108が、ステップS501で読み込んだ情報が「分割単位プログラム」であると判断した場合には、ステップS506に処理を進める。
【0067】
ステップS506では、プログラム分割部108は、空の分割プログラム(ファイル)を外部記憶装置104内に新規に生成する。
【0068】
そして、ステップS507では、プログラム分割部108は、ステップ506で作成した分割プログラム内に、RAM202内に記憶される「グローバル情報」を挿入する(図10の1101に示す)。
【0069】
次に、ステップ508では、プログラム分割部108は、ステップS501で読み込んだ情報を「分割単位プログラム」として、ステップ507で「グローバル情報」が挿入された分割プログラム内に挿入する(図10の1102に示す)。
【0070】
そして、ステップS509では、プログラム分割部108は、分割プログラムのファイルをクローズする。このように、図10に示すような分割プログラムが生成される。このように生成された分割プログラムを、以下、分割プログラム(子)と称する。なお、分割プログラム(子)は分割後JSPプログラム112の1つとして外部記憶装置104等に記憶される。
【0071】
次に、ステップS510では、プログラム分割部108は、ステップS508で分割プログラム内に挿入した情報(分割単位プログラム)を、JSPプログラム111から削除する。
【0072】
次に、ステップS511では、プログラム分割部108は、JSPプログラム111内のステップ510で削除された分割単位プログラムの部分に、ステップS506〜S509で生成された分割プログラム(子)のファイルへのインクルード文を挿入する(図9の1002に示す)。ここで、インクルード文には、分割プログラム(子)のファイルを特定する相対パス又は絶対パス等のパス情報を含む。
【0073】
次に、ステップ512において、プログラム分割部108は、JSPプログラム111の全ての分割単位プログラム及びグローバル情報の読み込みを終了したか否かを判定し、未だ終了していないと判断した場合には、ステップS501に処理を戻す。上記の処理を、JSPプログラム111の読み込み終了まで繰り返すことにより、図10に示すような各分割単位プログラムに対応する分割プログラム(子)のファイルがそれぞれ生成され、且つ、図7に示したJSPプログラム111は図9に示すように編集される。このように編集されたJSPプログラム111を、以下、分割プログラム(親)と称する。
【0074】
一方、ステップ512で、プログラム分割部108が、JSPプログラム111の全ての分割単位プログラム及びグローバル情報の読み込みを終了したと判断した場合には、図示しないステップにおいて、上記ステップS510,S511の処理により編集生成された分割プログラム(親)も分割後JSPプログラム112として外部記憶装置104に保存し、処理を終了する。
【0075】
以上の「プログラム分割」処理の結果、図9,図10に示す分割後JSPプログラム112が作成される。なお、図9,図10に示す例には、「グローバルエリア開始マーク801」,「グローバルエリア終了マーク802」,「分割エリア開始マーク804」,「分割エリア終了マーク805」は示していないが、これらはコメント行であるので、分割プログラムに含まれていても問題はない。
【0076】
図9は、図8に示したプログラム分割処理により生成される分割プログラム(親)の一例を示す図である。
【0077】
図9に示す分割プログラム(親)は、どの分割プログラムでも必要となるグローバル情報1001を含む。さらに、分割プログラム(親)は、各分割プログラム(子)へのパス情報を含むインクルード文1002を分割したプログラムの数だけ含む。
【0078】
なお、図8に示したフローチャートでは、元のJSPプログラム111から、分割単位プログラムを削除し、分割プログラム(子)のインクルード文を挿入する方法で、図9の分割プログラム(親)を生成する方法について示した。しかし、図9に示した分割プログラム(親)も、新たにプログラムファイルを生成し、該生成したプログラムファイルに、グローバル情報と、各分割プログラム(子)のインクルード文を挿入する方法で生成するように構成してもよい。
【0079】
図10は、図8に示したプログラム分割処理のステップS506〜S509で生成された分割プログラム(子)の一例を示す図である。
【0080】
図10に示す分割プログラム(子)には、グローバル情報1101、及び、分割単位プログラム1102が含まれる。
【0081】
以上示したように、本実施形態では、プログラム生成部107が、生成するファイル(JSPプログラム111)の分割可能な位置にマーク情報(グローバルエリア開始マーク801,グローバルエリア終了マーク802,分割エリア開始マーク804,分割エリア終了マーク805)を埋め込み、プログラム分割部108が、上記マークを利用してプログラムを分割する構成を有する。これにより、これまで困難であった自動生成されたプログラムの分割をユーザによる手作業による編集無しで容易に行うことができる。
【0082】
従って、コンパイル制限値の制約,プログラム構造を意識しなくても、設計者の自由な発想の下でシステム設計を行うことができ、ソースプログラムから機械語への翻訳の失敗を防ぎ、また、手作業の編集によるシステム性能の劣化を防ぐようなソースプログラムを作成することができる等の効果を奏する。
【0083】
〔第2実施形態〕
上記第1実施形態では、分割プログラム単位でプログラムを分割する構成について説明した。なお、上記第1実施形態の構成の場合、プログラムの分割単位が小さくなってしまい、効率的にコンパイルすることができない場合が発生する恐れもある。本実施形態では、ユーザが指定する数の分割単位プログラム毎にプログラム分割を行うように構成する。以下、図11,図12を参照して詳細に説明する。
【0084】
図11は、本発明の第2実施形態におけるプログラム生成命令画面の一例を示す図である。このプログラム生成画面は、図1に示した表示装置101に表示されるものとする。
【0085】
図11において、ダウンメニュー1501は、生成するプログラムを設定することができる。チェックボックス1502,1503は、「プログラム生成」処理(ステップ302)で生成されたプログラムを分割するか否かを設定することができる。なお、チェックボックス1502,1503は、排他的にチェック可能なチェックボックスであり、プログラムを分割する場合はチェックボックス1502にチェックを入れ、分割しない場合はチェックボックス1503にチェックを入れる。
【0086】
また、プルダウンメニュー1504は、分割単位プログラムをいくつまで分割プログラムに挿入することができるかを設定することができる。例えば、分割単位を「5」に設定すれば、分割単位プログラムが5つ挿入された分割プログラムを生成することができる。以上1501〜1504で設定された情報を設定情報という。
【0087】
ユーザが入力装置102を用いて設定情報を設定し、「生成」ボタン601を押下すると、入力装置102は、プログラム生成装置103に対して設定された設定情報及びプログラム自動生成命令を送くる。これにより、プログラム生成装置103による処理(図3)が開始される。
【0088】
以下、図12を参照して、本発明の第2実施形態におけるプログラム分割処理(図3のS303)について説明する。
【0089】
図12は、本発明における第4の制御処理手順の一例を示すフローチャートであり、本発明の第2実施形態におけるプログラム分割処理(図3のS303)に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行するプログラム分割部108により実現される。なお、図中、S1201〜S1215は各ステップを示す。
【0090】
プログラム分割部108は、まずステップS1201において、図3のステップS302で生成されたプログラムを分割するか否かを設定情報(特に図11の1502,1503)に基づいて判断する。そして、プログラム分割部108が分割しないと判断した場合には、そのまま処理を終了する。
【0091】
一方、ステップS1201で、プログラム分割部108が、図3のステップS302で生成されたプログラムを分割すると判断した場合には、ステップS1202に処理を進める。
【0092】
なお、ステップS1202〜S1206の処理は、図8のステップS501〜S505の処理と同一であるので説明は省略する。
【0093】
ステップS1206で、プログラム分割部108が、ステップS1202で読み込んだ情報が「分割単位プログラム」であると判断した場合には、ステップS1207に処理を進める。
【0094】
ステップS1207では、プログラム分割部108は、既に分割プログラム(ファイル)に挿入済みの分割単位プログラムが、設定情報(特に図11の1504)で設定された分割単位数未満であるか否かを判断する。そして、既に分割プログラム(ファイル)に挿入済みの分割単位プログラムが分割単位数未満であると判断した場合には、ステップ1210に処理を進める。
【0095】
ステップS1210では、プログラム分割部108は、処理中の分割プログラム(ファイル)があるか否かを判断する。そして、処理中の分割プログラム(ファイル)がないと判断した場合には、ステップ1211に処理を進める。
【0096】
ステップS1211では、プログラム分割部108は、空の分割プログラム(ファイル)を外部記憶装置104内に新規に生成する。
【0097】
そして、ステップS1212では、プログラム分割部108は、ステップ1211で作成した分割プログラム内に、RAM202内に記憶される「グローバル情報」を挿入する(図10の1101)。
【0098】
次に、ステップ1213では、プログラム分割部108は、ステップS1202で読み込んだ情報を「分割単位プログラム」として、ステップ1212で「グローバル情報」が挿入された分割プログラム内に挿入する(図10の1102)。
【0099】
次に、ステップS1214では、プログラム分割部108は、ステップS1212で分割プログラム内に挿入した情報(分割単位プログラム)を、JSPプログラム111から削除し、ステップS1215に処理を進める。
【0100】
また、ステップS1210で、プログラム分割部108が、処理中の分割プログラム(ファイル)があると判断した場合には、そのままステップS1213,S1214の処理を実行し、ステップS1215に処理を進める。
【0101】
次に、ステップ1215において、プログラム分割部108は、JSPプログラム111の全ての分割単位プログラム及びグローバル情報の読み込みを終了したか否かを判定し、未だ終了していないと判断した場合には、ステップS1202に処理を戻す。
【0102】
また、ステップS1207で、プログラム分割部108が、既に分割プログラム(ファイル)に挿入済みの分割単位プログラムが、設定情報(特に図11の1504)で設定された分割単位数未満であると判断した場合には、ステップ1208に処理を進める。
【0103】
ステップS1208では、プログラム分割部108は、処理中の分割プログラムのファイルをクローズする。これにより、分割プログラムが作成される。この分割プログラムを、分割プログラム(子)と称する。なお、分割プログラム(子)は分割後JSPプログラム112の1つとして外部記憶装置104等に記憶される。
【0104】
次に、ステップS1209では、プログラム分割部108は、JSPプログラム111内に(ステップ1214で削除された分割単位プログラムの部分に)、ステップS1208でクローズした分割プログラム(子)のファイルへのインクルード文を挿入する(図9の1002)。ここで、インクルード文には、分割プログラム(子)のファイルを特定する相対パス又は絶対パス等のパス情報を含む。ステップS1209の処理が終了すると、ステップS1210〜S1214の処理を実行し、ステップS1215へ処理を進める。
【0105】
上記ステップS1202〜S1214の処理を、JSPプログラム111の読み込み終了まで繰り返すことにより、図10に示したような各分割単位プログラムに対応する分割プログラム(子)のファイルがそれぞれ生成され、且つ、図7に示したJSPプログラム111は図9に示したように編集される。このように編集されたJSPプログラム111を、分割プログラム(親)と称する。
【0106】
そして、ステップ1215で、プログラム分割部108が、JSPプログラム111の全ての分割単位プログラム及びグローバル情報の読み込みを終了したと判断した場合には、図示しないステップにおいて、上記ステップS510,S511の処理により編集生成された分割プログラム(親)も分割後JSPプログラム112として外部記憶装置104に保存し、処理を終了する。
【0107】
以上示したように、本実施形態で、プログラム分割部108が、ユーザが指定した数の分割プログラムを含むように、プログラム生成部107が生成したプログラムを分割する構成を有する。これにより、ユーザにより指定された分割単位数の分割単位プログラムを含んだ分割プログラムを、ユーザによる手作業の編集無しで容易に生成することができる。
【0108】
従って、より少ない分割プログラムを生成して、コンパイル処理を効率的に行うことができるようにしたり、コンパイルエラーを起こりにくくしたりすることが可能な分割プログラムを生成することができる。
【0109】
即ち、細かく分割するとより多くの情報を処理できる代わりに、初期コンパイルが遅くなるというトレードオフがあるが、ユーザがケースに応じてこれを選択することが出来るようになる。
【0110】
なお、図12のステップ1201で、ステップ302で生成されたJSPプログラム111のサイズと、コンパイラのコンパイル制限値とを取得し、該JSPプログラム111のサイズと該コンパイル制限値とを比較し、該JSPプログラム111のサイズが該コンパイル制限値を越える場合、ステップ1202の処理を実行し(分割プログラムを生成する処理を実行し)、一方、越えない場合、分割プログラムを生成する処理を実行せず、終了するように構成してもよい。
【0111】
なお、コンパイル制限値は、コンパイラがコンパイル可能なサイズを示すものであり、コンパイラから動的に取得可能である。なお、このコンパイル制限値を設定ファイル等として、予め外部記憶装置104に格納しておいてもよい。
【0112】
〔第3実施形態〕
上記第2実施形態では、ユーザが指定した数の分割単位プログラムを含むように、分割プログラムを生成する構成について説明した。本実施形態では、分割プログラムを、ユーザが指定した数以内の分割単位プログラムを含ませ、且つ、分割プログラムのサイズがコンパイル制限値を越えないように生成するように構成する。以下、図13,図14を参照して詳細に説明する。
【0113】
図13は、本発明における第5の制御処理手順の一例を示すフローチャートであり、本発明の第3実施形態におけるプログラム分割処理(図3のS303)に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行するプログラム分割部108により実現される。なお、図中、S1201〜S1215,S1300は各ステップを示す。また、図12と同一のステップには同一のステップ番号を付してあり、説明は省略する。
【0114】
プログラム分割部108は、ステップS1210で、処理中の分割プログラム(ファイル)があると判断した場合には、ステップS1300に処理を進める。
【0115】
ステップS1300では、プログラム分割部108は、コンパイル制限サイズ処理を実行し、ステップS1213に処理を進める。なお、ステップS1300のコンパイル制限サイズ処理の詳細は図14に示す。
【0116】
図14は、本発明における第6の制御処理手順の一例を示すフローチャートであり、図13のステップS1300のコンパイル制限サイズ処理に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行するプログラム分割部108により実現される。なお、図中、S1301〜S1303は各ステップを示す。
【0117】
ステップS1301において、プログラム分割部108は、処理中の分割プログラム(ファイル)のサイズ、処理中の分割単位プログラムのサイズ,コンパイラのコンパイル制限値を取得する。そして、プログラム分割部108は、処理中の分割プログラムのサイズと処理中の分割単位プログラムのサイズの合計値が、コンパイル制限値を超えるか否かを判断する。
【0118】
そして、プログラム分割部108が、処理中の分割プログラムのサイズと処理中の分割単位プログラムのサイズの合計値がコンパイル制限値を超えないと判断した場合には、図13のステップS1213に処理を進める。
【0119】
一方、プログラム分割部108が、処理中の分割プログラムのサイズと処理中の分割単位プログラムのサイズの合計値がコンパイル制限値を超えると判断した場合には、ステップS1302に処理を進める。
【0120】
ステップS1302では、プログラム分割部108は、処理中の分割プログラムのファイルをクローズする。これにより、分割プログラムが作成される。この分割プログラムを、分割プログラム(子)と称する。なお、分割プログラム(子)は分割後JSPプログラム112の1つとして外部記憶装置104等に記憶される。
【0121】
次に、ステップS1303では、プログラム分割部108は、JSPプログラム111内に(図13のステップ1214で削除された分割単位プログラムの部分に)、ステップS1301でクローズした分割プログラム(子)のファイルへのインクルード文を挿入する(図9の1002)。ここで、インクルード文には、分割プログラム(子)のファイルを特定する相対パス又は絶対パス等のパス情報を含む。ステップS1303の処理が終了すると、図13のステップS1213に処理を進める。
【0122】
以上の処理を実行することにより、コンパイル処理を効率的に行うことができ、コンパイルエラーを防ぐことができる分割プログラムを生成することができる。
【0123】
〔第4実施形態〕
上記第1実施形態では、自動生成したプログラムを分割する構成について説明した。本実施形態では、第1の実施形態で示したプログラム分割処理で分割されたプログラムを、効率良くコンパイルできるサイズに合成する「プログラム合成」処理を行うように構成する。以下、図15,図16を参照して詳細に説明する。
【0124】
図15は、本発明における第7の制御処理手順の一例を示すフローチャートであり、本発明の第4実施形態における全体制御部105で行われる処理全体に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行する全体制御部105により実現される。なお、図中、S301〜S303,S1400は各ステップを示す。また、図12と同一のステップには同一のステップ番号を付してあり、説明は省略する。
【0125】
プログラム分割部108は、ステップS303のプログラム分割処理を終了すると、ステップS1400に処理を進め、プログラム合成処理を実行する。なお、ステップS1400のプログラム合成処理の詳細は図16に示す。
【0126】
図16は、本発明における第8の制御処理手順の一例を示すフローチャートであり、図15のステップS1400のプログラム合成処理に対応する。なお、このフローチャートの処理は、図2に示したCPU201が外部記憶装置104に格納されたプログラムをRAM202に読み出して実行するプログラム分割部108により実現される。なお、図中、S1401〜S1410は各ステップを示す。
【0127】
ステップS1401において、プログラム分割部108は、新規に空の合成プログラムファイルを外部記憶装置104内に作成する。
【0128】
次に、ステップS1402において、プログラム分割部108は、図3のステップS303で分割された複数の分割プログラム(子)から1つ分割プログラム(子)を取得する。以下、この分割プログラム(子)を「今回の分割プログラム」と呼ぶ。
【0129】
次に、ステップS1403において、プログラム分割部108は、処理中の合成プログラムのサイズ、今回の分割プログラムのサイズ,コンパイラのコンパイル制限値を取得する。そして、プログラム分割部108は、処理中の合成プログラムのサイズと今回の分割プログラムのサイズの合計値が、コンパイル制限値を超えるか否かを判断する。
【0130】
そして、プログラム分割部108が、処理中の合成プログラムのサイズと今回の分割プログラムのサイズの合計値がコンパイル制限値を超えないと判断した場合には、ステップS1404に処理を進める。
【0131】
ステップS1404では、プログラム分割部108は、今回の分割プログラムの内容(「グローバル情報」,「分割単位プログラム」)を処理中の合成プログラムにコピーする。ここで、空の合成プログラムに初めてコピーする場合は、今回の分割プログラムの「グローバル情報」及び「分割単位プログラム」を処理中の合成プログラムにコピーする。しかし、既に合成プログラムに「グローバル情報」が含まれている場合(即ち、2回目以降のコピー処理)の場合は、今回の分割プログラム内の「分割単位プログラム」のみを処理中の合成プログラムにコピーする。
【0132】
次にステップS1405において、プログラム分割部108は、ステップ1404でコピーされた分割プログラムを削除する。
【0133】
さらにステップS1406において、プログラム分割部108は、元のJSPプログラム(分割プログラム(親))に挿入されている今回の分割プログラムを特定するためのインクルード文を削除する。そして、ステップS1410に処理を進める。
【0134】
次に、ステップ1410において、プログラム分割部108は、分割プログラム(子)の全てについてS1402〜S1406の処理を終了したか否かを判定し、未だ終了していないと判断した場合には、ステップS1402に処理を戻す。
【0135】
また、ステップS1403で、プログラム分割部108が、処理中の合成プログラムのサイズと今回の分割プログラムのサイズの合計値が、コンパイル制限値を超えると判断した場合には、ステップS1407に処理を進める。
【0136】
ステップS1407では、プログラム分割部108は、処理中の合成プログラムをクローズする。
【0137】
次に、ステップS1408において、プログラム分割部108は、元のJSPプログラム(分割プログラム(親))に、ステップ1406でクローズした合成プログラムを特定するためのインクルード文を挿入する。
【0138】
次に、ステップS1409において、プログラム分割部108は、新たな空の合成プログラムファイルを作成し、ステップ1404〜S1406の処理を実行し、ステップS1410に処理を進める。
【0139】
そしてステップ1410で、プログラム分割部108が、分割プログラム(子)の全てについてS1402〜S1406の処理を終了したと判断した場合には、図示しないステップにおいて、上記の処理により編集生成された合成プログラムを分割後JSPプログラム112として外部記憶装置104に保存し、処理を終了する。
【0140】
以上の処理により、第2実施形態で示したようなユーザ指定による試行錯誤の分割でなく、第1実施形態に示した分割方法により一旦分割した後、コンパイル可能なサイズまでファイルを自動的に再合成することができる。これにより、コンパイル処理を効率的に行うことができ、コンパイルエラーを防ぐことができる分割プログラム(合成プログラム)を生成することができる。
【0141】
なお、本実施形態の分割方法は、第2,3,4実施形態で示したように、最初から分割をしたものを生成するのではなく、有意なマーク情報(分割識別情報)を使用して分割した後に、プログラム合成処理を実行して、再合成する構成を有するが、さらに、このプログラム合成処理の後に、更なる処理(例えば、コンパイル処理)を追加するように構成してもよい。
【0142】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【0143】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0144】
以下、図17に示すメモリマップを参照して本発明に係るプログラム生成装置(コンピュータ)で読み取り可能なデータ処理プログラムの構成について説明する。
【0145】
図17は、本発明に係るプログラム生成装置(コンピュータ)で読み取り可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【0146】
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【0147】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【0148】
本実施形態における図3,図4,図8,図12,図13,図14,図15,図16に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【0149】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【0150】
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【0151】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
【0152】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0153】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0154】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0155】
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0156】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【図面の簡単な説明】
【0157】
【図1】本発明の一実施形態を示すプログラム生成装置のシステム全体を示す構成図である。
【図2】図1のプログラム生成装置103のハードウェア構成を示すブロック図である。
【図3】本発明における第1の制御処理手順の一例を示すフローチャートである。
【図4】本発明における第2の制御処理手順の一例を示すフローチャートである。 本発明における第2の制御処理手順の一例を示すフローチャートである。
【図5】図1に示したユーザ定義情報の一例を示す図である。
【図6】図1に示したJSPプログラムテンプレートの一例を示す図である。
【図7】図1に示したJSPプログラムの一例を示す図である。
【図8】本発明における第3の制御処理手順の一例を示すフローチャートである。
【図9】図8に示したプログラム分割処理により生成される分割プログラム(親)の一例を示す図である。
【図10】図8に示したプログラム分割処理のステップS506〜S509で生成された分割プログラム(子)の一例を示す図である。
【図11】本発明の第2実施形態におけるプログラム生成命令画面の一例を示す図である。
【図12】本発明における第4の制御処理手順の一例を示すフローチャートである。
【図13】本発明における第5の制御処理手順の一例を示すフローチャートである。
【図14】本発明における第6の制御処理手順の一例を示すフローチャートである。
【図15】本発明における第7の制御処理手順の一例を示すフローチャートである。
【図16】本発明における第8の制御処理手順の一例を示すフローチャートである。
【図17】本発明に係るプログラム生成装置(コンピュータ)で読み取り可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
【符号の説明】
【0158】
101 入力装置
102 表示装置
103 プログラム生成装置
104 外部記憶装置
105 全体制御部
106 画面制御部
107 プログラム生成部
108 プログラム分割部
109 ユーザ定義情報
110 JSPプログラムテンプレート
111 JSPプログラム
112 分割後JSPプログラム

【特許請求の範囲】
【請求項1】
ソースプログラムを生成するプログラム生成装置において、
入力されるプログラムの定義情報に基づいて、ソースプログラム内の分割可能な箇所を識別するための分割識別情報を含む第1ソースプログラムを生成する生成手段と、
前記生成手段により生成された第1ソースプログラムに含まれる分割識別情報に基づいて、前記第1ソースプログラムを分割して複数の第2ソースプログラムを生成する分割手段と、
を有することを特徴とするプログラム生成装置。
【請求項2】
前記分割識別情報を含むプログラムテンプレートを記憶する記憶手段を有し、
前記生成手段は、前記記憶手段に記憶されるプログラムテンプレートと前記定義情報とに基づいて、前記分割識別情報を含む第1ソースプログラムを生成することを特徴とする請求項1に記載のプログラム生成装置。
【請求項3】
前記分割手段は、
前記生成手段により生成された第1ソースプログラムに含まれる分割識別情報に基づいて分割単位となる分割単位コードを特定する特定手段と、
前記特定手段により特定された分割単位コード毎に、前記第2ソースプログラムを生成する第2ソースプログラム生成手段と、
前記第2ソースプログラム生成手段により生成された第2ソースプログラムを取り込むためのコードを、前記第2ソースプログラムに対応する前記分割単位コードの代わりとして前記第1ソースプログラム内に挿入する第1の挿入手段と、
を有することを特徴とする請求項1又は2に記載のプログラム生成装置。
【請求項4】
前記分割手段は、
前記生成手段により生成された第1ソースプログラムに含まれる分割識別情報に基づいて分割単位となる分割単位コードを特定する特定手段と、
前記特定手段により特定される所定数分の分割単位コード毎に、前記第2ソースプログラムを生成する第2ソースプログラム生成手段と、
前記第2ソースプログラム生成手段により生成された第2ソースプログラムを取り込むためのコードを、前記第2ソースプログラムに対応する前記分割単位コードの代わりとして前記第1ソースプログラム内に挿入する第1の挿入手段と、
を有することを特徴とする請求項1又は2に記載のプログラム生成装置。
【請求項5】
前記分割手段は、
前記生成手段により生成された第1ソースプログラムに含まれる分割識別情報に基づいて分割単位となる分割単位コードを特定する特定手段と、
前記特定手段により特定される複数の分割単位コードの合計サイズが、制限値を超えない最大数の分割単位コード毎に、前記第2ソースプログラムを生成する第2ソースプログラム生成手段と、
前記第2ソースプログラム生成手段により生成された第2ソースプログラムを取り込むためのコードを、前記第2ソースプログラムに対応する前記分割単位コードの代わりとして前記第1ソースプログラム内に挿入する第1の挿入手段と、
を有することを特徴とする請求項1又は2に記載のプログラム生成装置。
【請求項6】
前記分割識別情報は、分割後も共通に必要な個所を識別するための第1分割識別情報と、ソースプログラムの分割可能な箇所を識別するための第2分割識別情報を含むものであり、
前記特定手段は、前記生成手段により生成された第1ソースプログラムに含まれる第1分割識別情報,第2分割識別情報に基づいて分割後も共通に必要な共通コード,分割単位となる分割単位コードを特定するものであり、
前記第2ソースプログラム生成手段は、前記特定手段により特定される共通コードと分割単位コードにより、前記第2ソースプログラムを生成することを特徴とする請求項3乃至5のいずれか1項に記載のプログラム生成装置。
【請求項7】
前記分割手段は、
前記分割した複数の第2ソースプログラムの合計サイズが、制限値を超えない最大数の前記第2ソースプログラムを合体させて第3ソースプログラムを生成する第3ソースプログラム生成手段と、
前記第3ソースプログラム生成手段により生成された第3ソースプログラムを取り込むためのコードを、前記第3ソースプログラムに対応する前記第2ソースプログラムの代わりとして前記第1ソースプログラム内に挿入する第2の挿入手段と、
を備えることを特徴とする請求項1乃至4のいずれか1項に記載のプログラム生成装置。
【請求項8】
前記制限値は、コンパイル可能な最大のソースプログラムサイズを示すことを特徴とする請求項5又は7に記載のプログラム生成装置。
【請求項9】
ソースプログラムを生成するプログラム生成方法において、
入力されるプログラムの定義情報に基づいて、ソースプログラムの分割可能な箇所を識別するための分割識別情報を含む第1ソースプログラムを生成する生成ステップと、
該生成された第1ソースプログラムに含まれる分割識別情報に基づいて、前記第1ソースプログラムを分割して複数の第2ソースプログラムを生成する分割ステップと、
を有することを特徴とするプログラム生成方法。
【請求項10】
請求項9に記載されたプログラム生成方法をコンピュータに実行させるためのプログラム。
【請求項11】
請求項9に記載されたプログラム生成方法をコンピュータに実行させるためのプログラムをコンピュータが読み取り可能に記憶した記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2007−241364(P2007−241364A)
【公開日】平成19年9月20日(2007.9.20)
【国際特許分類】
【出願番号】特願2006−59020(P2006−59020)
【出願日】平成18年3月6日(2006.3.6)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
【Fターム(参考)】