DRY・KISS原則を意識してコードを磨く方法を解説!なぜ私のコードは汚いのか?
自分が書いたコードを数日後に見返して、そのあまりの読みづらさに絶望したことはありませんか?
プログラムを書き始めたばかりの頃は、とにかく動くものを作るだけで精一杯で、綺麗さまで意識するのは本当に難しいものです。
私自身、エンジニアとして10年ほど活動してきましたが、最初の数年は自分のコードが恥ずかしくてたまりませんでした。 しかし、優れたエンジニアが共通して守っている「原則」を知ることで、少しずつコードの質を変えることができました。
今回は、初心者の方が今日から意識できる2つの強力な設計原則、DRY(ドライ)とKISS(キッス)について詳しく解説します。 この記事を読み終える頃には、あなたのコードがなぜ汚くなってしまうのか、その原因と解決策がはっきりと見えているはずです。
あなたのコードが汚く見える「正体」とは¶
まず、なぜ私たちのコードは放っておくと散らかってしまうのでしょうか。 多くの場合、それはコードの中に「同じことの繰り返し」があったり、必要以上に「複雑な書き方」をしていたりすることが原因です。
コードが汚いと、バグを見つけるのが難しくなるだけでなく、機能を追加する際にも膨大な時間がかかってしまいます。 エンジニアの世界では、このような読みづらいコードを「技術負債」と呼び、将来の自分を苦しめる借金のようなものだと考えられています。
綺麗なコードは「思いやり」でできている¶
綺麗なコードを書くことは、決して自分を賢く見せるためのテクニックではありません。 それは、次にそのコードを読む自分や、一緒に開発する仲間の負担を減らすための「思いやり」です。
私が10年の経験で学んだのは、優れたエンジニアほど、中学生でも理解できるようなシンプルで分かりやすいコードを書くということです。 そのためには、まず複雑さを排除するためのルールを知る必要があります。
1. DRY原則:同じことを二度繰り返さない¶
DRYとは「Don't Repeat Yourself(自分自身を繰り返すな)」の略称です。 名前の通り、同じロジックや処理を複数の場所に書いてはいけないという非常にシンプルな原則です。
もし、プログラムの3箇所に同じ計算式を書いていたとしたら、その計算方法が変わったときに3箇所すべてを修正しなければなりません。 一箇所だけ直し忘れると、そこが原因で深刻なバグが発生することになります。
コピペを始めた瞬間にコードは汚くなる?¶
初心者がコードを汚してしまう最大のきっかけは、既存のコードをコピーして別の場所に貼り付ける作業です。 少しだけ変えて使い回そうという誘惑は強いですが、これがコードを巨大で管理不能なものに変えてしまいます。
何かをコピペしたいと思った瞬間に、「これは関数にまとめられないか?」と自問自答することが、DRY原則を守る第一歩です。 それでは、具体的なPythonコードを例に、DRYではないコードをどう改善すべきか見てみましょう。
PythonによるDRYの実践例¶
例えば、複数の商品の税込価格を表示するプログラムを考えてみます。 以下のコードは、同じ消費税の計算が何度も登場してしまっています。
# DRYではないコード(繰り返しが多い)
price_a = 1000
tax_price_a = price_a * 1.1
print(f"商品Aの税込価格は {tax_price_a} 円です")
price_b = 2000
tax_price_b = price_b * 1.1
print(f"商品Bの税込価格は {tax_price_b} 円です")
price_c = 3000
tax_price_c = price_c * 1.1
print(f"商品Cの税込価格は {tax_price_c} 円です")
つなぎとして、このコードをDRY原則に基づいてリファクタリング(整理)してみましょう。 計算処理を関数にまとめ、表示部分をループ処理に変えることで、コードは劇的にスッキリします。
# DRYなコード(関数とループで整理)
def get_tax_price(price):
return int(price * 1.1)
items = {"商品A": 1000, "商品B": 2000, "商品C": 3000}
for name, price in items.items():
tax_price = get_tax_price(price)
print(f"{name}の税込価格は {tax_price} 円です")
このように共通化しておけば、もし税率が10%から変わったとしても、修正するのは関数の中の一箇所だけで済みます。 DRYを意識することは、未来のメンテナンス時間を大幅に削減することに直結するのです。
【関連記事】:早期リターンでネストを浅く! 読みづらいif文をスッキリさせるリファクタリング手法
2. KISS原則:常にシンプルに保つ¶
KISSとは「Keep It Simple, Stupid(シンプルにしておけ、この間抜け)」という、少し過激な格言の略です。 これは、プログラミングにおいて「複雑な方法よりも、単純な方法の方が常に優れている」という考え方を示しています。
初心者はつい、難しいライブラリを使ったり、一画面に収まらないような複雑な一行のコードを書いたりしてしまいがちです。 しかし、エンジニア歴10年の視点から言えば、最も価値があるのは「誰が読んでも1秒で意図が伝わるコード」です。
「賢いコード」よりも「親切なコード」を目指す¶
自分が知っている最新の文法を駆使して、一行で魔法のように動くコードを書くと、自分が賢くなったような気分になります。 しかし、そのコードを数ヶ月後の自分が読んだとき、何をしているのか分からず頭を抱えることになるでしょう。
KISS原則を守るためには、常に「もっと単純に書けないか?」「この複雑さは本当に必要か?」を問い続ける必要があります。 多機能すぎる関数や、何重にも重なった条件分岐(if文)は、KISSの精神に反している可能性が高いです。
PythonによるKISSの実践例¶
例えば、リストの中から特定の条件に合う要素だけを抽出して加工する処理を考えてみましょう。 たまに、一行で書くことにこだわりすぎて、非常に読みづらくなっているコードを見かけます。
# KISSではないコード(一行に詰め込みすぎて読みづらい)
data = [1, 2, 3, 4, 5, 6]
result = [str(x * 10) for x in data if x % 2 == 0] # 何をしているか一瞬迷う
つなぎとして、もちろんPythonのリスト内包表記は便利ですが、条件が複雑になる場合はあえて分けたほうが良いこともあります。 誰にでも伝わるシンプルな書き方に改めてみましょう。
# KISSなコード(処理を分割して読みやすくする)
data = [1, 2, 3, 4, 5, 6]
result = []
for x in data:
if x % 2 == 0:
processed_value = str(x * 10)
result.append(processed_value)
コードの行数は増えましたが、どちらが「直感的に理解できるか」といえば、後者ではないでしょうか。 プログラミングにおいて、シンプルさは究極の洗練なのです。
【関連記事】:綺麗なコードって何?初心者から一歩抜け出す「リーダブルコード」の3つの基本
DRYとKISSのバランスをどう取るべきか¶
ここで一つ、大切な注意点があります。 実は、DRY(共通化)を突き詰めすぎると、KISS(シンプルさ)を損なってしまうことがあるのです。
例えば、似ているけれど微妙に違う2つの処理を、無理やり1つの共通関数にまとめようとすると、引数が増えて中身が複雑怪奇になります。 これを「早すぎる共通化」と呼び、エンジニアがよく陥る罠の一つです。
原則を使い分けるための比較表¶
どちらの原則を優先すべきか迷ったときは、以下の表を参考にしてみてください。 基本的には、シンプルさを保ちつつ、無駄な繰り返しを削っていくという姿勢がベストです。
| 状況 | DRY(共通化)を優先すべき時 | KISS(シンプルさ)を優先すべき時 |
|---|---|---|
| ロジック | 全く同じ処理が3回以上登場した | 共通化すると条件分岐が増えて複雑になる |
| 修正頻度 | 仕様変更で同時に直す可能性が高い | その場所独自の特殊なルールが多い |
| 読みやすさ | 共通化したほうが全体の流れが掴める | 分割しないほうがパッと見て何をするか分かる |
つなぎとして、この使い分けの感覚は、実際にコードをたくさん書いて、失敗を繰り返す中で養われていきます。 「迷ったらシンプルにする(KISS)」というルールを持っておくと、大きく道を踏み外すことはありません。
エンジニア歴10年の私が初心者に伝えたいこと¶
私が新人の頃、先輩から何度も「そのコード、もっとシンプルにならない?」と言われ続けました。 当時は「動いているんだからいいじゃないか」と反発したこともありましたが、今ならその言葉の重みがわかります。
10年コードを書いてきて、最も苦労したのは新しい機能を開発することではなく、過去に自分が書いた「汚いコード」を修正することでした。 あのとき数分かけてDRYやKISSを意識していれば、後の自分が数時間を無駄にすることはなかったのです。
コードを書く時間よりも「考える時間」を増やす¶
いきなりキーボードを叩き始めるのではなく、まずは紙やメモ帳に「どうすればシンプルに書けるか」の構成を書いてみてください。 設計を考える10分間が、開発全体のスピードを劇的に加速させます。
また、AI(ChatGPTなど)にコードを生成してもらった後こそ、DRY・KISSの出番です。 AIが出したコードが複雑すぎないか、共通化できる余地はないかを自分の目でチェックする習慣をつけましょう。
【関連記事】:コードを書かない要件定義の力。AI時代にエンジニアに求められる真のスキルとは?
まとめ:今日からあなたのコードは磨かれ始める¶
「なぜ私のコードは汚いのか?」という問いへの答えは、技術的な知識不足だけではありません。 それは、DRYやKISSといった「読み手への配慮」を形にする習慣が、まだ身についていないだけなのです。
- DRYを意識して、コピペによる重複を徹底的に排除する。
- KISSを意識して、誰が読んでも迷わないシンプルな書き方を選ぶ。
- 原則の矛盾を感じたら、まずはシンプルさを優先する。
この3点を意識するだけで、あなたの書くPythonコードは驚くほど美しく、プロらしいものへと変わっていきます。 最初は時間がかかるかもしれませんが、その丁寧な積み重ねが、あなたを一流のエンジニアへと導いてくれます。
今日書く一行のコードから、少しだけ「美しさ」を意識してみませんか?
ここまでお読みいただきありがとうございました!