Ｗｅｂロボジェイピー®Ｓｔｒｕｔｓ版について

株式会社ユーサイドシステム

1目次
1Web ロボとは.......................................................................................................................................3
2Web ロボの技術的立場と役割...........................................................................................................3
3Web ロボの性能.................................................................................................................................4
4Web ロボ利用のメリット.......................................................................................................................75 実行環境条件...................................................................................................................................86 生成部品...........................................................................................................................................87 プログラムパターン..........................................................................................................................138 信頼性について..............................................................................................................................159 差込機能.........................................................................................................................................162

1 Web ロボとはWeb ロボは、３０にのぼる業務用システムアプリケーション開発に必要なロジックパターンの定義プログラムを用意し、定義プログラムが要求する項目につい て登録することにより、Java のＳｔｒｕｔｓフレームワークに対応する Web システムのソースを自動生成するシステムです。
実行に必要なすべての部品を生成し、ほぼそのままでも実行することが可能です。
これまでの、各種ツール、フレームワークに例を見ない、画期的でまさに Web ロボのネーミングにふさわしい、Web 開発のロボットと言っても過言でありま せん。最低の定義で、最高の自動生成を、「定義＝プログラム」の理想を追求しております。
プログラム生成自動化の歴史は今にはじまったものではなく、これまで多くのトライがありましたが、多くは失敗に終わり、日本のソフト業界においてはジェネ レーター、自動化という言葉はマイナスのイメージでとらえられ、そのトラウマにとらわれており、結局あいかわらずの手組みでの開発が主流になっておりま す。
弊社は、物作りがロボット化によって日本の高賃金を克服しているように、ソフト産業においても、オフショアに現象されている高コストをソフト開発のロボッ ト化によって克服すべきであるとの思いで、これまでのトラウマにあえて挑戦しております。

2 Web ロボの技術的立場と役割
この十年のコンピュータの技術的潮流の変化は、極めて激しく、コンピュータに携わるも のにとっては戸惑いを隠せません。
Web ロボを開発してきた私どももこの間、こうした変化にどのように対応していくべき なのか、どの技術を選択して新たなこれからのシステム開発に関わっていくべきかに悩ん でまいりました。
パソコン及びインターネットの普及を前提とする時、これからのシステム開発のインフラ 技術はWeb システムであろうと結論しております。
さらに、Java をベースとしたオープン系か、．ＮＥＴをベースにした WINDOWS 系でいくかの選択肢がありますが、より技術的なフリーハンドを担保するためには、Ｊａ ｖａをベースにすべきものと結論いたしました。
その結論の結果として、必然的にグローバルスタンダードの地位を得つつある、Ｓｔｒｕ ｔｓを基本フレームワークとして選択いたしました。
次に作表技術とリッチクライアント技術の選択という課題がありますが、作表はほぼＰＤ Ｆが一般的なものとなりつつあり、Web ロボも迷わず PDFLIB を利用しての PDF での作表を選択しております。
最後に残った大きな問題として、リッチクライアントをどのように実現すべきかがありま す。
私どもの考え方として、Web システム構築に際しては極めて多くの技術を駆使しなくて はなりませんが、出来れば言語的には Java に限定できないかと考えております。
オープン系の問題点とし、GUI 技術が WINDOWS に遅れをとっており、今後この分 野でより技術開発をすべきことと、リッチクライアントを GUI の課題ととらえるべきと の観点からも、アプレットでリッチクライアントを実現すべきと考えております。
最近Ａｊａｘが取り上げられておりますが、リッチクライアントについてはこれまでも、 いろいろ取り上げられてきましたが、まだ確立したものになっておらないのが現状です。
アプレットの問題点としてスピードがありますが、これまでのコンピュータシステムの 歴史を振り返えれば、スピード、容量の問題の解決こそがコンピュータの歴史であり、ス ピードの問題も早晩解決するものと思われ、リッチクライアントを GUI ととらえる限り 私どもはアプレットを選択すべきとの3

