Python 逆引き集 | Python基礎・実行環境:PEP 8に沿ってコードを書く

Python Python
スポンサーリンク
スポンサーリンク

PEP 8に沿ってコードを書く

Pythonを学び始めた多くの初心者が最初にぶつかる壁が「コードの書き方が人によってバラバラで読みにくい」という問題です。 この問題を解決するために、Pythonコミュニティが公式に定めているスタイルガイドが PEP 8 です。 PEP 8は「Pythonコードを読みやすく、美しく、保守しやすく書くためのルール集」であり、プロの現場では必須の知識です。

ここでは、PEP 8の重要ポイントをステップバイステップで、初心者向けにかみ砕いて解説します。 例題・テンプレートを交えながら、すぐに実践できる形でまとめています。

PEP 8とは何か

PEP 8は、Python Enhancement Proposal(Python改善提案)のひとつで、Pythonコードの書き方の標準ルールを定めています。

なぜPEP 8が重要なのか

  • 読みやすいコードはバグが減る
  • チーム開発で統一感が出る
  • 他人のコードを理解しやすくなる
  • 自分のコードを未来の自分が理解しやすくなる
  • セキュリティ上のミスを減らせる(読みやすさは安全性につながる)

PEP 8は「Pythonらしいコード」を書くための基礎体力です。

PEP 8の最重要ポイント(初心者がまず覚えるべき部分)

① インデントはスペース4つ

Pythonはインデントで構造を表す言語なので、インデントの統一は最重要です。

def greet(name):
    print(f"Hello, {name}")
Python
  • スペース4つが標準
  • タブは使わない(混在すると危険)

② 行の長さは79文字以内

長すぎる行は読みづらく、レビューしづらいです。

# 悪い例(長すぎる)
print("これは非常に長い文章で、79文字を大きく超えてしまっていますので読みにくいです")

# 良い例(適切に改行)
print(
    "これは非常に長い文章ですが、適切に改行することで読みやすくなっています"
)
Python

③ 変数名は「意味が伝わる名前」にする

PEP 8は命名規則を強く重視します。

user_name = "Taro"      # 良い例
un = "Taro"             # 悪い例(意味不明)
Python

④ 関数名はスネークケース

def calculate_total(price, tax_rate):
    return price * (1 + tax_rate)
Python

⑤ クラス名はパスカルケース

class UserProfile:
    pass
Python

⑥ 定数は大文字+アンダースコア

MAX_RETRIES = 3
DEFAULT_TIMEOUT = 30
Python

⑦ 空行でコードを区切る

def func1():
    pass


def func2():
    pass
Python

読みやすさが大きく向上します。

PEP 8を深掘り:初心者がつまずきやすいポイント

変数名・関数名・クラス名の命名規則

PEP 8では、名前の付け方に明確なルールがあります。

種類スタイル
変数スネークケースuser_name
関数スネークケースget_price()
クラスパスカルケースOrderManager
定数全部大文字MAX_SIZE

命名は「コードの可読性」を決める最重要要素です。

PEP 8に沿ったコード例(良い例)

MAX_RETRIES = 3
DEFAULT_TIMEOUT = 30


def fetch_data(url, timeout=DEFAULT_TIMEOUT):
    """指定されたURLからデータを取得します。"""
    for _ in range(MAX_RETRIES):
        response = request(url, timeout)
        if response.ok:
            return response.data
    raise ConnectionError("データ取得に失敗しました")
Python
  • インデントはスペース4つ
  • 関数名はスネークケース
  • 定数は大文字
  • 空行で区切って読みやすい
  • docstringで関数の説明を記述

PEP 8に沿っていないコード例(悪い例)

MAXRETRIES=3
def FetchData(URL,Timeout=30):
  """URLからデータを取得"""
  for i in range(MAXRETRIES):
    response=request(URL,Timeout)
    if response.ok:return response.data
  raise ConnectionError("失敗")

問題点:

  • インデントが2スペース
  • 関数名がパスカルケース
  • 定数名が不適切
  • 空行がない
  • 可読性が低い

PEP 8チェックツールを使う(実務で必須)

flake8

PEP 8に沿っているか自動チェックしてくれるツールです。

black

PEP 8に沿ってコードを自動整形してくれます。

初心者は black を使うと「PEP 8に沿ったコードが自動で書ける」ので非常に便利です。

PEP 8に沿ったテンプレート(そのまま使える)

関数テンプレート

def function_name(param1, param2):
    """関数の説明を書くdocstring"""
    result = param1 + param2
    return result
Python

クラステンプレート

class ClassName:
    """クラスの説明を書くdocstring"""

    def __init__(self, value):
        self.value = value
Python

定数テンプレート

MAX_SIZE = 100
DEFAULT_PATH = "/usr/local/bin"
Python

PEP 8を守るとセキュリティも向上する理由(重要)

① 読みやすいコードは脆弱性を見つけやすい

複雑で読みにくいコードは、バグや脆弱性が隠れやすいです。

② 命名規則が統一されていると誤解が減る

変数名の誤解はセキュリティ事故の原因になります。

③ 自動整形ツールでミスを減らせる

black や flake8 を使うことで、ヒューマンエラーを減らせます。

まとめ

  • PEP 8は「Pythonコードの書き方の標準ルール」
  • インデントはスペース4つ
  • 関数名はスネークケース、クラス名はパスカルケース
  • 定数は大文字
  • 行は79文字以内
  • 空行でコードを区切る
  • 読みやすさは安全性にも直結する

初心者のうちは、まず インデント・命名・空行 の3つを意識するだけで、コードの質が大きく向上します。

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