以下、本発明の実施の形態を、図面を参照して詳細に説明する。まず、図1〜図7を用いて、HTMLプレビュー生成の前提となるGUIレイアウトについて、説明する。
図1は、本発明の実施形態に係わる情報処理装置100の機能構成、および各機能の呼び出し関係を示す図である。図1において、ユーザ操作(101)は、GUI(グラフィカル・ユーザ・インタフェース)における定義画面(プログラム自動生成ツールにおいてプログラムの定義を行う画面)から行われる。具体的には、情報処理装置100にて動作しているプログラム自動生成ソフトにおけるGUIレイアウトタブ(図3)、項目一覧タブ(図4)でGUIレイアウト、または項目一覧の定義を行うが、タブの相互切り替えに際しての処理に関連するソフトウェア構成部品と、構成部品間の要求の図である。なお、GUIレイアウトタブおよび項目一覧タブに定義されている情報は、定義画面ヘッダの定義ファイル名(図3、図4の画面例では“USERREQ.wprx”)、あるいは当該画面を一意的に決定する情報により特定される。
ユーザ操作(101)により、項目一覧タブ選択要求121が、入出力定義エディタコントローラ部102に通知されると、入出力定義エディタコントローラ部102は、項目一覧モデル変換部103にレイアウトモデル変換要求122を通知する。
項目一覧モデル変換部103は、GUIレイアウト定義を項目一覧定義に変換するため、現在のGUIレイアウト定義(GUIレイアウトタブで定義されたレイアウト定義でありレイアウト部品情報の定義の一覧)をレイアウトモデル記憶部107から取得する(レイアウトモデル変換時取得要求123)。さらに、項目一覧モデル変換部103は、取得した現在のGUIレイアウトを、項目一覧定義(項目情報の定義の一覧)に変換し、変換結果を項目一覧モデル記憶部104に登録する(既にある場合は更新する。項目一覧モデル更新要求124)。
入出力定義エディタコントローラ部102は、項目一覧定義の登録または更新後、当該登録または更新結果を取得する(項目一覧モデル表示時取得要求125)。入出力定義エディタコントローラ部102は、取得した項目一覧定義を項目一覧タブに表示するよう項目一覧表示部105に要求し、項目一覧表示部105は要求に従って項目一覧定義の表示を行う。
ユーザ操作(101)により、レイアウトタブ選択要求141が、入出力定義エディタコントローラ部102に通知されると、入出力定義エディタコントローラ部102は、GUIレイアウトモデル変換部106に項目一覧モデル変換要求142を通知する。
GUIレイアウトモデル変換部106は、項目一覧定義をGUIレイアウトモデル定義に変換するため、現在の項目一覧定義を項目一覧モデル記憶部104から取得する(項目一覧モデル変換時取得要求143)。さらに、GUIレイアウトモデル変換部106は、取得した現在の項目一覧定義を、GUIレイアウト定義に変換し、レイアウトモデル記憶部107に登録する(既にある場合は更新する。レイアウトモデル更新要求144)。
入出力定義エディタコントローラ部102は、GUIレイアウト定義の登録または更新後、当該登録または更新結果を取得する(レイアウトモデル表示時取得要求145)。入出力定義エディタコントローラ部102は、取得したGUIレイアウト定義をGUIレイアウトタブに描画するための準備としてGUIレイアウトコントローラ部108にGUIレイアウト部品の生成を要求する(GUIレイアウト生成要求146)。
GUIレイアウト生成要求を受けたGUIレイアウトコントローラ部108は、レイアウトモデル記憶部107から取得したGUIレイアウト定義に基づき、描画するためのGUI部品などを生成する。まず、GUIレイアウト上のGUI部品(テキスト入力ボックスやボタンなど)を配置するためのベースとなる部品(ベース部品)を生成し、GUIレイアウト記憶部109(GUIレイアウト&部品記憶部)に追加する(GUIレイアウト追加要求147)。
GUIレイアウトコントローラ部108は、さらにベース部品に配置するGUI部品を生成するため、ベース部品の直下のGUI部品ごとに、GUI部品生成要求148をGUI部品コントローラ部110に発行する。
GUI部品コントローラ部110は、GUI部品生成要求148により要求されたGUI部品を、GUIレイアウト定義の個々の部品の定義(項目情報から変換された定義)に基づき生成する。GUIレイアウト定義において、GUI部品に入れ子のGUI部品(ベース部品の直下に配置される部品ではなく、GUI部品上に配置される子供となるGUI部品)が定義されている場合には、入れ子の部品を生成するようにGUI部品コントローラ部110に再帰的に要求を行う(GUI部品生成要求149)。生成したGUI部品は、GUIレイアウト記憶部109に追加する(GUI部品追加要求150)。
GUIレイアウトコントローラ部108は、GUI部品(ベース部品を含む)の生成が完了すると、GUIレイアウト描画部111にGUIレイアウト描画要求151を発行する。この要求により、GUIレイアウト描画部111は、GUIレイアウトタブにGUIレイアウトの表示を行う。
図2は、本発明の実施形態に係わる情報処理装置100(プログラム自動生成装置)のハードウェア構成の一例を示すブロック図である。
図2に示すように、情報処理装置100は、システムバス204を介してCPU(Central Processing Unit)201、RAM(Random Access Memory)202、ROM(Read Only Memory)203、入力コントローラ205、ビデオコントローラ206、メモリコントローラ207、通信I/Fコントローラ208等が接続された構成を採る。 CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input/Output System)やOS(Operating System)や、各サーバあるいは各PCが実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。また、本発明を実施するために必要な情報が記憶されている。なお外部メモリはデータベースであってもよい。
RAM202は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM203あるいは外部メモリ211からRAM202にロードし、ロードしたプログラムを実行することで各種動作を実現する。
また、入力コントローラ205は、キーボード(KB)209や不図示のマウス等のポインティングデバイス等からの入力を制御する。
ビデオコントローラ206は、ディスプレイ210等の表示器への表示を制御する。尚、表示器は液晶ディスプレイ等の表示器でもよい。これらは、必要に応じて管理者が使用する。
メモリコントローラ207は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶する外部記憶装置(ハードディスク(HD))や、フレキシブルディスク(FD)、あるいは、PCMCIA(Personal Computer Memory Card International Association)カードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ208は、ネットワークを介して外部機器と接続・通信し、ネットワークでの通信制御処理を実行する。例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)を用いた通信等が可能である。
尚、CPU201は、例えばRAM202内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上に表示することが可能である。また、CPU201は、ディスプレイ210上のマウスカーソル(図示しない)等によるユーザ指示を可能とする。
本発明を実現するための後述する各種プログラムは、外部メモリ211に記録されており、必要に応じてRAM202にロードされることによりCPU201によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイルおよび各種情報テーブル等も、外部メモリ211に格納されており、これらについての詳細な説明についても後述する。
図3は、本発明の実施形態に係わるプログラム自動生成ツールのうちGUIレイアウトの定義を行う画面構成の一例である。GUIレイアウト定義画面は、主に次のエリアから構成されている。すなわち、定義された単位毎にフォルダ階層としてデータが格納される定義エクスプローラ領域301、1つのGUIレイアウト定義を視覚的に配置操作するためのキャンバス領域302、キャンバス領域302に配置するGUI部品(例えばテキストフィールド304)を選択するパレット領域303から構成されている。
また、開発者が様々な定義情報を記述するため、プログラム自動生成ツールの定義画面で共通に表示されるタブが配置されている。例えば、項目一覧タブ305、レイアウトタブ306であり、これらは図4の項目一覧定義画面でも表示される。本発明の実施形態では、GUIレイアウト定義画面(図3)と項目一覧定義画面(図4)を切り替えながら操作する。
また、本発明の実施形態では、定義エクスプローラ領域301にあるデータモデル308をパレット領域303のGUI部品と同様に、キャンバス領域302に配置することが可能である。すなわち、データモデル308から、データベースのテーブルに記載されたデータ項目(カラム)を1つまたは複数選択し、キャンバス領域302に配置する。そうすると、データベースのスキーマとして定義されたデータ項目(カラム)の情報(カラム名、データ種別、サイズなど)を抽出して、例えば、データ種別がテキストや数値である場合にはテキストフィールド、booleanである場合にはチェックボックスなどとして配置することができる。
GUIレイアウト定義画面300bは、GUIレイアウト定義画面300aに対してテキストフィールド307を1つ追加し、名前を“ユーザID”と設定した場合を示している。タイトルや入力領域のサイズなどは、キャンバス領域302においてマウスでクリックして更新可能状態として交信してもよいし、またGUI部品をクリックする際に、GUIレイアウト定義画面300の左下の領域(“Property”定義領域)に、属性としてGUI部品に関連する情報の一覧を表示し、属性をキーボード入力により修正することも可能である。
図4は、本発明の実施形態に係わるプログラム自動生成ツールのうち項目一覧の定義を行う画面構成の一例である。項目一覧定義画面は、主張な領域は、項目一覧設定領域401である。
項目一覧設定領域401は表形式になっており、開発者は1行に1つの情報(例えばGUIレイアウトにおけるテキストフィールド、チェックボックス、ボタン、テキスト)などを詳細の属性と共に定義する。
項目一覧定義画面400bは、項目一覧定義画面400aに対して項目タイプ“入力”を1つ追加し、名前を“ユーザID”と設定した場合を示している(行402の定義)。行402の定義は、図3のテキストフィールド307に対応するものである。
ここで、図3と図4の定義の関係を説明する。例えば図3のGUIレイアウト定義画面300aを表示しているときに、項目一覧タブ305を選択すると、表示は図4の項目一覧定義画面400aに切り替えられる。実質的に開発しているプログラムの同じ情報を定義している。図4において、前述の通り行402を追加して項目一覧定義画面400bとした後、レイアウトタブ306を選択すると、GUIレイアウト定義画面300bのようにレイアウト上でもテキストフィールド307が追加されて描画される。
逆に、GUIレイアウト定義画面300aに対してレイアウト上でもテキストフィールド307を追加してGUIレイアウト定義画面300bとした後、項目一覧タブ305を選択すると、項目一覧定義画面400bのように項目一覧上でも行402の定義が追加される。
すなわち、GUIレイアウト定義と項目一覧定義は、タブ(項目一覧タブ305およびレイアウトタブ306)の操作をトリガとして、同期がとられている。
さらに、後述する図5の項目一覧定義を記憶するデータ構成rows[i]と、不図示のGUIレイアウト定義を記憶するデータ構成には、rowIndexとして各定義の定義順が記載されている。そのため、GUIレイアウト定義で最上部に定義されたGUI部品に対応する項目の定義は、項目一覧定義の1行目に表示される。これにより、定義の位置関係についても同期がとられ、いずれの定義を変更してもプログラムロジックとGUIレイアウトの関係が壊れてしまうことはない。
以上により、図3と図4の説明を完了する。このように、項目一覧における開発とGUIレイアウトにおける開発(すなわち項目の定義も部品の定義)において同期がとられることで、開発中のどのタイミングでもGUIレイアウトを確認可能とし、またプログラムロジックとGUIレイアウトのいずれを編集したとしても対応関係を修正する必要をなくすることにより、開発効率を向上させることが可能となるという効果を得ることができる。
図5は、本発明の実施形態に係わるプログラム自動生成ツールで定義された項目一覧の情報を記憶する項目一覧モデル記憶部におけるデータ構成の一例を示す図である。記載したデータは、図4の項目一覧定義画面400の項目一覧設定領域401において定義した行のうち、例として5行を記載したものである。この情報は、RAM202上に一時的に記憶されていてもよいし、データベースに記憶してもよい。以下、RAM202に記憶されているイメージで説明する。
項目一覧定義は配列rowsの各項目定義は、rows[0]〜rows[4]に格納されている。rows[i](各要素)は、図5示すようにdataという要素を持ち、複数の属性値、例えば入力欄を示す“I”、項目IDを示す“USERID”、項目の名前を示す“ユーザID”などが設定される。
さらに、プログラム自動生成に使用される各種属性が定義されている。また、“owPropertyList”には、名前を表示する領域のサイズ“labelWidth”、テキスト入力欄の領域サイズ“fieldWidth”などが指定される。
以上で、項目一覧モデル記憶部104におけるデータ構成の説明を完了する。さらに、不図示ではあるが、図3のGUIレイアウトについても、レイアウトモデル記憶部107に記憶される。両者のデータ構成はほぼ同一のものである。本発明の実施形態では、項目一覧モデル記憶部104に記憶された情報を中心とするため、レイアウトモデル記憶部107におけるデータ構成は、各要素(レイアウト部品情報)が、対応する項目情報へのリンクを有すること、また項目情報(rows[i])における領域サイズの情報は、HTMLに変換した際のサイズを示すが、レイアウト部品譲歩においては、GUIレイアウト定義画面300のキャンバス領域302に表示する際に適したサイズに変換されている、など一部の情報が異なる。項目一覧モデル記憶部104、レイアウトモデル記憶部107のデータ構成はあくまで一例であって、他の構成の形式で定義されていてもよい。
図6は、本発明の実施形態に係わるGUIレイアウトの定義を項目一覧の定義に同期するためのシーケンス図の一例である。図6のシーケンス図の各ステップは、情報処理装置100のCPU201により実行される。
S601において、ユーザ操作(101)により項目一覧タブが選択された際に、プログラム開発ツールから項目一覧タブ選択の要求が発行され、入出力定義エディタコントローラ部102が、定義画面を項目一覧タブ(図4)に切り替えるための要求を受け付ける(項目一覧タブ選択要求121)。
S602において、入出力定義エディタコントローラ部102が、GUIレイアウト定義を項目一覧定義に変換するように、項目一覧モデル変換部103に要求する(レイアウトモデル変換要求122)。ここで、いずれの定義に対する変換を要求するかは、図1で説明したとおり定義を一意的に決定する情報により特定される。
S603において、項目一覧モデル変換部103が、GUIレイアウトの定義をレイアウトモデル記憶部107から取得する(レイアウトモデル変換時取得要求123)。
S604において、項目一覧モデル変換部103は、更に取得したGUIレイアウトを項目一覧定義に変換する。前述したように、GUIレイアウト定義では、GUIレイアウト定義画面300のキャンバス領域302に表示する際に適したサイズを保持しているため、それらのサイズをプログラム自動生成時に、HTMLの部品として生成するために適切なサイズに変換する、などの変換処理を行う。
S605において、項目一覧モデル変換部103は、取得した現在のGUIレイアウトを、項目一覧定義(項目情報の定義の一覧)に変換し、変換結果を項目一覧モデル記憶部104に登録する(既にある場合は更新する。項目一覧モデル更新要求124)。
S606において、入出力定義エディタコントローラ部102は、登録または更新された項目一覧定義を、項目一覧モデル記憶部104から取得する(項目一覧モデル表示時取得要求125)。
S607において、入出力定義エディタコントローラ部102は、取得した項目一覧定義を項目一覧タブに表示するよう項目一覧表示部105に要求し、項目一覧表示部105は要求に従って項目一覧定義の表示を行う。
図7は、本発明の実施形態に係わる項目一覧の定義をGUIレイアウトの定義に同期するためのシーケンス図の一例である。図6のシーケンス図の各ステップは、情報処理装置100のCPU201により実行される。
S701において、ユーザ操作(101)によりレイアウトタブが選択された際に、プログラム開発ツールからレイアウトタブ選択の要求が発行され、入出力定義エディタコントローラ部102が、定義画面をレイアウト定義タブ(図3)に切り替えるための要求を受け付ける(レイアウトタブ選択要求141)。
S702において、入出力定義エディタコントローラ部102は、GUIレイアウトモデル変換部106に項目一覧モデル変換要求142を通知する(項目一覧モデル変換要求142)。ここで、いずれの定義に対する変換を要求するかは、図1で説明したとおり定義を一意的に決定する情報により特定される。
S703において、GUIレイアウトモデル変換部106は、項目一覧定義をGUIレイアウトモデル定義に変換するため、現在の項目一覧定義を項目一覧モデル記憶部104から取得する(項目一覧モデル変換時取得要求143)。
S704において、GUIレイアウトモデル変換部106は、取得した現在の項目一覧定義を、GUIレイアウト定義に変換する。
S705において、GUIレイアウトモデル変換部106は、変換したGUIレイアウト定義をレイアウトモデル記憶部107に登録する(既にある場合は更新する。レイアウトモデル更新要求144)。
S706において、入出力定義エディタコントローラ部102は、GUIレイアウト定義の登録または更新後、当該登録または更新結果を取得する(レイアウトモデル表示時取得要求145)。
S707において、入出力定義エディタコントローラ部102は、取得したGUIレイアウト定義をGUIレイアウトタブに描画するための準備としてGUIレイアウトコントローラ部108にGUIレイアウト部品の生成を要求する(GUIレイアウト生成要求146)。
S708において、GUIレイアウト生成要求を受けたGUIレイアウトコントローラ部108は、レイアウトモデル記憶部107から取得したGUIレイアウト定義に基づき、描画するためのGUI部品などを生成する。まず、GUIレイアウト上のGUI部品(テキスト入力ボックスやボタンなど)を配置するためのベースとなる部品(ベース部品)を生成し、GUIレイアウト記憶部109(GUIレイアウト&部品記憶部)に追加する(GUIレイアウト追加要求147)。
S709において、GUIレイアウトコントローラ部108は、さらにベース部品に配置するGUI部品を生成するため、ベース部品の直下のGUI部品ごとに、GUI部品生成要求148をGUI部品コントローラ部110に発行する。
S710において、GUI部品コントローラ部110は、GUI部品生成要求148により要求されたGUI部品を、GUIレイアウト定義の個々の部品の定義(項目情報から変換された定義)に基づき生成する。GUIレイアウト定義において、GUI部品に入れ子のGUI部品(ベース部品の直下に配置される部品ではなく、GUI部品上に配置される子供となるGUI部品)が定義されている場合には、入れ子の部品を生成するようにGUI部品コントローラ部110に再帰的に要求を行う(GUI部品生成要求149)。生成したGUI部品は、GUIレイアウト記憶部109に追加する(GUI部品追加要求150)。
S711において、GUIレイアウトコントローラ部108は、GUI部品(ベース部品を含む)の生成が完了すると、GUIレイアウト描画部111にGUIレイアウト描画要求151を発行する。この要求により、GUIレイアウト描画部111は、GUIレイアウトタブにGUIレイアウトの表示を行う。
図6と図7のシーケンス図で説明したとおり、項目一覧タブとレイアウトタブを切り替えるユーザの操作をトリガとして、両者に表示されるデータ(項目一覧定義とGUIレイアウト定義)が再生成され、項目一覧定義(プログラムロジック)と、GUIレイアウト定義(HTML生成などのための画面情報)を、手動で対応付けるための操作や、対応情報の作成などを行う必要がなくなる。これにより、プログラム自動生成ツールによるプログラム定義の作業の生産性が向上するという効果が得られる。
次に、図8〜図12を用いて、プレビューHTML生成についての詳細な説明を行う。プレビューHTMLは、アプリケーションにいて、ビジネスロジック(コントローラ)、データベースモデルに対応するビューであるHTMLを、プレビューとして開発途中に生成し確認するためのHTML画面である。
図8は、本発明の実施形態に係わる情報処理装置のプレビューに関する機能構成、および各機能の呼び出し関係を示す図の一例である。また、図8では、各機能部や要求の概略だけを説明し、詳細は図12のフローチャートで説明する。
まず、ユーザ操作(101)は、図1で説明したとおり、GUI(グラフィカル・ユーザ・インタフェース)における定義画面(プログラム自動生成ツールにおいてプログラムの定義を行う画面)から行われる。
具体的には、情報処理装置100にて動作しているプログラム自動生成ソフトにおけるGUIレイアウトタブ(図3)、項目一覧タブ(図4)で操作が行われる。プレビューHTML生成については、図3のプレビュータブ309をユーザが操作したタイミング(プレビュータブ選択831)で、当該操作のイベントが、入出力定義エディタコントローラ部102に通知される。
入出力定義エディタコントローラ部102は、アプリケーション定義体記憶部のうち、処理に必要な項目一覧情報を取得する(入出力モデル取得832)。具体的には、プレビューHTML生成に必要な情報を項目一覧モデル記憶部104から取得する。言わば表示情報のフィルタリングを行う。ここで、図11を用いて、取得した項目一覧情報について説明する。
図11は、本発明の実施形態に係わるプレビューHTMLを生成するために必要な定義情報をアプリケーション定義から取得した結果のデータ構成を示す図の一例である。データ構造としては図5で説明した“rows”とほぼ同様である。まず、開発中のアプリケーションを定義するデータとしては、ビジネスロジックの定義体、データベースモデルの定義体、その他アプリケーションの各種プロパティを定義体など、多くの定義体がある。入出力定義であっても、現在、プレビューHTMLを生成しようとしている入出力定義体と、それ以外の定義体がある。
入出力定義エディタコントローラ部102は、まず必要な定義体のみを選択する。具体的には、例えば、図4の項目一覧定義が記載されているデータを含む定義体である。なお、ここで「定義体」という文言は便宜上用いている。実際には、1つの定義体が1ファイルに格納されていても良い。あるいは、1つのアプリケーション全体に関する定義体が1つのファイルに格納され、それぞれの(例えば1つの項目一覧)定義は、タグで判別可能としても良い。この場合は、当該タグの内容を意味する。また、開発中はファイルに格納されておらず、RAM202上にデータが展開されている、あるいはファイルではなくデータベースに格納されていても良い。従って、定義体という文言は、ここでは、1つの項目一覧情報を他の定義情報から区別するための便宜上の用語として使用する。
1つの項目一覧情報を取得したものは、図5のrows500あるいは同等の情報を持つデータ構造で実装される定義体となる。さらに、図4の項目一覧定義においては、“少数”〜“データモデル項目コード”などはHTML画面の情報としては不要である。これらは、データベースとの連携を定義するものなどである。そこで、不要な列の削除を行う。図5のrows500で説明すると、例えば2行目の“−1”〜“@TEXT”などが不要になるので削除する。これらの処理の結果として、図11のfilteredRows1100が取得される。
ここで、画面情報(ビュー)に関連したビジネスロジック、データベースモデルなどが完成していない段階であっても、プレビューHTMLを生成することが可能であるので、柔軟なタイミングで画面を確認し、効率的な開発を進めるという効果を得ることが可能となる。また、プレビューHTML生成のために必要な情報を用いることで、アプリケーション全体をビルドしなくても画面イメージを確認できることにより、ビルド時間の効率化を得ることができる。
項目一覧情報の取得後、入出力定義エディタコントローラ部102は、プレビューコントローラ部811にプレビューHTML生成要求833を行う。
概略として“プレビューテンプレート”という文言を説明すると“プレビューテンプレート”は、項目一覧情報からHTMLのタグの階層構造にマッピングを行うことが可能な、簡易言語であり、プレビューHTML生成部814に保持されている。プレビューテンプレートパラメータ生成部812は、プレビューHTML生成部814に渡すためのプレビューテンプレートパラメータを生成する。
入出力定義エディタコントローラ部102は、まず、プレビューHTMLファイルを生成した後で格納するフルパス名を生成する。ファイル名は、予めユーザにより、プレビューHTML名記憶部821に定義し、プレビューHTML名取得834により取得する。
図10は、本発明の実施形態に係わるプレビューHTMLのファイル保管場所(フォルダ)を指定するユーザ画面を示す図の一例である。このダイアログを表示し、ユーザにHTMLファイルを格納するフォルダ名を入力させる。前記取得したファイル名と合わせ、ファイルのフルパス名が決定する。
さらに、プレビューHTMLを生成するための情報を取得し、データ構成を生成するために、プレビューテンプレートパラメータ生成部812にプレビューテンプレートパラメータ生成要求835を行う。
プレビューテンプレートパラメータ生成部812は、プレビューHTMLの生成に必要な情報であるプレビュープロパティを、プレビュープロパティ記憶部822から取得する(プレビュープロパティ取得836。プロパティの詳細については後述する)。さらにスタイル情報をスタイル情報記憶部823から取得する(スタイル情報取得837。スタイル情報は、HTMLのスタイルシートなどの情報であり、詳細は後述する)。
図9は、本発明の実施形態に係わるプレビューHTMLのプレビュー状態を示す図の一例である。プレビューHTMLタブ900bでは、902にプロパティコードが設定されており、そのプロパティコードに従って、903の各プロパティが読み出され、プレビューHTMLが生成される。プレビューHTMLタブ900aでは、デフォルトのプロパティコード(不図示)を設定している。プレビューHTMLタブ900bのプロパティ903で指定される項目には、例えば“ロール”、(拡張ディレクトリ/)“言語”がある(図9の例には更に“表示データディレクトリ”があるが後述)。
例えば、“ロール”とは、組織の中の役割(役職や職種)を示すプロパティである。アプリケーションでは、本来同一である画面でも、役職などによって表示する項目の制御をすることがある。従って、プレビューHTMLの生成においても、ロールプロパティを設定することで、当該設定に応じた表示する項目の制御を行い、すなわち、同一の項目一覧定義からであっても、ロールによって異なる画面のプレビューHTMLを生成することを可能にするという効果を得られる。
また、(拡張ディレクトリ/)“言語”がある。言語プロパティについては、プログラム自動生成ツールが、英語/日本語などの複数の言語に対応している場合に、いずれの言語でプレビューHTML画面を生成するかを指定するものである。
更に、スタイル情報取得837により、スタイル情報記憶部823から、プレビューHTMLで使用するスタイルシートを取得する。スタイルシートには、ユーザ(開発者)が柔軟に変更可能な部分と、アプリケーション(あるいは、アプリケーション開発を管理するプロジェクト)で固定の部分があっても良い。例えば、文字サイズ、フォント、背景色、線の太さなどの定義である。
以上で、HTMLを生成するためのオブジェクト(入出力フィールド、ボタンなど)の情報は、HTMLの階層構造を反映する階層的なデータ構成、あるいは階層的なデータ構成と置換可能なデータ構成として格納されている。便宜上、前者の「HTMLの階層構造を反映する階層的なデータ構成」を前提として説明を継続するが、いずれの形式であっても、最終的にHTMLに変換可能である、同等の情報を持ったデータ構成であればよい。また、前記データ構造は、オブジェクトの配置や名称(例えば、テキストボックスの配置や「ユーザ名」などのタイトル)は情報として含んでいるが、実際の値(例えばユーザ名が「鈴木一郎」などの値)は含んでいないため、以下の説明では便宜上「プレビューテンプレート」と呼ぶことにする(前述の「テンプレート」と同一のもの)。しかしながら、「プレビューテンプレート」は、値(例では「ユーザ名」フィールドに対応する「鈴木一郎」)をどこに代入すればよいか、という情報は、プレビューテンプレートにパラメータ(あるいは変数)として含まれているものとする。
HTML画面用に定義した項目一覧を、前述のようなHTMLに変換可能な形式に格納し、後述するHTMLに実際に変換することは、プログラム自動生成ツールなどで周知の技術であるため詳細の説明は省略する。
プレビューテンプレートパラメータ生成部812は、プレビューデータ設定部813に対して、前述の「プレビューテンプレート」にサンプルの値を代入するための、プレビューデータ設定要求838を行う。プレビューデータ設定部813は、代入値データ記憶部824からデータを取得(代入値データ取得839)し、「プレビューテンプレートパラメータ」を作成する。
これらの処理結果は、プレビューコントローラ部811に返され、プレビューコントローラ部811は、「プレビューテンプレートパラメータ」に基づきプレビューHTMLを生成するようプレビューHTML生成部814に要求(テンプレートHTML変換要求840)する。要求を受けた、841プレビューHTML生成部は保持するプレビューテンプレートとプレビューテンプレートパラメータをマッピングし、プレビューHTMLを生成する。更に、プレビューHTML表示要求841により、情報処理装置100の表示装置(開発ツールのプレビュータブ)にプレビューHTMLを表示する(図9の画面)。
前述の説明では、代入値データ記憶部824により「値が入ったプレビューテンプレートパラメータ」が作成される、と説明したが、プレビューHTMLタブ900aにおいては、「XXXX・・・」などの意味のない値が表示されている(901a)。これは、代入値データ記憶部824に代入するための情報が定義されているか、による。
具体的には、プロパティ903の“表示データディレクトリ”にフォルダが記載されていない、あるいは記載されていても(例では“C:¥PreviewData”)、そのフォルダ内にデータが格納されていない場合に、デフォルトとしてプレビューHTMLタブ900aの画面が表示される。これらのデフォルト値は、プログラム中にハードコーディングされていても良いし、デフォルト値記憶部(不図示)に保存されていても良い。デフォルト値であっても、例えば入力フィールドのタイプ(全角文字、半角英数字など)により、複数種類用意されていても良い。この場合、項目一覧定義体の各要素において、入力フィールドの定義が明示されている場合にはそのタイプに従う。
一方、代入値データ記憶部824に代入するための値(例えばCSVファイルなどで用意する)がある場合には、プレビューHTMLタブ900bのように、ユーザに分かりやすい(人間にとって意味のある)値を表示させることが可能である(901b)。
以上で、図8のプレビューHTML生成のための機能構成および各機能の呼び出し関係の説明を完了する。あわせて、図9〜図11の説明も完了する。
図12は、本発明の実施形態に係わるプレビューHTMLの生成処理を示すフローチャートの一例である。図12のフローチャートの各ステップは、情報処理装置100のCPU201により実行される。なお、機能構成図(図8)の説明において述べた部分については、具体的な詳細事項の説明を省略する場合がある。
S1201においては、ユーザ操作(101)を、GUI(グラフィカル・ユーザ・インタフェース)における定義画面(プログラム自動生成ツールにおいてプログラムの定義を行う画面)から受け付ける。具体的には、情報処理装置100にて動作しているプログラム自動生成ソフトにおいて、ユーザがプレビュータブ309を選択したイベントを受け付ける。
S1202からS1205の繰り返し処理においては、アプリケーション定義情報の全ての定義体から、プレビュー表示要求対象の画面に関連する情報を取得する。
S1203においては、アプリケーション定義体記憶部から取得する。
S1204においては、S1203で取得した定義体が、プレビュー表示要求対象の項目一覧の定義体であるか判定し、そうであれば繰り返し処理(S1202〜S1205)を抜ける。具体的には、当該定義体が、項目一覧モデル記憶部104から取得したものであり、更に、現在定義中(開発中)の項目一覧定義の定義体であるものを取得する。
次に、S1206からS1209の繰り返し処理においては、前述で取得した項目一覧の定義体(例えば図5のrows500)から、要素を1つずつ取り出し、全ての要素に対して以下の処理を実行する。
S1207においては、項目一覧の定義体(例えば図5のrows500)から、要素(row[i])を1つずつ取り出し、前述したとおり、図4の項目一覧定義における“少数”〜“データモデル項目コード”などHTML画面の情報としては不要な部分を除き、“項目タイプ”、“項目コード”〜“桁数”(図4参照)など、HTML画面のオブジェクトとして必要な情報を抽出する。
S1208においては、S1207で抽出した情報を、filteredRows1100に格納する(要素filteredRows[i])。このように、プレビューHTML生成においては、プログラム自動生成ツールで定義した定義体のうち、プレビューHTML生成に必要な情報のみを利用することで、ビジネスロジック、データベースモデルなどが完成していない段階であっても、プレビューHTMLを生成することが可能であり、柔軟なタイミングで画面を確認し、効率的な開発を進めるという効果を得ることが可能となる。また、プレビューHTML生成のために必要な情報を用いることで、アプリケーション全体をビルドしなくても画面イメージを確認できることにより、ビルド時間の効率化を得ることができる。
S1210においては、プレビューテンプレートを生成し、生成するプレビューHTMLファイルの名前を取得し、プレビューテンプレートに格納する。ここでプレビューテンプレートとは、前述したとおり、HTMLの構造を生成する直前の段階のデータ構成である。即ち、プレビューテンプレートは、HTMLのタグの階層構造にマッピングを行うことで、実際のHTMLを生成可能な情報を含むものである。
S1211においては、生成するプレビューHTMLファイルのプレビュープロパティを取得し、プレビューテンプレートに格納する。具体的には、図9の903において説明した。
S1212は、プレビューHTMLのスタイル情報を取得する。具体的には、スタイルシートの情報である。
S1213からS1215の繰り返し処理は、filteredRows1100の全要素に対して実行される。
S1214においては、filteredRows[i](項目一覧定義の1要素からHMTLの1オブジェクトに対応する表示に必要な情報を取り出したデータ)を、プレビューテンプレートに埋め込んでいく。ただし、S1214の処理が実行されるのは、“ロール”プロパティにより、表示すべきと判断されたfilteredRows[i]のみである。これにより、実質的にはプレビューHTMLと等価なデータ構造ができあがる。この段階で、フィールド部品に表示するユーザデータには値は入っていない。
S1216においては、フィールド部品に、具体的な値は入をいれていく。具体的な値は、代入値データ記憶部824から取得する。代入値データ記憶部824には、例えばCSV形式のファイルなどにより、例えばフィールドの項目名(あるいは項目ID)に対応付けて、その入力フィールドに挿入したい値が定義されている。この値を、前述のプレビューテンプレートの変数パと置き換えていく。
S1217においては、一覧項目の名、型、代入値を、HTMLオブジェクトに変換し、プレビューHTMLファイルに埋め込んでいく。
S1218においては、生成されたプレビューHTMLファイルを、情報処理装置100の表示装置(開発ツールのプレビュータブ)にプレビューHTMLを表示する(図9の画面)。
以上で、図12のフローチャートの説明を完了する。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、本発明におけるプログラムは、図6、図7に示すシーケンス図、図12のフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は図6、図7に示すシーケンス図、図12のフローチャートの処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは図6、図7、図12のフローチャートに示すシーケンス図の各装置の処理方法ごとのプログラムであってもよい。
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
コンピュータプログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク、ソリッドステートドライブ等を用いることができる。
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。