Slide 1

Slide 1 text

ドミネーターの実装で学ぶ SOLID原則 アニメから得た学びを発表会 2025-04-18 往蔵隆成

Slide 2

Slide 2 text

SOLID原則って難しい

Slide 3

Slide 3 text

なぜ難しいのか?

Slide 4

Slide 4 text

嬉しさがわからないからでは?

Slide 5

Slide 5 text

ドミネーターの実装を想像して ついでにSOLID原則のうまみを知ろう!

Slide 6

Slide 6 text

自己紹介 ● ヲクラ(@3l4i5) ○ おおくらりゅうせい ● おしごと ○ バックエンド ● ひとこと ○ メダリスト大好き! ○ リアルドミネーター欲しい

Slide 7

Slide 7 text

ロバート・C・マーチンにより提唱。 2000年に発表されたレポート『Design Principles and Design Patterns』で紹介されて いる ● 単一責任の原則 (single-responsibility principle) ● 開放閉鎖の原則(open/closed principle) ● リスコフの置換原則(Liskov substitution principle) ● インターフェース分離の原則 (interface segregation principle) ● 依存性逆転の原則(dependency inversion principle) から成る ソフトウェア設計をより平易かつ柔軟にして保守しやすくすることを目的にしている SOLID原則 参考:Wikipedia https://ja.wikipedia.org/wiki/SOLID

Slide 8

Slide 8 text

©PSYCHO-PASS制作委員会

Slide 9

Slide 9 text

公安局刑事課一係に所属する新米監視官 画像:PSYCO-PASS公式サイト( https://psycho-pass.com/archive/character/) 常守 朱

Slide 10

Slide 10 text

画像:SPICE - エンタメ特化型情報メディア スパイス (https://spice.eplus.jp/articles/261597)

Slide 11

Slide 11 text

標準を合わせる

Slide 12

Slide 12 text

標準を合わせる 犯罪係数 23、執行対象ではありません

Slide 13

Slide 13 text

標準を合わせる 犯罪係数 オーバー100、執行対象です

Slide 14

Slide 14 text

標準を合わせる 犯罪係数 オーバー100、執行対象です

Slide 15

Slide 15 text

シビュラシステム リクエスト システム構成

Slide 16

Slide 16 text

犯罪係数 モード < 100 ロック 100 ~ 300 パラライザー 300 ≦ エリミネーター 仕様

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

よし!

Slide 23

Slide 23 text

さらに工夫できるところある?

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Dominatorクラスはもっと 抽象的なことだけを扱えるのでは?

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Before

Slide 30

Slide 30 text

After

Slide 31

Slide 31 text

triggerModeはfireできることしか Dominatorは知らない

Slide 32

Slide 32 text

DominatorはTriggerについて 抽象的な知識のみで扱うことができている

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

何が嬉しい?

Slide 35

Slide 35 text

仕様変更が簡単になる (ことがある)

Slide 36

Slide 36 text

犯罪係数 モード < 100 ロック 100 ~ 300 パラライザー 300 ≦ エリミネーター 仕様

Slide 37

Slide 37 text

犯罪係数 モード < 100 ロック 100 ~ 300 パラライザー 300 ~ 400 エリミネーター 400 ≦ ??? 仕様

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Dominator classの変更は必要ない!

Slide 40

Slide 40 text

どうして こういう嬉しいことがある?

Slide 41

Slide 41 text

SOLID原則と照らし合わせて考える

Slide 42

Slide 42 text

S 単一責任の原則 O Open Closedの原則 L リスコフの置換原則 I インターフェース分離の原則 D 依存関係逆転の原則

Slide 43

Slide 43 text

S 単一責任の原則 O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェース分離の原則 D 依存関係逆転の原則

Slide 44

Slide 44 text

S クラスの責任を最小限にして O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェース分離の原則 D 依存関係逆転の原則

Slide 45

Slide 45 text

S クラスの責任を最小限にして O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェースを分離して D 依存関係逆転の原則

Slide 46

Slide 46 text

S クラスの責任を最小限にして O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェースを分離して D 依存性を逆転させた

Slide 47

Slide 47 text

SOLID原則に乗っ取ると 仕様変更に強い良い設計ができる

Slide 48

Slide 48 text

でも 今回はToo Muchかも😅

Slide 49

Slide 49 text

適材適所