DHH流ルーティングについて(Rails)
【結論】
・DHH(David Heinemeier Hansson)は、Ruby on Railsの生みの親
・DHH流ルーティングとは、DHHが推奨しているRailsのルーティング手法
・具体的には、コントローラはデフォルトのCRUDアクション(index、show、new、edit、create、update、destroy)のみを使うという内容
【目次】
【本題】
DHHについて
DHHとは、Ruby on Railsの生みの親であるDavid Heinemeier Hansson(デイヴィッド・ハイネマイヤー・ハンソン)の略称です。
DHHは、2004年にRuby on Railsをオープンソースとして公開しています。
DHH流ルーティングとは
DHH流ルーティングとは、DHHが推奨しているRailsのルーティング手法です。
考え方としては、RESTの原則に従って、新しいコントローラーを作るタイミングを決めるというものです。
もう少し掘り下げると、コントローラはデフォルトのCRUDアクション(index、show、new、edit、create、update、destroy)のみを使って、それ以外のアクションが必要になった場合は、別のコントローラーに分けるという内容です。
例えば、PostsController
というユーザーから投稿された記事を扱うコントローラーがあったとします。
そこに、全ての記事を一覧表示するindex
アクションと、お気に入りにした記事のみ一覧表示するfavorites
アクションが定義されています。
class PostsController < ApplicationController def index end def favorites end end
DHH流ルーティングの場合、これら2つのアクションは、以下のように別のコントローラーに分けます。
class PostsController < ApplicationController def index end end class Posts::FavoritesController < ApplicationController def index end end
メリット
コントローラーの肥大化を防げる
もし際限なくアクションを追加していった場合、コントーラーの行数が増えていき、可読性が落ちてしまいます。
コントローラーを分けることで、この問題を回避することができます。
コントローラーの責務が明確になる
コントローラーに、特定のリソースに対する操作を全て記述した場合、もしコードの改修が必要になった際、その中から目的のアクションを探すのに時間が掛かってしまいます。
全てのコントローラーがデフォルトのCRUDアクションしか使用していないと分かっていれば、どのコントローラーが「どのリソース」の「どういった操作」を担当しているのか明確になります。
これにより、コントローラーの中から、目的のアクションを探し回る手間が省けます。
一貫性のあるルーティングが実現できる
チームで開発を行っている場合、コントローラーを分けるタイミングが開発者ごとに異なっていると、ルーティングに一貫性がなく、可読性が落ちてしまいます。
デフォルトのCRUDアクションしか使わないというのは非常にシンプルなルールなので、誰もが遵守しやすく、ルーティングの一貫性を保つことが出来ます。
参考情報
DHH流のルーティングで得られるメリットと、取り入れる上でのポイント - KitchHike Tech Blog