Fukuoka.php Vol.26 で発表した内容です
独立したしたコアレイヤパターンをためしてみるFukuoka.php Vol.26 2018-08-08@kunit
View Slide
自己紹介✔ @kunit✔ 合同会社ねこもり所属ねこもり所属所属✔ ちょっと前までは 前までは までは PHP/フレームワークのバージョンアのバージョンアッバージョンアップのお手伝いとかのバージョンアッお手伝いとかして手伝いとかしてましいと前までは かしてました
もうそんなにたつんですね(遠い目い目✔ PHPerがフレームワークフレームワークのバージョンアを使ううようになってから15年ほど経過しほど経過し経過しした✔ フレームワークのバージョンアを使うっていなかった頃に比べればいろに比べればいろいろべればいろいろと前までは 改善されたされた✔ だがフレームワーク、本当の意味で救本当の意味で救われのバージョンアッ意味で救われたので救われたのわれたのバージョンアッか?
フレームワークのバージョンアのバージョンアッバージョンアップのお手伝いとか✔ そのバージョンアッ15年ほど経過しのバージョンアッ間に、あなたはいに、本当の意味で救あなたはいくつフレームワークのバージョンアをのバージョンアッり所属かえたのバージョンアッか?✔ 使うっていたフレームワークのバージョンア(のバージョンアッバージョン)はど経過しれくらいのバージョンアッ期間に、あなたはい、本当の意味で救安定してつかえたのしてつかえたのバージョンアッか?✔ フレームワークのバージョンアのバージョンアッバージョンアップのお手伝いとかのバージョンアッ追従をするためにどをするためにど経過しれくらいコードを書き換えたのを書き換えたのか?き換えたのか?換えたのか?えたのバージョンアッか?
アプのお手伝いとかリケーションのバージョンアッ寿命✔ 我々が思っていたよがフレームワーク思っていたよりもっていたより所属も長いい✔ 5年ほど経過し、本当の意味で救10年ほど経過し稼働し続けているし続けているけているものバージョンアッがフレームワークたくさんある✔ フレームワークのバージョンア(のバージョンアッバージョン)のバージョンアッ寿命はアプのお手伝いとかリケーションより所属も遥かに短いかに短いい
何かがおかしいかがフレームワークお手伝いとかしてかしい✔ アプのお手伝いとかリケーション本来のコーのバージョンアッコードを書き換えたのに集中するためにフレするためにフレームワークのバージョンアを採用したのではなかしたのバージョンアッではなかったのバージョンアッか?✔ 我々が思っていたよはフレームワークのバージョンアに依存しすぎているのバージョンアッではないか?
独立したしたコアレイヤパターン✔ しんばらさんがフレームワーク提案されていされているアプのお手伝いとかリケーション実装パターパターン✔ PHPのバージョンアッ現場でちらっと話がでちらっと前までは 話がでがフレームワークでている✔ PHPCon関西 非公式前までは 夜祭で発表
簡略化されているがされているがフレームワーク✔ 既存のバージョンアッアーキテクのバージョンアチャやパターやパターパターンをもと前までは にしていて、本当の意味で救それより所属もかなり所属簡略化されているがされていてわかり所属やパターすい✔ と前までは はいえ、本当の意味で救理解するためには前するためには前までは 提知識がそこそこ必要がフレームワークそこそこ必要✔ と前までは いうこと前までは で、本当の意味で救今日はその前提はそのバージョンアッ前までは 提知識がそこそこ必要をちらっと前までは 紹介する
レイヤードを書き換えたのアーキテクのバージョンアチャやパター(1)
レイヤードを書き換えたのアーキテクのバージョンアチャやパター(2)✔ レイヤードを書き換えたのアーキテクのバージョンアチャやパターは下の層に向かってのバージョンアッ層に向かって依存に向かって依存してかって依存していく✔ 最終的な依存先がインな依存先がインフラ層がフレームワークインフラ層層に向かって依存と前までは いうのバージョンアッはお手伝いとかしてかしいのバージョンアッではないか?✔ 私達が集中したいのがフレームワーク集中するためにフレしたいのバージョンアッはドを書き換えたのメインロジックのバージョンアだったはずだ
ヘキサゴナルアーキテクのバージョンアチャやパター(1)
ヘキサゴナルアーキテクのバージョンアチャやパター(2)✔ Ports and Adapters アーキテクのバージョンアチャやパターと前までは も呼ばれるばれる✔ 外側から中側に向かから中するためにフレ側から中側に向かに向かって依存してかって依存する✔ 中するためにフレ側から中側に向かのバージョンアッ層に向かって依存がフレームワーク外に向かって依存してかってポート(インターフェース)を提供し、外を提供し、外し、本当の意味で救外側から中側に向かのバージョンアッ層に向かって依存はそのバージョンアッポートに従をするためにどったアダプのお手伝いとかタを実装パターする
クのバージョンアリーンアーキテクのバージョンアチャやパター(1)
クのバージョンアリーンアーキテクのバージョンアチャやパター(2)✔ ヘキサゴナルアーキテクのバージョンアチャやパターと前までは ほぼ同じ思想のアー同じ思想のアーキテ思っていたよりも想のアーキテクチのバージョンアッアーキテクのバージョンアチャやパター✔ 外側から中側に向かから内側から中側に向かへ依存する依存する✔ ど経過しちらも一番内部のドメインロのバージョンアッドを書き換えたのメインロジックのバージョンアがフレームワーク最上位の層と位置づけのバージョンアッ層に向かって依存と前までは 位の層と位置づけ置づけるづける✔ 円形の図、わかりづのバージョンアッ図、本当の意味で救わかり所属づらくないですか?
クのバージョンアリーンアーキテクのバージョンアチャやパター(3)✔ 円錐のほうがいい気のバージョンアッほうがフレームワークいい気がするがフレームワークする✔ 内部のドメインロと前までは 言うよりも上位うより所属も上位の層と位置づけ
クのバージョンアリーンアーキテクのバージョンアチャやパター(4)✔ 最近いい本がでたのいい本がフレームワークでたのバージョンアッでお手伝いとかしてすすめ!✔ CleanArchitecture 達が集中したいの人に学ぶソフトウェアぶソフトウェアのソフトウェアのバージョンアッ構造と設計と前までは 設計✔ 角さんと髙木さんさんと前までは 髙木さんにさんによる読みやすい翻訳!みやパターすい翻訳!
CQRS(1)✔ Command and QueryResponsibilitySegregation✔ コマンドを書き換えたのクのバージョンアエリ責務分離✔ 元になったのは になったのバージョンアッは BertrandMeyer のバージョンアッオブジェクのバージョンアト指向かって依存して入門の中の のバージョンアッ中するためにフレのバージョンアッ CQS
CQS✔ "あらゆるメソッドを書き換えたのは、本当の意味で救何かがおかしいらかのバージョンアッアクのバージョンアションを実行する「コマする「コマコマンドを書き換えたの」あるいは呼ばれるび出し元に出し元にし元になったのは にデータを戻す「クエリ」のす「コマクのバージョンアエリ」のバージョンアッいずれか一方でなければならでなければならず、本当の意味で救両方でなければならのバージョンアッ機能を兼ね備えてはを兼ね備えてはいけね備えてはいけなえてはいけない。 つまり所属、本当の意味で救何かがおかしいかのバージョンアッ質問をすることで、をすること前までは で、本当の意味で救そのバージョンアッ質問をすることで、へ依存するのバージョンアッ答えが変えがフレームワーク変わってしまってはいけない。もう少しきちんと言うしき換えたのか?ちんと前までは 言うよりも上位うと前までは 、本当の意味で救メソッドを書き換えたのがフレームワーク値をを戻す「クエリ」のすのバージョンアッは、本当の意味で救そのバージョンアッメソッドを書き換えたのがフレームワーク参照透過し性を持ち、何も副を持ち、何も副作用ち、本当の意味で救何かがおかしいも副作用したのではなかを及ぼさないぼ同じ思想のアーさない場でちらっと話が合だけでなければいけない"
CQRS(2)✔ 副作用したのではなかがフレームワーク伴う処理は「コマう処理は「コマコマンドを書き換えたの」、本当の意味で救副作用したのではなかがフレームワーク伴う処理は「コマわない処理は「コマクのバージョンアエリ」と前までは してそれぞれ別ののバージョンアッメソッドを書き換えたのから発行する「コマさせる
材料は揃ったは揃ったった✔ 独立したしたコアレイヤパターンを説明するための材料するためのバージョンアッ材料は揃ったはそろった✔ ヘキサゴナルアーキテクのバージョンアチャやパター等より所属もさらにレイヤのバージョンアッ数を簡素化を簡素化されているがしたアプのお手伝いとかリケーション実装パターパターンと前までは いうこと前までは になる✔ サービスレイヤと前までは コアレイヤーのバージョンアッ2層に向かって依存しかない
コアレイヤ✔ 本来のコーアプのお手伝いとかリケーションがフレームワーク解するためには前決すべすべき換えたのか?問をすることで、題に対応するロジに対応するロジックをするロジックのバージョンアを記述すする(フレームワークフレームワークのバージョンアからは隔離)✔ ユースケース、本当の意味で救ドを書き換えたのメインモデル✔ 内部のドメインロのバージョンアッ層に向かって依存であり所属、本当の意味で救一番上位の層と位置づけのバージョンアッ層に向かって依存✔ 外部のドメインロのバージョンアッ層に向かって依存であるサービスレイヤからアクのバージョンアセスされると前までは き換えたのか?に利用したのではなかしてもらうポート(インタフェース)を提供し、外
サービスレイヤ✔ コアレイヤと前までは フレームワークのバージョンアと前までは のバージョンアッ受け渡しを行うもけ渡しを行うものしを行する「コマうものバージョンアッ✔ コアレイヤから提供し、外されたポートに対するアダプのお手伝いとかタを実装パターする✔ フレームワークのバージョンアのバージョンアッ仕様が変わるとがフレームワーク変わると前までは 影響を受けるを受け渡しを行うもける✔ フレームワークのバージョンア等のバージョンアッ独自のバージョンアッロジックのバージョンアはアダプのお手伝いとかタに閉じ込めるじ思想のアーキテ込めるめる
ポート/アダプのお手伝いとかタ✔ 副作用したのではなかがフレームワークあるものバージョンアッは Commandポート、本当の意味で救副作用したのではなかがフレームワークない値をを返却するだするだけのバージョンアッものバージョンアッは Query ポートと前までは してコアレイヤで定してつかえたの義するする✔ そのバージョンアッ他トランザクショトラ層ンザクのバージョンアションを制御する するTransaction ポートも合わせて定してつかえたの義するする✔ しんばらさんがフレームワーク例で定義しているで定してつかえたの義するしているのバージョンアッはこのバージョンアッ3つのバージョンアッみ
連携の流れのバージョンアッ流れれ✔ コアレイヤでポート(フレームワークインタフェース)を提供し、外を定してつかえたの義する✔ コアレイヤはポートにのバージョンアッみ依存✔ サービスレイヤではポートに対してアダプのお手伝いとかタを実装パター✔ サービスレイヤがフレームワークコアレイヤに依存している形の図、わかりづと前までは なる
デモ✔ しんばらさんがフレームワーク準備えてはいけなされたものバージョンアッを少しきちんと言うしだけ変更したものをしたものバージョンアッを作ってき換えたのか?たのバージョンアッでそれをデモします
フレームワークのバージョンア依存からのバージョンアッ脱却するだ✔ 同じ思想のアーキテユースケースをLaravel、本当の意味で救CakePHP2、本当の意味で救 CakePHP3 から使うえている✔ ユースケースと前までは いうドを書き換えたのメインロジックのバージョンアを維持ち、何も副作用したままフレームワークのバージョンアを変えること前までは がフレームワークでき換えたのか?る✔ フレームワークのバージョンアを変えなくても、本当の意味で救将来のコーのバージョンアッバージョンアップのお手伝いとかに対して強い機い機構をつくること前までは がフレームワークでき換えたのか?たと前までは いえる
CakePHP2ユーザのバージョンアッ悩みみ✔ 国内で爆発的な依存先がインに流れ行する「コマったCakePHP2 のバージョンアッアプのお手伝いとかリケーションをど経過しうするのバージョンアッかと前までは いう悩みみをお手伝いとかしてそらくたくさんのバージョンアッ人がフレームワーク持ち、何も副作用っている✔ それのバージョンアッ一つのバージョンアッ戦略と前までは して、本当の意味で救ドを書き換えたのメインロジックのバージョンアをユースケースに切り出り所属出し元にし、本当の意味で救データベースアクのバージョンアセスをいち早く CakePHP3 のバージョンアッ ORM をつかうと前までは いう戦略はど経過しうだろうか?
CakePHPのバージョンアッバージョンアップのお手伝いとか✔ CakePHP4がフレームワーク見えてきたえてき換えたのか?た今、本当の意味で救CakePHP2からのバージョンアッ移行する「コマのバージョンアッ一つのバージョンアッ選択肢としてありえると前までは してあり所属える気がするがフレームワークしている✔ なお手伝いとかして、本当の意味で救このバージョンアッ案されていはPHPCon関西でいろいろ議論していた時に、していた時に、はらださんに、本当の意味で救はらださんから出し元にた案されてい✔ 一番変化されているがのバージョンアッ大きい き換えたのか?い ORM 部のドメインロ分から変えてしまうと前までは いう大きい 胆な案だったが、な案されていだったがフレームワーク、本当の意味で救コアレイヤパターンを組み合わせることみ合わせること前までは により所属現実的な依存先がインな気がするがフレームワークしてき換えたのか?た
いろいろ試していきましょしていき換えたのか?ましょう✔ 独立したしたコアレイヤパターンは、本当の意味で救DDDと前までは かを深く理解した人にく理解するためには前した人にも、本当の意味で救これから学ぶソフトウェアぼ同じ思想のアーうと前までは している人にも対応するロジックをでき換えたのか?る柔軟なパターンだとなパターンだと前までは 思っていたよりもう✔ つかってみると前までは もっと前までは こうすべき換えたのか?と前までは かど経過しんど経過しんでてき換えたのか?そうな気がするがフレームワークするのバージョンアッで、本当の意味で救もっと前までは 深く理解した人に堀していきたいとしていき換えたのか?たいと前までは 思っていたよりもう
ご清聴清聴あり所属がフレームワークと前までは うご清聴ざいました