Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ドミネーターの実装で学ぶSOLID原則/learn solid law with dominator
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryusei Ohkura
April 18, 2025
2
150
ドミネーターの実装で学ぶSOLID原則/learn solid law with dominator
アニメから得た学びを発表会(2025/4/18)で発表した資料です!
Ryusei Ohkura
April 18, 2025
Tweet
Share
More Decks by Ryusei Ohkura
See All by Ryusei Ohkura
登壇を続けていたら地域コミュニティを作るようになった話/outputconf2026
3l4l5
0
0
本当にpythonは堅牢さに欠けるのか
3l4l5
0
180
習慣化するための技術 / Techniques for Habit Formation
3l4l5
3
420
Type Spec と Go(gin) で作るTypeSafeな web api/Craete type safe web api with typespec and go
3l4l5
0
360
SQLAlchemy の select(User).where(User.id =="123") を理解してみる/sqlalchemy deep dive
3l4l5
3
1k
NEW GAMEが良いということを伝えたいLT / New Game is iizo.
3l4l5
0
80
「アニメから学ぶ」から学ぶ具体と抽象/ I wanna learn abstraction from "learning from anime"
3l4l5
4
990
アニメからリーダーシップを学びたい / i wanna learn leader ship from animation
3l4l5
1
120
学園アイドルマスターでコミュニケーションを学ぼう!/learn communication with gakuen idol master
3l4l5
1
290
Featured
See All Featured
Design in an AI World
tapps
0
180
Paper Plane (Part 1)
katiecoart
PRO
0
6.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.2k
4 Signs Your Business is Dying
shpigford
187
22k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
430
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
610
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
エンジニアに許された特別な時間の終わり
watany
106
240k
A Tale of Four Properties
chriscoyier
163
24k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
310
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
Transcript
ドミネーターの実装で学ぶ SOLID原則 アニメから得た学びを発表会 2025-04-18 往蔵隆成
SOLID原則って難しい
なぜ難しいのか?
嬉しさがわからないからでは?
ドミネーターの実装を想像して ついでにSOLID原則のうまみを知ろう!
自己紹介 • ヲクラ(@3l4i5) ◦ おおくらりゅうせい • おしごと ◦ バックエンド •
ひとこと ◦ メダリスト大好き! ◦ リアルドミネーター欲しい
ロバート・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
©PSYCHO-PASS制作委員会
公安局刑事課一係に所属する新米監視官 画像:PSYCO-PASS公式サイト( https://psycho-pass.com/archive/character/) 常守 朱
画像:SPICE - エンタメ特化型情報メディア スパイス (https://spice.eplus.jp/articles/261597)
標準を合わせる
標準を合わせる 犯罪係数 23、執行対象ではありません
標準を合わせる 犯罪係数 オーバー100、執行対象です
標準を合わせる 犯罪係数 オーバー100、執行対象です
シビュラシステム リクエスト システム構成
犯罪係数 モード < 100 ロック 100 ~ 300 パラライザー 300
≦ エリミネーター 仕様
None
None
None
None
None
よし!
さらに工夫できるところある?
None
Dominatorクラスはもっと 抽象的なことだけを扱えるのでは?
None
None
None
Before
After
triggerModeはfireできることしか Dominatorは知らない
DominatorはTriggerについて 抽象的な知識のみで扱うことができている
None
何が嬉しい?
仕様変更が簡単になる (ことがある)
犯罪係数 モード < 100 ロック 100 ~ 300 パラライザー 300
≦ エリミネーター 仕様
犯罪係数 モード < 100 ロック 100 ~ 300 パラライザー 300
~ 400 エリミネーター 400 ≦ ??? 仕様
None
Dominator classの変更は必要ない!
どうして こういう嬉しいことがある?
SOLID原則と照らし合わせて考える
S 単一責任の原則 O Open Closedの原則 L リスコフの置換原則 I インターフェース分離の原則 D
依存関係逆転の原則
S 単一責任の原則 O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェース分離の原則 D
依存関係逆転の原則
S クラスの責任を最小限にして O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェース分離の原則 D
依存関係逆転の原則
S クラスの責任を最小限にして O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェースを分離して D
依存関係逆転の原則
S クラスの責任を最小限にして O 拡張に対してopen, 変更に対してcloseにするために L リスコフの置換原則 I インターフェースを分離して D
依存性を逆転させた
SOLID原則に乗っ取ると 仕様変更に強い良い設計ができる
でも 今回はToo Muchかも😅
適材適所