立場でおります。
Java のバージョンアップでも、Ｓｗｉｎｇのパフォーマンスの改善がテーマにもなっ ており、スピードアップが期待されます。
これからも、ますます新たな技術的な提案がなされ、それらの見極めに多くの時間を割か ざるを得ない宿命をコンピューター業界は背負っておりますが、しっかりした技術ベース を前提にしていきたいと考えております。なぜなら、システムは技術のはやりすたりに合 せて作り変えるものではないのですから。
基本的には、安定的で使いやすく、コスト負担が少なく、システム保守がしやすいという ことがユーザーの要求条件であり、それに応えることが Web ロボの役割と認識しており ます。
もうひとつの問題として、日本において自動生成の是非についての議論があります。 いわく、自動化によってプログラム技術のレベルが低下する。
いわく、現場作業的なプログラム技術はより賃金の安いオフショアにまかせ、日本では上 流工程のシステム設計に力点をおくべきである。
後者に対しては、ソフト産業の技術は、設計技術とプログラム技術双方が必須であり、プ ログラム技術を失えば、必ず技術的空洞化を起こすことは明らかです。
前者に対しては、定型的なプログラムは自動的に作成すべきで、それによってより効率よ く、安定した品質のソフト開発ができるのであり、生産性をあげ付加価値をたかめること が、ソフト産業にも求められております。又、極めてハードルが高い JavaWeb シス テム技術を自動生成されたソースより技術習得することによりそのハードルが下がり、よ り革新的なことに人的な資源を投入することが可能になります。

3 Web ロボの性能
自動化プログラムの性能評価をする場合以下の要素があげられるものと思います。
1. 簡便性
いかに簡単な定義で、いかに完成品に近いプログラムを生成するかの点ですが、下記のような PDF による売上一覧表の例でご説明します。

上記プログラムのプログラム表題定義では、下図のようにプログラム名、タイトル名、プログラムパターン、ページ行数、主テーブル名、SQL 関数、次プログ ラム等のプログラム全体
4の定義をします。

プログラム詳細定義では、表題部の出力項目、明細部の出力項目とその行列番号、合計計算項目、キーブレイク項目を定義しています。
たったこれだけの定義で、上記の PDF での罫線入りで、合計入りの売上げ一覧表プログラ
ムが作成されます。他パターンでもほぼ同様の定義です。

5

2. 柔軟性及び自動化率
簡便性と自動化率は本来、矛盾するものですが、Web ロボではパターン化と関数の差込機能によりこの矛盾を解決しております。
小部品を関数として定義し、それを各所で差し込みすることにより、又利用者が用意した独自クラスのインポート機能により柔軟性を担保し、高い自動化率を獲 得することを可能にしています。
又、画面設計においては、画面作成ツールで作成されたＨＴＭＬは、Ｓｔｒｕｔｓのタグを差し込むことによって、Web ロボに簡単に取り込み出来ます。
3. 汎用性Web ロボは、オープンな開発環境である Java 言語で、Ｓｔｒｕｔｓといグローバルスタンダードなフレームワークに対応したプログラムソースを生成しま す。
Java はオープンと言いながら、独自なフレームワークでは他のフレームワークとは共存できず、汎用性を失いかねません。Web ロボがＳｔｒｕｔｓを選択 した理由がここにあります。
又、万一別なフレームワークであっても、Web ロボはソースの生成であり、大半の生成 Javaクラスはそのままでも利用することが可能です。
データベースもＭｙ SQL、Ｐｏｓｔｇｒｅｓ、Ｏｒａｃｌｅ、SQL サーバーに対応しております。
4. 信頼性Web ロボは、例外処理を考慮したプログラム生成、SQL インジェクションに対応したプログ
6

ラム、権限管理機構、PDF のパスワード機能を利用した文書管 理機構等、信頼性に配慮したシステムを提供することが可能です。
5. 難易度
合計処理機能を持った PDF、下記の複雑な PDF 帳票、コード検索のウインドウが開くアプレット、伝票形式でのアプレットプログラムなど難易度の高いプロ グラムを作成することが可能です。

