Upgrade to Pro — share decks privately, control downloads, hide ads and more …

フレームワークが存在しない時代からのレガシープロダクトを、 Laravelに”載せる”実装戦略

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for hirobe hirobe
October 08, 2023

フレームワークが存在しない時代からのレガシープロダクトを、 Laravelに”載せる”実装戦略

PHPConference2023登壇資料です

Avatar for hirobe

hirobe

October 08, 2023
Tweet

More Decks by hirobe

Other Decks in Programming

Transcript

  1. 8 Mail Dealerの”負債” • ルーティングが存在せず、〇〇.phpに直接アクセス • ロジックは〇〇.phpのグローバル領域に直書き ◦ クラスの概念も(ほぼ)存在しない 処理が上から下に流れるだけ

    • テンプレートエンジンは未使⽤ ◦ HTMLの出⼒は print や echo で⾏われている • 当然、⼗分な⾃動テストも存在しない(特にUI周り)
  2. 9 Mail Dealerの”負債” • ルーティングが存在せず 〇〇.phpに直接アクセス maildealer ├ lib └

    public   ├ img   ├ css   └ php     ├ index.php     ├ login.php     ├ maillist.php ……
  3. 10 Mail Dealerの”負債” • ロジックは〇〇.phpの グローバル領域に直書き • クラスの概念も(ほぼ) 存在しない •

    テンプレートエンジンは 未使⽤ <?php include 'common.php'; if ($_POST('comment')) { </ コメント追加処理 } elseif ($_POST('folderid')) { </ フォルダ移動処理 } $js = <<<EOF <script> <*ページ特有のスクリプトが記述されている</ </script> EOF; echo <<<EOF <head> <title>サンプルページ</title> {$js} </head> EOF;
  4. 22 Laravelに”載せる”ための課題 • 最⼤の課題は、ビューロジックとビジネスロジックが ⼀体化していること • もはや、ビューとロジックを 分 離 するのは

    ⼀ 般 的 Laravelも分離が前提のフレームワーク • ビューとロジックを分離しないと フレームワークに載せられない ビューとロジックを分離するしか無い!
  5. 23 実装⽅針 Action Responder Domain HTTP request HTTP response ビジネスロジック

    呼び出し ここにビューを移植 ここにロジックを移植 Blade Vue
  6. 25 実装⽅針 Action Responder Domain HTTP request HTTP response ビジネスロジック

    呼び出し ここにビューを移植 ここにロジックを移植 Blade Vue
  7. 39 実装⽅針 Action Responder Domain HTTP request HTTP response ビジネスロジック

    呼び出し ここにビューを移植 ここにロジックを移植 Blade Vue
  8. 50 効果 • 移植がスピーディになった ◦ 新UIのためにコードを書き直す必要が(ほぼ)ない ◦ 旧UIの構造が(ほぼ)そのまま維持されているので 移植忘れも少なくできた •

    ⾃動テストが可能になった ◦ 旧:表⽰データがそのまま出⼒されており、テストが困難 ◦ 新:データが返り値として表現されるため、テストが容易