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

Webサービスの成長を止めずに リファクタリングする技術 / web-refactoring

Webサービスの成長を止めずに リファクタリングする技術 / web-refactoring

PHPカンファレンス福岡 2019
- https://phpcon.fukuoka.jp/2019/

■参考資料
https://oso.connpass.com/event/53811/presentation/

soudai sone

June 25, 2019
Tweet

More Decks by soudai sone

Other Decks in Technology

Transcript

  1. 自己紹介
 曽根 壮大(34歳)
 株式会社 オミカレ 副社長 CTO
 
 そ  ね  

    たけ とも
 • 日本PostgreSQLユーザ会 勉強会分科会 担当
 • 3人の子供がいます(長女、次女、長男)
 • 技術的にはWeb/LL言語/RDBMSが好きです
 • コミュニティが好き
  2. Webサービスを止めない工夫
 目的 / 対象
 新機能
 機能
 リソース
 構造
 要件追加
 変化する


    ー
 ー
 変化する
 バグ修正
 ー
 変化する
 ー
 変化する
 最適化
 ー
 ー
 変化する
 ー
 リファクタリング
 ー
 ー
 ー
 変化する
 引用:レガシーコード改善ガイド 第1章 ソフトウェアの変更 P7
  3. Webサービスを止めない工夫
 目的 / 対象
 新機能
 機能
 リソース
 構造
 要件追加
 変化する


    ー
 ー
 変化する
 バグ修正
 ー
 変化する
 ー
 変化する
 最適化
 ー
 ー
 変化する
 ー
 リファクタリング
 ー
 ー
 ー
 変化する
 引用:レガシーコード改善ガイド 第1章 ソフトウェアの変更 P7
  4. リファクタリングとテスト
 データソース層 Table Data Gateway ActiveRecord DataMapper など データストア ドメイン層 プレゼンテーション層

    View Controller ビジネスロジック Service Entity Repository ドメイン層から着手する 
 目指すアーキテクチャに合わせてリファクタリング 
 ※左記の例は一例でドメインの分割は多種多様 
 (フレームワークの制約も受ける) 

  5. 新規開発とリファクタリングの共存
 
 データソース層 Table Data Gateway ActiveRecord DataMapper など データストア ドメイン層

    プレゼンテーション層 View Controller ビジネスロジック Service Entity Repository API層 新たなロジック
  6. 新規開発とリファクタリングの共存
 
 データソース層 Table Data Gateway ActiveRecord DataMapper など データストア ドメイン層

    プレゼンテーション層 View Controller ビジネスロジック Service Entity Repository API層 新たなロジック まさにこれ!

  7. 新規開発とリファクタリングの共存
 
 データストア ドメイン層 プレゼンテーション層 View Controller Presenter ビジネスロジックを書く Repository

    適切なデータに アクセスする API層 データの取得と調整 まさにこれ!
 キャッシュ Model データの取得 と加工する
  8. 実際にリファクタリングした例
 <?php if($header && $is_pc) : ?> <?= $this->load->view('pc/parts/header'); ?>

    <?php elseif($header && !$is_pc) : ?> <?= $this->load->view('sp/parts/header'); ?> <?php else: ?> // headerがいらないときの処理 <?php endif; ?>