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
42
DRY原則より「SOLID原則のS」
社内学生研修生向けのLTで発表した資料です
お茶
June 18, 2025
Tweet
Share
More Decks by お茶
See All by お茶
Denoのしょぼい使い方
okamonster
0
11
突然生えてきたシェーダー言語TSL
okamonster
0
10
なぜモダンな言語を学ぶか[2025/05/16 Progate Bar登壇]
okamonster
0
100
WebGLであそぼう! Three.jsについて
okamonster
0
30
クレカなしでもできる!Cloudflareではじめる金欠個人開発
okamonster
0
480
Other Decks in Technology
See All in Technology
Agentic Codingの実践とチームで導入するための工夫
lycorptech_jp
PRO
0
400
LINEアプリ開発のための Claude Code活用基盤の構築
lycorptech_jp
PRO
2
1.4k
「ストレッチゾーンに挑戦し続ける」ことって難しくないですか? メンバーの持続的成長を支えるEMの環境設計
sansantech
PRO
1
310
どこで打鍵するのが良い? IaCの実行基盤選定について
nrinetcom
PRO
2
170
チームメンバー迷わないIaC設計
hayama17
5
3.8k
Serverless Agent Architecture on Azure / serverless-agent-on-azure
miyake
1
150
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
6
860
型を書かないRuby開発への挑戦
riseshia
0
180
トップマネジメントとコンピテンシーから考えるエンジニアリングマネジメント
zigorou
3
540
バクラクのSREにおけるAgentic AIへの挑戦/Our Journey with Agentic AI
taddy_919
2
1k
Security Diaries of an Open Source IAM
ahus1
0
200
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
72k
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.3k
The Spectacular Lies of Maps
axbom
PRO
1
580
The Curse of the Amulet
leimatthew05
1
9.6k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
290
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
140
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
980
Design in an AI World
tapps
0
160
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
240
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
93
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
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原則」を勉強してみて下さい! 今日から君も「単一責務の原則警察」だ!