VSCodeでPythonフォーマッターを設定してみた
はじめに
VSCodeの拡張機能のBlack Formatterを利用してPythonのコードにフォーマットをかけることができます。拡張機能と設定方法は作成しないとすぐ忘れるため、今回はBlack Formatterと設定方法について共有したいと思います。
私はVSCodeでは主にHTML、CSS、JavaScript関連修正をしますので、フォーマッターはPrettierを使ってます。最近、Pythonで簡単なスクリプトを作成する時にVSCodeを使ってますが、Prettierが認識できませんでした。なので、Prettier用のPluginがあるか調査してみました。
plugin-python
PrettierのPluginとしてPython関連を見つけました。
しかし、このリポジトリは2019年10月2日以降メンテナンスされてないでした。そのページを見るとBlackというライブラリをおすすめしてます。Python Code Formatter
Prettierから支援してくれないことを確認しましたので、他のフォーマッターを調査してみました。まずは、VSCodeを利用するため、どのような拡張機能があるか確認しました。
上記のページを確認すると以下の二つのフォーマッターが拡張機能でありました。PEP8とは?
二つのフォーマッターの内容を見るとをPEP8従ったという文言があるため、拡張機能を説明する前にPEP8について説明します。
内容を見ると以下になります。
- インデント:4つのスペースを使用することを推奨します。
- 行の長さ:理想的には行を79文字に制限することを提案してるが、同意すれば最大99文字まで許可しています。
- 空白行:使用する位置と使用しない位置をルール提供してます。
- コメントアウト:コメントアウトについてルールを提供します。
- 命名規則:変数、メソッド、関数、クラス、モジュール、その他の要素の命名規則をガイドラインを提供します。
PEP8はガイドラインなので、一般的にPEP8を従う方が良いが、無条件的に従うよりチームで合意してプロジェクトに合わせる方を推奨してます。
Autopep8
拡張機能ページは以下になります。
Blackよりもうちょっと具体的に設定ができそうでした。
Black Formatter
拡張機能ページは以下になります。
ライブラリのページは以下になります。 Blackも同じくPythonコードを自動的にフォーマットするツールです。Blackに大体任せて細かい設定は出来なさそうでした。VSCodeから設定する
上記の二つの拡張機能中どちらもライブラリをインストールしなくて拡張機能のみで動作できてるので、便利でした。でも、特定なバージョンを使用したい場合はPIPを利用してライブラリをインストールしてください。
インストールした後VSCodeの拡張機能の設定を変更しないといけないです。
Autopep8の場合
"[python]": {
"editor.defaultFormatter": "ms-python.autopep8",
"editor.formatOnSave": true
},
editor.formatOnSaveのオプションは保存する時に自動的にトリガーが走ってフォーマットしてくれるオプションなので、入れることを推奨します。いらないなら、削除してください。
Black Formatterの場合
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true
},
editor.formatOnSaveのオプションは保存する時に自動的にトリガーが走ってフォーマットしてくれるオプションなので、入れることを推奨します。いらないなら、削除してください。
最後に
フォーマッターは好みなので、プロジェクトとチーム員の合意があれば何でも良いと思います。
私はフォーマッティングについて好みが強くないし、勝手にやってくれることを好きなので、Blackにしました。
コードは一定的なルールと読みやすかった何でも良いと思います。
今までの説明が皆さんにも分かりやすく説明できていればと嬉しいです。
Discussion
簡潔にわかりやすく説明いただき、とても助かりました!
ただ、Autopep8とBlack Formatterの拡張機能のリンクが逆になっています!
コメントいただきありがとうございます!
修正いたしました!