🐍Pythonの命名規則を完全マスター!PEP8準拠の変数名・関数名・クラス名のつけ方+学習書5選

IT・テクノロジー
目次
  1. 🐍 「読みやすいコード」は変数名で決まる
  2. 📘 命名規則とは:書き方の「お作法」
  3. 🐍 PEP8の命名規則:5つのパターンを使い分ける
  4. 🎯 良い変数名・関数名をつける4つのコツ
  5. 💡 命名のセンスは「プログラミングスキルの差」が出る場所
  6. 📚 「プロのコード」を書くために役立つ厳選書籍&ツール
  7. ❓ よくある質問(FAQ)
  8. 🎯 まとめ:命名は「未来の自分への手紙」

🐍 「読みやすいコード」は変数名で決まる

「動くコード」と「美しいコード」の差はどこにあるか——答えのひとつが命名のセンスです。✨

変数名や関数名に気を遣わないコードは、半年後の自分でも解読不能になります。逆に、命名規則を守って意味のある名前をつけていると、3か月後にコードを開いても「ああ、これは○○を処理する関数だな」と一瞬で理解できる。チーム開発になればその差はさらに大きくなります。今日からあなたのコードを「すぐ読める・すぐ修正できる」状態にしていきましょう。📈

📘 命名規則とは:書き方の「お作法」

命名規則とは、変数名や関数名をつけるときのルールのこと。Pythonには公式のコーディングガイドライン PEP 8 があり、その中で命名規則が定められています。📜

所属しているチームやプロジェクトに独自の命名規則がある場合は、そちらを優先してください。ない場合はPEP 8に従うのが世界共通のスタンダードです。🌍

🐍 PEP8の命名規則:5つのパターンを使い分ける

1. 変数名・関数名・メソッド名 → snake_case(スネークケース)

小文字+アンダースコアで単語をつなぐ書き方。Pythonでもっとも使う基本形です。

# 変数名
user_name = "山田"
file_path = "/data/sample.csv"

# 関数名・メソッド名
def update_password():
    pass

def calculate_total_price(items):
    pass

単語が1つだけのときはアンダースコアは不要。addressname のように小文字だけで書きます。👌

2. 定数名 → UPPER_SNAKE_CASE(大文字+アンダースコア)

定数とは一度決めたら後から変更しない値のこと。すべて大文字+アンダースコアで書きます。

MAX_RETRY_COUNT = 3
DEFAULT_FILE_NAME = "output.txt"
API_BASE_URL = "https://api.example.com"

大文字で書かれているだけで「これは変更しない値なんだな」と読み手に伝わります。📌

3. クラス名 → CapWords(キャメルケース)

各単語の先頭を大文字にしてつなげる書き方。「PascalCase」とも呼ばれます。

class UserAccount:
    pass

class FileReader:
    pass

class HTTPResponse:
    pass

クラスはオブジェクトの「型」を表すので、変数や関数とは見た目で区別しやすいよう大文字始まりにします。🏛️

4. モジュール名(ファイル名) → snake_case

Pythonスクリプトのファイル名もスネークケースが推奨です。

relation_setting.py
user_authentication.py
data_processor.py

命名規則まとめ

  • 📌 変数・関数・メソッド・モジュールsnake_case
  • 📌 定数UPPER_SNAKE_CASE
  • 📌 クラスCapWords(キャメルケース)

🎯 良い変数名・関数名をつける4つのコツ

1. 意味を持たない変数名をつけない

xyfunction のような意味のない名前は、後から読むときに大混乱の原因になります。😵

# ❌ 悪い例
def function(x, y):
    return x + y + "さん"

# ⭕ 良い例
def get_full_name_with_honorific(family_name, given_name):
    return family_name + given_name + "さん"

名前を見ただけで「何をする処理か」「何が入っているか」が分かるようにしましょう。✨

ただし例外もあります。for文の中だけで使うインデックス(例:for i in range(10):)は ijk でもOK。スコープが狭く、文脈で意味が明らかな場合は短い名前でも問題ありません。📝

2. 対義語・反対語を正しく使う

日本語ネイティブだと意外と間違えやすいのが英語の対義語。ペアになる単語を間違って覚えていると、コードに違和感が残ります。

  • 📌 start ⇔ stop(finishじゃない)
  • 📌 push ⇔ pop(downじゃない)
  • 📌 open ⇔ close
  • 📌 begin ⇔ end
  • 📌 first ⇔ last
  • 📌 min ⇔ max
  • 📌 get ⇔ set

start の反対は finish じゃなくて stop」「push の反対は down じゃなくて pop」——プロのコードでよく出てくる組み合わせなので、頭に入れておきましょう。🧠

3. bool型の変数名は「True/False の意味」が明確にわかるように

真偽値(bool型)の変数名で、どちらがTrueなのか分かりにくい名前をつけてしまうケースがあります。

# ❌ 悪い例
student = True   # 学生なのか? それとも別の意味?

# ⭕ 良い例
is_student = True       # Trueなら学生、Falseなら学生じゃない
has_card = False        # Trueならカードを持っている
can_login = True        # Trueならログインできる

