1. Laravel とは
Laravel は PHP で書かれたオープンソースの Web アプリケーションフレームワークです。2011 年に Taylor Otwell によって作られ、現在では PHP フレームワークの中で最も人気のあるものの一つとなっています。MVC(Model-View-Controller)アーキテクチャを採用しており、ビジネスロジック・データ・表示を分離して開発できます。
1.1 主要な機能
| 機能 | 説明 |
| Eloquent ORM | データベース操作をオブジェクト指向で直感的に扱える。SQLをほとんど書かずにDB操作が可能 |
| Blade テンプレート | シンプルかつ強力なテンプレート構文。HTMLとPHPを綺麗に分離 |
| Artisan | コマンドラインツール。コードの自動生成・マイグレーション・キャッシュクリアを効率化 |
| ルーティング | Route::get(‘/users’, …) のような直感的な記述でURLとコントローラーを結びつける |
| 認証(Auth) | ログイン・登録・パスワードリセットなどの認証機能を標準装備 |
| マイグレーション | データベース構造のバージョン管理 |
| キューと スケジューラ | 非同期処理・タスクの定期実行 |
2.Composer による依存管理
2.1 Composer とは
Composer は PHP の依存管理ツールです。JavaScript の npm、Python の pip に相当します。Laravel 自体も Composer を使ってインストール・管理されます。「アプリの部品調達係」と考えると理解しやすいです
2.2 Composer の3つの役割
- 買い物リストの管理: composer.json = 「このアプリに必要な部品リスト」
- 部品の調達と配置: Packagist からライブラリを取得して vendor/ に配置
- 部品同士の互換性チェック: バージョン矛盾がないか自動確認
2.3 ライブラリの所在
| 場所 | 役割 |
| Packagist (packagist.org) | PHPライブラリのカタログ(Amazonのサイトに相当) |
| GitHub | 実際のソースコードの置き場所(Amazonの倉庫に相当) |
| vendor/ フォルダ | あなたのPCに取ってきた完成品(自宅に届いた荷物) |
| ローカルキャッシュ | 一度落としたものの控え(物置に置いてある予備) |
2.4 よく使うコマンド
composer install # composer.lock通りにインストール
composer update # 制約内で更新
composer require guzzlehttp/guzzle # 新規パッケージ追加
composer remove vendor/package # パッケージ削除
composer dump-autoload # オートローダーの再生成
3.ライブラリの選定基準
3.1 評価軸(重要度順)
| 観点 | 確認場所 | 重要度 |
| メンテナンスの活発さ | GitHubの最終コミット日・Issue対応状況 | ★★★ |
| ダウンロード数・利用実績 | Packagistの月間DL数 | ★★★ |
| GitHub Stars | GitHubのスター数 | ★★☆ |
| ライセンス | composer.jsonのlicense欄 | ★★★ |
ドキュメントの質 | GitHubのREADME | ★★☆ |
| Laravel公式・コミュニティ標準か | Laravel News・ブログ記事 | ★★★ |
| 依存ライブラリの少なさ | composer.jsonのrequire欄 | ★★☆ |
3.2 PDF生成ライブラリの比較例
PDF生成は「鬼門」と言われるほど難しい分野です。文字化けや不安定さの原因の多くは、ライブラリそのものではなく、日本語フォント設定・CSS制限・サーバー環境に起因します。
| ライブラリ | 特徴 | 日本語対応 |
| barryvdh/laravel-dompdf | 最も定番。HTML→PDFが簡単。PHPだけで動く CSSの再現度高い。 | 設定が必要だが可能 |
| barryvdh/laravel-snappy | Spatie製で信頼性高い。 | 可能 |
| spatie/laravel-pdf | Node.js+Chromiumが必要Node.js+Chromiumが必要 | 可能 |
3.3 ブラウザ印刷 vs サーバーPDF生成
このプロジェクトでは、PDF生成ライブラリの複雑さを回避するため、ブラウザの印刷機能(@media print)を採用しています。
| 比較項目 | ブラウザ印刷 | サーバーPDF生成 |
| 文字化け | ほぼ起きない | フォント設定が必要 |
| CSSの対応 | 最新CSS全て使用可能 | 部分的な制限あり |
| 開発の難易度 | 通常のHTML開発と同じ | 調整に時間がかかる |
| 自動化・バッチ処理 | 不可 | 可能 |
| メール添付 | 不可 | 可能 |
| サーバー負荷 | ゼロ(クライアント処理) | 高い |

