システム屋まそお

rails で Domain Driven Design の domain 層を作ってみる

report
ddd
ruby
rails

こんにちは、システム屋まそおの舩原です

ドメイン駆動設計を実践すべくがんばっている今日この頃です。

ドメイン駆動設計(DDD)を実践するために日々奮闘しています。最近、Railsで”値オブジェクト”をどこに配置するべきかを考えていたところ、興味深い情報を見つけました。

ドメイン駆動設計のサンプル発見

QiitaでDDDのRailsサンプルを書かれた方の記事を見つけました。

これと並行して、DDDのRailsサンプルも見つけました。
https://github.com/paulrayner/ddd_sample_app_ruby

ruby sample と書かれていますが、実際にはRailsアプリケーションです。

これらのサンプルでは、appディレクトリと同列にdomainディレクトリが作成されています。しかし、私はapp配下に作成する方が分かりやすいと感じました。 さらに、以下のようにコマンドで生成できるようにしたかったため、初めてGemを作成してみました。

$ rails g domains kanban


何ができるか

このGemを使うと、以下のことが可能です。

  1. rails g domains NAMEコマンドを実行すると、app/domains/#{NAME}ディレクトリが生成されます。
  2. このディレクトリが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