【個人開発入門】Ruby/Railsアプリ開発[MVCとは]【2024年7月】

MVC

はじめに

今回は、前回に引き続きRubyでアプリケーション開発する流れを確認していきたいと思います。

メッセージングアプリの作成を通して、基本的な機能を構築していきます。

前回まででパッケージのインストール等環境構築を実施しました。

本記事では、Railsでアプリケーションのページ作成を行う上で基本となるMVCという考え方とルーティングと呼ばれるRailsの機能を確認していこうと思います。

Railsチュートリアル、Railsガイドが参考になります。

第1章 ゼロからデプロイまで – Railsチュートリアル (railstutorial.jp)

第1章 ゼロからデプロイまで – Railsチュートリアル (railstutorial.jp)

流れ

以下のような流れで実施してきました。

後半の機能実装については、順次検討して進めていきます。

どんなWebアプリケーションにもある基本的な機能の実装から進めていきますが、今回は、そのなかでの前提として、MVCとルーティングに注目して確認していきます。

  1. 環境構築
    1. パッケージのインストール
      1. Homebrew
      2. rbenv
      3. ruby
      4. bundler
      5. yarn
      6. rails
      7. PostgreSQL
    2. プロジェクトの作成
      1. Railsアプリケーションの作成
      2. データベースの作成
      3. サーバー起動と稼働確認
    3. アセットパイプラインと画像の配置
      1. 画像を取得
      2. 画像を指定のディレクトリに保存
      3. 設定ファイルを更新
  2. トップページの作成[⭐️本記事の内容]
    1. MVCとは?
    2. ルーティングとは?
  3. 認証機能の実装
  4. etc…

MVCとは?

Ruby,RailsにおけるMVC(Model-View-Controller)というアーキテクチャパターンについて、簡単に確認しておきます。

MVC概要

誤解を恐れず最も簡略に表現した図を作成しました。

最も基本となる一連の挙動は以下のようになります。

  1. ユーザーがアクションを起こす(例: URLにアクセス)
  2. Railsのルーティングが適切なコントローラとアクションを決定
  3. コントローラがアクションを実行し、必要に応じてモデルを使用してデータを取得または操作
  4. コントローラが適切なビューを選択し、モデルからのデータを渡す
  5. ビューがHTMLを生成し、ユーザーに表示

それぞれの役割は以下の通りです。

Model

  • 役割: データとビジネスロジックを管理
  • 場所: app/models/*.rb
  • 機能:
    • データベースとのやり取り(ActiveRecord)
    • データの検証(バリデーション)
    • 複雑なビジネスロジックの実装
  • 例:
class User < ApplicationRecord
  validates :email, presence: true, uniqueness: true
  has_many :posts

  def full_name
    "#{first_name} #{last_name}"
  end
end

View

  • 役割: ユーザーインターフェースの表示
  • 場所: app/views/*.html.erb
  • 機能:
    • HTMLの生成
    • データの表示形式の定義
    • ユーザー入力フォームの作成
  • 例:
<h1>Welcome, <%= @user.full_name %></h1>
<ul>
  <% @user.posts.each do |post| %>
    <li><%= post.title %></li>
  <% end %>
</ul>

Controller

  • 役割: モデルとビューの橋渡し
  • 場所: app/controllers/*.rb
  • 機能:
    • HTTPリクエストの処理
    • モデルからのデータ取得
    • ビューの選択
    • レスポンスの生成
  • 例:
class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
    @posts = @user.posts.recent
  end
end

MVCのポイント

  • 役割をはっきりと分離していること
    • 各コンポーネントが特定の役割に集中できる
  • コードを再利用できる
    • モデルやビューを複数のコントローラで使用可能
  • 保守性の向上
    • 構造化されたコードにより、変更や拡張が容易
  • テストの容易さ
    • 各コンポーネントを独立してテスト可能

まとめ

今回は、簡単ですがRubyOnRailsで採用しているMVCアーキテクチャについて確認していきました。引き続き進めていきます!

コメント

タイトルとURLをコピーしました