【PHP】Laravel入門:インストールから簡単なサンプルアプリケーションの作成

対象バージョン: Laravel 13.x / PHP 8.3+(2026年時点のシリーズ基準)
一次ソース: Laravel 13.x 公式ドキュメント

こんにちは。この記事は、PHP の Web フレームワーク Laravel に初めて触れる方向けの入門です。インストールから、ルーティング・コントローラ・Blade ビューを使った最小サンプル、さらに Migration / Eloquent の入口までを一通り通します。高度な認証・キュー・テストなどは扱いません。まずは「ローカルで動くアプリを自分で作れる」状態を目指します。

この記事で分かること

  • Laravel とは何か(ざっくり)
  • Laravel 13 が求める PHP / ツールの要件
  • プロジェクト作成と開発サーバ起動
  • 主要なディレクトリの役割
  • ルーティング → コントローラ → Blade の最小フロー
  • Migration / DB / Eloquent の入口
  • 次に学ぶべきテーマの地図

Laravelとは何か

Laravel は、PHP 向けのフルスタック Web アプリケーションフレームワークです。ルーティング、コントローラ、テンプレート(Blade)、ORM(Eloquent)、マイグレーション、バリデーションなどをひと通り揃えており、決まりごとの多い Web アプリ開発を効率よく進められます。

公式は「表現力のある優雅な構文」と、依存注入・キュー・テストなどの強力な機能を強調しています(Installation — Meet Laravel)。初心者でも段階的に学べる一方、実務規模にも耐える設計です。

本シリーズでは Laravel 13.x を基準にします。古い記事の手順(特に文字列コントローラ構文など)は、現行では動かないことがあるため、この記事の手順を優先してください。


Laravel 13の要件

Laravel 13.x は PHP 8.3 以上が必須です(Release Notes)。サポート表では PHP 8.3〜8.5 が対象です。

確認コマンド例:

php -v

PHP 8.3.x またはそれ以上が表示されれば要件を満たします。8.2 以下では Laravel 13 のインストール自体が失敗します。

フレームワーク本体の composer.json でも "php": "^8.3" が要求されています。記事中のコード例・Artisan コマンドは、この前提で書いています。


環境の準備(前提ツール)

新規 Laravel アプリを作る前に、次を用意します(Installation)。

ツール 役割
PHP 8.3+ ランタイム
Composer PHP パッケージ管理・プロジェクト作成
Node.js + npm(または Bun) フロント資産(Vite)のビルド
(任意)Laravel Herd macOS / Windows 向けの統合ローカル環境

まだ PHP / Composer が入っていない場合、公式は OS 別の php.new インストーラも案内しています。すでに入っている場合は、Laravel インストーラだけ追加すれば十分です。

composer global require laravel/installer

PATH の通し方(重要)

グローバルに入れた laravel コマンドを使うには、Composer の bin ディレクトリを PATH に通します。ホーム直下の ~/.composer/vendor/bin を決め打ちしないでください。 Linux では XDG 準拠で ~/.config/composer/vendor/bin になることが多いです。

正しい確認方法:

composer global config bin-dir --absolute

表示されたパスを ~/.bashrc や ~/.zshrc の PATH に追加し、シェルを開き直します。

# 例(表示されたパスに置き換える)
export PATH="$(composer global config bin-dir --absolute):$PATH"

laravel と打ってヘルプが出れば準備完了です。


プロジェクトを作成する

インストーラ導入後、任意の作業ディレクトリで新規アプリを作成します。

laravel new sampleapp
cd sampleapp

アプリ名 sampleapp は任意です。作成時にスターターキット選択などの対話が出る場合は、入門ではデフォルト(キットなし)で問題ありません。

別手段: composer create-project

インストーラを使わず、Composer だけで作ることもできます。

composer create-project laravel/laravel sampleapp
cd sampleapp

どちらも Laravel 13 系のスケルトンが得られます。本記事の以降のパス説明は、プロジェクト直下をカレントにした前提です。

作成直後、SQLite(database/database.sqlite)と初期マイグレーションが用意される構成が一般的です(Installation — Databases and Migrations)。.env の DB_* を変えれば MySQL / PostgreSQL にも切り替えられます。


開発サーバを起動する

公式の推奨フローは、フロント資産の準備のあと composer run dev です(サーバ・キュー・Vite などをまとめて起動)。

npm install && npm run build
composer run dev

ブラウザで http://localhost:8000(または表示された URL)を開きます。

簡易起動: php artisan serve

HTTP だけ確認したいときは、PHP の組み込みサーバでも足ります。

php artisan serve

既定は http://127.0.0.1:8000 です。Vite のホットリロードは含まれないため、CSS/JS を本格的に触る段階では composer run dev の方が適しています。入門の「Hello を出す」段階ではどちらでも構いません。


主なディレクトリ構成

Laravel は「だいたいここに置く」という慣習がはっきりしています(Directory Structure)。入門でまず覚える場所だけ挙げます。

パス 役割
app/Http/Controllers HTTP リクエストを処理するコントローラ
app/Models Eloquent モデル
routes/web.php ブラウザ向けルート定義
resources/views Blade テンプレート(.blade.php)
database/migrations DB スキーマ変更の履歴
config 設定ファイル
public Web 公開ルート(index.php)
.env 環境ごとの設定(秘密情報。リポジトリに載せない)

