概要
本ドキュメントでは、Laravelプロジェクトを新規作成する際に使用する
laravel newcomposer create-project
の違いについて、役割・内部処理・実務上の使い分けの観点から整理する。
背景と目的
Laravelプロジェクトを作成する方法は複数存在するが、
- 何が違うのか
- 実務ではどちらを使うべきか
- CI環境ではどちらが適切か
といった点が曖昧なまま利用されることが多い。
本ドキュメントでは内部挙動まで踏み込み、実務判断ができるレベルで整理する。
コマンドの役割の違い
laravel new
Laravel公式の Laravel Installer を使用するコマンド。
特徴
- 事前に
laravel/installerのインストールが必要 - 対話形式で以下を選択可能
- テストフレームワーク
- データベース種別
- スターターキット(Breeze / Jetstream 等)
- 最新Laravelの推奨構成に沿った生成体験を提供
実行例
laravel new example-app
composer create-project
Composerが提供する汎用的なプロジェクト生成機能。
Laravelに限らず使用可能。
実行例
composer create-project laravel/laravel example-app
バージョン固定例
composer create-project laravel/laravel example-app "^12.0"
内部で行われる処理の違い
composer create-project の場合
Laravelスケルトン(laravel/laravel)の composer scripts が実行される。
代表的な処理:
-
.env.example→.envコピー php artisan key:generate-
database.sqlite自動生成 -
php artisan migrate実行
つまり、
スケルトンの展開 + 依存解決 + 初期セットアップ自動実行
という流れになる。
laravel new の場合
内部的には上記処理をベースにしつつ、
- 対話式選択
- スターターキットの自動導入
- 初期UIスキャフォールド生成
などが追加される。
つまり、
「生成体験」に強みがある
のが laravel new である。
実務でのベストプラクティス
ローカル開発
推奨:laravel new
理由:
- 最新推奨構成に沿う
- 初期選択が明確
- 開発者体験が良い
CI / Docker / 自動化環境
推奨:composer create-project
理由:
- バージョン固定が容易
- 再現性が高い
- スクリプト制御が明確
チーム開発の場合
重要なのは「どちらを使うか」よりも
- バージョン固定
- 初期テンプレートの統一
- READMEへの明記
である。
まとめ
観点 laravel new composer create-project
対話生成 ○ ×
バージョン固定 △ ◎
CI適性 △ ◎
DX ◎ ○
結論
- 普段の開発 →
laravel new - 自動化・CI →
composer create-project
目的に応じて使い分けるのが最適解である。