こんにちは、吉政創成 菱沼です。
今回もPythonエンジニア育成推進協会のPython 3 エンジニア認定実践試験の主教材「Python実践レシピ/技術評論社」を使って学びたいと思います。
前回は、venvによる仮想環境の削除・作り直しや周辺知識について学びました。
今回から2章「コーディング規約」に入ります。
Pythonのコーディング規約「PEP8」が必要な理由
Pythonの学習を始めてしばらくして、PEP8という単語を聞きました。
PEP8とは、Pythonのスタイルガイド(コーディング規約)だそうで、インデントや空行などのPythonを書く上での基本的なルールがまとめられた文書です。これを聞いた当初はとにかくコードを書籍から書き写し、動かしてみるということでいっぱいいっぱいだったのでスルーしていたのですが、ここにきて学習する機会にたびたび恵まれておりまして…。そろそろ目を背けるのをやめたいと思います。
さて、PEP8がなぜあるのかと言えば、コードを読みやすく(可読性を高め)して、他の人が読みやすいようにするためだと言います。これは開発現場でよくある事象なんだそうですが、複数人で一つのアプリケーションを作っている時に事前にルールを決めておかないと、書き方がちょっとずつ異なってしまい、コードレビューの時に議論になってしまうことがあるそうです。本来議論したいことに集中するためにも事前にルールを決めておくことで効率的に、他の開発者でも読みやすいようにしていくということのようです。
そんなPEP8に定義されている内容は大きく3つに分類されるそうです。
- コードのレイアウトに関するルール
- コメントに関するルール
- 命名規約に関するルール
ちなみにPEP8の原文はこちらからお読みいただけます。
https://peps.python.org/pep-0008
もう知ってるからいいよ!という方は、Pythonエンジニア育成推進協会が実施している無料の試験「PythonZen & PEP 8 検定試験」にぜひチャレンジいただければと。
https://pythonzen-pep8-exam.jp
今回は①コードのレイアウトに関するルールです。
ここでは読みやすいコードや見た目に一貫性のあるコードを目指すための指針を確認することになります。含まれるのは以下の4つの項目です。
・インデント
・空行
・import文
・空白文字
インデント
基本のインデントは半角スペースが4つになります。ただ、リストや辞書、関数など、カッコの内部で改行した場合のインデントの場合にはいくつかのパターンがあるそうで、基本パターンは折り返された引数や値を縦にそろえるものだそうです。
ではここで教科書のサンプルコード(P.19)を載せてみます。
- 基本のインデント確認
- 折り返しによるインデント
パターン①:丸括弧の先頭にそろえるパターン
パターン②:先頭の値で揃え、定義初めの位置に閉じ括弧を揃えるパターン
こちらはテキストのサンプルコードだとリストが使用されていましたが、辞書の方が分かりやすいのではということで、個人で作成しました。こんな感じで、[]や{}の位置を配置します。
空行の入れ方
空行のルールは以下の通りだそうです。
——————————-
P.20
・トップレベルの関数やクラスの間は、2行ずつ空ける
・クラス内のメソッドの定義は、1行ずつ空ける
——————————-
というわけで、サンプルコードで確認です。
<トップレベルの関数やクラスの間には2行>
<クラス内部のメソッドの場合は1行>
import文のルール
import文でのルールは以下の2つがあるそうです。
——————————-
P.20
・異なるモジュールはimport文を分ける
・次の順番でグループ化する
1.標準ライブラリ
2.サードパーティに関連するもの
3.ローカルのライブラリ
——————————-
というわけで、サンプルコードです。
引用文にあるように、標準モジュール→サードパーティ→ローカルという順番に書かれています。
また1行に書けるのは同一のモジュールの中から複数の関数を呼び出したい場合で、違うモジュールを1行の中にまとめることはしません。また、同一のモジュールの中から、複数の関数を呼び出す場合に、複数行に渡って書くこともNGになるそうです。
空白文字のルール
空白文字の入れ方のルールは以下4つがあるそうです。
——————————-
P.21
・余計な空白文字を使わない
・代入演算子や比較演算子などの両側には1つだけ空白文字を入れる
・カンマの後ろに空白文字を入れる
・閉じカッコなど終わりをあらわす文字の前には空白文字を入れない
——————————-
私がいまだに慣れない奴です…。うっかりスペースを忘れ、詰めがちです。
サンプルコードで確認してみます。
すべて空白は1文字です。間に余計な空白を入れないようにしましょう。
そしてコロンと、カンマ、閉じカッコの時の空白位置の確認です。
カンマの後のスペースを忘れがち…。気を付けます…。
また、括弧や波カッコを合わせて使う場合には、こういう感じになるそうです。
()内のカンマの後ろにはスペースは入りますが、それ以外のカッコの前後にはスペースが入りません。
それではきりが良いので、今回はこちらで終了です。お付き合いいただきありがとうございました。
ぜひPEP試験も受験してみてくださいね。
https://pythonzen-pep8-exam.jp
実践試験について知りたい方は以下をご覧ください。
●Python3エンジニア認定実践試験