やっとDEKEました、使い易い簡単FW。まだ、β版ですが… 第2回
開発のためのFWからは、ちょっと話はそれますが、FWの売りの1つに保守を意識したことにあります。
設定ファイルをなくしたのも、その代わりにアノテーションを利用しなかったのも、ソースからやっている事が一目で解るようにしたかったためです。
アノテーションはソースに直接記述できるため、視認性が高いように思えますが、実際は多種多様なことをアノテーションで補うには、種類が多くなるか、1つのアノテーションに機能を盛り込む必要がでえきます。
それを回避するため、小さいレベルのアノテーションをソースに羅列するようになります。
そうすると視認性が低くなり、またそれを回避するために、複数のアノテーションを1つする機能がうまれたりします。(@Xxxxxが羅列されているのが見やすいと考えるかどうかは主観によるのかも知れないけど…)
これも一見すっきりして見えるのですが、アノテーションを見ただけで何をやっているのか、全て理解できるの?って思ったりしちゃうのです。
誤解を恐れずにいえば、アノテーションによってブラックボックス化していくのでは???ってことです。
そんな思いもあり、FWでは、アノテーションを利用しませんでした。
もともと、FWはServletベースのFWなので、単純に稼動させるには設定ファイルは不要だったっていうのもありますが、画面入力値のViewクラスへのセットや、validationは、素直にソースを記述(自動生成あり)したほうが解りやすいと考えていたので、Controllerのメソッドに直接記述する方式をとりました。
以下にControllerソースの例を記述します。
【例】Hoge.htmlの「input type="button" name="doSubmit"」を押下した場合のController
HogeController.java
public class HogeController {
private EzSession session;
private EzRequest request;
private EzResponse response;
// Hoge.htmlのボタン「doSubmit」が押下された時に呼び出されるメソッド。
public void doSubmit(Hoge hoge) {
// Hoge.htmlの入力値をHogeにセットします。
valueSet(hoge); ← 画面の入力値をViewクラスにセットしています。
// Hoge.htmlの入力値妥当性検査を行ないます。
// エラーがあった場合は後続処理を行なわずにHoge.htmlにエラーを表示します。
validate(hoge); ← 画面の入力値の妥当性検査を行なっています。
// ビジネス・ロジックを記述します。
.
.
.
// 画面の遷移先VeiwクラスをEzResponseにセットします。
Next next = new Next();
response.setPage(next);
}
}
上記のソースをみてもわかるとおり、入力値のセットおよび妥当性検査のロジックは共に1行ですみます。
こうすることにより、Controllerソースのメソッドを参照するだけで、何をしているかが一目瞭然になります。
ここで重量なのが、特別な記述が何一つ無いことです。通常のJavaソースが書ける人であれば誰でも解読可能という点が大事。
実はViewにHTMLを採用したのも、"モックHTMLの再利用"、"JSPの知識不要"の他に"ロジックを記述しない(させない)"ことで、保守性を高める意味もあったりするのですね…(^^)