ひがやすを技術ブログ

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

2004-06-01から1ヶ月間の記事一覧

SpringにAspectJを統合

SpringにAspectJを統合 本家のSpringframeworkのメーリングリストにて、ロッドジョンソン氏による、SpringとAspectJの統合についてのメールが流れた。 SpringのAOPは使いにくいと思っていたので、AspectJとの組み合わせは、 良いアイディアだと思う。 ただ、…

アフォなコード

アフォなコードを書く人はそれをアフォなコードだと思っていない事が多いハズなんです。で、それはアフォなコードだよって教えてあげても猛烈な反発が ダイコン時代では、インターフェースと実装が分離され、 設計の段階でインターフェースがきっちり決まっ…

からさわぎ in 福岡

S2

アジェンダ からさわぎOpening ダイコン白書(導入編) ダイコン白書(基本編) ダイコン白書(AOP編) ダイコン白書(アーキテクチャ編) ダイコン白書(開発手法編) で考えてます。 開発手法編が今回の目玉で、日記で書いたことをもう一度まとめなおしたい と思って…

1:Nの実装案(考慮中)

1:NはS2Daoとして実装し、必要のない人は使わなければ良いし、 必要のある人は使えば良いんだと考えることにしました。 ニーズがあることには対応します。 実装案は考慮中。 以下の例はDepartmentにemployeesというプロパティがある場合です。 public static…

1:Nの実装

1:N はどう実装するのが正しいのだろう? エンティティ型に ASPECT して、N の DAO 呼ぶ? 1:Nは、N側のDaoを呼ぶでいいジャンと思ってるのだけど、だめかしら。 クライアントで、N側のデータを必要とするとき、クライアント側で SQLが発行されないように、…

S2DaoEA1 S2.0.10 リリース

S2

S2.0.10 http://prdownloads.sourceforge.jp/seasar/10039/S2.0.10.jar リリースメモ MockInterceptorを追加しました。 修正点 setHoge(int),setHoge(String)などのような場合に、プロパティと認識しないようにしました。 S2DataSetでbyte[]の比較に失敗して…

マニュアル完了

これからリリース準備に入ります。

テスト完了

これからexampleとマニュアルの作成に入ります。

ダイコン時代の設計手法 - 奇妙なクラス抽出法

オブジェクト指向やモデリングの本でこのような文章をみたことがないだろうか。 クラスを抽出するためには、ユースケースから名詞、動詞を まず抽出します。名詞はクラス・属性の候補になり、 動詞は操作や関連の候補になります。書いてあることは間違ってな…

S2Dao EA1のリリース予定

S2Dao EA1のリリース予定は、6/26 or 6/28,29,30のいずれかになる予定です。 機能としては、2Way SQL(コメントによる動的SQLを含む)までで、 SQLの自動生成はこの後のバージョンでの実装になります。 コメントによる動的SQL static定数によるアノテーション …

ダイコン時代の設計手法 - クラス図なんて要らない

ほぼ、クラス図不要論とおなじなのですが、自分の意見を書いておきます。 ドメインをデータと振る舞いの点から考えてみたいと思います。 データはどのように永続化するのかが最も重要です。 RDBMSを使う限りはRDBMSに適したようにモデリングしたほうがいい。…

ダイコン時代の設計手法 - Logicがない場合

これは、UI仕様書(Validationつき)とエンティティ仕様書とを明示的に関連づけてしまい(一枚にできないか)、バウンダリからサービスを経由しないで(デザイン的にはスルーして)S2Daoをたたくことで実現できる(Excelでうんぬんを突き詰めたい)。 これまで…

ダイコン時代の設計手法 - 内部設計

バウンダリに関しては、UI層のフレームワークに合わせた 内部設計書を作成します。 とりあえず、必要だと思われるのは、UI層のコントローラ (例えばStrutsのAction)のコンポーネント定義です。 UI層のコントローラは、ロジック層のクラス(interface)に依存し…

ダイコン時代の設計手法 - 外部設計

外部設計のインプットデータは、業務フローです。 業務フローごとに外部設計を行います。 ユーザにレビューしてもらえるのは、外部設計まで。 気合を入れます(笑)。 業務フローの中で、既にバウンダリが洗い出されているはずなので、 それらをもとにロバスト…

ダイコン時代の設計手法 - 外部設計に必要なもの

ダイコンの守備範囲は、外部設計以降なのですが、外部設計をするために 最低これだけは必要になるだろうと思うものを書いておきます。 逆にいうとこれらが決まらずに外部設計にはいっても、 結局待ち状態に入り、プロジェクトは迷走をし始めるでしょう。 デ…

ダイコン時代の設計手法 - PetStore(1)

http://www.javagen.com/petstore/ を例に考えてみます。 私は正直言うと http://examples.macromedia.com/petmarket/store.htmlのほうしか しらないので細かいところは若干異なるかも。 最初は、「カテゴリを表示する」です。 5つの動物がカテゴリです。 最…

