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原則を誤った結果生まれた技術的負債
Search
Tech Leverages
PRO
June 30, 2023
Technology
6.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DRY原則を誤った結果生まれた技術的負債
DRY原則を誤った結果生まれた技術的負債
Tech Leverages
PRO
June 30, 2023
More Decks by Tech Leverages
See All by Tech Leverages
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
180
Slackを「AIエージェントのHub」にする 〜 SlackbotとHolmesGPTで実現するAIOps
leveragestech
PRO
0
160
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
270
並列化でチームのアウトプットを増やす
leveragestech
PRO
0
72
Engineering ManagerがAI時代に この先生きのこるには?
leveragestech
PRO
1
220
最新技術を"今は選ばない"という技術選定
leveragestech
PRO
0
690
毎⽇dumpされるDBにCDCは無⼒だっ た、、FederatedQueryで繋ぎ直した データ連携の試⾏錯誤
leveragestech
PRO
0
140
Tableauを活かすためにTableauに制約を設けた話
leveragestech
PRO
0
150
営業支援システムと歩んだ7年半の変遷
leveragestech
PRO
0
230
Other Decks in Technology
See All in Technology
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
160
価値について
gree_tech
PRO
0
100
Metadata - Section 1: HTML Basics
mohab1
0
120
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
200
フィンテック養成勉強会#68
finengine
0
140
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.4k
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
Refining Active Record
shugo
0
160
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
190
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Marketing to machines
jonoalderson
1
5.9k
Mind Mapping
helmedeiros
1
400
We Are The Robots
honzajavorek
0
400
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
It's Worth the Effort
3n
188
29k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
First, design no harm
axbom
PRO
2
1.3k
The Pragmatic Product Professional
lauravandoore
37
7.5k
The SEO identity crisis: Don't let AI make you average
varn
0
590
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Transcript
DRY原則を誤った結果 生まれた技術的負債
TL;DR DRYかどうかの前に単一責務かどうか考えて
これは本当にあった怖い話です
teratailにはこんなコンポーネントが存在します
teratailにはこんなコンポーネントが存在します 違い、分かりますか?
<a>タグ <button>タグ
HTMLタグの種類が違うだけなのに 同じスタイルを都度定義するの、面倒だな ...
そうだ!propsにhrefがあるかどうかで 出し分けるように実装しよう! DRY原則の適用だ!
None
None
最初はこれでも問題なかった 最初だけね...
- 内部コンポーネントを制御するためのPropsが際限なく追加される - 内部で利用しているコンポーネントの機能を制御する必要が出てきた - 制御変数が多くなりすぎて内部実装が複雑になる - 他のライブラリ(ReactHookForm等)との組み込みがしづらくなる - 誰も手をつけられない神ボタンコンポーネントの☆完☆成☆
生まれた問題点
None
結局何がいけなかったの? - DRY(Don’t Repeat Yourself) 原則の適用を間違えた - 似て非なるものを同一視してしまった - SRP(Single
Responsibility Principle)に違反した
どうすればよかったの? - 各コンポーネントを責務という観点で独立させる - <a>タグはHTMLにおいて他のリソースへの参照を示す - <button>は文書上のフォームのコントロールや単純なボタンとしての機 能を提供する
TL;DR DRYかどうかの前に単一責務かどうか考えて