はじめに

Paraselene は Java EE(Web アプリケーション構築)用のフレームワークです。
DB 制御などを含んだフルスタックフレームワークではありません。サーブレット制御と表示部のみの機能を提供します。

このフレームワークは以下のコンセプトで作っています。

プログラムとデザインの分離

このフレームワークは JSP を一切使用しません。フレームワークがプログラムコードに基づいてレンダリングします。
HTML を元にしたサーブレットを構築する事で Web サイトを完成させます。
その HTML にも特殊な記述は極力行いませんので、デザイナーは HTML の知識(またはホームページ作成ツールの知識)があれば問題ありません。
プログラマーと (プログラミング知識のない)Web デザイナーとで完全に作業を分担できます。
通常の HTML と異なる点は、プログラムロジックが必要なタグ(例えそれが<B>タグであっても)には全て name 属性を設定する、という点のみです。
プログラマーはサーブレットコンテナに作成したアプリをデプロイするための知識は必要ですが、サーブレット自体の仕組みや JSP(または各種タグライブラリ) の知識は不要で、純粋な Java の文法と、このフレームワークの概念および API を学習すれば開発を行えます。
ただし、 HTML タグに依存した実装なので、 HTML の知識があった方がよいでしょう。

開発時の記述量をなるべく少なくする

XML 等で、Paraselene 用に何らかの定義ファイルを準備する事はありません。 HTML 自体から得られる情報でフレームワークはサイトを構築します。
HTML で表現できない部分(例えば入力値チェックや DB アクセスなど)をプログラミングしていきます。
また、Paraselene はフレームワークであると同時に、スケルトンソース生成ツールでもあります。
元となる HTML 群から、それらと同じ画面遷移をするプログラムがコーディングなしで完成します。

また、ソースを自動生成する事により、 HTML 情報を enum や メソッドの形で提供し、極力「文字列比較」を排除しています。
これによりプログラマのケアレスミスの多くをコンパイラや IDE が検出してくれます。

DOM(Document Object Model)型のツリー構造

フレームワークは、 HTML 構造を DOM 型構成のツリー状データで管理しています。
HTML ファイルに登場する全てのタグがオブジェクトとして見えており、プログラムからそのオブジェクトを操作する事で、出力時の見た目を変更していきます。
主要なタグは、Paraselene API が提供する専用クラスによりラップされており、 DOM 操作を簡便化します。
プログラムで操作する事が明確なものは、 HTML のモックアップを作る段階で name 属性を設定しておけば、スケルトンソースには、そのタグに直接触れるアクッセサが生成されます。
モックアップが変更されても、スケルトンソースを再作成すればそのデザイン変更に追随します。スケルトンソースは、プログラマが実装するクラスと、デザインを表すクラス(プログラマはソース内容を変更してはいけない)を分離しており、プログラマが作成済みのロジックを上書きする事はありません。
最初は飾り気のない HTML で開発を開始し、途中でデザイナーの手による綺麗な HTML と差し替える、といった開発が簡単に行えます。

エスケープ処理

HTML に記述する文字列は、記述位置により<>等をエスケープする必要が出たり、改行を<BR>とする必要が出たりと文字の置換が必要です。
Paraselene では、これらの置換処理を自動的に行います。プログラム側はこれらの事を意識する必要はなく、プレーンテキストとしてアクセス可能です。

画面遷移の制御

Paraselene は、1つのページ(1つの HTML)を1つのクラスで表現します。
フォームを持つページであれば、サイト利用者が入力した値をページインスタンスが保持しています。
セッションには過去のページが蓄積されており、必要に応じて過去の入力値を参照可能です。
また、ブラウザから直接 URL を入力された、ブラウザの「戻る」を1度行った後に再度サブミットされた、等をフレームワークは検出しプログラム側でハンドリング可能です。
リファラーは全く参照しませんので、セキュリティーソフトが入っている PC からのアクセスでも問題ありません。
POST で遷移するページは自動的に PRG パターンの遷移が行われます。 PRG パターンのコーディングを行う必要はありません。

ユニットテストのサポート

ページインスタンスは単独で new し toString() することにより、その時の HTML 内容を出力させる事が可能です。
この時、サーブレットコンテナ(tomcat 等)は不要で、ページでの単体処理の動作トレースを容易にします。

その他補足

開発者はセッションを自由に使用可能ですが、 Paraselene もセッションを利用します。また、トランザクション追跡のため、フォームに HIDDEN 項目を埋め込みます。
これらは"paraselene"という単語を含む名称ですので、それを避けて下さい。
また、Paraselene と通常のサーブレット・ JSP または他のフレームワークが混在するサイトを構築しても問題はありません。
ただし、画面遷移制御のため Paraselene は URL を記号化しますので、そこは注意が必要です。
GET と POST のみを処理します。ただし、 GET も POST も区別無く処理します(プログラム側はどちらで呼ばれたか確認は可能です)。

最終更新: 2009/10/26
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution 3.0 Unported
文書の先頭へ
SourceForge.JP
2009 © Akira Terasaki.  
Driven by DokuWiki The Apache Software Foundation