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

ドメイン駆動設計を実践するために

ドメイン駆動設計の実践に向けて、DDD本では明示的に語られていない視点からドメイン駆動設計をとらえ直す。 導入 ドメイン駆動設計入門では、かなり抽象的なレベルでDDD本の根底にある思想を概観しました。一言で要約すれば「ドメインエキスパートの頭の中…

DCIアーキテクチャの理論とGrailsによる実装

第12回G*ワークショップにて行った講演のスライドと発表原稿 はじめに 11/9にJGGUG様主催にて第12回G*ワークショップが開催されました。そこで、「Model On Grails - DCIアーキテクチャへの道すじ-」と題しまして、DCIアーキテクチャについて講演させて頂き…

ドメイン駆動設計入門

"Beautiful Develpment"(10/27 DevLOVE)の講演資料と原稿 はじめに 本日(10/27)、DevLOVE様主催で、"Beautiful Develoment"と題されたイベントが開催されました。これは「ドメイン駆動設計("DDD:Domain-Driven Design")」を題材に、入門から実践までを…

組織パターン トップ10 - James Coplien

この記事はJames Coplien氏の記事「Organizational Patterns: Building on the Agile Pattern Foundations」を、氏の許可を得て翻訳したものです(元の記事が長いため抄訳としています)。(原文最終更新日:2006年7月9日) 目的の統一性("Unity of Purpose…

ドメイン特化言語とモデル駆動エンジニアリング - Johan den Haan

この記事はJohan den Haan氏の記事「DSL and MDE, necessary assets for Model-Driven approaches - by Johan Den Haan」を、氏の許可を得て翻訳したものです。(原文公開日:2008年8月11日) 私はこれまで、モデル駆動エンジニアリング(MDE)について、多…

アーキテクチャを支える言語

FowlerDSL本のAlternative Computational Modelを足がかりとして、ソフトウェアアーキテクチャにおけるDSLの役割について考察する。 導入 Martin Fowler氏はWeb版DSL本の中で、「DSLにおいて重要なのは、言語それ自体ではなく、DSLによって構築される意味モ…

モデル・ビュー・コントローラ - Trygve Reenskaug

この記事はTrygve Reenskaug氏の記事「MODELS - VIEWS - CONTROLLERS」を、氏の許可を得て翻訳したものです。(原文公開日:1979年12月10日) モデル モデルは知識の表象です。モデルは1つのオブジェクトであるかもしれませし(あまり面白くはありませんが…

レイヤとデータからみるDCIアーキテクチャの実装

DCIアーキテクチャに従ってCRUDアプリケーションを実装する際のポイントを整理する。 導入 Trygve Reenskaug氏によって提唱され、主にJames O. Coplien氏によって理論的な確立と普及が進められているDCIアーキテクチャですが、まだ実装事例はそれほど多くあ…

Greg Young流CQRS - Mark Nijhof

この記事はMark Nijhof氏のブログ記事「CQRS à la Greg Young」を氏の許可を得て翻訳したものです。(原文公開日:2009/11/11) この記事は以前のブログである"blog.fohjin.com"にて公開していたものです。 以前、2日間の講習を受けた時に、ビールを飲みなが…

Cassandraデータモデル入門 - Arin Sarkissian

この記事は、Arin Sarkissian氏のブログ記事「http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model」を氏の許可を得て翻訳したものです。(原文公開日:2009年9月1日) ここ1、2ヶ月というもの、DiggのエンジニアリングチームはCassandraにつ…

DCIによるWebアプリケーション - 3:Cassandra

Cassandraを使用して割り勘アプリケーションの永続化レイヤを実装する。 導入 割り勘アプリケーション実装の第2部では、WebフレームワークとしてWicketを使用し、傾斜つきの割り勘計算がとりあえず行える所までを実装しました。しかし、データはメモリ上で…

実例で学ぶCassandra - Eric Evans

この記事はEric Evans氏の記事「http://www.rackspacecloud.com/blog/2010/05/12/cassandra-by-example/」を、氏の許可を得て翻訳したものです。(原文公開日:2010年5月12日) 最近、Cassandraは注目を集めており、今まで以上に多くの人が組織で使おうと評…

DCIによるWebアプリケーション - 2:アーキテクチャ

前回ドメインレイヤを実装した「割り勘アプリケーション」のプレゼンテーションレイヤを実装し、全体的なアーキテクチャについて考察する。 導入 前回のエントリでは、DCIアーキテクチャの概念に従って「割り勘アプリケーション」のドメインレイヤを実装しま…

DCIアーキテクチャによるWebアプリケーションの実装:ドメインレイヤ

DCIアーキテクチャを用いて、割り勘の計算を行うWebアプリケーションを実装する。 導入 前回のエントリでは、DCIアーキテクチャの思想に基づき、試験的にドメインレイヤを実装しました。今回からはその発展編として、DCIアーキテクチャによるWebアプリケーシ…

内部DSL:ノイズとの戦い

ファウラーのDSL本から、ノイズを除去して自然言語にできる限り近づけるための内部DSLのパターンを示す。 導入 あらためて、DSLとは"Domain Specific Language"、すなわち「ドメイン固有言語」あるいは「ドメイン特化言語」です。したがって、ポイントは対象…

ScalaによるDCIアーキテクチャ:ローンシンジケート再考

GroovyによるDCIアーキテクチャのサンプル実装で明らかになった2つの問題点をScalaによって解決する。 導入 前回のエントリでは、DCIアーキテクチャの構想に従った実装を示しつつ、言語的な制約から来る問題点を2つ提示しました。以下に再掲します。 ミッ…

DCIアーキテクチャの実装:ローンシンジケート

DCIアーキテクチャの概要を整理した上で、DDDに登場するローンシンジケートを用いたサンプル実装を示す。 DCIアーキテクチャの概要 Trygve Reenskaug氏とJames O. Coplien氏によるDCIアーキテクチャの構想は、「DCIアーキテクチャ - Trygve Reenskaug and Ja…

モデル駆動エンジニアリングのために汎用言語とDSLを組み合わせる - Johan den Haan

この記事はJohan den Haan氏のブログ記事「http://www.theenterprisearchitect.eu/archive/2008/04/15/combining_general_purpose_lang」を、氏の許可を得て翻訳したものです。(原文公開日:2008年4月15日) モデル駆動エンジニアリングに関する以前の記事…

内部DSLの表現力

FolwerのDSL Bookを参照しつつ、クロージャを利用したサンプルを用いて内部DSLの表現力について考察する。 導入 - クロージャについて 前回までのエントリでは、内部DSLの実装パターンとしてObject ScopingとMethod Chainingを利用しました。これらのパター…

抽象モデルと意味モデル

Martin FowlerのDSL Bookにおける意味モデル("Semantic Model")について、サンプルを示しつつ解説する。 意味モデルとは 意味モデル("Semantic Model")について、Fowlerは次のように解説しています。 A Semantic Model is realy just a Domain Model tha…

モデルレイヤと言語レイヤ

Martin FowlerのDSL Bookで紹介されている内部DSLの基本的なアーキテクチャについて、サンプルコードと合わせて考察する。 導入 内部DSL("Internal DSL")とは、ホスト言語を使って構築されるDSLを指します。外部DSL("External DSL")がXMLなどを用いてホ…

DSL開発:ドメイン駆動設計に基づくドメイン固有言語開発のための7つの提言 - Johan den Haan

この記事はJohan den Haan氏のブログ記事「DSL development: 7 recommendations for Domain Specific Language design based on Domain-Driven Design」を氏の許可を得て翻訳したものです。(原文公開日:2009年5月6日) ドメイン固有言語(DSL)という用語…

構造とふるまい

ソフトウェアの表現に用いられる概念として「構造」と「ふるまい」を対比させた上で、両者に対する考察を試みる。 導入 もうだいぶ前になりますが、Greg Young氏がBDDに向けて批判的な論考を書いたことがあります。批判の内容について言及することはここでの…

モデルが息づく場所

"Domain-Driven Design"におけるドメインモデルの性質について簡単にふりかえった上で、そのドメインモデルが位置づけられる領域について整理する。 導入:ドメインモデルとは DDDにおける主要な主張は、ソフトウェアが対象とする領域(ドメイン)についての…

DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien

この記事はartima developerに掲載されている、Trygve Reenskaug氏とJames O. Coplien氏による記事「The DCI Architecture: A New Vision of Object-Oriented Programming」を、著作権者であるBill Bennrs氏の許可を得て翻訳したものです。本文内の図の著作…

言葉とコード

システム開発における言語的要素の重要性について、書籍を参照しつつ私見を整理する。 導入 世の中には「文系プログラマ」という表現がありますが、私もそのカテゴリに入る人間です。それも文系度はかなり高く、文学部でいわゆる思想史的なことを勉強してい…