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

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

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

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

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

背景

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

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

MVC + Service

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

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

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

ベースのアイデア

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

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

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

コアレイヤ

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

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

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

依存関係逆転の放送

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

依存関係逆転の法則

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

アプリケーションレイヤ

まとめ

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

実装例

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

レイヤわけに迷う

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

ルールの明確化

まとめ

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

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

質疑応答で出てきた用語

ステータスコードとその中身 (HTTP1.1)

f:id:ricken0203:20181209230554j:plain

ステータスコードの概要とよく見るステータスコードの意味とHTTP通信の中身について調べてまとめました。
エンジニアでなくても、404 NOT FOUNDは、見たことがある方も多いと思います。
エンジニアならば、ステータスコードを見て瞬時に取るべき手段を判断できるようになるといいですね。

続きを読む

Laravelの$loop変数を使えば$key=>$valueを書かなくてもインデックスが取れる

laravel

Laravel、便利なプロパティが多くとてもGoodですね。
開発現場では頻出なforeach文に関して便利なプロパティを知ったので
こちらに書き残しておきます!

続きを読む

独学系Webエンジニア1年目の個人的勉強ロードマップ

f:id:ricken0203:20181202173445p:plain

学びたいことと、学ぶべきことの優先順位が不明瞭になってきたので 1年目に学ぶべきだと思ってること、読むべきだと思ってる本、もうすでに学んだことも含めて残しておきます。 知識の溝がすごいと思うので、これもやったら的な意見や批判が欲しいです。お待ちしてます!(更新: 2018.11.29)

続きを読む