ドメイン駆動設計LT会(DDD読書会@大阪の最終回)
September 21, 2014
名前はおごもり
です。よろしくお願いします。
Githubのアカウントはogom
ですが、Twitterはogomr
です。
大阪の本町や北浜でシステム開発をしています。
Honmachi.rb
というRubyのコミュニティでコーチ(予定)をしています。
Domain-driven design
でLess is more
を取り組んでいます。
(より少ないことは、より豊かなこと)
今回は、日本語版への序文
でエリック・エヴァンスが原則のひとつにあげている
「ドメインの実践者とソフトウェアの実践者による創造的な共同作業を通じて、モデルを探究すること」を
テーマにLTをします。
ちなみに、ドメイン駆動設計の書籍では第17章
が好きです。
タイトルのDraw with Rails
のRailsはRuby on Rails
という
Rubyが開発言語のWebアプリケーションフレームワーク
です。
そのRuby on Railsで図形を描く機能を紹介します。
サブタイトルのModeling and Coding and Drawing
が図形を描く手段です。
初めのキーワード
Modeling for designers, Coding for programmers
…
デザイナー(設計者)のためのモデリング、プログラマのためのコーディングではなく この間はシームレスな状態が理想です。「共同作業を通じて、モデルを探究すること」を 実践するには開発思想の共有が継ぎ目を埋めてくれます。
ModelingとCodingの間にはVision(開発思想)が入ります。ここにまたModel View Controller
とは別の
MVC (Modeling Vision Coding
)という言葉が生まれました。
次のキーワード
Domain-specific language with Domain-driven design
…
開発思想の共有には共通の言語を使う事が理想です。それにはDSL
(ドメイン特化言語)が有効です。
RailsはDSL
が広く使われており、DDD
と相性がよいです。その一部を紹介します。
モデル駆動設計でのER図をRails
で描きます。
gem 'draw_erd'
rails generate scaffold user name:string state:string
rails generate scaffold group name:string state:string
rails generate scaffold member group:references user:references
状態遷移図もRails
で描くことができます。
gem 'draw_smd'
state_machine initial: :active do
event :disable do
transition active: :inactive
end
event :enable do
transition inactive: :active
end
event :close do
transition [:active, :inactive] => :closed
end
end
でもER図や状態遷移図をいきなり描くのは…
PlantUML
のDSL
を利用しましょう!
先ほどの状態遷移図をPlantUML
とRails
で描くことができました。
gem 'draw_uml'
[*] --> active
active -right-> inactive : disable
inactive -left-> active : enable
active --> closed : close
inactive --> closed : close
closed --> [*]
モデルを探究するには、開発思想をコラボレーションすることが大切です。
デザイナーとプログラマがコラボレーションできる程度の
軽量モデリング(lightweight modeling
)にすることが丁度よいのかもしれません。
ちなみにRubyはlightweight language
です。