2007-01-01から1年間の記事一覧

CYCEL MODE

昨日インテックス大阪まで行っていました。今回も沢山試乗して満足な一日でした。 ブースも回っていていたら、いい感じのウエアや小物もあり、メッセンジャーバッグが欲しくなってしまいたました。今度探してみよう。

ASP.NETのMVCフレームワーク

fowlerも言及しているALT.NET Confで発表されたASP.NET MVC Frameworkについて、今さらMVCフレームワークをASP.NETに導入するメリットってどうなんだろうと正直思った。 詳しく見ていないけどFowlerも技術的な新しさは無いと言っているのでStruts的なものな…

ERモデルからドメインモデルへ

DDD

ERモデルをベースにドメインモデル的に作成する方法。設計モデルがなくてもコーディング時に比較的簡単に導入できるビジネスルールのロジック。 エンティティ内で計算できる導出項目の定義 金額=単価x数量 自エンティティの検証ロジックの定義 予約.Validate…

業務アプリはドメインモデルに向かない?

DDD

ドメインモデルは複雑なアプリに有効だが、データ入出力中心の業務アプリにはマッチしないような意見をよく聞く。そうなんだろうか? RoRはドメインモデル実装だと考えている僕にはそう思えない。RoRでデータ入出力中心のアプリを作るってすごく簡単だよね。

コード生成からメタプログラミングに

ウイザードやXML定義からコード生成を行うと生産性が上がるのは確かだが、保守するコードが増えるに変わりない。コード生成の代わりにメタプログラミングを行うとこの問題はかなり軽減される。Reflection、Genericsや属性(アノテーション)を利用すればC#や…

流れるようなインターフェースとメソッドチェーンは違うもの

最近はずっと.NETを使っているのでJava界隈の話に疎いのですが、DBアクセスの最適化は業務アプリでは非常に重要なポイントなので上記の内容は興味深いですね。開発者の視点にたっていろいろ考えられて点は素晴らしいし、非常に同意します。.NETであれば次のC…

DDD Sample Project

DDD

DDDのサンプルプロジェクトって見かけないなと思っていたら案外あるのですね。いろいろ参考にさせてもらおう。.NETでの実装もいろいろあって、.NETの世界でもDDDも認知されてきたということか。テクノロジー的にはNHibernateが多いようですね。このあたりはL…

案外Genericsって使われていない?

Enterprise LibraryのDI実装のObjectBuilderって標準ではGenerics対応していないんですね。 たとえば、以下のようなList<>を登録しておいてIList<>を利用してインスタンス化することができない。 // will return a List<string> instance IList<string> testList = container</string></string>…

なぜService Locatorはメジャーじゃないの

いまさらなんですが、Service LocatorってDIにくらべて脚光を浴びないですね。同じような効果があって、個人的にはDIと同じ程度、最近ではいままでDIを利用していた個所でもMicro Kernel+Service Locatorを使っているのにな、なぜなんでしょうかね。良いフ…

中学校のモデリング その6

答え合わせ 模範解答が掲載されているので、作成したモデルと比べて振り返ってみます。いくつかありますが、まずは偏見で最初のモデルと比べてみます。抽出している概念は今回具体的なスコープを定義されていないので明らかにスコープの違いによる相違はある…

中学校のモデリング その5

お題その2 追加要素3 いよいよ最終のお題です。クラブ活動の概念を含めるようです。ポイントはクラブのライフサイクルが学級などと違い複数年にわたる点、その間に顧問や参加する生徒が入れ替わるのをどのように表現するかだと見ました。まずは、オブジェ…

中学校のモデリング その4

お題その2 追加要素2 今回は授業担当に関する要素を追加するようです。ポイントは、 各先生は免許を持っている。 免許をもっている教科のみ担当することができる。 担任をするためには一定の条件が必要である 先生は授業の担当を割り当てらる とみました。…

中学校のモデリング その3

お題その2 追加要素1 前回の続きです。今回は転任・転校などの「こと(イベント)」をモデルに追加します。まずは、転任・転校・入学について考えます。これらのイベントに参加する中学校や先生、生徒のリソース(マスタ)に関連を付けるだけで特に難しさ…

中学校のモデリング その2

お題その2 中学校発展形 中学校のモデリング その1の続きです。前回のモデルでは単一の中学校に閉じたモデルでしたか、今回の発展形では複数の中学校を取り扱うシナリオです。ここでのポイントは、学級や生徒、先生の管理を各中学校単位に行うか、複数中学…

中学校のモデリング その1

Modeling Forum 2007には行っていないのですがモデリングワークショップというのがあって中学校をモデリングしたようです。お題があったのでモデリングチャレンジしてみます。モデリング道場のお題なので今回はJUDEを使ってモデリングします。やり方はいつも…

