Blackとは
BlackはPythonの意見のあるコードフォーマッタです。PEP 8スタイルガイドに準拠しつつ、コードを一貫性のある読みやすい形式に自動的に整形します(一部の例外を除く)。
例えば、次のコードがあるとします。
#comment
'''
hello world
'''
a = [1, 2, 3, 4,
5]
print(a)
Blackを適用すると、コードは次のように整形されます。
# comment
"""
hello world
"""
a = [1, 2, 3, 4, 5]
print(a)
Blackは「妥協のないコードフォーマッタ(The Uncompromising Code Formatter)」と呼ばれています。フォーマットルールに関してはほとんど設定変更ができず、Blackには独自のスタイルがあり、それに従います。しかしその代わり、Blackを使用すると、フォーマットスタイルの微調整に時間を費やす必要がなくなります。
インストール
Blackのインストールは簡単で、Pythonのパッケージマネージャであるpipを使用して行うことができます。Python 3.6以降の環境で、次のコマンドを実行します。
$ pip install black
コードのフォーマットにBlackを使用
Blackを使用してPythonコードをフォーマットする方法を説明します。単一のファイル、プロジェクト全体、特定のファイルまたはディレクトリの例外を設定する方法について説明します。
Pythonファイルのフォーマット
Blackを使用して単一のPythonファイルをフォーマットするのは簡単です。Blackをインストールした後、Pythonファイルが存在するディレクトリに移動し、次のコマンドを実行します。
$ black myfile.py
myfile.py
の部分を自分のPythonファイルの名前に置き換えてください。Blackは自動的にスタイルルールに従ってファイルを再フォーマットします。
reformatted myfile.py
All done! ✨ 🍰 ✨
プロジェクトのフォーマット
複数のPythonファイルを含む大規模なプロジェクトで作業している場合は、全てのファイルを一度にフォーマットしたいかもしれません。その場合は、プロジェクトのルートディレクトリに移動し、次のコマンドを実行します。
$ black .
これにより、現在のディレクトリおよびそのサブディレクトリ内の全てのPythonファイルがBlackによって再フォーマットされます。
行の長さにカスタマイズ
デフォルトでは、Blackは最大行長を88文字に設定してコードをフォーマットします。ただし、異なる好みやプロジェクトの要件があるかもしれません。Blackでは、--line-length
オプションを使用してカスタムの行長を設定することができます。
例えば、最大行長を100文字に設定したい場合、次のコマンドを使用します。
$ black --line-length 100 myfile.py
同様に、プロジェクト全体をフォーマットする場合もこのオプションを適用できます。
$ black --line-length 100 .
特定のファイルやディレクトリを無視
一部の場合では、Blackが特定のファイルやディレクトリをフォーマットしないようにしたい場合があります。Blackを実行する際に--exclude
オプションを使用して、指定した正規表現パターンに一致するファイルやディレクトリを除外することができます。
$ black . --exclude '/migrations/'
これにより、現在のディレクトリおよびそのサブディレクトリ内の全てのPythonファイルがBlackによって再フォーマットされますが、migrations
ディレクトリ内のファイルは除外されます。
参考