CLOSE
MENU
Laravel 基礎知識|初心者向けに仕組み・MVC・構造を解説

Laravel 基礎学習|初心者向けに仕組み・MVC・構造を解説

Laravel を学習する前に、Laravel がどのような仕組みで動いているのか、全体像を理解しておくことが重要。
この記事では、Laravel 初心者向けに仕組み・MVC・構造を解説する。

Laravel とは

Laravel は、PHP で作られた
Web アプリケーションフレームワーク。

Web アプリ開発で必要になる機能が、
最初から多数用意されている。

Laravel を使用することで、
効率よく Web アプリを開発できる。

Laravel は PHP、Web サーバー、DB、Composer など、
複数のツールを使用して動作するため、
開発用 PC に Laravel 開発環境を
構築しておく必要がある。

最近では Laravel Herd などを使用することで、
Windows / Mac の両方で
比較的簡単に Laravel 開発環境を構築できる。

フレームワークとは

フレームワークとは、
「よく使う機能や構造をまとめた土台」のこと。

Laravel を使用しない場合は、
ログイン機能や DB 接続などを
全て自分で実装する必要がある。

一方、Laravel では
よく使う機能が最初から用意されているため、
開発効率を大幅に向上できる。

Laravel を使わない PHP 開発との違い

Laravel を使用しない PHP 開発では、
画面表示やデータベース接続、
URL ごとの処理振り分けなどを、
開発者自身が実装する必要がある。

小規模な開発であれば問題ないことも多い。

しかし、
アプリの規模が大きくなると、
以下のような問題が発生しやすくなる。

Laravel では、
Route、Controller、Model、View などの
役割を分離することで、コードを整理しながら開発できる。

普通の PHP 開発イメージ

フレームワークを使用しない開発では、
HTML、DB 接続、SQL、画面表示、POST 処理などが
同じファイルや近い場所に集まりやすい。

ブラウザアクセス

PHPファイル
様々な処理を実行

フォームデータ受け取り
フォームからのデータを受け取り、内容をチェックする

DB アクセス
DB 操作が必要な場合に利用する

HTML生成
ブラウザへ表示する HTML を生成

ブラウザへ表示

このように、ひとつの PHP ファイルに様々な処理が混在しやすく、
コードの見通しが悪くなりやすい。

Laravel 開発イメージ

Laravel では、役割ごとに処理を分離する。

ブラウザアクセス

Route
URL と処理を紐づける。
どの URL にアクセスした時に、どの処理を実行するかを管理する。

Controller
アプリの処理を担当する。
DB からデータ取得や、登録処理、画面表示制御などを行う。

Model
DB 操作を担当する。データ取得、登録、更新、削除などを行う。

View
画面表示を担当する。
HTML を生成し、ブラウザへ表示する。

ブラウザへ表示

役割分担することで、コードが整理され、
再利用しやすくなり、チーム開発や保守もしやすくなる。

Laravel を使用するメリット

Laravel を使用すると、
Web アプリ開発を効率よく進められる。

例えば、

そのため、
中〜大規模 Web アプリ開発で特に強みを発揮する。

通常の PHP と Laravel の書き方の違い

通常の PHP

sample.php

<?php

$name = "Hello World!";

echo "<h1>{$name}</h1>";

通常の PHP では、
PHP ファイル内へ直接処理や HTML を書いていくことが多い。

小規模サイトであれば、この方法でも簡単に開発できる。

Laravel

Laravel では、
Controller(データ処理の役割)と
View(画面表示の役割) を
別々のファイルとして管理する。

例えば、「Hello World!」
と画面に表示する場合、
Controller で「Hello World!」の文字データを用意し、
View で HTML を生成して画面表示をする。

Controller

return view('sample', [
    'text' => 'Hello World!'
]);

この例では、
Controller で text という変数に
Hello World! という値を設定し、
View に渡している。

View

<h1>{{ $text }}</h1>

View では、
Controller から受け取った $text を
HTML 内へ表示している。

Laravel では、
このように処理と画面表示を分離することで、
コードを整理しながら開発できる。

通常の PHP と比較すると、
細分化されているので面倒に感じるかもしれないが、
慣れると効率的に開発できるようになる。

Laravel の基本構造

