Pythonのコーディングを進めていくと、改行の位置や空白の置き方などに一定のルールに従って記載したくなってくるかと思います。特に多人数で共同で開発を進める場合、それぞれが独自のルールと感性でコーディングをしていきますと、フォーマットがバラバラになってしまいます。この違いは他の人のコードを確認するときのストレスの元になってしまいます。
その問題を解決する方法の一つに「コーディングルールを決める」という手段があります。このルールに則っていたら、大丈夫、もう文句は言わない!という決め事をしてしまえば、もうその事で言い合いになる心配はありません。プロジェクトの目的そのものに集中することができます。PythonにはPEP8という一般的に用いられるコーディング規約があります。多くのコードがこのPEP8に基づいて作成されています。このPEP8に則っているかどうかをチェックして、自動に整形してくれるフォーマッターがPythonのパッケージとしていくつか公開されています。その中で、筆者が一番オススメなのが"black"というパッケージです。
Pythonのコンソール上で、 整理したいファイルのあるディレクトリに移動し、以下のコマンドを実行してみましょう。
black .
これで、現在のディレクトリ以下にある全てのPythonファイルを自動で整形してくれます。blackは他のフォーマッターと違って、元となるPEP8よりも厳しいルールを用いており、オプションでもそのルールをほとんど変更することができない、という特徴を持っています。もともとPEP8は結構融通の効くルールなので、どうしても人によって書き方がバラけてしまう、という問題があります。それならば、ガチガチに固めてしまいましょう、という思想のフォーマッターです。そこまでコードの綺麗さにこだわりがない筆者にとっては、余計な事を考えずに全てのコードの形式を統一できるので、非常に助かっています。
「コマンドが見つかりません」と表示されて実施できない場合
blackがインストールされていない環境のようです。環境管理にpipを用いている場合は、以下のコマンドを実行してみて、現在の環境にインストールされているパッケージを確認してみましょう
pip list
リストの中にblackがない場合、pipを使ってblackをインストールしましょう。下記のコマンドでインストールできます。
pip install black
Spyderで実施したい場合
!black .
先頭に"!"をつけることで、システムシェルでの実行に切り替えることができます。
対象ファイルを指定したい場合
整形を行うファイルを指定したい場合には"."の代わりに、ファイル名を入力します。
black file.py
設定ファイルでオプション指定したい場合
そんなに設定できることは多くないですが、設定ファイルでオプションを指定できます。いろいろなファイルの書き方がありますが、筆者は「pyproject.toml」というファイル名(形式)で指定しています。
[tool.black]
line-length = 98
include = '\.pyi?$'
"line-length"は1行あたりの最大許容文字数です。PEP8では最大79文字まで、blackのデフォルトでは最大88文字までになっています。著者はもう少し長いほうがきれいに収まるので、98文字にしています。
"include"は整形対象となるファイル名を正規表現で指定します。上記の設定例では、拡張子が"py"と"pyi"のファイルを整形対象としています。
isortと共存させたい場合
[tool.black]
line-length = 98
include = '\.pyi?$'
[tool.isort]
profile = 'black'
line_length = 98
"profile"は基本となる設定のセットを指定できます。"black"と指定することで、blackと同一の整形ルールで修正を実施してくれます。
"line_length"は1行あたりの最大許容文字数です。blackで設定した98文字に設定することでblackによる修正との差異をなくしています。
参考URL
コメント
コメントを投稿