404 Not Found

404 Not Found


nginx

Laravelの紹介と開発環境のセットアップ

Laravelは世界で最も人気のあるPHPフレームワークです。そのエレガントな構文により, Web開発を効率的かつ楽しいものにします。手書きの手紙からメールへの進化のようなものです。

1. 学ぶ内容


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エンドポイント, ユーザー認証がすべて自動的に生成されます。

BASH
# 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アーキテクチャパターンに従い, 「エレガントな構文」と「開発者体験」で知られています。

100%
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バージョンとエコシステムツールの確認

BASH
# Laravelバージョンを確認
php artisan --version
# 出力: Laravel Framework 11.x

# Composerでインストール済みパッケージを確認
composer show | grep laravel
# laravel/framework
# laravel/sail
# laravel/sanctum
# laravel/tinker

出力:

TEXT
# コマンドは正常に実行されました

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のインストールと環境の確認

BASH
# 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

出力:

TEXT
{"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を使ったプロジェクトの開始

BASH
# 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

出力:

TEXT
{"status":"ok","data":{}}

(3) ▶ サンプル:Laravel Herdを使ったプロジェクトの開始

BASH
# laravelherd.comからHerdをインストール後
# Herdは~/Herdまたは~/Sites内のプロジェクトを自動検出

cd ~/Herd
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics

# Herdは自動的に.testドメインをプロビジョニング
# アクセス: http://ShopMetrics.test

出力:

TEXT
# コマンドは正常に実行されました

6. ShopMetricsプロジェクトの作成

(1) Composerを使ったプロジェクトの作成

BASH
composer create-project laravel/laravel ShopMetrics
cd ShopMetrics

(2) ディレクトリ構造の分析

TEXT
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) ▶ サンプル:開発サーバーの起動とホームページへのアクセス

BASH
cd ShopMetrics

# 組み込み開発サーバーを起動
php artisan serve
# Laravel開発サーバーを起動中: http://127.0.0.1:8000

# ブラウザで http://127.0.0.1:8000 にアクセス
# Laravelのウェルカムページが表示されます

出力:

TEXT
# コマンドは正常に実行されました

7. 総合例:ShopMetricsプロジェクトの初期化

BASH
# ============================================
# 総合: 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

出力:

TEXT
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

❓ よくある質問

Q LaravelとCodeIgniterの違いは何ですか?
A LaravelはORM, 認証, キュー, ブロードキャストを内蔵したフルスタックフレームワークです。CodeIgniterはルーティングと基本的なMVCのみを提供する軽量フレームワークで, 他の機能は手動で実装する必要があります。Laravelは中〜大規模プロジェクトに適しており, CodeIgniterは小規模プロジェクトに適しています。
Q Dockerを使わなければなりませんか?
A いいえ, 必須ではありません。Docker (Sail)は環境を標準化したいチームに適しており, Laravel Herdは迅速な開発を求める個人に最適です。既にPHP 8.2+の環境があれば, php artisan serveを実行するだけで済みます。
Q Laravel 11とLaravel 10には大きな違いがありますか?
A Laravel 11はディレクトリ構造と起動プロセスを合理化していますが, コアAPIはほぼ変更されていません。Laravel 10からのアップグレードは, 通常bootstrap/app.phpの設定を調整するだけで済みます。
Q なぜ初心者にはSQLiteが推奨されるのですか?
A SQLiteはインストール不要で, MySQLやPostgreSQLとは異なり, すぐに使い始めることができるため, 学習やプロトタイピングに最適です。本番環境ではMySQLまたはPostgreSQLへの切り替えを推奨します。
Q Composerとnpmの違いは何ですか?
A ComposerはPHPのパッケージマネージャ (vendor/ディレクトリを管理)で, npmはNode.jsのパッケージマネージャ (node_modules/ディレクトリを管理)です。Laravelは両方を使用します:ComposerがPHP依存パッケージを, npmがフロントエンドリソースを管理します。
Q ローカル環境がLaravelの要件を満たしているかどうかを確認するには?
A プロジェクトディレクトリでphp artisan aboutを実行してください。PHPバージョン, 拡張機能, データベースドライバなど, すべての環境情報がリスト表示され, 要件を満たさない項目は赤色でハイライトされます。

📖 まとめ


📝 練習問題

  1. 基本演習 (⭐):ローカルにPHP 8.2+とComposerをインストールし, composer create-projectを使ってShopMetricsという名前のLaravelプロジェクトを作成してください。ブラウザでウェルカムページを表示できることを確認してください。

  2. 応用演習 (⭐⭐):Laravel SailまたはDockerを使って同じプロジェクトを作成し, php artisan serveとSailの起動方法の違いを比較し, 起動時間とメモリ使用量を記録してください。

  3. チャレンジ (⭐⭐⭐):Laravel 11のディレクトリ構造の変更点 (Laravel 10との比較)を確認し, 削除されたファイルと, それらの機能がLaravel 11でどのように実装されているかをリストアップしてください。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%