このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】標準コーディングスタイル(PEP8)

標準コーディングスタイル(PEP8)

 ここでは、Python の標準コーディングスタイル「PEP8」について、基本的な概念とその重要性、またツールを使った準拠チェックの方法までを順を追って解説します。PEP8 は Python コードの見た目や記述ルールを定めたガイドラインで、コードの可読性や保守性を向上させるために推奨されます。以下で、PEP8 の概要、具体的なルール、チェックツールの利用方法、さらに自動整形ツール autopep8 の使い方について説明します。

プログラムのダウンロード

 「ダウンロード」から、サンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.PEP8 とは何か

PEP8(Style Guide for Python Code)は、Python のコードを書く際の標準的なスタイルガイドです。

  • 目的: コードの可読性と一貫性を高め、他人との共同作業や保守を容易にする。
  • 背景: Python Enhancement Proposal の 1 つで、数多くの PEP の中から採用され、公式なスタイルとして広く受け入れられている。
  • : インデントは空白4個、変数名はスネークケース、関数名も小文字とアンダースコアで記述するなど。

以下の表に、PEP8 の主なルールの一部を示します。

項目推奨内容備考
インデント空白 4 個タブと混在しないことが望ましい。
変数・関数名小文字とアンダースコア(例: my_function)読みやすさの向上
行の長さ最大 79 文字可読性を考慮して改行すべき。
コメントブロックコメントは # を使い、空白を入れる。インラインコメントも同様にスペースを適切に使用

2.PEP8 の重要性とメリット

PEP8 に沿ってコードを書くと、以下のメリットがあります。

  • 読みやすさの向上: 一定のルールに従うため、誰が見ても理解しやすいコードになる。
  • 保守性の向上: 共同開発の際にコードスタイルが統一され、変更や拡張が容易になる。
  • ツールサポート: pycodestyle や autopep8 などのツールで自動チェックおよび整形が可能になる。

3.PEP8 準拠のチェックツール pycodestyle の活用

 自分の書いたプログラムが PEP8 に沿っているかどうかを確認するために、pycodestyle というツールが利用できます。

インストール(CPython の場合)

pip install pycodestyle

インストール(Anaconda/Miniconda の場合)

conda install -y pycodestyle

使用方法

コマンドラインから、対象の Python ファイル名を指定して実行します 。

pycodestyle your_script.py

  実行例として、PEP8 に沿っていないプログラムファイル(例: pycode-style.py)をチェックした場合、エラー例として次のようなメッセージが表示されます。

pycode-style.py:2:3: E111 indentation is not a multiple of 4
pycode-style.py:2:16: W292 no newline at end of file

 これらのエラーメッセージは、それぞれ「行頭インデントが4の倍数になっていない」、「ファイル末尾に改行がない」といった内容を示しています。PEP8 に沿った修正を行うと、エラーメッセージは表示されなくなります。

4.自動整形ツール autopep8 の利用

 PEP8 に準拠するため、コードを手動で修正する代わりに、自動的に整形してくれるツール autopep8 を利用する方法もあります。

インストール(CPython の場合)

pip install autopep8

インストール(Anaconda/Miniconda の場合)

conda install -y autopep8

使用方法

 対象のファイルに対して、整形後のコードを直接書き込むには、-i オプションを付けます。 autopep8 -i your_script.py これにより、PEP8 に準拠する形に自動整形され、再度 pycodestyle でチェックした際にエラーが表示されなくなります。

pycodestyleとautopep8の活用実践

pycodestyle の実践

 ここでは、PEP8 準拠のチェックと自動修正の手順を実践していきます。PEP8 に沿っていないコード(pycode-style.py)を準備します。内容は以下の通りです。

pycode-style.py

for i in range(3):
  print("open")

pycodestyleの実行

 このコードは、2 行目の print("open") のインデントが空白 2 個になっており、PEP8 では推奨される空白 4 個ではないため、コマンドラインで次のようにチェックするとエラーが表示されます。

pycodestyle pycode-style.py

実行結果(エラーメッセージの例)は以下のようになります。

> pycodestyle pycode-style.py
pycode-style.py:2:3: E111 indentation is not a multiple of 4
pycode-style.py:2:16: W292 no newline at end of file
  • E111 は「2 行目の 3 桁目(空白の数)が 4 の倍数ではない」ことを意味し、
  • W292 は「ファイルの最後に改行がない」ことを示しています。

これらのエラーに沿ってコードを修正すると、正しい形は次のようになります。

for i in range(3):
    print("open")

 この状態で再度 pycodestyle pycode-style.py を実行すると、エラーメッセージは表示されず、コードが PEP8 に沿っていることが確認できます。

pycodestyle pycode-style.py

autopep8の実践

 また、PEP8 に沿うように自動的にコードを修正してくれるツールとして、autopep8 があります。autopep8 を使えば、手動で修正する代わりに整形されたコードを自動でファイルに書き込むことが可能です。

autopep8 の実行

 まず、PEP8 に沿っていないコード(pycode-style.py)を準備します。先ほど修正した内容を元の状態に戻しておきます。以下のように内容を変更します。

for i in range(3):
  print("open")

修正したいファイルに対して -i オプションを付けて実行すると、ファイルが上書き修正されます。

autopep8 -i pycode-style.py

 これを実行した後、再度 pycodestyle pycode-style.py を実行すると、エラーは表示されなくなります。

pycodestyle pycode-style.py

 VSCode などのテキストエディタで pycode-style.py を開き、内容が以下のように修正されているのを確認できます。

for i in range(3):
    print("open")

 この一連の作業により、PEP8 に基づいたコードスタイルが保たれるため、他の開発者にとっても読みやすく、保守しやすいコードを書くことができます。

まとめ

 PEP8 は、Python コードを書く際の標準的なスタイルガイドであり、読みやすさと保守性の向上に寄与します。以下のポイントが重要です。

ポイント内容
コーディングスタイルの意義コードの統一された見た目を保つことで、共同開発や保守が容易になる
PEP8 の主なルールインデント(空白 4 個)、適切なコメントの記述、適切な命名規則など
チェックツール pycodestylePEP8 準拠のコードかどうかを自動チェックし、エラー箇所と理由を表示
自動整形ツール autopep8コードを自動的に PEP8 準拠の形に整形するツール。-i オプションを使うとファイルに上書き保存可能

 これらのツールやルールを活用することで、他の開発者と協力しやすく、より品質の高いプログラムを書くことができるでしょう。まずは自分のコードが PEP8 に沿っているかチェックし、必要に応じて autopep8 などで整形する習慣を身につけることをおすすめします。