4 Web ロボ利用のメリット
1. 最低一人は全技術につての知識が要求されますが、その指導のもとで Web ロボの定義
ルールを理解することにより、コンピュータについての 知識がない方をも即戦力化することが出来ます。
一方、ＣＯＢＯＬ等の言語に堪能でシステム経験が豊富な年齢の高い世代が、Web、Java等の新技術への対応ができずにおりますが、Web ロボはその世 代の再活用を可能にし、若い世代の業務知識、経験の不足を補う大きな役割を果たすことが出来るようになります。
又、極めて簡単な定義作業で、プログラム作成が可能ですので、大変高い生産性が獲得できます。
2. 一から Java、Ｓｔｒｕｔｓ、JSP、Java Ｓｃｒｉｐｔ等々の技術習得は極めて困難ですが、Web ロボにより生成されたプログラム により、それらを理解する方が容易で近道となります。
Web ロボでは、定義用プログラム、自動生成プログラム及びアプレットの基本プログラムを除いて、すべてのソースを見ることが出来ます。
Web ロボは教育ツールとも言えます。
3. ますます複雑化するプログラム開発ですが、手組みをする場合はどのようなルールを作っても部品構成の統一化をはかることは困難となり、全 体の体系及び個別プログラムの解析は厄介なものとなります。
Web ロボではすべての部品を自動生成しまので、それらの部品構成は Web ロボの生成ルールに則りますので同じものになり、又同じプログラムになります。
従って、システム及びプログラムの管理は極めて容易になります。
4. Web プログラム開発は、セキュリティー対策についても多くの配慮が要求されますが、手組
7

みによる場合、個人の能力知識に格差があり、す べてのプログラムに細かな配慮をすることは、至難の業と言わなければなりません。
Web ロボが用意するこれらの配慮が、すべてのプログラムに自動的に施されます。
5. システムの開発には必ず仕様の変更が伴います。
手組みの場合、それまで作られた部品の見直しと変更が要求され、そのために要する工数は極めて大きなものにならざるを得ません。
しかしながら、完全な仕様を詰めるためには、多くの時間を要するだけでなく、不可能に近いものがあります。又、下流工程を待たせることになります。
Web ロボでは、仕様の変更になった部分の定義を変えるだけの作業ですみますので、仕様変更による負担は軽微なものになります。
場合によっては、プロトタイプを作りながら仕様の決定をしていくことも可能です。

5 実行環境条件
PDF ツール

PDFLIB 正規版

データベース

PostgreSQL／MySQL／Oracle／SQL サーバー等

Web サーバー

Tomcat

フレームワーク

StrutsJava 環境Java J2SDKEE

6 生成部品
Web ロボは、テーブル定義、プログラム表題定義、プログラム詳細項目定義、関数定義より、下記
Ⅰ図のようにＳｔｒｕｔｓに対応した実行に必要な部品をす べて生成します。
３０を超えるロジックパタンを用意し、そのパターンに必要な要素を定義するプログラム用意することにより、簡単に厄介な Web システムを自動作成します。
① テーブル定義よりは
テーブル生成 SQL、テーブルビーン、テーブルアクセスのメソッドクラス、標準 SQL クラス、バリデーター xm ｌ、テーブルアクションクラス（アプレット 用）② プログラム表題定義よりはマッピング xm③ プログラム詳細項目定義よりはフォーム xm ｌ③％関数定義よりは定義 SQL クラス、複合テーブルビーン、複合テーブルアクセスメソッドクラスが自動生成されます。
更に、テーブル定義、プログラム表題定義、プログラム詳細項目定義、関数定義より、アクションク
ラスプログラム編集クラス、JSP プログラム、アプレット プログラム（アプレットパターンの場合）が自動生成され、実行に必要なすべての部品が用意されます。
8

