こんにちは。

今回はVSCodeにBlackとFlake8をインストールする方法を紹介します。

Blackはフォーマッター、Flake8はリンターとして、Pythonでは人気のツールです。(もちろん無料で使えます!)

フォーマッターはソースコードの形式を自動でキレイにしてくれます。

例えばインデントや半角スペースを自動で入れてくれたり、関数同士の感覚などを空ける改行作業も自動で行ってくれます。

リンターはコーディングルールに違反していないかを自動でチェックしてくれて、もし反するところがあれば警告を表示して教えてくれます。

このように、プログラミングを効率的、かつ可読性高いコードを保つために、自力で頑張るよりも便利なツールに頼ることで快適な開発環境を獲得することができるというわけです。

ぜひプログラミング開発する皆さんも、一緒に導入して快適な開発環境を構築しましょう!

Blackのインストール方法

今までBlackを使うためには、仮想環境毎にpipインストールする必要がありました。

しかし最近では、VSCodeの拡張機能でインストールすることができ、pipインストールは不要で非推奨となってます。

なのでこれからフォーマッターやリンターを使う方々は、pipインストールではなく拡張機能を使いましょう。

VSCodeの拡張機能から「Black」と検索しましょう。

検索するとBlackと名前がつくものが複数ありますが、「Black Formatter」というところの「インストール」をクリックしてインストールしましょう。

インストールが終わったら、続いて「表示→コマンドパレット」(またはCtrl+Shift+P)をクリックし、検索窓で「Settings」と入力してください。

すると「Open User Settings(JSON)」がリストにあると思いますので、それをクリックしてください。

するとsettings.jsonファイルが開かれると思いますので、そこに以下を記述します。

{
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true
    },
    // 最大文字数の指定(flake8と合わせた数字に設定)
    "black-formatter.args": [
        "--line-length=88"
    ]
}

記述しましたら、settings.jsonを保存します。

これで準備は完了です。簡単ですね。

pipインストール時はもう少し設定が面倒だったのですが、かなり楽になったと思います。

念のため、ここまで出来たらVSCodeを一旦再起動しましょう。

では早速上手く動くか確認しましょう。

デモファイルを以下に用意しました。

import numpy as np
'''
hogehoge
'''

a=[1, 3,    9,
10]
print(a)

これを上書き保存すると、以下のように自動で整形されればOKです。

行をあけてくれてますし、インデントやスペースも自動で修正してくれてます。

Flake8のインストール方法

リンターのFlake8もかなり設定が簡単になりました。

Black同様、拡張機能から「Flake8」と検索します。

Black同様、「Open User Settings(JSON)」を開きましょう。

以下のように、追記してください。

{
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true
    },
    // 最大文字数の指定(flake8と合わせた数字に設定)
    "black-formatter.args": [
        "--line-length=88"
    ],
    "flake8.args": [
        "--max-line-length=88",
        "--ignore=E203,W503,W504"
    ]
}

追記したら、保存します。

念のため、VSCodeを再起動しましょう。

では正しく動くか、確認しましょう。

import numpy as np

"""
hogehoge
"""
a = [1, 3, 9, 10, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
print(a)

これを上書き保存すると、以下のようになればOKです。

importとところと、やたら長いaの文字列のところに赤波線が表示されていると思います。

この赤波線にマウスのカーソルを当ててみてください。

すると、importのところでは以下のように表示されるかと思います。

これはつまり、numpyを呼び出してるものの、使ってないよと教えてくれているのです。

ではaの文字列はどうでしょうか?

これはsettings.jsonで設定した88文字以上で長すぎると教えてくれてます。

コーディングルールで、一行あたりの文字数には制限があるので、いちいち数えなくて便利ですね。

ちなみになぜ88に設定しているかというと、Flake8は何も設定しないと78文字で警告を出してしまいます。

一方Blackでは88文字を超えないよう、改行による修正を行ってくれます。

なので、この2つが競合しないように、文字数の設定は合わせているということです。

まとめ

いかがだったでしょうか?

これでVSCodeで開発を行う際、自動でコードの整形もしてくれるし、コーディングルールに従った警告を出してくれるようになりました。

コーディングルールは人力で全て実装するのはほぼ不可能です。

というか、そんなことに労力を使うべきではありません。

とはいえ、他の人と一緒に共有したり、効率よく開発するためには、守った方がみんながハッピーに開発できます。

だったらフォーマッターやリンターの力を借りて、良いプログラムの開発をするしかありませんよね。

正直言って、プログラミング開発をする人がこれらのツールを入れない理由はないと思います。

なんならVSCodeもデフォルトで入っていてもいいのではと個人的には思います。

まだBlackやFlake8などのフォーマッターやリンターを使ったことがない人は、この機会にぜひ導入してみて、その効果を実感してみてください。

ここまでご覧いただきありがとうございました。