Laravelの紹介と開発環境のセットアップ
Laravelは世界で最も人気のあるPHPフレームワークです。そのエレガントな構文により, Web開発を効率的かつ楽しいものにします。手書きの手紙からメールへの進化のようなものです。
1. 学ぶ内容
- Laravel 11:バージョンの特徴とエコシステムの概要
- PHP 8.2+のシステム要件とComposerパッケージマネージャ
- Docker開発環境:Laravel Sail vs Laravel Herd
- 最初のプロジェクトShopMetricsの作成
- Laravelディレクトリ構造の分析
2. 起業家のリアルストーリー
(1) ペインポイント:ECサイトの分析スクリプトを手動で保守
Bobは独立系開発者で, 5つのECクライアントのために20以上のPHP分析スクリプトを手動で保守しています。クライアントが新しいレポートを求めるたびに, SQLをゼロから書き, HTMLを組み立て, ファイルアップロードを処理しなければなりません。先月, Aliceの店舗でサブスクリプション課金機能を追加する必要がありました。Bobは3晩徹夜して納品し, コードは15のフォルダに散在し, 彼自身でさえロジックがどこにあるか分からなくなりました。Charlieはさらにひどく, ネイティブPHPでAPIを書こうとしたところ, 2,000行のコードすべてにSQLインジェクションの脆弱性があることが判明しました。
(2) Laravelのソリューション
Laravelは, ルーティング, データベース, 認証, キューなどの繰り返しタスクを, すぐに使えるツールにカプセル化するエレガントな規約のセットを使用しています。Bobはモデルとルートを定義するだけで, CRUDページ, APIエンドポイント, ユーザー認証がすべて自動的に生成されます。
# 30秒でプロジェクトを作成
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
php artisan serve
# http://localhost:8000 にアクセス — アプリが起動しています!
(3) 成果
BobがLaravelを使ってShopMetricsを書き直した後, 新しいデータレポートの生成に必要な時間は3日から3時間に短縮され, コード量は70%削減されました。Aliceのサブスクリプション機能はわずか2日でリリースされました。
3. Laravelとは
Laravelは, Taylor Otwellが2011年に作成したオープンソースのPHP Webフレームワークです。MVCアーキテクチャパターンに従い, 「エレガントな構文」と「開発者体験」で知られています。
graph LR
A[Laravel Framework] --> B[ルーティング]
A --> C[Eloquent ORM]
A --> D[Bladeテンプレート]
A --> E[認証]
A --> F[キューシステム]
A --> G[イベントブロードキャスト]
A --> H[Artisanコンソール]
(1) コア設計哲学
- 設定より規約:規約に従うことでコードを減らし, カスタマイズが必要な場合のみ上書きする
- エレガントな構文:冗長な手続き型コードを流れるようなチェーン呼び出しに置き換える
- フルスタックソリューション:ルーティングからデプロイまで, すべてのニーズをカバーする単一フレームワーク
(2) Laravel 11の新機能
| 機能 | 説明 |
|---|---|
| ディレクトリ構造の合理化 | app/Http/Kernel.phpなど9ファイルを削除 |
| より軽量なブートストラップ | bootstrap/app.phpでミドルウェアと例外を1ファイルで設定 |
| SQLiteをデフォルトで使用 | すぐに使え, MySQLの設定不要 |
| 秒単位のレート制限 | 秒精度のレート制限 |
| Scout検索の改善 | フルテキスト検索とベクトル検索のサポート |
4. Laravelエコシステムの概要
Laravelはコアフレームワークだけでなく, 開発からデプロイまでの全プロセスをカバーする公式ツール群も提供しています。
| ツール | 目的 | 説明 |
|---|---|---|
| Forge | サーバー管理 | DigitalOcean/Vultrへのワンクリックデプロイ |
| Vapor | サーバーレスデプロイ | AWS Lambdaベースのサーバーレスソリューション |
| Nova | バックエンドパネル | 公式CMS/管理パネル |
| Sail | Docker開発環境 | 組み込みDocker Compose設定 |
| Herd | ローカル開発環境 | macOS/Windows向けネイティブPHPランタイム |
| Breeze | 認証スキャフォールド | 軽量ログイン/登録テンプレート |
| Sanctum | API認証 | SPA + トークンのデュアルモード認証 |
| Echo | リアルタイムブロードキャスト | WebSocketイベントプッシュフロントエンドライブラリ |
(1) ▶ サンプル:Laravelバージョンとエコシステムツールの確認
# Laravelバージョンを確認
php artisan --version
# 出力: Laravel Framework 11.x
# Composerでインストール済みパッケージを確認
composer show | grep laravel
# laravel/framework
# laravel/sail
# laravel/sanctum
# laravel/tinker
出力:
# コマンドは正常に実行されました
5. 環境のセットアップ
(1) PHP 8.2+とComposer
Laravel 11はPHP 8.2以降を必要とします。ComposerはPHPのパッケージマネージャで, Node.jsのnpmに似ています。
| 要件 | 最低バージョン | 推奨バージョン |
|---|---|---|
| PHP | 8.2 | 8.3 |
| Composer | 2.0 | 2.8+ |
| 拡張機能: Ctype | ✅ | ✅ |
| 拡張機能: cURL | ✅ | ✅ |
| 拡張機能: DOM | ✅ | ✅ |
| 拡張機能: MBstring | ✅ | ✅ |
| 拡張機能: OpenSSL | ✅ | ✅ |
| 拡張機能: PDO | ✅ | ✅ |
| 拡張機能: Tokenizer | ✅ | ✅ |
(1) ▶ サンプル:Composerのインストールと環境の確認
# Composerのインストール (macOS/Linux)
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# PHPとComposerのバージョンを確認
php -v
# PHP 8.3.x (cli)
composer -V
# Composer version 2.8.x
出力:
{"status":"ok","data":{}}
(2) Dockerソリューション:Laravel Sail vs Laravel Herd
| 項目 | Laravel Sail | Laravel Herd |
|---|---|---|
| 原理 | Dockerコンテナ | ネイティブPHP + Nginx |
| プラットフォーム | Win/Mac/Linux | Mac/Windows |
| パフォーマンス | やや遅い (コンテナオーバーヘッド) | 高速 (ネイティブ実行) |
| 分離 | 完全分離 | 部分分離 |
| 適している用途 | チーム環境の統一 | 個人の迅速な開発 |
| 起動時間 | 30-60秒 | 5秒 |
(2) ▶ サンプル:Laravel Sailを使ったプロジェクトの開始
# Sailでプロジェクトを作成
curl -s https://laravel.build/ShopMetrics | bash
cd ShopMetrics
# 全サービスを起動 (MySQL, Redis, MeiliSearch...)
./vendor/bin/sail up -d
# Sail内でArtisanコマンドを実行
./vendor/bin/sail artisan migrate
出力:
{"status":"ok","data":{}}
(3) ▶ サンプル:Laravel Herdを使ったプロジェクトの開始
# laravelherd.comからHerdをインストール後
# Herdは~/Herdまたは~/Sites内のプロジェクトを自動検出
cd ~/Herd
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
# Herdは自動的に.testドメインをプロビジョニング
# アクセス: http://ShopMetrics.test
出力:
# コマンドは正常に実行されました
6. ShopMetricsプロジェクトの作成
(1) Composerを使ったプロジェクトの作成
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
(2) ディレクトリ構造の分析
ShopMetrics/
├── app/ # アプリケーションのコアコード
│ ├── Http/ # コントローラ, ミドルウェア, リクエスト
│ ├── Models/ # Eloquent ORMモデル
│ └── Providers/ # サービスプロバイダ
├── bootstrap/ # フレームワークのブートストラップファイル
├── config/ # 設定ファイル
├── database/ # マイグレーション, シーダー, ファクトリ
├── public/ # Webルート (index.php)
├── resources/ # ビュー, アセット, 言語ファイル
├── routes/ # ルート定義
│ ├── web.php # Webルート
│ └── api.php # APIルート
├── storage/ # ログ, キャッシュ, コンパイル済みファイル
├── tests/ # PHPUnit/Pestテスト
└── vendor/ # Composer依存パッケージ
| ディレクトリ | 責務 | 例え |
|---|---|---|
app/ |
ビジネスロジック | 会社のオフィス |
routes/ |
URLルーティング | 会社の受付 |
resources/views/ |
ページテンプレート | 会社のショールーム |
database/ |
データ構造 | 会社の資料室 |
config/ |
設定パラメータ | 会社の規則と手順 |
public/ |
Webポータル | 会社の玄関 |
(1) ▶ サンプル:開発サーバーの起動とホームページへのアクセス
cd ShopMetrics
# 組み込み開発サーバーを起動
php artisan serve
# Laravel開発サーバーを起動中: http://127.0.0.1:8000
# ブラウザで http://127.0.0.1:8000 にアクセス
# Laravelのウェルカムページが表示されます
出力:
# コマンドは正常に実行されました
7. 総合例:ShopMetricsプロジェクトの初期化
# ============================================
# 総合: ShopMetricsプロジェクトの初期化
# 内容: プロジェクト作成, .env設定, マイグレーション実行, サーバー起動
# ============================================
# 1. Laravelプロジェクトを作成
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics
# 2. 環境を設定
cp .env.example .env
php artisan key:generate
# アプリケーションキーが正常に設定されました
# 3. .envでデータベースを設定 (クイックスタートにSQLiteを使用)
# DB_CONNECTION=sqlite
# DB_DATABASE=database/database.sqlite
# 4. デフォルトマイグレーションを実行
php artisan migrate
# マイグレーションテーブルを作成: users, password_reset_tokens など
# 5. 開発サーバーを起動
php artisan serve
# サーバーが http://127.0.0.1:8000 で実行中
# 6. インストールを確認
php artisan about
# 環境: Local
# Laravelバージョン: 11.x
# PHPバージョン: 8.3.x
出力:
Application key set successfully.
Info: Using SQLite database: database/database.sqlite
Migration table created successfully.
Running migrations:
0001_01_01_000000_create_users_table ... done
0001_01_01_000001_create_password_reset_tokens_table ... done
Starting Laravel development server: http://127.0.0.1:8000
❓ よくある質問
php artisan serveを実行するだけで済みます。bootstrap/app.phpの設定を調整するだけで済みます。vendor/ディレクトリを管理)で, npmはNode.jsのパッケージマネージャ (node_modules/ディレクトリを管理)です。Laravelは両方を使用します:ComposerがPHP依存パッケージを, npmがフロントエンドリソースを管理します。php artisan aboutを実行してください。PHPバージョン, 拡張機能, データベースドライバなど, すべての環境情報がリスト表示され, 要件を満たさない項目は赤色でハイライトされます。📖 まとめ
- Laravelは最も人気のあるPHPフルスタックフレームワークで, エレガントな構文と開発者体験で知られています
- Laravel 11はディレクトリ構造を簡素化し, SQLiteをデフォルトで使用することで, より簡単に始められます
- Laravelエコシステムには, Forge, Vapor, Sail, Herd, Sanctumなどの完全なツールチェーンが含まれています
- 環境セットアップには, Docker (Sail)またはネイティブインストール (Herd)を推奨します。いずれもPHP 8.2+とComposerが必要です
- プロジェクトのディレクトリ構造はMVCパターンに従います:app/にロジック, routes/にルート, resources/にビュー
php artisan serveで開発サーバーをすぐに起動できます
📝 練習問題
-
基本演習 (⭐):ローカルにPHP 8.2+とComposerをインストールし,
composer create-projectを使ってShopMetricsという名前のLaravelプロジェクトを作成してください。ブラウザでウェルカムページを表示できることを確認してください。 -
応用演習 (⭐⭐):Laravel SailまたはDockerを使って同じプロジェクトを作成し,
php artisan serveとSailの起動方法の違いを比較し, 起動時間とメモリ使用量を記録してください。 -
チャレンジ (⭐⭐⭐):Laravel 11のディレクトリ構造の変更点 (Laravel 10との比較)を確認し, 削除されたファイルと, それらの機能がLaravel 11でどのように実装されているかをリストアップしてください。



