Fat Controller は悪か? ~光のFat Controller・闇のガリController~
by
stwile
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
2024 年 6 月 22 日 (土) PHPカンファレンス福岡 @stwile871 Fat Controller は悪か? ~光のFat Controller・闇のガリController~
Slide 2
Slide 2 text
自己紹介 スタヰル(@stwile871) $ PHPer歴7年目 $ リアーキテクチャ・でかいリファクタリング $ 洗車 $ 好きな関数は sprintf()
Slide 3
Slide 3 text
Q. 唐突な質問です
Slide 4
Slide 4 text
Q.FatControllerは悪者ですか? Q.FatControllerは悪者ですか?
Slide 5
Slide 5 text
Q.FatControllerは悪者ですか? ● よく悪口を言われている ● 特級呪物として恨み辛みを孕んでいる😇 Q.FatControllerは悪者ですか?
Slide 6
Slide 6 text
😈 本当にFatControllerは 悪いやつなのでしょうか?
Slide 7
Slide 7 text
👼 本当にThinコントローラは イイやつなのでしょうか?
Slide 8
Slide 8 text
禁断のテーマに一石を投じる
Slide 9
Slide 9 text
アジェンダ 1.Fatコントローラはどこから生まれるのか 2.Fatコントローラについて 3.Thinコントローラについて 4.考察
Slide 10
Slide 10 text
アジェンダ 1.Fatコントローラはどこから生まれるのか 2.Fatコントローラについて 3.Thinコントローラについて 4.考察
Slide 11
Slide 11 text
Fatコントローラはなぜ生まれるのか
Slide 12
Slide 12 text
Fatコントローラはなぜ生まれるのか ● 動くものをつくる 😄
Slide 13
Slide 13 text
Fatコントローラはなぜ生まれるのか ● 動くものをつくる(コントローラにロジックを書く) 😄
Slide 14
Slide 14 text
Fatコントローラはなぜ生まれるのか ● 動くものをつくる(コントローラにロジックを書く) ● 急いで動くものをつくる 😆
Slide 15
Slide 15 text
Fatコントローラはなぜ生まれるのか ● 動くものをつくる(コントローラにロジックを書く) ● 急いで動くものをつくる ● 急いで動くものをつくる 😆
Slide 16
Slide 16 text
Fatコントローラはなぜ生まれるのか ● 動くものをつくる(コントローラにロジックを書く) ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる 😇
Slide 17
Slide 17 text
Fatコントローラはなぜ生まれるのか ● 動くものをつくる(コントローラにロジックを書く) ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる
Slide 18
Slide 18 text
Fatコントローラはなぜ生まれるのか ● 動くものをつくる(コントローラにロジックを書く) ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる ● 急いで動くものをつくる 動くが 整理されていないもの
Slide 19
Slide 19 text
本来踏むべきアプローチ
Slide 20
Slide 20 text
本来踏むべきアプローチ ● 動くものをつくる
Slide 21
Slide 21 text
本来踏むべきアプローチ ● 動くものをつくる ○ 整理されたものをつくる
Slide 22
Slide 22 text
本来踏むべきアプローチ ● 動くものをつくる ○ 整理されたものをつくる ● 動くものを作る
Slide 23
Slide 23 text
本来踏むべきアプローチ ● 動くものをつくる ○ 整理されたものをつくる ● 動くものを作る ○ 整理されたものをつくる
Slide 24
Slide 24 text
本来踏むべきアプローチ ● 動くものをつくる ○ 整理されたものをつくる ● 動くものを作る ○ 整理されたものをつくる 作って、整理する必要がある
Slide 25
Slide 25 text
Q. なぜFatコントローラが生まれるのか?
Slide 26
Slide 26 text
Q. なぜFatコントローラが生まれるのか? A. 作ったもの(動くだけのもの)を 整理していないから
Slide 27
Slide 27 text
アジェンダ 1.Fatコントローラはどこから生まれるのか 2.Fatコントローラについて 3.Thinコントローラについて 4.考察
Slide 28
Slide 28 text
Fatコントローラについて
Slide 29
Slide 29 text
Fatコントローラについて APIのIO処理と具体的なビジネスロジックが 同一ファイルに書かれたクラス
Slide 30
Slide 30 text
Fatコントローラについて ● Request・Responseの処理 APIのIO処理と具体的なビジネスロジックが 同一ファイルに書かれたクラス
Slide 31
Slide 31 text
Fatコントローラについて ● Request・Responseの処理 ● DBアクセス処理 APIのIO処理と具体的なビジネスロジックが 同一ファイルに書かれたクラス
Slide 32
Slide 32 text
Fatコントローラについて ● Request・Responseの処理 ● DBアクセス処理 ● 認証認可処理...etc APIのIO処理と具体的なビジネスロジックが 同一ファイルに書かれたクラス
Slide 33
Slide 33 text
Fatコントローラたらしめるもの
Slide 34
Slide 34 text
Fatコントローラたらしめるもの 1.コードの長さ
Slide 35
Slide 35 text
Fatコントローラたらしめるもの 1.コードの長さ 2.不適切な再利用
Slide 36
Slide 36 text
Fatコントローラたらしめるもの 1.コードの長さ 2.不適切な再利用 多くのエンジニアを苦しめている💩
Slide 37
Slide 37 text
アジェンダ 1.Fatコントローラはどこから生まれるのか 2.Fatコントローラについて 3.Thinコントローラについて 4.考察
Slide 38
Slide 38 text
Thinコントローラについて APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● Request・Responseの処理 ● DBアクセス処理 ● 認証認可処理...etc
Slide 39
Slide 39 text
Thinコントローラについて APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● Fatコントローラをリファクタリングして目指したい姿のひとつ
Slide 40
Slide 40 text
Thinコントローラについて APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● Fatコントローラをリファクタリングして目指したい姿のひとつ ● 適度に凝集度が保たれている、適切に関心の分離がなされている
Slide 41
Slide 41 text
Thinコントローラについて APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● Fatコントローラをリファクタリングして目指したい姿のひとつ ● 適度に凝集度が保たれている、適切に関心の分離がなされている ?👤?? 「理想ではあるが、この光は少し眩しすぎやしないか?」
Slide 42
Slide 42 text
APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス Thinコントローラの闇😈
Slide 43
Slide 43 text
APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● DBアクセスのクラスのロジックから DBアクセスのロジックを呼ぶ Thinコントローラの闇😈
Slide 44
Slide 44 text
APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● DBアクセスのクラスのロジックから DBアクセスのロジックを呼ぶ Thinコントローラの闇😈
Slide 45
Slide 45 text
APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● DBアクセスのクラスのロジックから DBアクセスのロジックを呼ぶ ● 循環参照 Thinコントローラの闇😈
Slide 46
Slide 46 text
APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● DBアクセスのクラスのロジックから DBアクセスのロジックを呼ぶ ● 循環参照 Thinコントローラの闇😈
Slide 47
Slide 47 text
APIのIO処理と具体的なビジネスロジックが 分散している状態のクラス ● DBアクセスのクラスのロジックから DBアクセスのロジックを呼ぶ ● 循環参照 ?👤?? 「Fatコントローラのときのほうがマシだったのでは…?」 Thinコントローラの闇😈
Slide 48
Slide 48 text
アジェンダ 1.Fatコントローラはどこから生まれるのか 2.Fatコントローラについて 3.Thinコントローラについて 4.考察
Slide 49
Slide 49 text
Fatコントローラたらしめるもの 1.コードの長さ 2.不適切な再利用
Slide 50
Slide 50 text
Fatコントローラはコードが長い Q. コードの長さが悪か?
Slide 51
Slide 51 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A1. 今長いだけ(状態)
Slide 52
Slide 52 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A1. 今長いだけ(状態)で分割可能なのでは💡
Slide 53
Slide 53 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A1. 今長いだけ(状態)で分割可能なのでは💡 ● Single Action Controllerに切り出す
Slide 54
Slide 54 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A1. 今長いだけ(状態)で分割可能なのでは💡 ● Single Action Controllerに切り出す ● private メソッドに切り出す
Slide 55
Slide 55 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A1. 今長いだけ(状態)で分割可能なのでは💡 ● Single Action Controllerに切り出す ● private メソッドに切り出す ● クラス設計
Slide 56
Slide 56 text
Fatコントローラはコードが長い Q. コードの長さが悪か?
Slide 57
Slide 57 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A2. ???「凝集度によるのでは?」
Slide 58
Slide 58 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A2. ???「凝集度によるのでは?」 ● 業務ロジックによる
Slide 59
Slide 59 text
Fatコントローラはコードが長い Q. コードの長さが悪か? A2. ???「凝集度によるのでは?」 ● 業務ロジックによる ● 散らばっていないほうが良いこともある
Slide 60
Slide 60 text
つまり???
Slide 61
Slide 61 text
Fatコントローラが悪い
Slide 62
Slide 62 text
Fatコントローラが悪い コントローラが 整理されていない状態
Slide 63
Slide 63 text
Fatコントローラが悪い コントローラが 整理されていない状態 整理さえできれば救える👌
Slide 64
Slide 64 text
Fatコントローラの可能性 凝集度が高い
Slide 65
Slide 65 text
Fatコントローラの可能性 分割の選択肢を選ぶことができる 凝集度が高い
Slide 66
Slide 66 text
Fatコントローラの可能性 分割の選択肢を選ぶことができる ● アーキテクチャ選定 凝集度が高い
Slide 67
Slide 67 text
Fatコントローラの可能性 分割の選択肢を選ぶことができる ● アーキテクチャ選定 ● 規模感の調整 凝集度が高い
Slide 68
Slide 68 text
Fatコントローラの可能性 凝集度が高い 分割の選択肢を選ぶことができる ● アーキテクチャ選定 ● 規模感の調整 ● モデリングして、再度整理する時間
Slide 69
Slide 69 text
Fatコントローラの可能性 凝集度が高い 分割をしない選択もができる ● アーキテクチャ選定 ● 規模感の調整 ● モデリングして、再度整理する時間
Slide 70
Slide 70 text
つまり??? (2回目)
Slide 71
Slide 71 text
● Fatコントローラは状態であって、救える まとめ
Slide 72
Slide 72 text
● Fatコントローラは状態であって、救える ● Tninコントローラの中にも悪いやつがいる まとめ
Slide 73
Slide 73 text
● Fatコントローラは状態であって、救える ● Tninコントローラの中にも悪いやつがいる ● 野放しにしないで、早めに整理しよう まとめ
Slide 74
Slide 74 text
͓ΘΓ Ask the Speakerで お待ちしています💙