BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Python】【ソースコード自動整形】Blackを使ってみた!

こんにちは、BFT名古屋支店のおざおざです。
今回はソースコードを自動整形する Black という Pythonライブラリをご紹介します。

なお、Black を使用できる Python のバージョンは Python 3.7 以上のため、Python 3.7 以上がインストールされていることを前提とします。

インストール

まずは Black をインストールしましょう。

pip install black

or

python -m pip install black

事前準備

さっそく Black を使ってみましょう!と言いたいところですが、まずは、以下 PEP8違反したコードを作成してください。こちらのファイルを Black で整形していきます。

※PEP8 は Python のコーディング規約(ルール)になります。

※以下のサンプルコードでは、インデント、空行、括弧内の空白文字の3点が PEP8 を違反しています。

サンプルコード(Black 実行前)

●black_test.py

def test(a,
b,
c):
    print( a[ 0 ] + b + c[ "c" ] )
if __name__ == "__main__":
    test("aaa", "b", {"c": "c"})

実行

準備が整いましたので、さっそく Black を使ってみましょう! 作成したコードのディレクトリに移動し、Python を実行します。

●コマンド

cd <サンプルコードの配置先ディレクトリのパス>
python -m black black_test.py

実行結果

正常に実行が完了すると以下のような結果が出力されます。

●出力結果

reformatted black_test.py

All done! ✨ 🍰 ✨
1 file reformatted.

ちゃんとコードが整形されたかも確認しましょう。

サンプルコード(Black 実行後)

●black_test.py

def test(a, b, c):
    print(a[0] + b + c["c"])


if __name__ == "__main__":
    test("aaa", "b", {"c": "c"})

キレイになりましたね。コードが PEP8 に準拠した形式に整形されました。

まとめ

Black を使用することで、コードがキレイになりました。

Black を重宝する理由は、PEP8 に準拠した形式に自動で整形してくれるという点です。すべてのルールを覚えるのは大変ですからね。また、PEP8で定められていない箇所については、Black の独自ルールで統一できる点も便利でありがたいです。

※プロジェクトごとに独自ルールを定義している場合もありますので、その場合は Black を適用してから手動で整形するなどの追加の対応が必要になります。

今回、Black を使うことで、簡単にコードが整形されることをお分かりいただけたかと思います。しかし、実は、コードのインポート部分までは、Black は整形してくれないのです。ということで、次回はこのインポート部分を整形してくれる「isort 」という Pythonライブラリを取り上げていきたいと思います。

ではでは。