初心者のためのDjango入門
■第24話:Pythonの命名規則
(最終更新日:2024.03.19)
(絵が小さい場合はスマホを横に)
「見やすいコードを書きたい!」
プログラミングにおいて、命名規則を決めることは、コードの可読性とメンテナンス性を向上させるのに重要な働きを示す。
特に、大きなプロジェクトやチームでの開発では、規模が大きいが故に一貫性のある命名規則で書くことを求められる。
今回はPythonにおける命名規則について説明する。
[目次]
1.PEP8と命名規則の重要性
PEP8は、Python Enhancement Proposalの第8提案であり、Pythonのコードを書く際のスタイルガイドだ。 これにはインデント、スペースの使用、行の長さなどのコードフォーマットのガイドラインに加えて、命名規則に関する詳細な推奨事項も含まれている。 PEP8はPythonコミュニティに広く受け入れられており、多くのプロジェクトやライブラリで参考にされる。 PEP8に提案された規則にのっとってコードを記述することで、下記の利点が得られる。
- 可読性: 「変数なのか定数なのか」という区別が一目で分かり、他の開発者がコードを理解しやすくなる。
- 一貫性: 同じルールに従うことで、コード全体の一貫性が保たれ、間違いを見つけやすくなる。
- エラーの減少: 適切な命名規則を採用することで、変数や関数の役割が理解しやすくなり、ミスを防ぐことができる。
このように、命名規則にのっとって書くことは、コードを書く上で欠かせない「可読性」「一貫性」「エラーの減少」に貢献する。 また、PEP8のような一般的なルールを採用することで、新たに入ったエンジニアが、コーディングルールに慣れる時間が少なくて済む。 もともとPEP8を知っていれば、覚えることが少なくなるからだ。ぜひ、今回Pythonの命名規則を覚えてしまおう。
2.Pythonの命名規則
Pythonの命名規則は、PEP 8(Python Enhancement Proposal 8)に記載されている。 これは、Pythonのコードを書く際のスタイルガイドであり、一般的には広く受け入れられている標準だ。 以下は、PEP 8に基づくPythonの命名規則の主要な部分をまとめたものになる。
- 変数名:
- 命名規則: snake_case(小文字のスネークケース)を使用する
- 例: user_name, word_list
- 関数名:
- 命名規則: snake_caseを使用する
- 例: print_hello_world(), calculate_total()
- クラス名:
- 命名規則: PascalCase(パスカルケース)を使用する
- 例: MyClass, UrlParser
- メソッド名:
- 命名規則: snake_caseを使用する
- 例: get_value(), set_value()
- 定数:
- 命名規則: 全て大文字のUPPER_SNAKE_CASEを使用する
- 例: MAX_VALUE, PI
- モジュール名:
- 命名規則: 短く、全て小文字のsnake_caseを使用するアンダースコアは必要に応じて使用する
- 例: os, http_client
- ライブラリ、パッケージ名:
- 命名規則: 短く、全て小文字を推奨する。アンダースコアは使用しないことが推奨される
- 例: requests, numpy
- プライベート変数やプライベートメソッド:
- 命名規則: 名前の前にアンダースコアを1つつけて示す(ただし、先頭と末尾の両方にアンダースコアがあるものは特殊な意味を持つ)
- 例: _private_var, _private_method()
- マングリング:
- 命名規則: 名前の前にアンダースコアを2つ付ける
- 例: __mangled_var, __mangled_method()
- 特殊な変数やマジックメソッド:
- 命名規則: 先頭と末尾にアンダースコアを2つずつ付ける
- 例: __init__(), __str__(), __eq__()
ちなみに、メソッド、クラス、モジュール、パッケージ、ライブラリの関係が分からないという方がおられるかもしれないので、関係図を以下に示す。 変数とメソッドを集めたものがクラス、クラスや関数が集めたものをモジュール、モジュールを集めたものをパッケージ、 パッケージを集めたものをライブラリと言う。ライブラリとパッケージが一対一の関係の場合もある。下図はその場合である。 粒度的には「ライブラリ>パッケージ>モジュール>クラス>メソッド」のような関係になる。
「ライブラリ>パッケージ>モジュール>クラス>メソッド」の関係
3.まとめ
一貫性のある命名は、コードの可読性を高め、チームメンバー間でのコミュニケーションを円滑にし、エラーを減少させる助けとなる。
すなわち、コードの品質を向上させ、開発効率を上げるために命名規則は不可欠である。
今回説明した命名規則は、初心者から経験豊富な開発者まで、全てのPythonプログラマにとっての共通の言語になる。
どのレベルのプログラマにとっても重要なスキルなので、ぜひ、早めに身に着けよう。
▼参考図書、サイト
PEP 8 - Style Guide for Python Code Python Enhancement Proposals
Flake8 flake8
Pythonのパッケージ・モジュール・クラスなど関係性 Qiita