ダイコン時代の設計手法 - FDD

FDDはFeature Driven Developmentの略でシステムがユーザに提供する価値を Feature(ユーザ機能)に分解してユーザ機能ごとに開発していきます。 ユーザ機能とはで表現されるものです。 なんじゃいそりゃー。VO(動詞 + 目的語)。「〜を〜する」で表現される も…

ダイコン時代の設計手法 - ユースケースなんていらない

http://d.hatena.ne.jp/akon/20040620#p3やそのコメント http://d.hatena.ne.jp/higayasuo/20040620#1087744106 http://d.hatena.ne.jp/habuakihiro/20040621#1087747725 とやり取りしていたのですが、お互いいってることが微妙にずれる。 ユースケース、FDD…

S2Dao入門(1)

S2Daoではエンティティのクラスを作成するために2つの方法が提供されます。 Excelにテーブル定義を書いて、DDL, エンティティのソースを書き出す。DDLを直接データベースに適用することも可能。 作成済みのテーブルのメタデータよりExcel、エンティティのソ…

ダイコン時代の設計手法 - ユースケース分析

ユースケースの管理単位は、画面系なら関連のある複数の画面の組み合わせ、 帳票系なら1帳票、バッチ系ならジョブネット。 ユースケース単位に、ロバストネス分析を行って全体構造を把握します。 ロバストネス分析を行うときにもっと重要なのがコントロール…

ダイコン時代のオブジェクト指向

従来のオブジェクト指向では、クラス・継承・多態性などを学んでも、 結局、実プロジェクトにどうやって活かしたらよいのか、 よくわからないというのが実情だったのではないでしょうか。 デザインパターンなども実際のコードに生かせるのは、 業務システム…

ダイコン時代の設計手法 - 作業待ちの回避

ここでいう作業待ちとは、前工程が決まらないために 後工程の人が遊んでしまう状態のことです。 作業待ちが起こると工数的なダメージがあるばかりではなく、 開発者のモチベーションも下げてしまいます。 仕様と実装を明確に分離し、仕様を先につめるように…

ダイコン時代の設計手法 - ロバストネス分析

ユースケースが正しいことを検証する、あるいは さらに詳細な設計をする前の準備として、 ロバストネス分析は役に立つと思います。 ロバストネス分析とはユースケースの登場人物を バウンダリ、コントロール、エンティティに分類して その関連を分析するもの…

ダイコン時代の設計手法 - UI層のコントローラ

UI層のコントローラは、コントローラのコントローラ (StrutsのActionServletなど)とユースケース固有のコントローラ (StrutsのActionなど)があると思います。 ここで取り上げるのは、ユースケース固有のコントローラです。 コントローラの役割は以下のような…

MockInterceptor

S2

アドバイスをふまえ次のように考えてみました。 interface Hello { public String greeting(); } <component name="helloMockInterceptor" class="org.seasar.framework.aop.interceptors.MockInterceptor"> <property name="value">"Hello" </component> <component class="Hello"> <aspect>helloMockInterceptor</aspect> </component>戻り値はvalue…

ダイコン時代のテスト技法 - 単体テスト

UI層は、自動テストは行わない。目視でのテスト。 これまでの経験だとUI層のテストを自動化しようと すると、労力の割にはえるものが少ない。 テストのために必要なサービス層の実装は、MockInterceptorで 組み込みましょう。 サービス層は、もちろん自動テ…

MockInterceptor

S2

テストのためのモックの作成すらも不要にするMockInterceptor。 例えば次のようなインターフェースがあるとします。 interface Hello { public String greeting(); }テストのためのダイコンファイルを定義します。 <component class="Hello"> <aspect> <component class="org.seasar.framework.aop.interceptors.MockInterceptor"> <arg>"Hello" </component> </aspect> </component>MockIntercep…

S2Dao, S2JDBC

S2

S2Daoは、O/Rマッピング(ORM)の部分とDAO(SQLの自動・手動生成)の部分に 分かれるのですが、そのうちORMの部分はS2JDBCに組み込まれます。 S2Daoの機能としてアナウンスしていたフィールドメタデータは、 S2JDBCレベルで利用可能だということです。 これまで…

Kijimuna(まさたかさん版)

S2

RC2にしたらきちんと動くようになりました。 M9では動かないような気が。 以下報告。 property,argなどのバリデーションで、 longのものにintの値を割り当てるときにProblemになります。 ほんとは大丈夫なはず。 OGNLの@examples.jdbc.Employee@classがうま…

ハリウッドの原則

「Don't call us. We'll call you.」 ダイコン時代になると役者がプロデューサーを呼び出さないのは もちろんのこと、プロデューサーも役者を直接呼び出したりはしません。 企画書(ダイコン定義ファイル)に書いてある役(インターフェース)を 演じる(実装する…