ルート直下の vendor は Composer 依存です。通常は手で編集しません。


ルーティングの基本

HTTP リクエストの入口がルートです。ブラウザ向けは routes/web.php に書きます(Routing)。

Laravel 13 の fresh アプリには、すでに次のような定義があります。

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

つまり / にアクセスすると resources/views/welcome.blade.php が表示されます。同じ URI を二重に追加しないよう、後続ではこの定義を置き換えます。

クロージャの中で view('welcome') を返す書き方自体は現行でも有効です。次節でコントローラに移します。


コントローラを作る

処理が増えてきたら、ルートにロジックを直書きせずコントローラへ移します(Controllers)。

php artisan make:controller MessageController

app/Http/Controllers/MessageController.php が生成されます。次のようにメソッドを追加します。

<?php

namespace App\Http\Controllers;

use Illuminate\View\View;

class MessageController extends Controller
{
    public function showMessage(): View
    {
        $message = 'Hello, Laravel!';

        return view('welcome', ['message' => $message]);
    }
}

view ヘルパの第 2 引数で、ビューへ渡すデータを配列指定できます(Views — Passing Data To Views)。

ルートをコントローラへつなぐ(配列構文)

routes/web.php を次のように置き換えます。

<?php

use App\Http\Controllers\MessageController;
use Illuminate\Support\Facades\Route;

Route::get('/', [MessageController::class, 'showMessage']);

Laravel 13 では、この callable 配列構文が公式の標準です。use でコントローラを読み込み、[クラス名::class, 'メソッド名'] で紐づけます。

古い資料に残っている「コントローラ名@メソッド名」形式の短い文字列ルートは、Laravel 13 の既定ではクラス解決に失敗します。必ず上記の配列構文を使ってください。


Blade / View で表示する

コントローラから渡した $message を HTML に出すには、Blade で {{ $message }} と書きます(Blade — Displaying Data)。{{ }} は自動でエスケープされ、XSS 対策になります。

fresh の welcome.blade.php は紹介用のリッチなページです。サンプルでは内容を最小の HTML に置き換えると動作確認がしやすいです。

resources/views/welcome.blade.php を次のようにします。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>Laravel 入門サンプル</title>
</head>
<body>
    <h1>{{ $message }}</h1>
</body>
</html>

動作確認(成功条件)

開発サーバを起動した状態でブラウザを開き、表示が次になれば成功です。

  • URL: http://127.0.0.1:8000 または http://localhost:8000
  • 画面に Hello, Laravel! と出る

コントローラでデータを渡し、Blade で出力する、という最小の一連の流れがここまでです。

別ビュー名(例: message.blade.php)にしてもよいです。その場合は return view('message', ...) とファイル名を揃えます。


Migration / DB / Eloquent の入口

画面が表示できたら、次はデータの永続化です。ここでは「入口」だけ押さえ、深いリレーションやクエリ最適化には立ち入りません。

マイグレーションとは

マイグレーションは DB スキーマのバージョン管理です(Migrations)。テーブル定義を PHP コードで共有し、php artisan migrate で適用します。

php artisan make:migration create_posts_table
php artisan migrate

生成ファイルは database/migrations 配下です。up で作成、down で取り消し、という対です。

Laravel 13 の新規アプリは、既定で SQLite を使い、作成時に初期マイグレーション(users など)が走る構成が一般的です。MySQL などを使う場合は .env の DB_* を変更してから php artisan migrate を実行します。

Eloquent モデルとは

Eloquent はテーブルと PHP クラスを対応づける ORM です。モデルは通常 app/Models に置きます。

php artisan make:model Post -m

-m を付けると、モデルと対応するマイグレーションが同時に作れます。テーブルへ行の取得・作成は、あとから Post::all() や Post::create([...]) のような形で行います(詳細は公式の Eloquent ドキュメントへ)。

入門の次ステップとしては、「posts テーブルを作り、一覧を Blade で出す」小さな CRUD がちょうどよい目標です。


次に学ぶとよいこと

ここまでで「作る → 起動する → ルートとコントローラとビューをつなぐ → DB の入口を知る」まで到達しました。続けて学ぶと効果が高いテーマの例です。

認証・認可については、同サイトの現行記事「認証・認可の基本(ログインと権限)」も参照できます。まずは公式ドキュメントの Routing / Eloquent / Authentication から深掘りするのが安全です。


まとめ

  • Laravel 13.x は PHP 8.3+ 必須。バージョンを本文でも意識する
  • 作成は laravel new(または composer create-project)。bin の PATH は composer global config bin-dir --absolute で確認
  • 起動は公式推奨の composer run dev、簡易なら php artisan serve
  • ルートは [MessageController::class, 'showMessage'] 配列構文。古い短い文字列ルート構文は使わない
  • コントローラから view(..., ['message' => ...]) で渡し、Blade で {{ $message }} を出すと「Hello, Laravel!」が再現できる
  • Migration / Eloquent はスキーマとモデルの入口。次は小さな CRUD へ

参考リンク(公式)


コメントする