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"
PythonPEP 8を守るとセキュリティも向上する理由(重要)
① 読みやすいコードは脆弱性を見つけやすい
複雑で読みにくいコードは、バグや脆弱性が隠れやすいです。
② 命名規則が統一されていると誤解が減る
変数名の誤解はセキュリティ事故の原因になります。
③ 自動整形ツールでミスを減らせる
black や flake8 を使うことで、ヒューマンエラーを減らせます。
まとめ
- PEP 8は「Pythonコードの書き方の標準ルール」
- インデントはスペース4つ
- 関数名はスネークケース、クラス名はパスカルケース
- 定数は大文字
- 行は79文字以内
- 空行でコードを区切る
- 読みやすさは安全性にも直結する
初心者のうちは、まず インデント・命名・空行 の3つを意識するだけで、コードの質が大きく向上します。
