DRY原則とは?コピペがバグを生む理由と正しいコードの書き方を解説

システム開発・テクノロジー
DRY原則とは?ざっくりと3行で
  • 「Don’t Repeat Yourself」の略で、プログラムの中で同じ処理や情報を二度書かないというルールのことだよ。
  • コピー&ペーストを避けて、似たようなコードを一つの「部品(関数)」にまとめる役割があるんだ。
  • これを守ると、修正が必要になった時に一箇所直すだけで全体に反映されるから、ミスが激減するね。
銀色のパーカーを着た猫のキャラクター「デプロイ太郎」が、ソフトウェア開発におけるDRY原則(Don't Repeat Yourself:繰り返しを避ける)の重要性とメリットを解説する4コマ漫画。
①デプロイ太郎は、重複するコードの記述に疲弊し、開発作業の非効率さに直面する。 ②DRY原則(繰り返しを避ける)を知り、コードを共通化して再利用する解決策を見出す。 ③安易なコピー&ペーストは、バグの温床となり、修正漏れの恐怖を招くと痛感する。 ④原則の実践により、一度書いたコードを多用でき、保守も容易になるメリットを享受する。

【深掘り】これだけ知ってればOK!

単に「文字数を減らすテクニック」だと思われがちだけど、実は「情報の正解を一箇所に定める」という信頼性担保の側面があるんだよ。

プログラミングにおいて「コピー&ペースト」は、バグ(不具合)を生む最大の原因の一つです。例えば、消費税の計算式を5箇所にコピペしていたとします。税率が変わった時、5箇所すべてを完璧に修正しなければなりません。もし1箇所でも修正を忘れると、そこだけ計算が狂ってしまいます。DRY原則に従い、計算式を1つの「関数」として定義しておけば、その関数の中身を変えるだけで、システム全体の計算が正しく更新されます。

初心者が現場で直面しそうなシーンとして、「過剰な共通化」による失敗があります。「似ているから」という理由だけで無理やり一つにまとめると、後で「Aの場合はこう、Bの場合はこう」という条件分岐だらけになり、かえって読みづらくなることがあります。「意味が同じか」を見極めることが重要です。

会話での使われ方

このコード、あちこちに同じロジックが散らばってるから、リファクタリングでDRYにしておいて。

コピペで機能追加するのは楽ですけど、DRY原則に反するので後々の保守が大変になりますよ。

ここは将来的に変更される可能性が高い値なので、定数として定義してDRYを守りましょう。

【まとめ】3つのポイント

  • 秘伝のタレのレシピ:レシピ(処理)が一箇所に書いてあれば、誰が作っても同じ味が出せる
  • 修正の手間を削減:変更作業が「5回のコピペ修正」から「1回の定義変更」になる
  • バグの予防:「直し忘れ」というヒューマンエラーを仕組みで防ぐ

よくある質問

Q
DRY原則はいつ使うのがベストですか?
A
コードを書いている最中に「あ、この処理さっきも書いたな」と思って、コピー&ペーストをしようとした瞬間が、DRY原則を適用すべきタイミングです。
Q
DRY原則を失敗させないコツはありますか?
A
偶然似ている処理本質的に同じ処理を区別することです。今は同じでも、将来別々に変更される可能性があるものは、あえて分け(WET)ておく判断も必要です。
Q
DRY原則の具体例は何ですか?
A
CSSで同じスタイルをクラス化する、同じ計算処理を関数化する、消費税率などの固定値を定数として定義するなどが代表的です。
Q
DRY原則の対義語はありますか?
A
WET(Write Everything Twice / We Enjoy Typing)という言葉があります。すべてを二度書くタイピングを楽しむ(無駄な記述)という皮肉が込められています。

この用語と一緒に知っておきたい用語

用語この記事との関連
YAGNI原則DRYとYAGNIは共にコードの無駄を排除するための設計原則
スパゲッティコードDRY原則に従うことでスパゲッティコードの予防になる
キャメルケース統一された命名規則はDRY原則のコード可読性向上にも寄与する
車輪の再開発既存コードの再利用を促すDRY原則は車輪の再開発を防ぐ思想と重なる

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました