BLOG
rails で Domain Driven Design の domain 層を作ってみる
こんにちは、システム屋まそおの舩原です
ドメイン駆動設計を実践すべくがんばっている今日この頃です。
ドメイン駆動設計(DDD)を実践するために日々奮闘しています。最近、Railsで”値オブジェクト”をどこに配置するべきかを考えていたところ、興味深い情報を見つけました。
ドメイン駆動設計のサンプル発見
QiitaでDDDのRailsサンプルを書かれた方の記事を見つけました。
境界づけられたコンテキストがあるから、ドメインでぶったぎって、突っ込むのか。http://t.co/8Bvu01513H
— FUNABARA Masao (@107steps) October 16, 2015
でも app配下の mvc が、気持ち悪く感じる。こいつらもドメインで分けたくなるけど、それはダメ。#DDD #DDDesign #rails
これと並行して、DDDのRailsサンプルも見つけました。
https://github.com/paulrayner/ddd_sample_app_ruby
ruby sample と書かれていますが、実際にはRailsアプリケーションです。
これらのサンプルでは、app
ディレクトリと同列にdomain
ディレクトリが作成されています。しかし、私はapp
配下に作成する方が分かりやすいと感じました。
さらに、以下のようにコマンドで生成できるようにしたかったため、初めてGemを作成してみました。
$ rails g domains kanban
何ができるか
このGemを使うと、以下のことが可能です。
rails g domains NAME
コマンドを実行すると、app/domains/#{NAME}
ディレクトリが生成されます。- このディレクトリが
ActiveSupport::Dependencies.autoload_paths
に追加されます。
使い方
rails 4.2.4 以上で、以下の手順でお試しいただけます。
$ rails new myapp
$ cd myapp
$ cat "gem 'ddd_domain'" > Gemfile
$ bundle install
$ rails g domain kanban
ぜひお試しください。
ソースコード
GitHubで公開しています。
ddd_domain