Slide 1

Slide 1 text

独立したした コアレイヤパターン をためしてみる Fukuoka.php Vol.26 2018-08-08 @kunit

Slide 2

Slide 2 text

自己紹介 ✔ @kunit ✔ 合同会社ねこもり所属ねこもり所属所属 ✔ ちょっと前までは 前までは までは PHP/フ レームワークのバージョンアのバージョンアッバージョンアッ プのお手伝いとかのバージョンアッお手伝いとかして手伝いとかしてましいと前までは かしてました

Slide 3

Slide 3 text

もうそんなにたつんですね(遠い目い目 ✔ PHPerがフレームワークフレームワークのバージョンアを使うう ようになってから15年ほど経過しほど経過し経過しし た ✔ フレームワークのバージョンアを使うっていな かった頃に比べればいろに比べればいろいろべればいろいろと前までは 改 善されたされた ✔ だがフレームワーク、本当の意味で救本当の意味で救われのバージョンアッ意味で救われたので救われたのわれたのバージョンアッ か?

Slide 4

Slide 4 text

フレームワークのバージョンアのバージョンアッバージョンアップのお手伝いとか ✔ そのバージョンアッ15年ほど経過しのバージョンアッ間に、あなたはいに、本当の意味で救あなたはいくつ フレームワークのバージョンアをのバージョンアッり所属かえたのバージョンアッか? ✔ 使うっていたフレームワークのバージョンア(のバージョンアッ バージョン)はど経過しれくらいのバージョンアッ期間に、あなたはい、本当の意味で救 安定してつかえたのしてつかえたのバージョンアッか? ✔ フレームワークのバージョンアのバージョンアッバージョンアッ プのお手伝いとかのバージョンアッ追従をするためにどをするためにど経過しれくらい コードを書き換えたのを書き換えたのか?き換えたのか?換えたのか?えたのバージョンアッか?

Slide 5

Slide 5 text

アプのお手伝いとかリケーションのバージョンアッ寿命 ✔ 我々が思っていたよがフレームワーク思っていたよりもっていたより所属も長いい ✔ 5年ほど経過し、本当の意味で救10年ほど経過し稼働し続けているし続けているけている ものバージョンアッがフレームワークたくさんある ✔ フレームワークのバージョンア(のバージョンアッバージョ ン)のバージョンアッ寿命はアプのお手伝いとかリケーション より所属も遥かに短いかに短いい

Slide 6

Slide 6 text

何かがおかしいかがフレームワークお手伝いとかしてかしい ✔ アプのお手伝いとかリケーション本来のコーのバージョンアッコー ドを書き換えたのに集中するためにフレするためにフレーム ワークのバージョンアを採用したのではなかしたのバージョンアッではなかっ たのバージョンアッか? ✔ 我々が思っていたよはフレームワークのバージョンアに依存 しすぎているのバージョンアッではないか?

Slide 7

Slide 7 text

独立したしたコアレイヤパターン ✔ しんばらさんがフレームワーク提案されていされてい るアプのお手伝いとかリケーション実装パターパター ン ✔ PHPのバージョンアッ現場でちらっと話がでちらっと前までは 話がでがフレームワークで ている ✔ PHPCon関西 非公式前までは 夜祭 で発表

Slide 8

Slide 8 text

簡略化されているがされているがフレームワーク ✔ 既存のバージョンアッアーキテクのバージョンアチャやパターやパターパター ンをもと前までは にしていて、本当の意味で救それより所属も かなり所属簡略化されているがされていてわかり所属やパター すい ✔ と前までは はいえ、本当の意味で救理解するためには前するためには前までは 提知識がそこそこ必要がフレームワークそこそこ必要 ✔ と前までは いうこと前までは で、本当の意味で救今日はその前提はそのバージョンアッ前までは 提 知識がそこそこ必要をちらっと前までは 紹介する

Slide 9

Slide 9 text

レイヤードを書き換えたのアーキテクのバージョンアチャやパター(1)

Slide 10

Slide 10 text

レイヤードを書き換えたのアーキテクのバージョンアチャやパター(2) ✔ レイヤードを書き換えたのアーキテクのバージョンアチャやパターは 下の層に向かってのバージョンアッ層に向かって依存に向かって依存してかって依存していく ✔ 最終的な依存先がインな依存先がインフラ層がフレームワークインフラ層層に向かって依存 と前までは いうのバージョンアッはお手伝いとかしてかしいのバージョンアッではない か? ✔ 私達が集中したいのがフレームワーク集中するためにフレしたいのバージョンアッはドを書き換えたのメイ ンロジックのバージョンアだったはずだ

Slide 11

Slide 11 text

ヘキサゴナルアーキテクのバージョンアチャやパター(1)

Slide 12

Slide 12 text

ヘキサゴナルアーキテクのバージョンアチャやパター(2) ✔ Ports and Adapters アーキ テクのバージョンアチャやパターと前までは も呼ばれるばれる ✔ 外側から中側に向かから中するためにフレ側から中側に向かに向かって依存してかって依存す る ✔ 中するためにフレ側から中側に向かのバージョンアッ層に向かって依存がフレームワーク外に向かって依存してかってポート (インターフェース)を提供し、外を提供し、外し、本当の意味で救外 側から中側に向かのバージョンアッ層に向かって依存はそのバージョンアッポートに従をするためにどったアダ プのお手伝いとかタを実装パターする

Slide 13

Slide 13 text

クのバージョンアリーンアーキテクのバージョンアチャやパター(1)

Slide 14

Slide 14 text

クのバージョンアリーンアーキテクのバージョンアチャやパター(2) ✔ ヘキサゴナルアーキテクのバージョンアチャやパターと前までは ほぼ同じ思想のアー同じ思想のアーキテ思っていたよりも想のアーキテクチのバージョンアッアーキテクのバージョンアチャやパター ✔ 外側から中側に向かから内側から中側に向かへ依存する依存する ✔ ど経過しちらも一番内部のドメインロのバージョンアッドを書き換えたのメインロ ジックのバージョンアがフレームワーク最上位の層と位置づけのバージョンアッ層に向かって依存と前までは 位の層と位置づけ置づけるづける ✔ 円形の図、わかりづのバージョンアッ図、本当の意味で救わかり所属づらくないで すか?

Slide 15

Slide 15 text

クのバージョンアリーンアーキテクのバージョンアチャやパター(3) ✔ 円錐のほうがいい気のバージョンアッほうがフレームワークいい気がするがフレームワークする ✔ 内部のドメインロと前までは 言うよりも上位うより所属も上位の層と位置づけ

Slide 16

Slide 16 text

クのバージョンアリーンアーキテクのバージョンアチャやパター(4) ✔ 最近いい本がでたのいい本がフレームワークでたのバージョンアッ でお手伝いとかしてすすめ! ✔ Clean Architecture 達が集中したいの人 に学ぶソフトウェアぶソフトウェアのソフトウェアのバージョンアッ 構造と設計と前までは 設計 ✔ 角さんと髙木さんさんと前までは 髙木さんにさんに よる読みやすい翻訳!みやパターすい翻訳!

Slide 17

Slide 17 text

CQRS(1) ✔ Command and Query Responsibility Segregation ✔ コマンドを書き換えたのクのバージョンアエリ責務分離 ✔ 元になったのは になったのバージョンアッは Bertrand Meyer のバージョンアッオブジェクのバージョンアト指向かって依存して入 門の中の のバージョンアッ中するためにフレのバージョンアッ CQS

Slide 18

Slide 18 text

CQS ✔ "あらゆるメソッドを書き換えたのは、本当の意味で救何かがおかしいらか のバージョンアッアクのバージョンアションを実行する「コマする「コマコマ ンドを書き換えたの」あるいは呼ばれるび出し元に出し元にし元になったのは に データを戻す「クエリ」のす「コマクのバージョンアエリ」のバージョンアッいず れか一方でなければならでなければならず、本当の意味で救両 方でなければならのバージョンアッ機能を兼ね備えてはを兼ね備えてはいけね備えてはいけなえてはいけな い。 つまり所属、本当の意味で救何かがおかしいかのバージョンアッ質問をすることで、をすること前までは で、本当の意味で救そのバージョンアッ質問をすることで、へ依存するのバージョンアッ答えが変えがフレームワーク変 わってしまってはいけない。もう少しきちんと言うしき換えたのか?ちんと前までは 言うよりも上位うと前までは 、本当の意味で救メソッドを書き換えたのがフレームワーク値をを 戻す「クエリ」のすのバージョンアッは、本当の意味で救そのバージョンアッメソッドを書き換えたのがフレームワーク参照透過し性を持ち、何も副を持ち、何も副作用ち、本当の意味で救何かがおかしいも副作用したのではなかを及ぼさないぼ同じ思想のアーさない 場でちらっと話が合だけでなければいけない"

Slide 19

Slide 19 text

CQRS(2) ✔ 副作用したのではなかがフレームワーク伴う処理は「コマう処理は「コマコマン ドを書き換えたの」、本当の意味で救副作用したのではなかがフレームワーク伴う処理は「コマわない処理は 「コマクのバージョンアエリ」と前までは してそれぞれ別ののバージョンアッ メソッドを書き換えたのから発行する「コマさせる

Slide 20

Slide 20 text

材料は揃ったは揃ったった ✔ 独立したしたコアレイヤパターンを 説明するための材料するためのバージョンアッ材料は揃ったはそろった ✔ ヘキサゴナルアーキテクのバージョンアチャやパター等 より所属もさらにレイヤのバージョンアッ数を簡素化を簡素化されているが したアプのお手伝いとかリケーション実装パターパター ンと前までは いうこと前までは になる ✔ サービスレイヤと前までは コアレイヤー のバージョンアッ2層に向かって依存しかない

Slide 21

Slide 21 text

コアレイヤ ✔ 本来のコーアプのお手伝いとかリケーションがフレームワーク解するためには前決すべすべ き換えたのか?問をすることで、題に対応するロジに対応するロジックをするロジックのバージョンアを記述すす る(フレームワークフレームワークのバージョンアからは隔離) ✔ ユースケース、本当の意味で救ドを書き換えたのメインモデル ✔ 内部のドメインロのバージョンアッ層に向かって依存であり所属、本当の意味で救一番上位の層と位置づけのバージョンアッ層に向かって依存 ✔ 外部のドメインロのバージョンアッ層に向かって依存であるサービスレイヤか らアクのバージョンアセスされると前までは き換えたのか?に利用したのではなかしても らうポート(インタフェース)を提供し、外

Slide 22

Slide 22 text

サービスレイヤ ✔ コアレイヤと前までは フレームワークのバージョンアと前までは のバージョンアッ 受け渡しを行うもけ渡しを行うものしを行する「コマうものバージョンアッ ✔ コアレイヤから提供し、外されたポート に対するアダプのお手伝いとかタを実装パターする ✔ フレームワークのバージョンアのバージョンアッ仕様が変わるとがフレームワーク変わると前までは 影響を受けるを受け渡しを行うもける ✔ フレームワークのバージョンア等のバージョンアッ独自のバージョンアッロジッ クのバージョンアはアダプのお手伝いとかタに閉じ込めるじ思想のアーキテ込めるめる

Slide 23

Slide 23 text

ポート/アダプのお手伝いとかタ ✔ 副作用したのではなかがフレームワークあるものバージョンアッは Command ポート、本当の意味で救副作用したのではなかがフレームワークない値をを返却するだするだ けのバージョンアッものバージョンアッは Query ポートと前までは してコア レイヤで定してつかえたの義するする ✔ そのバージョンアッ他トランザクショトラ層ンザクのバージョンアションを制御する する Transaction ポートも合わせて定してつかえたの義する する ✔ しんばらさんがフレームワーク例で定義しているで定してつかえたの義するしているのバージョンアッは このバージョンアッ3つのバージョンアッみ

Slide 24

Slide 24 text

連携の流れのバージョンアッ流れれ ✔ コアレイヤでポート(フレームワークインタ フェース)を提供し、外を定してつかえたの義する ✔ コアレイヤはポートにのバージョンアッみ依存 ✔ サービスレイヤではポートに対 してアダプのお手伝いとかタを実装パター ✔ サービスレイヤがフレームワークコアレイヤに 依存している形の図、わかりづと前までは なる

Slide 25

Slide 25 text

デモ ✔ しんばらさんがフレームワーク準備えてはいけなされたも のバージョンアッを少しきちんと言うしだけ変更したものをしたものバージョンアッを 作ってき換えたのか?たのバージョンアッでそれをデモしま す

Slide 26

Slide 26 text

フレームワークのバージョンア依存からのバージョンアッ脱却するだ ✔ 同じ思想のアーキテユースケースをLaravel、本当の意味で救 CakePHP2、本当の意味で救 CakePHP3 から使う えている ✔ ユースケースと前までは いうドを書き換えたのメインロジッ クのバージョンアを維持ち、何も副作用したままフレームワークのバージョンアを変 えること前までは がフレームワークでき換えたのか?る ✔ フレームワークのバージョンアを変えなくても、本当の意味で救将 来のコーのバージョンアッバージョンアップのお手伝いとかに対して強い機い機 構をつくること前までは がフレームワークでき換えたのか?たと前までは いえる

Slide 27

Slide 27 text

CakePHP2ユーザのバージョンアッ悩みみ ✔ 国内で爆発的な依存先がインに流れ行する「コマった CakePHP2 のバージョンアッアプのお手伝いとかリケーションを ど経過しうするのバージョンアッかと前までは いう悩みみをお手伝いとかしてそらく たくさんのバージョンアッ人がフレームワーク持ち、何も副作用っている ✔ それのバージョンアッ一つのバージョンアッ戦略と前までは して、本当の意味で救ドを書き換えたのメイ ンロジックのバージョンアをユースケースに切り出り所属出し元に し、本当の意味で救データベースアクのバージョンアセスをいち早 く CakePHP3 のバージョンアッ ORM をつかう と前までは いう戦略はど経過しうだろうか?

Slide 28

Slide 28 text

CakePHPのバージョンアッバージョンアップのお手伝いとか ✔ CakePHP4がフレームワーク見えてきたえてき換えたのか?た 今、本当の意味で救CakePHP2からのバージョンアッ移行する「コマのバージョンアッ一つのバージョンアッ選 択肢としてありえると前までは してあり所属える気がするがフレームワークしている ✔ なお手伝いとかして、本当の意味で救このバージョンアッ案されていはPHPCon関西でいろい ろ議論していた時に、していた時に、はらださんに、本当の意味で救はらださんから出し元に た案されてい ✔ 一番変化されているがのバージョンアッ大きい き換えたのか?い ORM 部のドメインロ分から変え てしまうと前までは いう大きい 胆な案だったが、な案されていだったがフレームワーク、本当の意味で救コア レイヤパターンを組み合わせることみ合わせること前までは によ り所属現実的な依存先がインな気がするがフレームワークしてき換えたのか?た

Slide 29

Slide 29 text

いろいろ試していきましょしていき換えたのか?ましょう ✔ 独立したしたコアレイヤパターンは、本当の意味で救 DDDと前までは かを深く理解した人にく理解するためには前した人にも、本当の意味で救 これから学ぶソフトウェアぼ同じ思想のアーうと前までは している人にも対 応するロジックをでき換えたのか?る柔軟なパターンだとなパターンだと前までは 思っていたよりもう ✔ つかってみると前までは もっと前までは こうすべき換えたのか? と前までは かど経過しんど経過しんでてき換えたのか?そうな気がするがフレームワークする のバージョンアッで、本当の意味で救もっと前までは 深く理解した人に堀していきたいとしていき換えたのか?たいと前までは 思っていたよりも う

Slide 30

Slide 30 text

ご清聴清聴 あり所属がフレームワークと前までは う ご清聴ざいました