1. JSP パターンでのテーブルアクセス関係部品構成
Ｓｔｒｕｔｓも、一般的なＭＶＣといわれる部品構成の手法をとっておりますが、Ｓｔｒｕｔｓに対応しても、部品構成の考え方は統一がとれません。従って、 部品化が進めばすすむほど、又システムの規模が大きくなればなるほど、システムの把握は困難になってまいります。
Web ロボにおいては、下記Ⅱ図のように極力部品の機能を明確にして、仮に生成部品に変更が生ずる場合、局所化するための部品構成を取っております。
クラスの部品構成としては、アクションクラス、編集プログラムクラス、SQL 編集クラステーブルアクセスメソッドクラス、テーブルビーンという階層クラス で構成されます。
2. アプレットパターンでのテーブルアクセス関係部品構成
JSP パターンの部品構成とアプレットでの部品構成は異なります。
Web ロボでは、アプレットで必要になる下記ⅲ図のようなテーブルアクセス関係部品をすべて自動生成します。
JSP との大きな違いは、アプレットにおいては編集プログラムクラス、SQL クラスを介さず、アプレットプログラムの中で直接 SQL 文を編集して、テーブ ルアクションクラスを起動して、テーブルアクセスメソッドクラスよりテーブルビーンという流れでの処理になります。
尚、アプレットプログラムの呼び出しは、アクションクラスを介して JSP プログラムを呼び出しJSP プログラムより、アプレットを呼び出しという流れにな ります。
従って、アプレットプログラムにおいても、アクションクラス、JSP プログラムが生成されます。

9

i 図：Web ロボ部品生成概念図

10

ii 図

11

iii 図12

7 プログラムパターン
パターン及び定義の特徴として、以下のような点をあげることができます。
1. 出力は PDFLIB なるライブラリーを利用して、罫線の自動生成を行います。
2. 一覧表おいては、合計項目及びキーブレイク項目の指定により、簡単に合計処理ができます。
3. アプレットプログラムが極めて簡単な定義で、自動生成されます。
特に、アプレットの場合は伝票形式での複雑な入力、ウインドウを開いてのコード検索が簡単に開発出来ます。

4. アプレットプログラムの場合、項目前の条件により項目をスキップしたり、入力後にテーブルを読んでマスター項目を表示したり、項目チェック をすることが可能です。
5. MRDB の帳票定義機能を利用して帳票設計し、その座標値を Web ロボに取り込みすることにより、下図のような極めて複雑な帳票についても 対応が可能です。

13

パターン名パターン内容

登録

区分
JSP

保守

JSP

通常の修正、削除をするパターン。

メニュー

JSP

メニュー画面のパターン。

一覧閲覧

JSP

一覧表形式でのデータ閲覧パターン。

明細表示

JSP

明細形式でのデータ表示パターン。

ログイン

JSP

ＩＤ、パスワードの入力によりログインするパターン。

検索画面

JSP

検索条件を入力する画面のパターン。

座標登録

JSP

座標をマスターに登録するパターン。

マップリンク

JSP

座標をクリックして、その値を検索するパターン。

アップロードJSP

写真、画像等をサーバーにアップロードするパターン。

Jtable 入力

Applet Ｊテーブル形式（表形式）での登録パターン。

Jtable 保守

Applet Ｊテーブル形式（表形式）での修正、削除パターン。

暦入力

JSP

カレンダー形式での入力をするためのパターン。

予定登録

JSP

予定表の登録パターン。

メール送信

JSP

メールの送信するパターン。

データ更新

JSP

データーの更新処理をするパターン。

インポート

JSP

外部のテキストデータをデータベースにインポートするパターン。

エクスポートJSP

データベースより外部テキストデータにエックスポートするパターン。

ファイル整理JSP

データレコードのないファイル削除パターン。

PDF 一覧JSPPDF での一覧作表パターン。

PDF 詳細JSPPDF でのレコード詳細作表パターン。

Applet 通常登録

Applet アプレットでの、通常での登録パターン。

Applet 通常保守

Applet アプレットでの、通常での保守パターン。

Applet 一覧

Applet アプレットでの、一覧表示パターン。

Applet 伝票登録Applet アプレットでの、１レコード複数行での伝票形式登録パターン。

Applet 伝票保守

Applet アプレットでの、１レコード複数行での伝票形式保守パターン。

ファイル出力

JSP

ファイルへのレコード出力パターン。

レコード削除

JSP

レコードを削除するパターン。

一括更新処理JSP

個別定義した更新系プログラムの一括処理パターン。

Applet 検索画面

Applet アプレットでの検索画面タイプ。

MRDB 詳細 PDF

JSP

通常のデータ登録パターン。

MRDB の詳細帳票定義利用パターン。

14

