<一覧に戻る

冗長性の排除

「同じことを何度も書いてしまっていませんか?」「もっと短く書ける気がするけど、どう直せばいいのかわからない…」そんなモヤモヤは、Pythonの“冗長性の排除”を意識することで解消できます。

冗長性(じょうちょうせい)とは、意味の重複やムダな書き方のこと。放っておくとコードが読みにくくなり、修正もしづらく、思わぬバグの温床にもなります。このセクションでは、Python初心者・IT初心者の方にもわかりやすく、冗長性を減らして読みやすいコードにする考え方と具体例を学びましょう。

冗長なコードの例

まずは具体例を見て、どこが冗長なのかを体感してみましょう。

次のコードは、商品の価格リストを合計し、税率をかけて最終的な金額を返す関数です。動作はしますが、書き方にムダがあります。

def calculate_total_price(prices, tax_rate):
    total = 0
    for price in prices:
        total = total + price
    total_with_tax = total + (total * tax_rate)
    return total_with_tax

一見シンプルに見えますが、よく読むと「合計の出し方」と「税金の足し方」に重複表現があります。もしあなたが明日このコードをもう一度読んだら、一瞬「何をしているんだっけ?」と考えてしまうかもしれません。

冗長性を排除する方法

ここでは、先ほどのコードをPythonらしく短く、そして読みやすく書き直してみます。

短くすることが目的ではなく、意図がまっすぐ伝わるように整えるのがポイントです。

def calculate_total_price(prices, tax_rate):
    total = sum(prices)  # 合計を出す標準関数を活用
    return total * (1 + tax_rate)  # 税込金額を一行で計算

どこが良くなったのか、自然な流れで確認しましょう。

まず、合計の計算はPython標準のsum関数に任せています。sumは「合計を求めたい」という意図をそのまま表現できるため、ループを書き回す必要がありません。

読み手は「ここで合計しているんだな」と一瞬で理解できます。次に、税金の加算は「合計に税率をかけて足す」を「合計 × (1 + 税率)」と一行で表しています。中間変数を無理に作らず、計算式の意味がそのまま伝わる形になりました。「短いけど読みやすい」状態を実現できていますね。

冗長性の排除のポイント

実際の現場では、どんなところに冗長さが潜んでいるのでしょうか?

ここでは、日常的に効くチェックポイントを紹介します。難しい専門用語は覚えなくても大丈夫。ムダを見つけて、より素直な表現に置き換える意識を持てば十分です。

  • 【繰り返しの排除】 同じ処理を何度も書いていないか見直しましょう。同じ式や同じロジックが2回以上出てきたら、関数化や変数の活用を検討します。
  • 【簡潔な表現の選択】 Pythonにはsum、max、min、any、allなど「意図をそのまま表す」関数が揃っています。回り道のループより、適切な関数を選ぶほうが読み手に優しいことが多いです。
  • 【標準ライブラリの活用】 自前で書くより、信頼できる標準の道具を使うほうが安全で読みやすくなります。たとえば文字列結合は+で繰り返すより"".join(...)を使う、といった基本も冗長性の削減につながります。
  • 【中間変数の使いすぎに注意】 中間結果を置く変数は「読みやすさ」が増すときにだけ使います。「とりあえず置いておく」だけの変数は、むしろ読み手を迷わせます。
  • 【一行至上主義にしない】 ただ短ければ良いわけではありません。「意図が素直に読めるか」を基準にしましょう。必要なときは適切に改行や変数名で補助します。

実践してみよう

ここからは、あなたの手で冗長性を取り除いてみましょう。

次の関数は、割引後の価格を返すコードです。合ってはいますが、少し遠回りな書き方になっています。「もっと直感的に書けないかな?」と考えながら取り組んでみてください。

def calculate_discounted_price(original_price, discount_rate):
    discount = original_price * discount_rate
    discounted_price = original_price - discount
    return discounted_price

冗長さをなくすコツは、「式の意味がそのまま伝わる形」に整えることです。ここでは「元の価格 × (1 − 割引率)」とするのが一番ストレートですね。中間変数を無理に作らず、意図を式に込めてしまいましょう。

def calculate_discounted_price(original_price, discount_rate):
    return original_price * (1 - discount_rate)

どうでしょうか。先ほどより短くなり、読む人が「割引後の価格を計算している」ことをすぐに理解できる形になりました。もし割引の計算を別の関数でも使い回すなら、同じ考え方で簡潔な実装が広がっていきます。

まとめ

冗長性の排除は、Pythonでリーダブルなコード(読みやすいコード)を書くための基本スキルです。ムダなループや不要な中間変数をなくし、sumなどの標準関数や表現力の高い構文を選ぶだけで、可読性と保守性はぐっと上がります。とはいえ、短さだけを追い求める必要はありません。大切なのは「意図がまっすぐ伝わること」。あなたの未来の自分やチームメイトが読みやすいかどうか、いつも少しだけ想像して書いてみましょう。今日から小さな冗長さを一つずつ減らすだけで、コードは確実に洗練されていきます。

出力結果: