pep8とflake8の導入について
pep8というものがある。自閉症療育に関心がある方なら、TEACCHプログラムの開発したPEP-3(自閉症・発達障害児教育診断検査第3版)というのが思い浮かぶかもしれないが全くもって関係ない。
pep8とは、Pythonでコードを書くときのスタイルガイドである。これに準拠しなかったらプログラムが動かなくなる訳ではないが、一貫したスタイルのコードを書くことで可読性をあげようとかそんな話だと思う。
pep8の日本語訳された文章は以下から読める。
自分が書いたコードがこのスタイルに準拠しているか調べるための文法チェッカーというものもある。便利な世の中である。
いくつかあるうちでflake8というものが有名らしいので試しに使ってみる。
導入はpipが入っていれば簡単で、ターミナル上で以下のコマンドでインストールされる。
$ pip install flake8
使い方もまた簡単で、以下のように引数にファイル名を指定してやれば良い。
$ flake8 test.py
例えば、次のようなコードをチェックするとする。
a = [0,1,3 ] print("Hello World!") #ハロワ
するとこんな感じで、スタイルに沿っていないところを指摘してくれる。
test.py:1:7: E231 missing whitespace after ',' test.py:1:9: E231 missing whitespace after ',' test.py:1:12: E202 whitespace before ']' test.py:3:22: E261 at least two spaces before inline comment test.py:3:23: E262 inline comment should start with '# '
何行目・何文字目に、どんな違反なのかが書いてある。エラーコードの頭にあるアルファベットは何についての違反かを示しており、Eはpep8のスタイルに準拠していないことを示している。
例えば、1行目の7文字目のところでは、「カンマの後に空白が入ってないよ」と教えてくれている訳だ。
Error / Violation Codes — flake8 3.4.1 documentation
Introduction — pycodestyle 2.3.1 documentation
このエラーメッセージを元にさっきのコードを修正すると次のようになる。
a = [0, 1, 3] print("Hello World!") # ハロワ
これで、pep8に準拠したリーダブルなコードになった訳だ。
このflake8はAtom上で動くパッケージも出ており、linter-flake8という名前である。
GitHub - AtomLinter/linter-flake8: Linting Python files on the fly using flake8 with Atom
特に難しいこともなく、上記のREADMEに従ってinstallするとAtomでコードを書きながらリアルタイムで指摘してくれるようになった。
どうせ書くなら読みやすく美しいコードを、ということでflake8の導入の話でした。