Laravel 基礎学習|初心者向けに仕組み・MVC・構造を解説
Laravel を学習する前に、Laravel がどのような仕組みで動いているのか、全体像を理解しておくことが重要。
この記事では、Laravel 初心者向けに仕組み・MVC・構造を解説する。
Laravel とは
Laravel は、PHP で作られた
Web アプリケーションフレームワーク。
Web アプリ開発で必要になる機能が、
最初から多数用意されている。
- ルーティング
- DB 操作
- ログイン機能
- バリデーション
- メール送信
- テンプレートエンジン
Laravel を使用することで、
効率よく Web アプリを開発できる。
Laravel は PHP、Web サーバー、DB、Composer など、
複数のツールを使用して動作するため、
開発用 PC に Laravel 開発環境を
構築しておく必要がある。
最近では Laravel Herd などを使用することで、
Windows / Mac の両方で
比較的簡単に Laravel 開発環境を構築できる。
フレームワークとは
フレームワークとは、
「よく使う機能や構造をまとめた土台」のこと。
Laravel を使用しない場合は、
ログイン機能や DB 接続などを
全て自分で実装する必要がある。
一方、Laravel では
よく使う機能が最初から用意されているため、
開発効率を大幅に向上できる。
Laravel を使わない PHP 開発との違い
Laravel を使用しない PHP 開発では、
画面表示やデータベース接続、
URL ごとの処理振り分けなどを、
開発者自身が実装する必要がある。
小規模な開発であれば問題ないことも多い。
しかし、
アプリの規模が大きくなると、
以下のような問題が発生しやすくなる。
- ファイル構造がバラバラになる
- DB 処理が散らばる
- コードを再利用しづらい
- 複数人開発が難しい
- 保守性が低下する
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 アプリ開発を効率よく進められる。
例えば、
- ログイン機能を簡単に実装できる
- DB 操作を効率化できる
- Route / Controller / View を整理しながら開発できる
- チーム開発しやすい構造で開発できる
- セキュリティ対策機能が最初から用意されている
そのため、
中〜大規模 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つ。
- Route
- Controller
- Model
- View
Laravel 開発では、
この4つの役割を理解することが非常に重要。
MVC は「処理の実行順序」ではなく、
「役割ごとの分類」を表す考え方。
実際の実行順序で言うと RCMV となる。
Route
URL と処理を紐づける役割を持つ。
例えば、
/reviews
へアクセスした時、
どの Controller を実行するかを定義する。
Controller
アプリの処理を担当する。
主に以下のような処理を行う。
- DB からデータ取得
- 登録処理
- 更新処理
- View へデータを渡す
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 コマンドを実行して使用する。
例えば、
- Controller 作成
- DB テーブル作成
- ルート確認
などをコマンドで実行できる。
ターミナルは、コマンドを入力するためのツール。
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 開発では非常に重要。
- Laravel コマンド実行
- npm 実行
- Git 操作
- DB 操作
Google Chrome / Edge
Laravel アプリの表示確認に使用する。
開発者ツール(DevTools)を使うことで、
HTML、CSS、JavaScript、エラー確認などもできる。
Git
ソースコードのバージョン管理ツール。変更履歴を保存できる。
- 変更履歴管理
- 過去状態へ戻す
- GitHub 連携
- チーム開発
補足ツール
Docker
開発環境をコンテナ化するツール。
開発環境を統一できるため、チーム開発でよく使用される。
「他人の環境では動くのに、自分の環境では動かない」問題を減らせる。
Postman
API テスト用ツール。
Laravel API 開発時に、HTTP リクエスト送信やレスポンス確認を行う。
- GET
- POST
- PUT
- DELETE
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 全体の仕組みが理解しやすくなる。