技術はあとからついてくる。

技術はあとからついてくる。

就活開始の半年前にエンジニアに目覚めた人

【phpcon2018 アウトプット】独立したコアレイヤパターンによる PHP アプリケーションの実装

独立したコアレイヤパターンによる PHP アプリケーションの実装

背景

なぜ独立したコアレイヤパターンを実装するのか

  1. 対象ドメインが違うから

MVC + Service

  • ユースケースをサービスとして切り出す
  • Webアプリケーションの一部の’関心ごとは分離できた
    • HTTPに間することはサービスには入れない
  • その他の技術詳細(RDBMS等)が分離できず

レイヤードアーキテクチャ

  • ドメインを中心
  • 分離はできるが、それなりに複雑
  • もう少しシンプルにできないか

ベースのアイデア

  • WhatとHowをレイヤで分ける
  • コアロジックと技術詳細(フレームワーク含む)の分離
  • 守るべきシンプルなルールのみを決める

独立したコアレイヤパターン

  • アーキテクチャパターンの1つ
  • 2つのレイヤに分離
  • コアレイヤ
    • コアロジックを実装
  • アプリケーションレイヤ (旧:サービスレイヤ)
    • HTTP/RDBMS/外部APIなどの技術詳細

コアレイヤ

技術詳細インターフェイス

要求をインターフェイスにする

  • 実装の共通箇所をまとめるのではなく、必要な機能をインターフェイスにする方法
  • 実装の数は問題ではない
  • 依存関係逆転の法則(DIP)

依存関係逆転の放送

  • Solid原則のD
  • レイヤやモジュール間の依存関係をインターフェイスを利用して逆転させる

依存関係逆転の法則

ユースケースインターフェイスに依存 アダプタがコアレイヤのインターフェイスに依存 * 依存関係が

アプリケーションレイヤ

まとめ

  • コアレイヤとアプリケーションレイヤに分離
  • コアレイヤからアプリケーションレイヤはインターフェースを利用する

実装例

コアレイヤパターンの現場

レイヤわけに迷う

コアレイヤへの入出力データ

ルールの明確化

まとめ

  • コアレイヤとアプリケーションレイヤに分離
  • コアレイヤからアプリケーションレイヤはインターフェースを利用してアクセス
  • 依存関係逆転の法則
  • フレームワーク、ライブラリは素晴らしい

全員がこのパターンをやるべきか?

質疑応答で出てきた用語