# Laravel Framework

## 概要

Laravel Frameworkは、PHPで構築された表現力豊かでエレガントな構文を持つWebアプリケーションフレームワークです。このリポジトリにはLaravelフレームワークのコアコードが含まれています。Laravelを使用してアプリケーションを構築する場合は、メインの[Laravelリポジトリ](https://github.com/laravel/laravel)を参照してください。

## 主な機能

| 機能カテゴリ | 説明 |
| --- | --- |
| Routing | シンプルで高速なルーティングエンジン |
| Container | 強力な依存性注入コンテナ |
| Session | 複数のバックエンドをサポートするセッション管理 |
| Cache | 複数のバックエンドをサポートするキャッシュシステム |
| Database | データベース非依存のスキーママイグレーション、Eloquent ORM |
| Queue | バックグラウンドジョブ処理 |
| Broadcasting | リアルタイムイベントブロードキャスティング |
| Auth | 認証・認可機能 |
| Mail | メール送信機能（複数ドライバー対応） |
| Notifications | 通知機能（メール、SMS、Slack等） |
| Validation | 包括的なバリデーション機能 |
| Filesystem | ファイルシステム抽象化レイヤー |
| Console | Artisanコンソールコマンド |
| Testing | テスト支援機能 |

## 技術スタック

### コア

- フレームワーク: Laravel 12.x (v12.53.0)
- 言語: PHP 8.2以上
- ライセンス: MIT

### 主要ライブラリ

- symfony/console: ^7.2.0 - コンソールコマンド
- symfony/http-foundation: ^7.2.0 - HTTPリクエスト/レスポンス
- symfony/http-kernel: ^7.2.0 - HTTPカーネル
- symfony/routing: ^7.2.0 - ルーティング
- symfony/mailer: ^7.2.0 - メール送信
- guzzlehttp/guzzle: ^7.8.2 - HTTPクライアント
- monolog/monolog: ^3.0 - ロギング
- nesbot/carbon: ^3.8.4 - 日時操作
- league/flysystem: ^3.25.1 - ファイルシステム抽象化
- ramsey/uuid: ^4.7 - UUID生成
- doctrine/inflector: ^2.0.5 - 単語の変換（単数形/複数形など）
- vlucas/phpdotenv: ^5.6.1 - 環境変数管理

## ディレクトリ構成

```
framework-12.x/
├── config/                     # デフォルト設定ファイル
│   ├── app.php                 # アプリケーション設定
│   ├── auth.php                # 認証設定
│   ├── broadcasting.php        # ブロードキャスティング設定
│   ├── cache.php               # キャッシュ設定
│   ├── concurrency.php         # 並行処理設定
│   ├── cors.php                # CORS設定
│   ├── database.php            # データベース設定
│   ├── filesystems.php         # ファイルシステム設定
│   ├── hashing.php             # ハッシュ設定
│   ├── logging.php             # ロギング設定
│   ├── mail.php                # メール設定
│   ├── queue.php               # キュー設定
│   ├── services.php            # 外部サービス設定
│   ├── session.php             # セッション設定
│   └── view.php                # ビュー設定
├── config-stubs/               # 設定ファイルのスタブ
├── src/
│   └── Illuminate/             # フレームワークコアコンポーネント
│       ├── Auth/               # 認証機能
│       ├── Broadcasting/       # イベントブロードキャスティング
│       ├── Bus/                # コマンドバス
│       ├── Cache/              # キャッシュ機能
│       ├── Collections/        # コレクション操作
│       ├── Concurrency/        # 並行処理
│       ├── Conditionable/      # 条件付きトレイト
│       ├── Config/             # 設定管理
│       ├── Console/            # Artisanコンソール
│       ├── Container/          # DIコンテナ
│       ├── Contracts/          # インターフェース定義
│       ├── Cookie/             # Cookie管理
│       ├── Database/           # データベース（Eloquent ORM含む）
│       ├── Encryption/         # 暗号化機能
│       ├── Events/             # イベントシステム
│       ├── Filesystem/         # ファイルシステム
│       ├── Foundation/         # アプリケーション基盤
│       ├── Hashing/            # ハッシュ機能
│       ├── Http/               # HTTPリクエスト/レスポンス
│       ├── JsonSchema/         # JSONスキーマ検証
│       ├── Log/                # ロギング
│       ├── Macroable/          # マクロ機能
│       ├── Mail/               # メール機能
│       ├── Notifications/      # 通知機能
│       ├── Pagination/         # ページネーション
│       ├── Pipeline/           # パイプライン
│       ├── Process/            # プロセス管理
│       ├── Queue/              # キュー機能
│       ├── Redis/              # Redis連携
│       ├── Reflection/         # リフレクション
│       ├── Routing/            # ルーティング
│       ├── Session/            # セッション管理
│       ├── Support/            # ヘルパー関数・ユーティリティ
│       ├── Testing/            # テストユーティリティ
│       ├── Translation/        # 多言語対応
│       ├── Validation/         # バリデーション
│       └── View/               # ビュー（Bladeテンプレート）
├── composer.json               # Composerパッケージ定義
├── pint.json                   # Laravel Pint（コードフォーマッター）設定
├── LICENSE.md                  # MITライセンス
└── README.md                   # プロジェクト説明
```

## セットアップ

### 必要条件

- PHP 8.2以上
- 以下のPHP拡張機能:
  - ext-ctype
  - ext-filter
  - ext-hash
  - ext-mbstring
  - ext-openssl
  - ext-session
  - ext-tokenizer

### インストール

このリポジトリはLaravelフレームワークのコアコードです。アプリケーション開発には以下のコマンドを使用してください：

```bash
# 新規Laravelプロジェクトの作成
composer create-project laravel/laravel my-project

# または、既存プロジェクトでフレームワークを更新
composer require laravel/framework:^12.0
```

## 開発

### コードスタイル

このプロジェクトでは[Laravel Pint](https://laravel.com/docs/pint)を使用してコードスタイルを統一しています。

```bash
# コードスタイルのチェック・修正
./vendor/bin/pint
```

### テスト

```bash
# PHPUnitでテストを実行
./vendor/bin/phpunit

# 並列テスト実行（要paratest）
./vendor/bin/paratest
```

### 静的解析

```bash
# PHPStanで静的解析を実行
./vendor/bin/phpstan analyse
```

## ドキュメント

- [公式ドキュメント](https://laravel.com/docs)
- [API リファレンス](https://laravel.com/api/12.x/)
- [Laravel Learn](https://laravel.com/learn)
- [Laracasts](https://laracasts.com)

## コントリビューション

Laravelフレームワークへのコントリビューションを検討いただきありがとうございます。コントリビューションガイドは[Laravelドキュメント](https://laravel.com/docs/contributions)をご参照ください。

## セキュリティ脆弱性

セキュリティ脆弱性の報告方法については、[セキュリティポリシー](https://github.com/laravel/framework/security/policy)をご確認ください。

## ライセンス

Laravel Frameworkは[MITライセンス](LICENSE.md)の下でオープンソースソフトウェアとして公開されています。
