コーディング規約 === Pythonの理念は、「シンプルで読みやすく、美しいコード」を重視することです。 プログラミング言語のPerlには、「There's More Than One Way To Do It.」(やり方は一つじゃない)という格言があります。 Pythonにも格言があり [「PEP 20 – The Zen of Python」](https://peps.python.org/pep-0020/) には、「明示は暗黙に勝る」「シンプルは複雑に勝る」「可読性は重要」などが掲げられており、誰が読んでも理解しやすいコードを書くことが奨励されています。 このような設計思想により、Pythonは初心者にも扱いやすいプログラミング言語とされています。 主に下記があります。 可読性の向上 * 誰が書いたコードでも、読みやすく理解しやすいようにする * チーム開発やオープンソースプロジェクトでの共同作業を円滑にする スタイルの統一 * インデント、変数名、関数名、空白の使い方などのルールを定め、コードの見た目を統一 * 複数人が同じルールで記述することで、「慣れた見た目」を維持できる バグの予防 * 曖昧な書き方を避けることで、潜在的なバグの原因となる表現を防ぐ ツールとの連携 * 自動フォーマッタ(例:`black`, `autopep8`)や静的解析ツール(例:`flake8`)が PEP8 に準拠しているため、コード品質を機械的に保てる このように、PEP8は「Pythonコードを書く際の作法」を定めたガイドラインであり、個人でもチームでも、より良いPythonプログラミングの基盤となるものです。 ---- ※ [PEP(Python Enhancement Proposal)](https://peps.python.org/): Pythonの新機能や改善案を提案・記録するための公式文書です。 | 種類 | 内容 | | ------- | ---------------------- | | 技術的PEP | 新機能の追加、文法や標準ライブラリの変更など | | 情報提供PEP | スタイルガイドやプロセス文書(例:PEP8) | | プロセスPEP | 開発プロセスや意思決定の方法に関する提案 | ---- ### PEP8 スタイルガイド Pythonには、PEP8(Python Enhancement Proposal 8)という、公式スタイルガイド(コードの書き方のルール)があります。 PEP8は、「コードの可読性と一貫性を高めること」を目的としたスタイルガイドです。 例)カンマの後ろのスペースが異なるコード ``` スタイルガイドに従う print(1, 2, 3) スタイルガイドに従ってない print(1,2,3) ``` PEP 8で定義されているルール スタイルガイドであるPEP 8で定義されているルールは、大きく3つに分類できます。 * コードのレイアウトに関するルール * コメントに関するルール * 命名規約に関するルール 代表的なルールの例 * インデント: スペース4つ * 行の長さ: 最大79文字まで * 空白の使い方 `a = b + c`(余計な空白は禁止) | Python標準のスタイルガイド ─ PEP 8 | | |:---------------|:------------------------------------------| | PEP 8 | [https://www.python.org/dev/peps/pep-0008/](https://www.python.org/dev/peps/pep-0008/) | | 邦訳ドキュメント | [https://pep8-ja.readthedocs.io/](https://pep8-ja.readthedocs.io/) | ---- #### 命名規約 一般的な命名の表記方法は次のとおりです。 | 表記方法 | 説明 | |:----------------------------|:--------------------------------------------------------------------------------| | CamelCase | 単語の先頭の文字を大文字にする (CapWords. CapitalizedWords, StudlyCapsとも呼ばれる) | | lowercase | すべての文字を小文字にする | | lower_case_with_underscores | 単語すべてを小文字にし、それらをアンダースコアでつなげる (snake_caseとも呼ばれる) | | UPPERCASE | すべての文字を大文字にする | | UPPER_CASE_WITH_UNDERSCORES | 単語すべてを大文字にし、それらをアンダースコアでつなげる | PEP8での命名規約は下記となります。 | 用途 | スタイル | 用例 | |:---------------------------|:--------------------------------------------|:-------------------------------| | パッケージとモジュールの名前 | lowercase | sysytem, datetime | | クラスの名前 | CamelCase | TestCase, HTTPRequest | | 関数や変数の名前 | lowercase または lower_case_with_underscores |serialize_response, is_connected | | 定数 | UPPERCASE または UPPER_CASE_WITH_UNDERSCORE | MAX_OVERFLOW, TOTAL | | 例外の名前 | CamelCase, 末尾にError | ClientApiError | PEP8の命名規約で重視されているのは「実装よりも使い方を表した名前」にすることです。 命名に迷ったときは、標準ライブラリや公開されているサードパーティライブラリの命名を参考にしてみるのもよいです。 ---- ### Pythonの理念の特徴まとめ | 特徴 | 内容 | | ------------- | ------------------------ | | 読みやすさ重視 | 誰が書いても・読んでも理解しやすいコードを目指す | | シンプルさ | できるだけ短く簡潔に書けることを大事にする | | 明示的な設計 | 「意図が伝わるコード」を書かせる設計 | | 学びやすさ | 初学者にもやさしい文法とエラーメッセージ | | 一貫性と自由のバランス | 決まりはあるが、必要以上に縛らない | ---- ### 補助ツール PEP8を補助するツールとして下記があります。 コードエディターや開発環境に設定をしてコードスタイルの整形の補助をしています。 * flake8:[PEP8に違反していないかチェック](https://flake8.pycqa.org/) * black:[自動的にPEP8に従って整形](https://black.readthedocs.io/) * autopep8:[既存コードをPEP8準拠に自動修正](https://github.com/hhatto/autopep8) ---- ### 参考URL * Pythonコーディング規約の参考例 * [[Pythonコーディング規約]PEP8を読み解く](https://qiita.com/simonritchie/items/bb06a7521ae6560738a7) * より良いコードを書くためのテクニック * [リーダブルコード](https://www.oreilly.co.jp/books/9784873115658/) * [変数名の付け方をまとめてみた](https://zenn.dev/naoki_oshiumi/articles/aad7e1b3719fad) * [codic - ネーミング生成ツール](https://codic.jp/)