PyCharm

PyCharmでコード保存時に自動フォーマットする方法 ~ black, isort~

PyCharmでコード保存時に自動フォーマットする方法 _ black, isort_

PyCharmでのプログラム開発時でコード保存時に自動フォーマットする方法について解説します。具体的には、blackisortを自動適用する方法を紹介します。

Pythonのフォーマットツール

Pythonでプログラミングをしている際にコードの整形をサポートしてくれるツールがいくつかあります。

例えばAutopep8、black、yapfといったものがありますが、最近ではblackがデファクトスタンダートになっているようです。また、blackは、import文のソート順整理や重複削除について実行してくれませんのでisortと併用すると便利です。

本記事では、Pythonの統合開発環境であるPyCharmにてコードを保存する際に、blackisortによるフォーマットをするための設定方法について解説します。

Pycharmにおけるコード保存時の自動フォーマット設定

blackとisortのインストール

blackとisortがまだインストールがされていない人は以下のコマンドでインストールしてください。

pip install black
pip install isort

Pycharmへのファイル監視プラグインのインストール

コード保存時の自動フォーマットをするためには、PyCharmのファイル監視プラグインである「File Watchers」が必要です。

PyCharmを開いた際の左側にある「プラグイン」で、Marketplaceの検索窓に”File Watchers”と入れてみてください。このプラグインはデフォルトで入るのだったか忘れてしまったのですが、インストール済みになっていればファイル監視プラグインはインストールされています。

インストールされていないようであれば、インストールを実行して、PyCharmを再起動してください。

PyCharm ファイル監視プラグイン File Watchers

PyCharmでのファイル監視プラグイン設定

ファイル監視プラグインがインストールされていると、PyCharmで[ファイル]-[設定]のツール配下に「File Watchers」という項目があります。

ファイル監視プラグイン File Watchers

ここにblackとisortの設定を適用します。以降で具体的な手順を見ていきましょう。

blackの設定

blackを設定する場合には「+」のcustomを選択してください。

File Watchers black 設定

以下の項目を設定していきます。

File Watchers black 設定
項目値・設定内容
名前black
ファイルタイプPython
スコープ現在のファイル
プログラム\$PyInterpreterDirectory\$\black
引数\$FilePath\$
編集したファイルを自動保存してウォッチャーをトリガーするチェックを外す
外部の変更でウォッチャーをトリガーするチェックを外す

上記の設定では、現在のPythonファイルに対してblackによるフォーマットを実行します。

[高度なオプション]の2項目は現在編集中のファイルが保存されたときだけblackを実行する用にチェックを外します。

OKを押すと以下のようにファイル監視設定が作成されます。無効化したい時はチェックを外しましょう。

File Watchers black 設定

上記の設定後にPythonファイルを保存してみましょう。blackによるコードフォーマットが実行されます。

1行の文字数を変更したい場合

blackでは1行の文字数は88文字になっています。PEP8では79文字以内ということになっているため、自動整形したときに80文字以上になるとPycharmの設定によってはPEP8に合わない旨の警告が出るかもしれません。

88文字である理由は、blackの開発者が88文字がよいという考えがあるからのようです。

blackの設定をPEP8に揃えたい場合は、.pyproject.tomlというファイルをプロジェクト直下に作成して以下のような記述を追加してください。

[tool.black]
line-length = 79

上記のような設定の.pyproject.tomlを用意しておくと、blackの自動成型時に79文字以内になるように整形してくれるため、PEP8のチェックも問題なくなります。

もちろん文字数は、プロジェクトの方針や個人の好みに合わせて変更していただければよいかと思います。

isortの設定

blackの設定と同じくisortの設定もしていきましょう。File Watchersの設定で「+」のcustomを選択し、以下のように入力してください。

File Watchers isort 設定
項目値・設定内容
名前isort
ファイルタイプPython
スコープ現在のファイル
プログラム\$PyInterpreterDirectory\$\isort
引数\$FilePath\$
編集したファイルを自動保存してウォッチャーをトリガーするチェックを外す
外部の変更でウォッチャーをトリガーするチェックを外す

上記の設定では、現在のPythonファイルに対してisortによるimport文の整形を実行します。

[高度なオプション]の2項目は現在編集中のファイルが保存されたときだけisortを実行する用にチェックを外します。

OKを押すと以下のようにファイル監視設定が作成されます。無効化したい時はチェックを外しましょう。

File Watchers isort 設定

上記の設定後にPythonファイルを保存してみましょう。isortによるimport文のソートが実行されます。

まとめ

PyCharmでのプログラム開発時でコード保存時に自動フォーマットする方法について解説しました。具体的には、blackisortを自動適用する方法を紹介しています。

コード保存時の自動適用は、ファイルを監視するPyCharmのプラグイン「File Watchers」にblackとisortの実行パラメータを設定することで実現できます。

フォーマットツールをうまく使うとプログラマ間で品質の違いを小さくすることができますので、是非設定して使ってもらえるとよいかと思います。