1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コントローラーの使い方:RailsのMVCとLaravelのMVCの比較

Last updated at Posted at 2024-12-03

はじめに

プログラミング初心者がWebアプリケーションを学ぶ際、MVC(Model-View-Controller)アーキテクチャは非常に重要な概念です。この記事では、Rails(Ruby on Rails)とLaravel(PHP)のMVC構造を比較し、それぞれの「コントローラー」に焦点を当てて解説します。

1. MVCアーキテクチャの基本概念

MVCとは、以下の3つの要素で構成されるアーキテクチャパターンです:

Model(モデル): データやビジネスロジックを担当。
View(ビュー): ユーザーに表示する画面部分を担当。
Controller(コントローラー): ModelとViewをつなぐ役割を担当。

RailsもLaravelも、このMVCパターンを採用しており、アプリケーションの構造を整理しやすくしています。

2. コントローラーの役割

コントローラーは、以下の役割を果たします。

リクエストを受け取る: ユーザーの操作(例: ボタンのクリック)を処理。
ロジックを調整する: 必要なModelのデータを取得し、適切なViewに渡す。
レスポンスを返す: HTML、JSON、APIレスポンスなどを生成。

RailsとLaravelでは、コントローラーの構造や使い方にいくつかの違いがあります。

3. Railsのコントローラー

Railsにおける特徴

Railsのコントローラーは、ApplicationControllerを継承して作成します。

各アクション(メソッド)は、リクエストごとに実行されます。

RailsはRESTful設計を強く推奨しており、リソースベースのルーティングをサポートしています。

サンプルコード
例: 記事を管理するコントローラー

articles_controller.rb
class ArticlesController < ApplicationController
  before_action :require_login
  
  def index
    @articles = Article.all
    render json: @articles
  end

  def show
    @article = Article.find(params[:id])
    render json: @article
  end

  def create
    @article = Article.new(article_params)
    if @article.save
      render json: @article, status: :created
    else
      render json: @article.errors, status: :unprocessable_entity
    end
  end

  private

  def article_params
    params.require(:article).permit(:title, :content)
  end
end

特徴的なポイント

before_actionを利用して、認証や共通処理を整理。
強力なパラメータ(Strong Parameters)で安全なデータ処理を実現。

4. Laravelのコントローラー

Laravelにおける特徴

Laravelのコントローラーは、Controllerクラスを継承して作成します。
Artisanコマンドでコントローラーを作成可能です。
LaravelもRESTful設計を推奨し、リソースコントローラーの仕組みを提供しています。

サンプルコード
例: 記事を管理するコントローラー

ArticleController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Article;

class ArticleController extends Controller
{
    public function index()
    {
        $articles = Article::all();
        return response()->json($articles);
    }

    public function show($id)
    {
        $article = Article::findOrFail($id);
        return response()->json($article);
    }

    public function store(Request $request)
    {
        $article = Article::create($request->validate([
            'title' => 'required|string',
            'content' => 'required|string',
        ]));

        return response()->json($article, 201);
    }
}

特徴的なポイント

ミドルウェアを活用して認証やバリデーションを効率化。
リクエストの検証はバリデーションルールで簡潔に記述可能。

5. RailsとLaravelの比較表

項目 Rails Laravel
コントローラーの基底クラス ApplicationController Controller
RESTfulサポート デフォルトでサポート Artisanコマンドで実装可能
パラメータ処理 強力なパラメータ(Strong Parameters) リクエストクラスまたはルールで処理

6. 結論

RailsとLaravelのコントローラーは、いずれもMVCの要であり、使いやすいように設計されています。ただし、特にLaravelについてはフレームワークの設計思想や流儀が異なるため、プロジェクトの要件に応じて使い分けることが重要です。

初心者の方は、公式ドキュメントを参考にしながら、小さなアプリケーションを作成してMVCの理解を深めていきましょう。

Rails: 公式ドキュメント
Laravel: 公式ドキュメント

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?