95%削減！Laravel開発を劇的に高速化するツール【LAC】

# はじめに
皆様のLaravel開発において、下記のような作業を繰り返すことは多いのではないでしょうか？

- モデル、コントローラー、サービス、リクエストクラスの作成
- ルーティングの設定
- バリデーションルールの記述
- モデルのリレーション定義
- テストデータのインポート

これらは必要不可欠なのですが、毎回行うのは面倒ですし地味に時間が取られる印象です。

Laravelに限らずWeb開発では、新しいリソースを追加するたびに同じような作業を繰り返す必要があり、以下のような課題があります
1. **ビジネスロジック以外のコード作成に時間を取られる**
2. **開発者によってコードの書き方が異なることによる品質のばらつき**
3. **手動作業による設定漏れやタイプミスなどのヒューマンエラー**

これらの課題を解消するため『**Laravel Arsenal Core (LAC)**』を開発しました。

LACの導入により以下を実現します。
- ✅ **開発速度の劇的向上** - 共通箇所の開発工数を95%削減
- ✅ **コード品質の統一** - Laravelのセオリーに基づく自動生成
- ✅ **ヒューマンエラーの削減** - 手動設定を可能な限り省略


# 何ができるツールなのか
LACは、Laravel開発における反復作業を自動化し、一貫したコード品質を保ちながら開発速度を劇的に向上させるツールキットとなります。

### 主な機能
**1. 完全なCRUDスキャフォールディング** 
- デフォルトのLaravelではできないServiceやViewファイルなどの自動作成に対応
- RESTful APIに沿ってCRUDの大枠も自動作成されますので、ファイル間の繋ぎ込みが不要

**2. ルートの自動同期** 
- 各コントローラーファイルの内容に沿って最小限のルートを自動生成します

**3. Excelでのテーブル連携** 
- 各マイグレーションファイルからデータベースの構成を自動で読み取り、データインポート用のExcelテンプレートを自動作成します
- 作成されたテンプレートにデータを入れることで、1コマンドでその内容を該当テーブルにインポートすることが可能です

**4. モデルリレーション自動生成** 
- 各マイグレーションファイルからテーブル間のリレーションを読み取り、各種モデルにリレーションを自動作成します

**5. バリデーション自動同期** 
- 各マイグレーションファイルから各カラムの条件を読み取り、各種リクエストファイルに条件を自動作成します

# アーキテクチャ設計思想
LACは以下の設計原則に基づいています：

1. **サービス層パターンの採用**
   - ビジネスロジックをコントローラーから完全分離
   - テスタビリティの向上と責務の明確化

2. **シンプルなコントローラー設計**
   - コントローラーは入力検証とサービス呼び出しのみに責務を限定
   - 可読性とメンテナンス性の向上

3. **統一されたプロジェクト構造**
   - チーム開発での一貫性を保証
   - 新規参加者のオンボーディングを迅速化

# 削減効果について

### ⏱️ 開発時間の比較 【 1 リソースあたり (例：Product CRUD） 】
| 項目 | コマンド | 標準での所要時間 |
|------|-------------------|-----------------|
| 基本ファイル4種（Model/Migration/Controller/Factory）作成 | make:model Product -mcf | 1分 |
| Seeder作成 | make:seeder ProductSeeder | 1分 |
| Request（2ファイル）作成 | make:request × 2回 | 2分 |
| Service作成 | ❌ 手動対応 | 8分 |
| テーブル定義に沿ったマイグレーション修正 | ❌ 手動対応 | 10分 |
| CRUDの作成（Service側） | ❌ 手動対応 | 20分 |
| CRUDの繋ぎ込み（Controller側） | ❌ 手動対応 | 10分 |
| Views（5ファイル） | ❌ 手動対応 | 10分 |
| CSS/JS（各4ファイル） | ❌ 手動対応 | 10分 |
| Blade - CSS/JSの繋ぎ込み | ❌ 手動対応 | 5分 |
| Routes設定 | ❌ 手動対応 | 5分 |
| モデルリレーション設定 | ❌ 手動対応 | 10分 |
| バリデーション設定 | ❌ 手動対応 | 10分 |
| 合計 | - | 約102分 |

LACでは下記を実行してわずか5分で完了！

```
php artisan lac:scaffold Product     # メイン処理
php artisan lac:sync-routes          # ルート同期
php artisan lac:sync-model-rel       # リレーション同期
php artisan lac:sync-validations     # バリデーション同期
```

- 手動作業時間：102分（約1時間40分）
- LAC実行時間：5分
- 削減率：**95%**

### プロジェクト規模別の効果
| プロジェクト規模 | 削減時間 | 削減コスト(時給¥5,000想定) |
|-----------------|---------|-------------------|
| 小規模（3リソース） | 4.9時間 | 2.4万円 |
| 中規模（10リソース） | 16.2時間 | 8.1万円 |
| 大規模（20リソース） | 32.3時間 | 16.2万円 |

#### 計算処理
- 1リソースあたりの削減時間： 97分（約1.62時間）
    - 小規模（3リソース）： 1.62時間 × 3 = 4.9時間
    - 中規模（10リソース）： 1.62時間 × 10 = 16.2時間  
    - 大規模（20リソース）： 1.62時間 × 20 = 32.3時間

# 導入方法・使い方

詳細な導入手順やサンプルコードは、GitHubのREADMEをご確認ください。
👉 [Laravel Arsenal Core - README](https://github.com/ChikauKume/laravel-arsenal-core/blob/main/README.ja.md)

## インストール
```bash
composer require lac/toolkit
```
📦 パッケージ詳細 : https://packagist.org/packages/lac/toolkit

## 基本的な使用フロー
```bash
# 1. スキャフォールディング処理
php artisan lac:scaffold Product

# 2. 各種同期処理
php artisan lac:sync-routes          # ルート同期
php artisan lac:sync-model-rel       # リレーション同期
php artisan lac:sync-validations     # バリデーション同期

# 3. データ連携処理（オプション）
php artisan lac:db-template          # Excelテンプレート生成
php artisan lac:db-import            # データインポート
```

# おわりに
皆様の開発効率向上にLACが貢献できれば幸いです。

**📝 フィードバック・要望**
ご要望や改善案につきましては、下記GitHubのIssuesからお気軽にお寄せください。
👉 https://github.com/ChikauKume/laravel-arsenal-core/issues

この記事が役に立った方は、ぜひいいね！やコメント、シェアをお願いします。