型指定されたDataSetにActive Record機能をつけてみた

Partial Classにビジネスロジックを書けるなど、シンプルにコードが書けて案外いい。仕組みは、型指定されたDataSetの自動生成されたコードに対してCodeModelを使ってビルド時に改変するようにしました。プリコンパイラみたいなもの。 Active RecordとDataSe…

DDD-ers in Japan?

DDD

いま、DDDのメーリングリストで各地域でのDDD-erを探しているようですね。日本のDDDのユーザ会とかないのかな?DDD会議とかあってもよいのにな。あったら行きたいな。

簡単ドメインモデル実装

今考えているフレームワークではドメインモデル(リッチなデータ)を実装すればあとは自動的にフレームワークが処理してくれます。いい感じに仕上がりそうです。GenericsとRealProxyの利用が中心で、Emitは全く使っていませんがかなりのことができますね。 […

Dynamic Proxyの実装

RealProxyを利用する方法はターゲットがMarshalByRefObjectのサブクラスじゃないといけない思われがちですが、インタフェース経由でアクセスすることで任意のクラスを対象にできます。*1この簡潔な実装があったのでメモただ、MethodCallMessageWrapperクラス…

Java用のLINQ現る

とりえあず、LINQ to Objectsの実装を行っているようですが、LINQ to SQLのようなことをするためにはExpressionを扱えないといけないので言語の拡張も必要な気がするのだが、どうなんだろう。

C#2.0でMix-inを実現する

C#3.0で導入される拡張メソッドを使うとMix-in的なことができます。非常に便利な仕組みで是非C#2.0+VS2005でも使ってみたいと思いチャレンジします。*1 外部メソッド(Foreign Method)を使う C#3.0で導入された拡張メソッドは、外部メソッド・パターンをコン…

インタフェースの利用

インタフェースの利用は仕様を継承するためではなく仕様を公開するためのものだよね。同じインタフェースをもつクラスは結果的にクライアントからは同じものとして扱えるだけ。 2つのクラスが汎化・特化(is-a)の関係だろうが、同じ機能をMIX-INしているのか…

ドメインモデル駆動開発をやってみる(7)

前回ドメインモデルにLINQ to SQLのメタ情報を付与して永続化の仕組みを構築しようと考えましたが、LINQ to SQLが要求するいくつかのインタフェースを実装するためにドメインモデルをかなり変更する必要があり断念しました。 今回は違う方法でチャレンジしま…

ドメインモデル駆動開発をやってみる(6)

データベースを定義せずにドメインモデルを利用して開発を進めてきました。画面も含めて特に問題なく開発することはできました。作成されたドメインモデルはこんな感じになっています。 [Serializable] public partial class Message : IValidator { public …

ドメインモデル駆動開発をやってみる(5)

DDD

画面を作成する ユースケースコントローラまで作成できたので画面を作ることにします。シナリオは伝言の確認・登録、従業員マスタ・メンテをターゲットにします。自分宛ての伝言一覧 新しい伝言の登録 従業員マスタ・メンテ リポジトリの改訂 マスタ・メンテ…

状態変化するエンティティの管理はどこですべきか?

DDD

エンティティ自体が状態値をもつのが第一候補でしょうが、アプリケーションやビジネスフローのコンテキストで管理したい場合もあります。前者の例としては図書システムの貸出中などでエンティティが本質的にもつ状態値で、後者であればデータ編集処理におけ…

ドメインモデル駆動開発をやってみる(4)

DDD

ユースケースコントローラのサービス化 前回ドメインモデルを実行する実装非依存の抽象化エンジンを作成しました。今回はこのアイデアをさらに拡張して、ユースケースコントローラをサービス化して利用するシナリオを考えてみます。目標となるシナリオは、登…

Improving application design with a rich domain model

DDD

Transaction ScriptとDomain modelの比較、DDDのパターンやリファクタリングなどを簡潔に説明しています。GOOD!!

ドメインモデル駆動開発をやってみる(3)

DDD

リポジトリ リポジトリをモデルに導入します。まずはインタフェースを定義します。最終的にはデータベースから読み出しリポジトリの作成になりますが、今回はデータベースの導入をできるだけ遅延して、後で実装クラスを入れ替えるようにしておきます。まずは…

ドメインモデル駆動開発をやってみる(2)

ドメインモデルと言えるかは?の点はありますが、前回の伝言メモのユースケースをモデル化して実装してみます。 ユースケースのモデル化 ユースケースをモデル化する方法として直ぐに思いつくのが、アクティビティ図やフローチャートで、.NETであればWFを使…