LaminasからLaravelへ──属人化した業務システムを“誰でも開発できる環境”へ移行した話
はじめに
これまで社内ではLaminas(旧Zend Framework)を使って業務システムを構築・運用してきました。
長く安定して動いてきた反面、最近では技術的負債や属人化が深刻な課題になりつつありました。
そんな中、以下のような課題に直面しました:
- Laminasが扱えるエンジニアが少ない
- ドキュメントがないため、知見が属人化している
- コードのコピペ文化が定着しつつある
- 新しい技術者が育たない
これらを解消するために、Laravelへの移行を決断しました。
この記事では、LaminasからLaravelへの移行理由と、実際の移行ステップについてまとめてみました。
LaminasとLaravelの比較
項目 | Laminas(Zend Framework) | Laravel |
---|---|---|
歴史・安定性 | 商用向け長期運用向き/実績多数 | OSS活発/Web開発特化 |
学習コスト | 高め(設定中心・DI複雑) | 低め(ドキュメント豊富・とっつきやすい) |
開発スピード | 遅め(手動構成が多い) | 速い(artisanやEloquentが強力) |
エコシステム | 小規模(日本語情報も少ない) | 非常に活発(Qiita・GitHubも豊富) |
テンプレートエンジン | Laminas\View | Bladeテンプレート |
ORM | Doctrine(またはTableGateway) | Eloquent(Laravel標準) |
なんでLaravelに切り替えたのか
ぶっちゃけて言うと、人がいなかった。それに尽きます。
実際に起きていた問題
- 「Laminasできます」って人、外注先に全然いない
- 現場のメンバーしか知らない独自実装だらけ
- 「動いてるコードをコピーして改造」が常態化
- ドキュメントがなくて、毎回ソース読まないと理解できない
- 若手が入ってもキャッチアップできない
このままでは開発も保守も回らない。
“人を選ばずに開発できる環境”が必要だと強く感じ、Laravelへの移行を決断しました。
Laravelなら:
- 経験者が多く採用・委託しやすい
- 書き方が統一されていて読みやすい
- エコシステムが豊富で拡張もしやすい
Laravel移行、実際どう進めたのか
ステップ①:現行機能の棚卸し
-
module/
配下のController/Service/Entityを洗い出し - ルーティングや画面一覧をスプレッドシート化
- DBアクセスや画面の流れを簡易的に図式化
ステップ②:Laravelプロジェクトの立ち上げ
composer create-project laravel/laravel new-project
-
.env
にDB設定 - Laravel BreezeやUIパッケージで画面雛形も導入
ステップ③:ルーティングとControllerの移植
// Laminas
'route' => [
'user' => [
'type' => 'Literal',
'options' => [
'route' => '/user',
'defaults' => [
'controller' => Controller\UserController::class,
'action' => 'index',
],
],
],
];
// Laravel
Route::get('/user', [UserController::class, 'index']);
- Laminas特有のDI記述などをLaravel流に変換
- Requestオブジェクトも
use Illuminate\Http\Request
に置き換え
ステップ④:ViewをBladeに統一
{{-- Laminas --}}
<?= $this->escapeHtml($value) ?>
{{-- Laravel --}}
{{ $value }}
- 見た目の統一感と、保守性の大幅向上
- セクション/レイアウト化で、差分メンテが簡単に
ステップ⑤:DB層をEloquentで再構築
- Doctrine → Eloquentへ切り替え
- モデル・リレーション・スコープなどLaravelの流儀で統一
php artisan make:model User -m
ステップ⑥:段階的に移行(完全リプレースせず)
- 新機能はLaravelで開発
- 共通DBを使用し、APIや画面単位で切り替え
- 並行稼働しながら、順次Laminasを廃止
移行してよかったこと
-
コピペ文化が消滅
Laravelの公式ドキュメント+標準構成により、コピペしなくても書けるようになった -
チームでの開発スピードが上がった
誰でも読めて、誰でも書ける構成に -
属人化が解消された
Laravel経験者が多く、引継ぎや新規参画もスムーズ -
新人教育が楽になった
QiitaやYouTube教材も豊富なので、自走できる人が増えた
最後に
Laminasも素晴らしいフレームワークですが、今の時代やチーム構成にはLaravelがマッチしていたと感じています。
PHPで業務システムを開発している企業の方で、
- 技術者が固定化していて保守に不安がある
- ドキュメントがなく属人化が進んでいる
- 新人が育ちにくくなってきた
といった悩みをお持ちの方には、Laravel移行はかなりおすすめです。
Laravelで現場に余裕を。
技術者が笑顔で開発できる環境を。
以上、LaminasからLaravelに切り替えた記録でした。
参考になったら LGTM やコメントいただけると嬉しいです!