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
DRY原則より「SOLID原則のS」
Search
お茶
June 18, 2025
Technology
0
37
DRY原則より「SOLID原則のS」
社内学生研修生向けのLTで発表した資料です
お茶
June 18, 2025
Tweet
Share
More Decks by お茶
See All by お茶
Denoのしょぼい使い方
okamonster
0
9
突然生えてきたシェーダー言語TSL
okamonster
0
8
なぜモダンな言語を学ぶか[2025/05/16 Progate Bar登壇]
okamonster
0
100
WebGLであそぼう! Three.jsについて
okamonster
0
29
クレカなしでもできる!Cloudflareではじめる金欠個人開発
okamonster
0
440
Other Decks in Technology
See All in Technology
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
Keynoteから見るAWSの頭の中
nrinetcom
PRO
1
160
Agentic AIが変革するAWSの開発・運用・セキュリティ ~Frontier Agentsを試してみた~ / Agentic AI transforms AWS development, operations, and security I tried Frontier Agents
yuj1osm
0
210
2025年のデザインシステムとAI 活用を振り返る
leveragestech
0
690
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
180
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
140
Qiita Bash アドカレ LT #1
okaru
0
170
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
Oracle Cloud Infrastructure:2025年12月度サービス・アップデート
oracle4engineer
PRO
0
190
AWSと生成AIで学ぶ!実行計画の読み解き方とSQLチューニングの実践
yakumo
2
180
わが10年の叡智をぶつけたカオスなクラウドインフラが、なくなるということ。
sogaoh
PRO
1
220
Featured
See All Featured
Abbi's Birthday
coloredviolet
0
4.2k
Paper Plane (Part 1)
katiecoart
PRO
0
2.7k
Technical Leadership for Architectural Decision Making
baasie
0
200
Visualization
eitanlees
150
16k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
[SF Ruby Conf 2025] Rails X
palkan
0
680
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
420
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
220
Six Lessons from altMBA
skipperchong
29
4.1k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
51
Transcript
DRY原則より「SOLID原則のS」 2025/06/16 @ocha/Kazuki Okamoto
@makura_nageru https://お茶.dev お茶 / 岡本和輝(24) スーパーハムスター! ハム研メンター profile.json { “name”
: “お茶”, “hobby”: [“コーヒー”,”睡眠”], “zenn” : “https://zenn.dev/makura_nageru”, }
コードを書くのに慣れてくると... 「あれ??同じ処理書いてる気がする」 同じ処理は1個にまとめて使い回したろ 「DRY原則」 Don’t Repeat Yourself「同じことを何度も書くな」
これだけ先に覚えてしまうと... 例えば… 「税込価格を計算する処理」 「有料プラン10%値上げを計算する処理」 = 処理の内容自体は一緒
ここで... 政府 「爆減税します」 10% → 3%!!!!! 「有料プラン10%値上げ」 壊れる!!!!
なぜぶっ壊れたのか
原因 「2つの責務が違うものをロジックが同じという理由でまとめた」 「税込価格を計算する処理」 「10%値上げを計算する処理」 欲しい結果「税込価格」 登場人物は「税率」 変更時「税率が変わった時」 欲しい結果「値上げ後の価格」 登場人物は「値上げ率」 変更時「価格が変わった時」
文脈も欲しい結果も意味が全然違う… DRY原則はロジックの共通化ではなく意味の共通化
SOLID原則の「S」
SOLID原則 ソフトウェア設計時に従うべき5つの原則 S : Single responsibility principle(単一責任の原則) まずはこれだけ!!!! O :
Open/closed principle(オープン・クローズドの原則) L : Liskov substitution principle(リスコフの置換原則) I : Interface segregation principle(インターフェース分離の原則) D : Dependency inversion principle(依存関係逆転の原則)
単一責務の原則 「すべてのモジュールにおいて、それが持つ責務は1つとする」 言い換えると 「モジュールを変更する理由は1つだけにする」
今回の場合 ロジックが同じでも変更が必要になる理由が「2つ」ある 「税率」or「値上げ率」 が変わった時 単一責務の原則に違反している
なぜDRY原則より単一責務原則を推すか どちらも大切なことに変わりはない 「単一責務原則」・・・設計として守るべき原則(優先されるべき) 「DRY原則」 ・・・実装として守るべき原則 実装思想が設計思想を超えて破壊を生んではいけない
これからエンジニアになる皆さんへ SOLID原則のSは設計の基礎中の基礎 どのアーキテクチャの話をしても最後にはSの話になる 共通化の原則は同じロジックを共通化しようという訳ではない Sを意識できるようになったら「SOLID原則」を勉強してみて下さい! 今日から君も「単一責務の原則警察」だ!