Pythonのコーディング規約PEP8とは?品質を担保するルールを紹介
thumb_pythoncording_01
Pythonのコーディング規約PEP8とは?品質を担保するルールを紹介
アンドエンジニア編集部
2023.07.21
この記事でわかること
コーディング規約はプログラミングでソースコードを記述する際に守りたいルール
コーディング規約を守ることで、読みやすく、分かりやすい保守性に優れたプログラムとなる
PEP8ではコードレイアウト・コメント・命名規則の3種類のルールが示されている

Pythonとコーディング規約

img_pythoncording_01

プログラミングを学んでいる方、会社や組織で働いているITエンジニアの方であれば、「コーディング規約」という言葉を耳にしているかと思います。とはいえ、場合によっては厳格にコーディング規約を守っている方は少ないかもしれません。

なぜなら、コーディング規約通りにコーディングをしなくともプログラムは作れますし、何の問題もなく動いてくれるからです。では何のためにコーディング規約が存在するのか、なぜコーディング規約を守る必要があるのか、Pythonのコーディング規約PEP8について解説します。

【参考】:はじめに — pep8-ja 1.0 ドキュメント

コーディング規約とは

コーディング規約を一言で述べると、プログラミングでソースコードを記述する際に守りたいルールです。ルールを守らないとペナルティがあるのかと心配する方がいますが、基本的にペナルティはありません。

ただし、組織によっては厳格なコーディング規約を決めており、ルールを守らない人に対しては、注意を与えることもあります。

コーディング規約はプログラム言語の文法ではなく、書き方、スタイルに関する組織内の約束事です。それは変数や関数に関する命名規則であったり、使ってはいけない機能の禁止事項であったり、スペースやインデント、括弧記号や演算子の配置の仕方など、様々な規約があります。

では、なぜそのような規約が必要なのでしょうか?自分流のコーディングスタイルで良いのではないかと思う方もいるでしょう。次項でコーディング規約が必要な理由を述べます。

コーディング規約とは?メリットやデメリット定めるべき内容を紹介

コーディング規約はなぜ必要?

企業や組織でシステムを開発する際に、プログラミングにおいてある程度ルールを明確化しておかないと、他の人が書いたコードを読んだり、ロジックを理解して修正をしたりする場合に、作業が難しくなります。

例えば、Aさんのソースコードは読みやすいのに、Bさんのコードは読みにくいといったことが起こります。こうしたことを減らすためにコーディング規約があります。

コーディングの仕方をコーディング規約として定めておくと、読みやすく、メンテナンスがしやすいプログラムが出来上がり、結果的にソフトウェアの開発効率が向上します。

ただし、規約を定めるに当たっては、言語特性、開発環境、組織や構成員の考え方、組織の方針によって温度差があり、一概に優劣を定めることはできません。たとえば、システム開発系ベンダーのコーディング規約があっても、委託元のコーディング規約を優先することもあります。

集団が異なると、同じ項目に対して異なるルールが適用されることもあり、ここで混乱を招く場合も起こり得ます。しかし言語側でコーディング規約が用意されていると、組織が異なっても同じルールを適用しやすくなるため、組織をまたがった開発や、受託開発などでの混乱を回避しやすくなります。

比較的新しく、人気の高いPython言語には、PEP8という言語側で用意されたコーディング規約がありますが、PHPやPerlなどの他の言語にもコーディング規約が用意されています。

【入門編】Pythonで何ができる?実用例やメリットを紹介

Pythonコーディング規約(PEP8) とは

img_pythoncording_02

コーディング規約について理解できたところで、Pythonのコーディング規約と言われるPEP8(読み方はペップエイト)について詳しく見ていきましょう。

【参考】:PEP 8 – Python コードのスタイル ガイド | peps.python.org

PEP8の概要

Python において「標準」を定めるために PEP(Python Enhancement Proposal)というものがあります。 Pythonの機能拡張で議論されたことがまとめられた設計書です。

PEP8はこのPEPの8番目の文書で、「Style Guide for Python Code」すなわち Python コードに関する「書き方ガイド」とも言われ、コーディングの作法を記したものと考えてください。

一貫性にこだわりすぎない

PEP8の冒頭には「A Foolish Consistency is the Hobgoblin of Little Minds」と記されています。一貫性にこだわり過ぎては、狭い心の小鬼になってしまうという意味です。

スタイルガイドに合わせることも重要ですが、こだわり過ぎた結果コードの一貫性が失われてしまったり、コーディング規約に準拠することで得られるはずだったメリットが損なわれたりしたら、元も子もないということなのでしょう。

