Ruby on Rails 入門 : Webアプリ開発の強力なフレームワーク 4

実務につながるRails設計と拡張の考え方


これまでの記事では、Railsの基本構造やMVC、そしてユーザー登録・ログイン機能を備えた実践的なアプリ開発までを解説してきました。


第4回となる本記事では、「動くアプリ」 から 「成長できるアプリ」 へ進化させるための考え方 をテーマに解説します。


Rails学習が進むと、次のような悩みに直面することが増えます。


・機能追加でコードが読みにくくなる
・Controllerが肥大化してくる
・設計の正解が分からない


これらは、実務レベルに近づいている証拠でもあります。


Controllerに書きすぎない設計
Rails初心者が陥りやすいのが、Controllerに処理を書きすぎてしまう問題です。

def create 
  @article = current_user.articles.build(article_params)
  if params[:article][:status] == "public"
    @article.published_at = Time.current
  end

  if @article.save
    redirect_to @article
  else
    render :new
  end
end

動作はしますが、ロジックが増えるほど保守が難しくなります。
Railsでは 「Controllerは流れの制御、ロジックはModel」
という役割分担が基本です。

class Article < ApplicationRecord
  before_save :set_published_at

  private

  def set_published_at
    self.published_at = Time.current if status == "public"
  end
end

こうすることで、Controllerはシンプルになり、コード全体の見通しが良くなります。


サービスクラスで処理を分離する
Modelにも書ききれない複雑な処理は、Service Object として切り出すのが有効です。

class ArticleCreator
  def initialize(user, params)
    @user = user
    @params = params
  end

  def call
    article = @user.articles.build(@params)
    article.save
    article
  end
end

Controller側は次のようになります。

def create
  @article = ArticleCreator.new(current_user, article_params).call
  redirect_to @article if @article.persisted?
end

処理の責務を分けることでテストや修正もしやすくなります


バリデーションとエラーハンドリング
実務では、ユーザー入力を信用しない設計 が必須です。

class Article < ApplicationRecord
  validates :title, presence: true, length: { maximum: 100 }
  validates :body, presence: true
end


エラーは分かりやすく表示します。

<% if @article.errors.any? %>
  <ul>
    <% @article.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
  </ul>
<% end %>

Railsのバリデーションを正しく使うことで、
安全性ユーザー体験を同時に高められます。


環境ごとの設定を意識する
Railsには環境の概念があります。


・development(開発)
・test(テスト)
・production(本番)


本番環境ではエラー詳細を表示しないなど、環境ごとに挙動を変えられるのがRailsの強みです。Railsは 「設定より規約」 を重視しており、最小限の設定で安全な運用が可能です。


Railsらしいコードを書く意識
Railsで大切なのは、「なぜこの書き方をするのか」 を理解することです。


・MVCによる責務分離
・DRY(同じことを繰り返さない)
・可読性を重視する思想


Railsはチーム開発を前提に設計されています。
未来の自分や他人が読んでも分かるコードを書く意識が重要です。


まとめ


第4回では、Railsアプリを 「作れる」から「育てられる」 へ進化させる考え方を解説しました。
設計を意識することで、Railsの本当の強さと楽しさが見えてきます。
ここまで来たあなたは、すでにRails開発者としての確かな一歩を踏み出しています。
次回は、テストと品質管理を通じて信頼されるRailsアプリを作る方法を解説していく予定です 🚀


ヘッダー画像の引用元
UnsplashSven Miekeが撮影した写真


この記事はChatGPTを用いて作成されました。

コメント 0件