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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
お茶
June 18, 2025
Technology
0
41
DRY原則より「SOLID原則のS」
社内学生研修生向けのLTで発表した資料です
お茶
June 18, 2025
Tweet
Share
More Decks by お茶
See All by お茶
Denoのしょぼい使い方
okamonster
0
9
突然生えてきたシェーダー言語TSL
okamonster
0
9
なぜモダンな言語を学ぶか[2025/05/16 Progate Bar登壇]
okamonster
0
100
WebGLであそぼう! Three.jsについて
okamonster
0
29
クレカなしでもできる!Cloudflareではじめる金欠個人開発
okamonster
0
450
Other Decks in Technology
See All in Technology
Webhook best practices for rock solid and resilient deployments
glaforge
2
310
OpenShiftでllm-dを動かそう!
jpishikawa
0
140
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
160
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
900
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
配列に見る bash と zsh の違い
kazzpapa3
3
170
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
AIが実装する時代、人間は仕様と検証を設計する
gotalab555
1
430
Agent Skils
dip_tech
PRO
0
130
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
200
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
180
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
Building Adaptive Systems
keathley
44
2.9k
Into the Great Unknown - MozCon
thekraken
40
2.3k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
740
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
340
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
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原則」を勉強してみて下さい! 今日から君も「単一責務の原則警察」だ!