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

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

hirobe
October 08, 2023

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

PHPConference2023登壇資料です

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の構造が(ほぼ)そのまま維持されているので 移植忘れも少なくできた •

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