Laravel は、
MVC という考え方をベースに作られている。

MVC とは、
処理を役割ごとに分離して管理する設計手法のこと。

Laravel では、
MVC に加えて Route を使用し、
URL 管理も分離して開発する。

特に重要なのが以下の4つ。

Laravel 開発では、
この4つの役割を理解することが非常に重要。

MVC は「処理の実行順序」ではなく、
「役割ごとの分類」を表す考え方。
実際の実行順序で言うと RCMV となる。

Route

URL と処理を紐づける役割を持つ。

例えば、
/reviews
へアクセスした時、
どの Controller を実行するかを定義する。

Controller

アプリの処理を担当する。

主に以下のような処理を行う。

Controller は、
Model と View を繋ぐ役割も持つ。

Model

DB 操作を担当する。

データ取得、
登録、
更新、
削除などを行う。

Laravel では、
Eloquent ORM を使用して DB を操作する。

View

画面表示を担当する。

Controller から受け取ったデータを使用し、
HTML を生成してブラウザへ返す。

Laravel では、
Blade テンプレートを使用して View を作成する。

Laravel の処理の流れ

Laravel では、
ブラウザから送られたリクエストを元に処理が実行される。

リクエストとは、
「このページを表示したい」
「データを送信したい」
など、
ブラウザからサーバーへ送られる要求のこと。

例えば、
/reviews
へアクセスすると、
Laravel 内では以下のような流れで処理が行われる。

ブラウザアクセス

Route
URL に対応する Controller を決定

Controller
必要な処理を実行

Model
DB操作が必要な場合に利用する

View
ブラウザへ表示する HTML を生成

ブラウザへ表示

Laravel のディレクトリ構成

Laravel では、
用途ごとにフォルダ構成が決められている。

Laravel をインストールすると、
最初から以下のようなディレクトリが自動生成される。

rating-app
 ├ app
 ├ bootstrap
 ├ config
 ├ database
 ├ public
 ├ resources
 ├ routes
 ├ storage
 └ vendor

通常の PHP 開発では、
開発者が自由にフォルダ構成を決めることも多い。

一方 Laravel では、
Controller は app、
View は resources、
Route は routes など、
役割ごとに配置場所が整理されている。

そのため、
チーム開発しやすく、
コード管理もしやすい構造になっている。

主要ディレクトリ

app
Controller / Model など、アプリ本体のコードを配置する。
routes
ルーティング定義を配置する。
resources
Blade ファイル、CSS、JavaScript などを配置する。
database
Migration や Seeder を配置する。
public
ブラウザ公開用フォルダ。画像や index.php が配置される。
config
Laravel の設定ファイルを配置する。

Laravel の主要機能

Laravel には、Web アプリ開発を効率化するための様々な機能が用意されている。特に以下の機能は、Laravel 開発で頻繁に使用される重要な機能。

artisan(アーティザン)

artisan は、Laravel 専用のコマンドツール。

Laravel 開発では、ターミナル上で artisan コマンドを実行して使用する。

例えば、

などをコマンドで実行できる。

ターミナルは、コマンドを入力するためのツール。
artisan は、そのターミナル内で動作する Laravel 専用コマンドという関係になる。

ルート一覧表示

php artisan route:list

DB テーブル作成

php artisan migrate

Controller 自動生成

php artisan make:controller

Migration(マイグレーション)

Migration は、
DB テーブル作成やカラム定義など、
DB 構造をコード管理する仕組み。

通常の PHP 開発では、
SQL を直接実行して DB テーブルを作成することも多い。

通常の PHP 開発例

CREATE TABLE users (
    id BIGINT PRIMARY KEY,
    name VARCHAR(255)
);

通常の PHP 開発では、
上記のような SQL 文を使用して
テーブル作成や DB 管理を行うことも多い。

Laravel では、
Migration ファイルを使用して
DB 構造を PHP コードとして管理する。

Laravel Migration 例

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
});

このように、
Laravel では DB 構造をコードとして管理できるため、
チーム開発時でも DB 構造を共有しやすくなる。

Blade(ブレード)

Blade は、Laravel 標準のテンプレート機能。

主に View ファイルで使用し、
Controller から受け取ったデータを画面へ表示する。

