こんにちは、miyoshiです。
モニター開発も順調に進んでおります。
今回は、ISSUE4 のところで、実装できた部分と、取り入れてみたことを
ご紹介していきます。
この記事も、前回公開した記事の続編です。
- 「モニター開発」で進めたら、いい感じの話
- 【Rails × Devise】初心者エンジニアがユーザー認証を実装してみた話
- Rails × Devise × Basic認証】管理画面のセキュリティと使いやすさを両立した話
- Rails】初心者エンジニアが削除ボタンが動かない話!!原因はJavaScriptの・・
今回実装したこと(ISSUE#4)
- メニューモデル作成
- 期間限定対応カラム追加
- 管理者用CRUD画面作成
- 期間外非表示処理実装
この記事では、Railsのnamespaceを活用して管理画面を構築する方法を、実体験ベースでわかりやすく解説します。
🎯 この機能を実装した目的
- 管理者がメニュー内容を柔軟に変更できるようにする
- 将来的にユーザーが予約時に施術メニューを選べるよう連携させる
🧠 namespace活用の背景とメリット
以前オリジナルアプリを作っていたとき、すべての処理を1つのコントローラに詰め込んでしまい、管理画面用の処理やビューが混在してしまいました。
その結果:
- 役割の違うロジックが混ざってバグが増えた
- 管理画面専用のデザインや認証制御がしづらい
- メンテナンス時に「あれ?このコードどっちの画面だっけ…?」と混乱
その反省を活かし、今回はRailsのnamespaceを使って、「管理者用の機能を完全に分離」する方針で設計しました。
🔍 namespace とは?
Railsの namespace は、ルーティング・コントローラ・ビューを機能ごとに整理・分離できる仕組みです。
# config/routes.rb
namespace :admin do
resources :menus
end
このように書くことで、以下のように構造が明確になります:
- コントローラーAdmin::MenusController
- ビュー:app/views/admin/menus
→ 「admin」という名前空間で、管理用の機能を一括で管理できるようになります。
✅ Railsにおけるnamespaceで整理して感じたメリット
📁 ディレクトリ・クラス構成がわかりやすくなる
たとえば、管理者専用の画面と通常ユーザーの画面を分けたいとき
app/controllers/admin/menus_controller.rb
app/views/admin/menus/index.html.erb
このようにファイルが分類されることで、
「この機能は管理者用だな」 とすぐにわかるようになります。
📝 まとめ
Railsで実装していて、、、
「将来、機能拡張しそうだな」
「この機能、管理者専用にしたいな」
と思ったら、namespaceで整理するタイミングだと感じました!!
namespaceを使って構造的に分けるのは必須レベルだと感じました。
最後に
実装してみて、以前の混沌としたコードと比べて圧倒的にエラーが少ない開発体験になりました。
僕も今回のことでRailsの仕組みを少し理解できた気がします。
同じように困っている初心者の方の助けになれば幸いです。
質問や感想もぜひコメントくださいね!😊