itemanblr.

RSS

Practical Symfony #23: ドメインの知識を使ったフォームバリデーション

phpmentors:

フォームは、PHPメンターズの設計と実装の型で述べているように、アプリケーションレイヤーにて実装されます。今回はフォームのバリデーションの拡張についてとりあげます。

バリデーションの仕組みの基本

ユーザーが入力した値を受け取り、アプリケーションのフォームでその入力を表すオブジェクト(フォームのデータを格納する入れ物、フォームDTO: Data Transfer Objectと名づけます)が組み立てられます。このフォームDTOの持つデータが妥当かどうかをチェックするのがバリデーションの役割です。

image

FASTの最初のバージョンで、Weissは共通性/可変性分析を使ってソフトウェア成果物やソフトウェア抽象のファミリの特徴づけを行っている。そして、特定の課題のために作成されたプログラミング言語で解を導く前に、ファミリ構成員に対する語彙を構造的に組み立てて、その語彙を新たなプログラミング言語のベースにする。その新たなプログラミング言語は、各ドメインごとに作成され、ファミリの各構成員が備える可変性を表現する。それに対して共通性は、分析対象のドメインに存在するすべての抽象を包み込むようなものであると想定されている。仕様からファミリ構成員を生成するためには、そのベース言語へのトランスレータが1つ準備されるが、その結果として、共通性を共有できるというメリットが生み出される。このような言語とそれに関連するサポートツールが、そのドメインのアプリケーションエンジニアリング環境を形成する。

- 新装版 マルチパラダイムデザイン p.23 第1章 序論:マルチパラダイムが必要とされる背景 1.3 設計、分析、ドメイン、ファミリ:用語定義 1.8.1 FASTにおけるアプリケーション指向言語

マルチパラダイムデザインでは、アプリケーションドメインとソリューションドメインのそれぞれで、共通性と可変性を調査する。そしてその2つのドメインで、共通性/可変性分析を実施し、その2つの分析結果からソリューションの構造を導き出す。FASTではこれとは異なるアプローチを採用している。FASTの方法はドメイン分析から実装技術を導き出すというものだ。

- 新装版 マルチパラダイムデザイン p.22 第1章 序論:マルチパラダイムが必要とされる背景 1.3 設計、分析、ドメイン、ファミリ:用語定義 1.8 マルチパラダイム開発とプログラミング言語

【AWS】VPC環境構築ノウハウ社内資料 2014年4月版 | Developers.IO

大部分のドメインエンジニアリング技法では、ドメインを、モジュール、サブシステム、ライブラリなど、すでに存在するソフトウェア概念と同一視するのに対して、マルチパラダイムデザインは多重ドメインの織り合わせをサポートする。マルチパラダイムデザインでは、構造、名前、セマンティクス(インプットとアウトプットのセマンティクスを含む)、振る舞い、アルゴリズム、バインディング時期、粒度(granularity)、状態により外周の描かれたファミリを扱う。

- 新装版 マルチパラダイムデザイン p.21 第1章 序論:マルチパラダイムが必要とされる背景 1.3 設計、分析、ドメイン、ファミリ:用語定義 1.7.2 複雑なファミリの取り扱い

データベースに関して言えば、古典的なものではあるが優れた書物として、“Introduction to Database Systems”[Date1986]がある。並行性については“Object-Oriented System Development”[DeChampeaux+1993]に優れた解説を見出すことができる。

- 新装版 マルチパラダイムデザイン p.20 第1章 序論:マルチパラダイムが必要とされる背景 1.3 設計、分析、ドメイン、ファミリ:用語定義 1.7.1 プログラミング言語:C++

ここには船荷証券などとともに「顧客合意」という抽象要素が追加されています。この要素によって、配送ドメインから顧客にまつわる関心事が分離され、配送ドメインがより凝集されていることが分かります。このパッケージの中を眺めると、顧客合意のみ抽象度が高く、抽象度という軸では統一されていませんが、この点は問題ではないということですね。蒸留された深いモデル、そしてそれを表すモジュール/パッケージというのは、抽象度の高い要素のみで構成されているわけではなく、パッケージの目的にふさわしい抽象度で、過不足無く要素がつまったものなんでしょうね。この意味では、パッケージ分割のために適切な抽象要素を見つけることと同じか、あるいはそれ以上に、適切なパッケージ名を見つけることもとても重要なのでしょう(15章の例では、輸送から、配送/顧客/物流に分割されています。)。

- PHPメンターズ -> Practical DDD #3: モデルの深さ

Practical DDD #3: モデルの深さ

phpmentors:

ドメイン駆動設計の「モデルの深さ」などについての考察、前回の続きです。

前回の記事では、エリック・エヴァンスのドメイン駆動設計で書かれているモデルの深さというのは分かりづらいので、別の尺度としてモデルに表れる概念群の凝集度を考えてみてはどうか、ということに触れました。

今回はドメイン駆動設計第1章の最後のストーリーで到達した「船荷証券(ふなにしょうけん)」というものから、モデルの深さについて考えてみます。


そもそも海運ドメインについて

仮に民主党が再び政権をとるなら、現在の日本経済は異次元緩和によって「実態以上に引き上げられた異常な状態」なので、「正常な状態」に戻そうとするのだろう。そういう見方から判断すれば、潜在生産量は現在より低いことになるわけだから、GDPを現在よりも低くするような経済政策をするわけだ。そうなると、当然失業が増え、多くの人が仕事を失い、若い人たちも学校を出ても仕事につけなくなる。

 なぜ大塚氏(あるいは民主党)は、それほどまでの犠牲を払って経済を抑圧しなければいけないと考えるのだろうか? それはこの記事にはっきりと書かれている(Vol.308, 2014.3.27)

「その金利収入は預貯金者(家計)の貴重な所得、購買力となり、消費を下支えしていたのです。」

「逸失金利収入の影響は全世代に及んでいます。異次元緩和には、デフレ脱却に寄与するメリットがある反面、重大なデメリットもあることを、政府・日銀はそろそろ冷静に認識しなくてはなりません。」

 大塚氏が金融緩和に反対なのは、インフレになれば金利収入が減るからなのである。つまり、金融資産を持っているひとの利益が減るから良くないというのである。

- M B K 48 : 民主党は金持ちの、金持ちによる、金持ちのための政治をめざします――大塚耕平バージョン

システム作りにおいて、ソフトウェア構造の設計が醍醐味のひとつであるとすれば、管理過程とそのツールである帳簿構造(記録構造)の設計は、もうひとつの醍醐味。両方とも面白いことこの上無い。どちらが仕事として上等なんて話は馬鹿らしいくらい。

- Twitter / sugimoto_kei