bool型の命名には次のような定番パターンがあります。

  • 📌 is_+名詞 / 形容詞:「○○である」
    is_student / is_valid / is_empty
  • 📌 has_+名詞:「○○を持っている」
    has_card / has_permission
  • 📌 can_+動詞:「○○できる」
    can_login / can_edit

このパターンに従うだけで、コードがぐっと英語の文章のように自然に読めます。📖

4. システムハンガリアン記法はむやみに使わない

システムハンガリアン記法とは、変数名の頭や末尾に型情報をつける書き方のことです。

# システムハンガリアン記法の例
str_user_name = "山田"      # 文字列だから str_ をつけた
i_error_code = 404         # 整数だから i_ をつけた

Pythonは動的型付け言語なので、後から型が変わる可能性があります。型が変わるたびに変数名を全部直さなければならず、メンテナンスが大変です。⚠️

さらに、この記法に慣れていない人にとっては可読性が下がるだけ。原則として使わない方が無難です。

例外として、str()int()float() のような型変換関数や、明確に型を表現したい場面では使ってOKです。🎯

💡 命名のセンスは「プログラミングスキルの差」が出る場所

「変数名なんかで悩む時間が勿体ない」と思うかもしれませんが、実は良い変数名をスパッと決められる能力は、かなりハイレベルなスキルです。プログラミングが上達するほど、命名にかける時間と注意は増えていきます。

一つひとつの変数名を丁寧に選ぶ習慣をつければ、それだけで「コードの書ける人」として一歩抜き出る存在になれます。逆に言えば、命名が雑なままだと、いつまでも初心者っぽいコードから抜け出せません。🎓

📚 「プロのコード」を書くために役立つ厳選書籍&ツール

命名規則は知っているだけでなく、良い名前を選ぶセンスも磨いていきたいもの。手元に良書を置いておくと、毎日のコーディングの質が確実に上がります。

📖 まずは体系的に:『スッキリわかるPython入門』

Pythonの基本文法から命名規則まで、初学者が知っておくべきことを丁寧に解説。「なぜこう書くのか」が腹落ちする定番書。

💼 仕事レベルへ:『独学プログラマー』

文法だけでなく、エンジニアとしての書き方やコードの整え方まで学べる人気書。命名規則の重要性が自然に身につきます。

🚀 「良いコード」への90の指針:『Effective Python 第2版』

命名はもちろん、Pythonコミュニティで推奨される書き方が90項目に凝縮。中級者必読のバイブル。

🛡️ 保守しやすいコードへ:『ロバストPython』

命名・型ヒント・設計など、長期保守に耐えるPythonコードの書き方が学べる実践的な1冊。

⌨️ 命名で悩む時間を支える相棒キーボード

良い変数名をひねり出すには、思考しながらタイピングできる快適な環境が必須。打鍵感が良く複数デバイス切替対応のキーボードがあると、長時間のコーディングが驚くほど捗ります。

❓ よくある質問(FAQ)

🤔 Q1. 変数名に日本語を使ってもいい?

Python 3 では文法的には可能ですが、非推奨です。多くのコードや書籍は英語の変数名を前提に書かれており、チーム開発では混乱の元になります。英単語で命名する習慣をつけましょう。🌍

🤔 Q2. PEP8に違反するとエラーになる?

いいえ、PEP8は推奨スタイルガイドであり、違反してもコードは動きます。ただし、flake8black といったツールでチェック・整形できるので、自動化しておくのが現代の流儀です。🛠️

🤔 Q3. プライベート変数の慣習は?

クラス内部だけで使う変数や関数には、先頭にアンダースコア1つをつけます(例:_internal_value)。これは「外から触らないでね」というメッセージ。__(アンダースコア2つ)はネームマングリングで、より強い意図を示します。🔒

🤔 Q4. 略語は使っていい?

業界で一般的な略語(urliddbhttp など)はOK。ただし独自の略語や分かりにくい省略は避けましょう。usr_nm より user_name のほうが読みやすいですよね。✂️

🤔 Q5. 変数名が長くなりすぎるのはダメ?

長さよりも意味の明確さを優先しましょう。20文字くらいまでなら気にする必要はありません。ただし get_total_price_including_tax_with_discount のように長すぎると逆に読みにくいので、「説明的かつ簡潔」のバランスを目指します。⚖️

🎯 まとめ:命名は「未来の自分への手紙」

Pythonの命名規則をまとめると——

  • 📌 変数・関数・メソッド・モジュールはスネークケース
  • 📌 定数は大文字+アンダースコア
  • 📌 クラスはキャメルケース
  • 📌 意味のない名前は避ける(forループのiは例外)
  • 📌 対義語は正しく使う(start⇔stop、push⇔pop)
  • 📌 bool型は is_/has_/can_ パターンで書く
  • 📌 システムハンガリアン記法はむやみに使わない

命名規則はルールなので、覚えれば誰でも守れます。でも、それを毎日のコードに丁寧に適用していく姿勢こそが、プログラマーとしての成長を支える土台。「未来の自分が読みやすいコード」を意識して、一つひとつの名前に心を込めていきましょう。🚀

今日からの一行が、半年後・一年後のあなたのコードを救います。変数名一つで、あなたのプログラミング人生は確実に変わり始めます。💪

コメント

タイトルとURLをコピーしました