Pythonは「読みやすさ」を重視して設計された言語です。誰が書いても同じような、読みやすいコードになるように、Pythonコミュニティには**「PEP 8(ペップエイト)」**と呼ばれる標準的なコーディング規約(スタイルガイド)が存在します。
この記事では、PEPとは何か、そしてPEP 8で定められている主要なルールについて解説します。
PEPとは
PEPは Python Enhancement Proposal(Python拡張提案)の略称です。
Pythonという言語に対して、新しい機能の追加や仕様変更、開発プロセスなどを提案・管理するための公式文書群です。
すべてのPEPには番号が振られており、それぞれ役割があります。
- PEP 1: PEPの目的とガイドライン
- PEP 8: Pythonコードのスタイルガイド
- PEP 20: Pythonの禅(設計思想)
- PEP 257: Docstring(ドキュメント文字列)の書き方
PEP 8とは
数あるPEPの中で、最も頻繁に参照されるのが PEP 8 です。これは「Pythonコードをどのように書くべきか」という見た目(スタイル)に関するルールブックです。
標準ライブラリのコードはこのルールに従って書かれており、世界中のPython開発者も基本的にはこのルールに従うことが推奨されています。
PEP 8の主要なルール
PEP 8には多くのルールがありますが、特に重要で日常的に意識すべきものを紹介します。
1. インデント
- スペース4つを使用します。
- タブ文字は使用しません。
# 良い例
def calculate_total(price, tax):
if price > 0:
return price * (1 + tax)
# 悪い例 (スペース2つやタブの使用)
def calculate_total(price, tax):
if price > 0:
return price * (1 + tax)
2. 行の長さ
- 1行は最大79文字までとします(ドキュメントやコメントは72文字)。
- 長くなる場合は、括弧
()を使って改行し、インデントを揃えます。
# 良い例
total_value = (item_price_a + item_price_b + item_price_c +
item_price_d + item_price_e)
3. 空白(スペース)の使い方
- カンマ
,、コロン:、セミコロン;の直後にはスペースを入れます。直前には入れません。 - 二項演算子(
=,+,-,*,==など)の前後にはスペースを1つ入れます。
# 良い例
x = 10
y = x + 5
numbers = [1, 2, 3]
# 悪い例
x=10
y = x+5
numbers = [1,2,3]
ただし、関数の引数指定(キーワード引数)の = にはスペースを入れません。
# 良い例
def connect(host="localhost", port=8080):
pass
# 悪い例
def connect(host = "localhost", port = 8080):
pass
4. 命名規則(ネーミング)
変数や関数、クラスの名前の付け方にもルールがあります。
| 対象 | ルール | 例 |
| 変数名 | 小文字 + アンダースコア (Snake Case) | user_name, item_count |
| 関数名 | 小文字 + アンダースコア (Snake Case) | calculate_tax, get_data |
| メソッド名 | 小文字 + アンダースコア (Snake Case) | update_record |
| クラス名 | 単語の先頭を大文字 (Camel Case / CapWords) | UserAccount, HttpRequest |
| 定数名 | 全て大文字 + アンダースコア | MAX_CONNECTIONS, DEFAULT_TIMEOUT |
5. インポートの順序
ファイルの先頭で行う import は、以下の順序でグループ分けし、グループ間に空行を入れます。
- 標準ライブラリ(
os,sysなど) - サードパーティ製ライブラリ(
pandas,requestsなど) - ローカル(自作)のモジュール
import os
import sys
import requests
import my_module
自動フォーマッターの活用
これらのルールをすべて手動で守るのは大変です。現代のPython開発では、以下のようなツールを使って自動的にPEP 8準拠のコードに修正(フォーマット)するのが一般的です。
- Black: 現在最も人気のあるフォーマッター。PEP 8に準拠しつつ、妥協のない統一されたスタイルに書き換えます。
- autopep8: PEP 8違反を自動修正するツール。
- Flake8: PEP 8違反をチェックするツール(修正はしない)。
まとめ
- PEPはPythonの仕様提案文書、PEP 8はその中の「コーディングスタイルガイド」です。
- インデントはスペース4つ、命名はスネークケース(変数・関数)とキャメルケース(クラス)が基本です。
- ルールを守ることで、誰にとっても読みやすく保守しやすいコードになります。
- ツール(フォーマッター)を活用して、自動的に規約を守る環境を作ることが推奨されます。
