Python のフォーマッタの比較と VSCode での設定方法
こんにちは。バックエンドコースの gakuto です。Advent Calendar 1 日目ということで、Python で使えるフォーマッタをいくつか紹介し、VSCode での設定方法をまとめていきます。
フォーマッタとは?
人によってコードの書き方が違ったり、一人で書いているときも完璧にコーディングスタイルを統一することは難しかったりしますよね?
フォーマッタを使うことで、自動でコーディングスタイルを統一することができます。また、エディタで適切に設定すれば、ファイル保存時に自動でフォーマッタを呼び出すこともできます。
Python で使えるフォーマッタ3選
以下のコードを3つのフォーマッタで整形させます。行の長さをどう短くさせるかが見ものです。すべて行の長さを 79 文字までに設定し、その他はデフォルトのままにしています。
autopep8
昔からあるやつで、今でも VSCode のデフォルトのフォーマッタです。特徴は --aggressive
オプションの数によって強さが変わることです。
--aggressive
なしだと行の長さが 79 文字以下になっていないですね。
--aggressive
をつけるとこんな感じになりました。今回は2つつけても変わりませんでした。
black
最近の流行りのフォーマッタです。バックエンドコースの最終課題でも black が指定されています。特徴としては設定できる項目が少なくシンプルで、「とりあえず black に従っとけ」というのができるところです。
文法上無意味な ()
を加えられましたがさすが美しいですね。私は昔からシングルクォート派だったんですがそれもダブルクォートにされました。これは無効化することはできてもシングルクォートに統一する設定はできないようです。
yapf
Google が開発したオープンソースのフォーマッタです。これだけ聞くとめっちゃ強そうですが black には勝てるのでしょうか。
まあ無難にきれいですね。 autopep8
と比べるとインデントで少し見やすくなっている気がします。
VSCode での設定方法
グローバルでも設定できますがプロジェクトごとにコーディングスタイルは違うと思うので今回はワークスペースに対して適用したいと思います。また、バックエンドコースの最終課題でも指定されている black を使いたいと思います。
ワークスペースの一番上の階層に .vscode
というディレクトリを作りその中に settings.json
というファイルを作って以下の内容を記述してください。
editor.formatOnSave
はファイル保存時に自動でフォーマットする設定です。 python.formatting.provider
は何でフォーマットするかの設定です。 python.formatting.blackArgs
は black を実行する時に渡すコマンドライン引数です。
あとは black をインストールするだけです。上の設定ファイルを置いた状態で Python のファイルを保存しようとすると右下に black をインストールするか聞かれるのでそれではいを押せばインストールできますが、他の開発者と使用ツールを共有するために requirements.txt
に書くことをおすすめします。
一応これは最小限の設定なので現在バックエンドコースを受講している方は課題で指定されている設定ファイルを使ってください。
最後に
いかがでしたでしょうか。フォーマッタによってこんなに見た目が変わるのは意外ですよね。自分のプロジェクトでは自分の好みのフォーマッタを使い、チーム開発や他人のプロジェクトではそのプロジェクトで指定されたフォーマッタを使えるようにしましょう。
明日は Yuta くんの記事です!バックエンドコースの同期なので楽しみです。