PHP

Laravel 11 と PHP 8.3 の環境構築・API実装完全ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


スポンサードリンク

環境構築

1. ローカルマシンに PHP 8.3 と Composer をインストール

ポイント
PHP 拡張は Laravel が要求する mbstring, openssl, pdo_mysql などを必ず入れておく。

2. Docker / Sail による開発環境

Laravel 11 は公式の Sail パッケージで Docker コンテナ化が推奨されています。以下は最小構成です。

コンテナ内の PHP‑FPM 起動コマンド(本番イメージ用)

Dockerfile に記述する CMD は次のように書くと、プロセスがフォアグラウンドで実行され、Docker のヘルスチェックが正しく働きます。

docker-compose.ymlapp サービスは上記イメージをビルドし、起動時にマイグレーションとキャッシュクリアを自動化します(後述の デプロイ 参照)。


.env 設定とデータベース接続

基本的な環境変数

  • .env.example をリポジトリに残すことで、クローンした開発者は cp .env.example .env && php artisan key:generate だけで作業を開始できます。
  • 本番環境では .env.production を別ファイルとして管理し、CI/CD のデプロイ時に安全に上書きします。

プロジェクトのディレクトリ構成と命名規則

ディレクトリ 用途・ベストプラクティス
app/Models Eloquent モデル(例: Todo.php
app/Http/Controllers/API API 専用コントローラ。Web 用は App\Http\Controllers\Web に分離
routes/api.php /api/* プレフィックス自動付与、認証ミドルウェアはここでまとめる
database/migrations スキーマ定義ファイル。テーブル名は単数形ではなく複数形(todos
app/Http/Requests Form Request によるバリデーション・認可ロジック
app/Http/Resources JSON 出力を統一する API Resource
tests/Feature HTTP リクエストテスト(Pest / PHPUnit)
docker/ Dockerfile、docker-compose.yml、CI 用設定ファイル等を格納

命名規則
- コントローラは TodoController のように単数形 + Controller
- API Resource は TodoResource、コレクションは自動的に TodoCollection になるが、::collection() を直接呼び出すのが一般的です。


Todo リソースの実装(モデル・マイグレーション)

マイグレーション (database/migrations/xxxx_xx_xx_create_todos_table.php)

モデル (app/Models/Todo.php)

マイグレーションは Docker 環境なら ./vendor/bin/sail artisan migrate、ローカルなら php artisan migrate で実行します。


RESTful ルーティング & API コントローラ

1. ルーティング

apiResource が自動で index, store, show, update, destroy の 5 エンドポイントを生成します。

2. コントローラ作成

実装例(主要メソッド)

  • Eager Loading (with('user')) で N+1 問題を回避。
  • ポリシー による権限チェックは php artisan make:policy TodoPolicy で作成し、AuthServiceProvider に登録します。

Form Request とバリデーション

作成コマンド

StoreTodoRequest.php

UpdateTodoRequest は同様ですが、sometimes ルールを付与すると部分更新が楽になります。

ベストプラクティス
- バリデーションは常に Form Request に集約し、コントローラは「何をするか」だけを書く。
- カスタムバリデータや Rule::unique のような複雑ロジックは Service クラス に切り出すとテストが容易です。


JSON 出力の統一(API Resource)

TodoResource.php

  • 型キャスト ((bool)) と ISO 8601 日付形式でフロントエンド側のパーサを楽にします。
  • TodoResource::collection($todos) が自動的にページネーション情報(meta, links)も付与します。

認証 – Laravel Sanctum の導入

インストールと設定

app/Http/Kernel.php(API グループ)

トークン発行エンドポイント例

  • SPA の場合は sanctum/csrf-cookie エンドポイントで CSRF トークンを取得し、Cookie 方式で認証できます。
  • トークン失効delete /api/logout$request->user()->tokens()->delete(); とすれば完了。

テスト戦略(Postman・Pest・GitHub Actions)

1. Postman コレクション

手順 内容
「New → Collection」→Todo API 作成。
環境変数 BASE_URLhttp://localhost(Sail)または本番 URL を設定。
各エンドポイントにリクエストを追加し、認証ヘッダー Authorization: Bearer {{access_token}} を設定。
「Tests」タブで簡易アサーションを書く(例:ステータス 200/201 の検証)。
コレクションは JSON ファイルとしてエクスポートし、CI に組み込めるように newman で自動実行可能。

Newman 実行サンプル(GitHub Actions 用)

2. Pest(または PHPUnit)によるユニット/機能テスト

tests/Feature/TodoTest.php

  • php artisan test でローカル実行、CI では vendor/bin/pest --ci を使用。
  • テストデータは Laravel FactoriesUserFactory, TodoFactory)を活用し、テーブルの状態管理は RefreshDatabase トレイトで自動リセット。

3. GitHub Actions CI 設定

  • キャッシュactions/cache@v3)を追加すれば実行時間が大幅に短縮できます。
  • 本番デプロイ時は同様の docker-compose.yml を利用し、GitHub Actions の push イベントで自動ビルド・プッシュ (ghcr.io/yourorg/todo-api:latest) が可能です。

Docker 本番デプロイと php‑fpm 起動例

完全版 docker-compose.yml

デプロイ手順(CI/CD の一部として)

  • command では マイグレーション → キャッシュ生成 → php-fpm フォアグラウンド実行 の流れを一括化。
  • php-fpm -F--nodaemonize)により、Docker がプロセス終了を正しく検知できるので ヘルスチェック が機能します。

パフォーマンス・セキュリティ最適化ポイント

項目 内容 効果
キャッシュ (config:cache, route:cache) 設定ファイルとルート情報を PHP の opcode キャッシュに変換。 リクエストごとのディスク I/O を約 20‑30 % 削減
Eager Loading (with()) N+1 クエリ問題の根本解消。 DB アクセス回数削減でレイテンシが大幅に改善
キュー (QUEUE_CONNECTION=redis) メール送信・通知処理を非同期化。 HTTP スレッドがブロックしないため、平均応答時間が 30 % 程度向上
Rate Limiting (ThrottleRequests ミドルウェア) api グループにデフォルトで throttle:api が設定済み。 DoS 攻撃対策と API の安定運用
ヘッダー強化 (X-Content-Type-Options, Referrer-Policy) helmet に相当するミドルウェアは Laravel では SecureHeaders パッケージで実装可。 ブラウザ側の攻撃ベクトルを低減
ログ監視 (Log::channel('stack'), Sentry 等) エラーと例外を集中管理し、Slack 通知や外部 APM と連携。 障害検知が迅速になり、復旧時間が短縮

具体的なコード例


まとめ

  • Laravel 11 + PHP 8.3 の組み合わせは、モダンな API 開発に最適です。
  • Docker / Sail による環境統一で「マシン依存」問題を回避し、php-fpm -F を用いた本番コンテナ起動が安全です。
  • Form Request, API Resource, Sanctum といった Laravel 標準機能を活用すれば、認証・バリデーション・JSON 形状の統一がシンプルに実装できます。
  • テスト は Postman → Newman、Pest → GitHub Actions の三層で自動化し、プッシュごとに品質保証を走らせましょう。
  • パフォーマンスセキュリティ はキャッシュ・Eager Loading・キュー・Rate Limiting などのベストプラクティスで補完します。

これらの手順を踏めば、開発から本番デプロイまで一貫したフローが確立でき、拡張性と保守性に優れた Todo API が完成します。


この記事は 2026 年 4 月時点の Laravel 11 と PHP 8.3 の最新情報を元に執筆しています。バージョンアップや公式パッケージの変更があった場合は、公式ドキュメントをご参照ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
AI時代のキャリア構築

プログラミング学習、今日から動き出す

「何から始めるか」で止まっている人こそ、無料説明会や本で自分に合うルートを30分で確定できます。

Enjoy Tech!|月額制でWeb系に強い▶ (Kindle本)ITエンジニアの転職学|後悔しないキャリア戦略▶

▶ AIコーディング環境なら  実践Claude Code入門(Amazon)が実務で即使える入門書です。Amazonベストセラーにも選ばれていますよ。


-PHP