Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DRY原則より「SOLID原則のS」
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
お茶
June 18, 2025
Technology
50
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DRY原則より「SOLID原則のS」
社内学生研修生向けのLTで発表した資料です
お茶
June 18, 2025
More Decks by お茶
See All by お茶
Denoのしょぼい使い方
okamonster
0
25
突然生えてきたシェーダー言語TSL
okamonster
0
20
なぜモダンな言語を学ぶか[2025/05/16 Progate Bar登壇]
okamonster
0
110
WebGLであそぼう! Three.jsについて
okamonster
0
33
クレカなしでもできる!Cloudflareではじめる金欠個人開発
okamonster
0
570
Other Decks in Technology
See All in Technology
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
1
120
大型犬好きによるPugの紹介
yamanoku
1
160
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
1
280
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
210
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
320
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
180
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
340
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
190
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
300
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.3k
Documentation Writing (for coders)
carmenintech
77
5.6k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Visualization
eitanlees
153
17k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
WENDY [Excerpt]
tessaabrams
14
40k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
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原則」を勉強してみて下さい! 今日から君も「単一責務の原則警察」だ!