PythonのBlackを徹底解説! コード整形を自動化して美しく保つ方法
Pythonコードを書いていると、「インデントはスペース?タブ?」「1行の文字数は何文字まで?」「カッコの周りにスペースは入れる?」といった、コードのスタイルに関する悩みがつきものです。チーム開発では特に、スタイルがバラバラだとコードが読みにくくなり、レビュワーの負担も増えてしまいます。
そんなコードスタイルの悩みを一気に解決し、常に美しく統一されたコードを自動で提供してくれるのが、Pythonの**コードフォーマッターBlack**です。
この記事では、Blackの基本的な概念から、なぜ多くのPython開発者に愛用されるのか、そして実際にプロジェクトで利用する手順まで、初心者の方にも分かりやすく徹底的に解説します。Blackをマスターして、コード整形にかかる時間をなくし、より本質的な開発に集中しましょう!
Blackとは? なぜコード整形に使うのか?
Blackは、Pythonコードを自動的に整形(フォーマット)するための意見の強い(Opinionated)コードフォーマッターです。「意見が強い」とは、ユーザーが細かなスタイル設定をほとんど行えず、Blackが定めた単一のスタイルに強制的に整形することを意味します。これにより、スタイルの議論に時間を費やす必要がなくなり、Pythonの公式スタイルガイドであるPEP 8に準拠した一貫性のあるコードを常に維持できます。
なぜBlackがPython開発によく使われるのでしょうか?
-
スタイルの一貫性: 個人開発でもチーム開発でも、常に統一されたコードスタイルを保てます。これにより、コードの可読性が大幅に向上し、誰が書いても同じ見た目になります。
-
時間の節約: 手動でのコード整形や、スタイルに関する議論にかかる時間を完全に排除できます。コードを書き終えたら
Blackを実行するだけで、美しく整形されたコードが手に入ります。 -
PEP 8準拠: Pythonの公式スタイルガイドであるPEP 8の多くの推奨事項に従って整形されます。
-
差分の最小化:
Blackは、コードの変更が最小限になるように工夫されています。これにより、バージョン管理システムでの差分(diff)が見やすくなり、コードレビューも容易になります。 -
安定性と信頼性: 後方互換性を重視して開発されており、一度導入すれば安心して使い続けられます。
-
IDE/エディタとの連携: VS CodeやPyCharmなどの主要なIDEやテキストエディタと連携させることで、保存時に自動整形したり、コマンドパレットから整形を実行したりできます。
Blackのインストール方法
Blackは標準ライブラリではないため、pipを使ってインストールする必要があります。通常は、開発環境でのみ必要なツールなので、仮想環境にインストールするのが一般的です。
-
コマンドプロンプト(Windows) または ターミナル(macOS/Linux) を開きます。
-
以下のコマンドを実行します。
Bashpip install black
インストールが成功したか確認するには、black --versionを実行し、バージョン情報が表示されればOKです。
black --version
# 出力例: black, version 23.x.x
Blackの基本的な使い方
Blackの使い方は非常にシンプルです。整形したいファイルやディレクトリを指定してコマンドを実行するだけです。
具体例:整形前後のコードを比較
以下の、あえてスタイルの悪いPythonコードを用意します。
# messy_code.py (整形前のコード)
def my_function( arg1,arg2 = None ):
if arg1 is not None:
print ( 'Hello, World!' )
return arg1+arg2
else:
return "No argument"
class MyClass :
def __init__ (self, value ):
self.value=value
def get_value (self):
return self.value
Blackを使ったコード整形
-
上記のコードを
messy_code.pyという名前で保存します。 -
コマンドプロンプトまたはターミナルで、このファイルを保存したディレクトリに移動します。
-
以下のコマンドを実行します。
Bashblack messy_code.pyまたは、カレントディレクトリ以下の全てのPythonファイルを整形する場合:
Bashblack .
整形後のコード
black messy_code.pyを実行すると、messy_code.pyファイルが以下のように自動で整形されます。
# messy_code.py (整形後のコード)
def my_function(arg1, arg2=None):
if arg1 is not None:
print("Hello, World!")
return arg1 + arg2
else:
return "No argument"
class MyClass:
def __init__(self, value):
self.value = value
def get_value(self):
return self.value
いかがでしょうか? インデント、スペース、空行などがBlackのルールに従って自動的に修正され、非常に読みやすいコードに変わりましたね。
Blackの便利なオプション
Blackは「意見が強い」ツールですが、いくつかの便利なオプションが提供されています。
-
--check: ファイルを実際に変更せずに、整形が必要かどうかをチェックします。CI/CDパイプラインなどで、コードがBlackのスタイルに準拠しているかを確認するのに便利です。Bashblack --check .整形が必要なファイルがあれば、そのファイル名と「would reformat」というメッセージが表示され、終了コードは非ゼロになります。全て整形済みであれば「All done! ✨ 🍰 ✨」と表示され、終了コードはゼロです。
-
--diff: ファイルを実際に変更せずに、整形した場合の差分を表示します。Bashblack --diff . -
--line-length: 1行の最大文字数を変更できます(デフォルトは88文字)。ただし、これもBlackが最適と考える範囲内で調整されます。Bashblack --line-length 100 . -
--exclude: 整形対象から除外するディレクトリやファイルを指定します。 -
pyproject.tomlでの設定: プロジェクトルートにpyproject.tomlファイルを作成し、[tool.black]セクションでline-lengthやexcludeなどの設定を一元管理できます。Ini, TOML# pyproject.toml [tool.black] line-length = 88 target-version = ['py310'] include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist )/ '''
Blackと他のツールとの連携
Blackは単体でも強力ですが、他の開発ツールと組み合わせることで、その利便性がさらに向上します。
-
Pre-commit Hooks: Gitのコミット前に自動で
Blackを実行する設定を行うことで、リポジトリにコミットされるコードが常に整形済みであることを保証できます。pre-commitというライブラリを使うと簡単に設定できます。 -
IDE/エディタ連携:
-
VS Code: Python拡張機能をインストールし、
settings.jsonで"python.formatting.provider": "black"と設定することで、保存時に自動整形などが可能になります。 -
PyCharm: 「File」->「Settings」->「Tools」->「External Tools」で
Blackを設定したり、File Watchersプラグインを利用したりできます。
-
-
CI/CDパイプライン:
black --checkオプションをCI/CDパイプラインに組み込むことで、プルリクエストがマージされる前にコードスタイルが準拠しているかを自動で検証できます。
まとめ
Blackは、Python開発におけるコードスタイルの管理を劇的にシンプルかつ効率的にしてくれる強力なツールです。
-
自動でPythonコードを整形し、スタイルの一貫性を保証。
-
「意見が強い」設計により、スタイルに関する議論を不要にする。
-
pip install blackで簡単に導入可能。 -
black .やblack <filename>でコマンド一発で整形。 -
--check,--diff,--line-lengthなどの便利なオプション。 -
IDE、Git Hooks、CI/CDとの連携で開発ワークフローを効率化。
Blackを導入することで、あなたはコードの見た目の心配から解放され、より本質的なロジックの実装に集中できるようになるでしょう。ぜひ今日学んだ知識を活かして、あなたのPythonコードをBlackで美しく保ってみてください!
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座