通常の PHP でも、
グローバル変数や include を使用して
画面表示することは可能。

しかし、大規模開発では
「どこで変数が定義されたのか分かりづらい」
「HTML と処理が混在しやすい」
などの問題が発生しやすい。

Laravel では、
Controller から View へ
必要なデータだけを渡す構造になっている。

通常の PHP

<?php echo $title; ?>

Blade の記述例

{{ $title }}

Blade では、{{ }} を使用してデータを表示する。

この $title は、Controller から View へ渡された変数。

Blade を使用すると、
HTML と画面表示を整理しながら記述しやすくなる。

Eloquent(エロクエント)

Eloquent は、Laravel 標準の ORM。

ORM
DB のデータを PHP オブジェクトとして操作する仕組み。

Migration が DB テーブル構造を管理する機能なのに対し、
Eloquent は DB 内のデータを操作する機能。

通常の PHP 開発では、SQL を直接記述してデータ取得することも多い。

通常の PHP

SELECT * FROM users;

Eloquent の記述例

Laravel では、
Eloquent を使用して PHP コードで DB 操作できる。

User::all()

上記は、users テーブルのデータを全取得する処理。

Eloquent を使用することで、
SQL を直接書かなくても DB 操作できる。

Vite(ヴィート)

Vite は、
Laravel で CSS や JavaScript を管理するための開発ツール。

Laravel では、
CSS や JavaScript を
Vite 経由で読み込む構成になっている。

Vite の読み込み例

@vite(['resources/css/app.css', 'resources/js/app.js'])

上記のように記述することで、
Vite が CSS や JavaScript を自動で読み込んでくれる。

また、複数の CSS や JavaScript ファイルを使用していても、
Vite がまとめて管理してくれる。

Vite を起動すると、
CSS や JavaScript の変更内容をブラウザへ自動反映できる。

起動コマンド

npm run dev

上記コマンドを Laravel プロジェクトのディレクトリ内で
ターミナルから実行する。

実行すると、Vite が起動し、
CSS や JavaScript の変更内容がリアルタイムでブラウザへ反映される。

Laravel 開発で便利な外部ツール

Laravel 開発では、コードを書く以外にも複数のツールを使用する。

基本ツール

VSCode

ソースコード編集用エディタ。
Laravel のコード編集、ファイル管理、Git 操作などを行う。

正式名称は Visual Studio Code。

Laravel Herd

Laravel 用のローカル開発環境。
PHP、Nginx、SSL、ローカルドメインを自動設定してくれる。

Mac 上で簡単に Laravel 開発環境を構築できる。

Sequel Ace(Mac向け)

MySQL を GUI で操作するためのツール。

データベース一覧、テーブル構造、データ確認などを画面上で操作できる。

ターミナル

コマンド入力ツール。Laravel 開発では非常に重要。

Google Chrome / Edge

Laravel アプリの表示確認に使用する。

開発者ツール(DevTools)を使うことで、
HTML、CSS、JavaScript、エラー確認などもできる。

Git

ソースコードのバージョン管理ツール。変更履歴を保存できる。

補足ツール

Docker

開発環境をコンテナ化するツール。

開発環境を統一できるため、チーム開発でよく使用される。
「他人の環境では動くのに、自分の環境では動かない」問題を減らせる。

Postman

API テスト用ツール。

Laravel API 開発時に、HTTP リクエスト送信やレスポンス確認を行う。

TablePlus

DB 管理ツール。Sequel Ace と同系統のツール。

MySQL、PostgreSQL、SQLite など、複数 DB に対応している。
Sequel Ace より高機能。

GitHub Desktop

Git を GUI 操作できるツール。

コマンドを使わずに、commit、push、pull などを画面操作で実行できる。

Claude Code

AI コーディング支援ツール。

コード生成、リファクタ、エラー解析などを支援する。
AI と対話しながら開発できる。

Cursor

AI 機能が統合されたコードエディタ。VSCode ベースで動作する。

まとめ:Laravel 学習で重要な考え方

Laravel 学習では、最初から全て覚える必要はない。

まずは、
Route、
Controller、
Model、
View、
それぞれの役割と関係性を理解することが重要。

この構造を理解すると、
Laravel 全体の仕組みが理解しやすくなる。