MRDB 一覧 PDF

JSPMRDB 一覧表帳票定義利用パターン。

8 信頼性について
1. SQL インジェクション対策
JSP プログラムの場合
ＰｒｅｐａｒｅｄＳｔａｔｅｍｅｎｔ対応のプログラムを生成します。
アプレットプログラムの場合
ｒｏｂｏＸフォルダーの SQLInjectionEscape クラスにおいて’及び￥などの SQL の特殊文字について Escape 処理するクラスを用意し ています。
SQL 文の編集において文字項目の場合、下記のような処理をします。
sb.append(",'"+SQLInjectionEscape(get$varh("jyusyo"))+"'");
尚、使用するデータベースによってエスケープする文字がかわりますので、適宜、SQLInjectionEscape クラスを手直しします。
SQL インジェクションについては、警察庁のホームページをぜひご覧下さい。
（http://www.cyberpolice.go.jp/server/rd_env/PDF/20060330_SQLInjection.PDF）
2. 例外処理機構
Web ロボにおいては、各クラスにおいて適切な例外処理をするようにこころがけております。
例外が発生した場合、ｒｏｂｏＸフォルダーの SystemExceptionHandler において処理内容を定義するようにしております。
適宜、このクラスを修正して適切な処理をするようにします。
最終的に、JSP ホルダーの Exception.JSP によりクライアントへメッセージ表示をしております。
適宜、この JSP を修正して適切なメッセージを表示するようにします。
3. フォームへの入力チェック
テーブル定義よりＶａｌｉｄａｔｉｏｎ．xm ｌを生成しますので、Java Ｓｃｒｉｐｔでの入力チェックをしますが、更にアクションクラスにおいてもテー ブル定義で定義したチェック内容を自動的にチェック文として自動生成します。
チェック項目の詳細はテーブル定義を参照してください。
尚、要望によりチェック項目は順次増やしていきたいと考えております。
4. 認証及び権限管理機構① ＵＲＬチェック表題定義において、ＵＲＬチェックをＹＥＳに設定することにより、メニューを通さないアクセスを拒否することが出来ます。
② パスワードチェック
表題定義において、ログインチェックをＹＥＳに設定することにより、ログインせずに、アクセスすることを拒否することが出来ます。
③ 権限管理テーブル
権限管理テーブルを利用することにより、権限ファイルへのプログラム名と権限Ｎｏの設定により、プログラム単位にアクセスの可否を設定することが出来ま す。
④PDF 帳票によるセキュリテーシステム
PDF での作表の場合、権限ファイルへプログラム単位に、パスワード設定の有無と PDF の15パーミッションを設定することにより、下図のように自動的にパス ワードと操作制限の設定することが出来ます。

9 差込機能以下の差込機能の利用により、極力プログラムの変更を回避することが出来ます。
1. 関数による差込機構
＠関数：クラス化しない Java 記述文を定義します。
これを、詳細項目定義の画面出力文、テーブル出力文アプレットの場合の入力前文、入力後文で使用します。
％関数：SQL 文を関数として定義し、共通部品化します。
JSP プログラムの表題定義のＷＨＥＲＥ句で使用します。
Applet プログラムにおいては、％関数を使用せずに表題定義及び詳細定義のＷＨＥＲＥ句ないし、表題定義の SQL 文詳細定義において、直接 SQL 文の 編集をします。
％関数より、複合テーブルのテーブルビーン及び複合テーブルアクセスメソッドクラスを生成します。
2. Java クラスの登録によるｉｍｐｏｒｔ文の生成関数定義、画面出力文、テーブル出力文、入力前文、入力後文、SQL 文詳細定義、チェック文定義、レコード項目定義において、独自に用意したクラスを使用 する場合、そのクラス名とｉｍｐｏｒｔフォルダー名を登録することにより、自動的にＩｍｐｏｒｔ文を生成し、プログラムの変更を回避します。
3. SQL 文詳細定義
アプレットの場合、ＷＨＥＲＥ句では定義しきれない SQL 文をここにおいて定義することができます。
4. チェック文定義
テーブル定義では出来ない相関チェック等の細かな入力チェックをここにおいて定義することができます。

16