ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ドキュメント見直し

良く使われると思われるドキュメントを見直しました。
http://homepage3.nifty.com/seasar/DIContainer.html
http://homepage3.nifty.com/seasar/aop.html
http://homepage3.nifty.com/seasar/testtech.html
http://homepage3.nifty.com/seasar/s2dao.html
すべて、概要、リファレンス、Exampleの3部構成になっています。
どうでしょう。2chの人。
後、これに、四択の問題集が加わります。

ドメインロジックとSQL

トランザクションスクリプトとは、P of EAA の中で私が作ったパターン名である。リクエストによって処理を行う手続き型のパターンのことだ。プロシージャは必要なデータをすべて読み込み、メモリ上でどの月が必要なのかを探し、それから処理を行うことになる。

ってのが、TransactionScriptなら、くーすとTransactionScriptは、全く違います。
Fowlerは、データベースからデータを取ってくるロジック(SQL)をどんな場合でも同じ物が使えるということに価値を見出しているようです。次のように。

このドメインオブジェクト上であれば、どんな処理でも同じ読み込みロジックが使えるというわけ。つまり、小さなドメインロジックがもっとたくさんあっても、それぞれに読み込みロジックを実装する必要はなく、コードの長さがそこで相殺され、結果的に何ら問題にはならないわけだ

くーすでは、業務ごとにニーズなんか違うんだから、それぞれの業務ごとに、SELECT文は、最適化したものを使います。ある意味、SQLにロジックが埋め込まれているわけですが、RDBMSを使ってパフォーマンスを稼ぐには、それが一番だと思っているわけです。
これが、ドメインオブジェクトではなく、DTOを使うということにもつながってきます。
http://d.hatena.ne.jp/higayasuo/20041010#1097399686
ただし、SQLを毎回手動で書くかというとそれは別で、かなりの場合、S2Daoが自動生成してくれるでしょう。
リソース層にRDBMSを使う限り、SQLの知識は必須です。デザインパターンやP of EAAの習得には熱心だけど、SQLには興味ないなんて人がいるなら、知識のバランスにかけてます。
現場で役に立つということで考えると、まずはSQLを勉強することをすすめます。


後、Fowlerがいってるから正解というのも間違ってます。きちんと、どうしてそれが良いのかを自分なりに説明できるようになるべきだと思います。そうでないと、人は説得できません。

TransactionScriptとくーすの違い

TransactionScriptが、扱うデータを一度に読み込み、ループでまわして、必要なものをセレクト、ということなら、くーすは違います。
最初から、SQLで必要なデータの必要な項目に絞って取得するからです。
Fowlerの言っているリッチなSQLですね。
SQLにロジックを埋め込むのと引き換えに、パフォーマンスを得ているわけです。
ドメインモデルを使うと、バウンダリ(画面)とデータをやり取りする場合に、DTOドメインオブジェクトの相互変換を行わなければいけないため、コストがかかりすぎると思っています。
バウンダリで、直接ドメインオブジェクトを使うのも、かなり困難だと思います。

Flex VS Biz/Browser

アクシスさんにBiz/Browserの説明をしてもらったので、その感想。

  • Bizは、CSSが使えない。
  • Bizは、gifが使えない。まじ?。jpeg,png,svgのみ。

デザイナにデザインしてもらうのは、ちょっと厳しい。イントラ向き。


Bizは、

  • サーバサイドとの連携は、HTTPのrequest,response形式で、メソッドごとにサーブレットを用意する必要がある。
  • JavaBeansや配列にマッピングできない。

サーバサイドとの連携では、ほぼ、制限がなく、そのままコンポーネントのメソッドを呼べるFlexと比べて、大きく劣りますね。開発効率に大きく差が出ます。


Bizは、クライアントへのモジュールの配布は、なんとタイムスタンプのチェックによる自動配信なしで、クライアントでコーディングしてバージョンチェックをする必要があるとのことです。Flexは、JSPと同様にタイムスタンプによる自動チェックができます。


Bizは、GUIに関係のないクラスは作れないそうです。FlexはほぼJavaと同様。追記:GUIに関係のないクラスも作れるそうです。


Bizのカスタムコンポーネントは、プロパティを設定できないそうです。ほんとかなぁ。位置や大きさは変えられるとのこと。出来上がりの形でコンポーネントを設定しておく必要あり。ここでいっているカスタムコンポーネントとは、標準のコンポーネントを拡張したものです。コメントによると全く出来ないわけではなさそうです。


Bizは、スタンドアローン形式なら、自由にローカルデバイスにアクセスできると思っていたのですが、違うそうです。特定のディレクトリでないとアクセスできない。特定のディレクトリのサブディレクトリにはアクセスできます。
IEで、HTMLのobjectタグで、指定したActiveXと基本的な型(文字列など)を使えば、やり取りできるそうです。それ以外は、できない。
Flexの場合は、ローカルにSocketServer立てて、XMLSocket使えばなんでも出来ます。


BizはIMEの制御が出来ます。Flexはできない。これは、Flash Playerの次のバージョン待ち。


Gridは、列固定やドリルダウンなどFlexより高機能です。


Bizのファンクションキーの扱いは、ブラウザのプラグインの場合、Flexと同様。スタンドアロンの場合は制限がありません。


クライアントへのプラグインの配布は、手動でやらなければならず、Flexより面倒です。


読んでる人は、私がFlexびいきなので、割り引いて読んでください。(^^;