🤞
Railsで静的ページが増えてきたときのベストプラクティス
色々なサイトを作ってきた中で、静的ページの作り方には本当にいろんなパターンがあると感じました。
「RESTfulにしたいからコントローラを分けるべき」「できるだけDRYに high_voltage(非推奨)
を使うべき」など意見も様々です。
でも結局、一番シンプルな PagesController
に戻ってくるのが良さそう、というのが今の僕の結論です。
静的ページって、一度作ったらそんなにメンテしないし、気にしない。でも簡単だからこそ、みんなこだわりが出て混乱しがちなんですよね。
これはまさに、パーキンソンの凡俗法則 かもしれませんが、今回は僕なりの静的ページ設計のベストプラクティスをまとめておきます。
✅ 基本:まずはPagesControllerで十分
# config/routes.rb
get '/about', to: 'pages#about'
get '/terms', to: 'pages#terms'
<!-- app/views/pages/about.html.erb -->
<h1>About Us</h1>
<p>This is the about page.</p>
✅ ページが増えてきたときの課題
-
PagesController
にメソッドがどんどん増えていく -
app/views/pages/
にファイルが増えて一覧性が落ちる - URL設計がバラバラになることも
✅ コントローラを用途別に分割する
用途別に分けてスッキリ整理します。
# config/routes.rb
get '/about', to: 'pages#about'
get '/company', to: 'pages#company'
get '/terms', to: 'legal_pages#terms'
get '/privacy', to: 'legal_pages#privacy'
get '/faq', to: 'help_pages#faq'
get '/how-to', to: 'help_pages#how_to'
namespace
でURLを整理する
✅ URLに階層を持たせたい場合は namespace
が便利です。
# config/routes.rb
namespace :legal do
get 'terms'
get 'privacy'
end
namespace :help do
get 'faq'
get 'how_to'
end
これにより、以下のようなURLになります:
- /legal/terms
- /legal/privacy
- /help/faq
- /help/how_to
✅ CMSを検討するケース
以下のような状況であれば、CMS(コンテンツ管理システム)の導入を検討するのも良い選択です。
- 非エンジニアもページを編集したい
- 頻繁にコンテンツの更新が発生する
- 法務ページ、FAQ、プレスリリースなど、変更が多い
おすすめの選択肢
- Comfortable Mexican Sofa(Rails製CMS)
- ActiveAdmin +
Page
モデルの自作CMS - Notion API連携(ヘッドレスCMSとして活用)
✅ 状況別のベストプラクティスまとめ
ページ数 | 方法 |
---|---|
〜10 |
PagesController 一括管理 |
〜20 | コントローラとビューを用途別に分割 |
20〜 |
namespace を使って階層化+CMS導入検討 |
✅ まとめ
静的ページはつい軽視しがちですが、ページ数が増えるほど保守性に差が出ます。
Railsは柔軟な分、構成がカオスになりがちです。だからこそ、次の3つを意識するのが大切です:
- 用途ごとに構造化
- 再利用できるところはPartial化
- 状況によってはCMS化
静的ページもプロジェクトの一部。気持ちよく運用できる形に整えておくと、後がぐっと楽になります。
Discussion