Pythonのフォーマッタblackを使い始めたらだいぶ楽になった

Linterよりもフォーマッタ派になりました。
JS書いてた頃はESLint+Prettierだったんですが、Pythonを書くときにもフォーマットしてくれるやつがほしいなーと思っていたところ、先日のPython Kansai #01で、イクラ(@ikura1)さんがフォーマッタのblackの話をされていました。

Python Kansaiで「Blackはいいぞ」っていうLTしてきた - ikura1’s log

少し前から「blackはいいぞ」「blackはいいぞ」ってめっちゃ言われていたんですが、実際使い始めたら結構良かったので導入とかエディタ(VSCode)の設定を覚書。

導入

$ pip install black

終わり。
設定ファイルは必要ないので入れたらその瞬間からいい感じ使えます。

$ black FILE_NAME.py とか $ black DIR_NAME って叩くと対象ファイルやディレクトリ内のファイルに対してフォーマットをかけてくれます。

VSCodeでの設定

毎度コマンドを叩くのはめんどくさいです。
VSCodeで保存時に自動でフォーマットをかけてくれるように設定します。
設定するのは以下。

  • PythonのPATH
  • フォーマットのプロバイダとして black を指定
  • 保存時にフォーマットするように指定 (貼付け時にも走るとうるさいので保存時だけ)

設定ファイルに落とし込むとこんな感じ。

{
  "python.pythonPath": "venv/bin/python3",
  "python.formatting.provider": "black",
  "editor.formatOnSave": true
}

※フォーマット時のプロバイダ設定を行うために、Pythonの拡張が必要だったと思います。
Python - Visual Studio Marketplace

メモ

これを使ってCIのworkflowの中に組み込んで、テスト・フォーマットをやった上でデプロイするって誰か言ってた気がする。

思うこと

色々こだわりがある人には思うところはあるんだろうなとは思いますが、Blackで整えられたものも割と見やすいしいいなって思います。
Flake8でやっていたこともあるんですけど、変に時間使っていたし、さっと入れていい感じにフォーマットしてくれるのでこれでいいかなって思いました。