0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LaminasからLaravelへ──属人化した業務システムを“誰でも開発できる環境”へ移行した話

Posted at

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 やコメントいただけると嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?