例えば、PEP8を適用する前に作られたプログラムは、PEP8のルールとは異なるルールで書かれている場合、無理にPEP8準拠に書き換えることで、逆に読みにくいコードになってしまう場合もあります。コーディング規約を絶対視し過ぎないようにということです。

PEP8ライブラリの活用

PEP8にはコードが規約通りになっているか否かをチェックしてくれるPEP8ライブラリがあります。Pipコマンドでインストールします。他、Pythonにはコードチェックツールが多く用意されていますが、古くから使われている※autopep8をおすすめします。

またPythonのコーディングにVscode「Visual Studio Code」を利用している方は、autopep8をVscodeで設定して利用することも可能です。

$ pip8  install pep8

 

コードスタイルをチェックしたい時は次のように利用します。

$ pip8   <file-path>

 

ソースコードも表示したい時は次のようにしてください。

$ pip8 <file-path> --show-source

 

【参考】※:autopep8: PEP 8 スタイル ガイドに準拠するように Python コードを自動的にフォーマットするツール|Github 【参考】:Visual Studio Code | Microsoft Azure

VSCodeとは?定番のコードエディタを他のエディタと比較して解説
VSCodeをインストールする方法とは?設定方法まで丁寧に解説

PEP8の3種類のルール

img_pythoncording_03

Pythonコードを書く上で基本的なコーディングのスタイルを取り決めたPEP8には、大別すると3種類のルールがあります。コードの可読性を重視したPEP8のルールについて、主なものを見てみましょう。

一見、細かすぎて面倒に感じるかもしれませんが、このルールに従ってコーディングされたソースコードは非常に見やすく、分かりやすいと感じるでしょう。

【参考】:PEP 8 – Python コードのスタイル ガイド | peps.python.org

コードレイアウトのルール

PEP8のコードレイアウトに関する、代表的なルールについて挙げてみましょう。

▪インデントに関するルール ブロックの範囲について、Pythonではインデントを用いて表現します。インデントに関する基本ルールは次の通りです。 ①インデントにはタブではなく半角のスペースを使用する ②1ブロックにつき、インデントは半角スペースを4つに統一する

▪インポートに関するルール ①import は1度につき1つのモジュールをインポートする ②同一のモジュール内から複数要素のインポートを行う場合はカンマで区切る ③ライブラリ毎にグループ化する

▪1行の文字数に関するルール ①コード部分については半角79文字以内とする ②コメントやdocstringなど、改行を入れやすい場合には半角72文字以内とする

▪空行の数に関するルール ①トップレベルの関数やクラスについては2行分の空白を入れる ②クラス定義内のメソッドについては1行分の空白を入れる

コメントのルール

PEP8のコメント(注釈や説明)に関する代表的なルールは以下の通りです。

▪コメント文字列は誰が見ても分かるようにする ▪コメントとコードに矛盾がないようにする ▪ハッシュ文字:#とコメント文字列の間には半角スペースを1つ入れる ▪インラインコメントを入れる時は(#)の前に半角スペース2文字以上を入れる ▪公開するモジュール関数は 「docstring」で関数について説明する

命名規則のルール

最後に、Pythonの命名規則に関するルールについて解説します。命名規則は変数やクラスなどの命名に関する決まり事で、Python に限らず全てのプログラミング言語に共通しますが、命名規則があると見た目が統一され、コードを読みやすくするという狙いがあります。

PEP8では文字を見ただけで、名前の種類が分かるよう設定されています。一部抜粋しました。

▪変数名は全て大文字にし、単語間はアンダースコアで接続する ▪関数名/変数名は英小文字で、単語間はアンダースコアでつなぐ ▪クラス名は各単語の先頭を大文字化し、アンダースコアを使わずつなぐ ▪メソッド名/インスタンス変数名は基本的には関数名/変数名と同じだが、外部に非公開のものは先頭にアンダースコアを1つ付加する ▪モジュール名/パッケージ名はすべて小文字で短い名称とする

コーディング規約を遵守して品質を高めよう

img_pythoncording_04

この記事では、コーディング規約とは何か、Pythonのコーディング規約PEP8とは何か、PEP8の代表的なコーディングルールについて解説しました。コーディング規約はシステム開発では重要な規約です。

これまでコーディング規約を特に意識していなかったという方は、これを機会に自分のプログラムが規約に沿っているのか確認をしてみましょう。コーディング規約を守るのは、最初は面倒に感じるかもしれませんが、次第にそのメリットが分かってきます。

Pythonのコードを書く際には、ぜひPEP8に従ってコードを書くように習慣づけることをおすすめします。

Pythonのよく使うライブラリ一覧!一段上の開発を目指そう
Pythonのメソッド一覧を紹介!基礎知識についても解説
Pythonで開発を行う際におすすめのツールを徹底解説!
気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT