72
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社NucoAdvent Calendar 2024

Day 19

VSCode×Pythonのおすすめ拡張機能・設定集【完全保存版】

Last updated at Posted at 2024-12-19

はじめに

この記事はNuco Advent Calendar 2024の19日目の記事です。

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

本記事では、VSCodeでPythonを効率よく書くために最初に導入すべき機能について紹介します。
ある程度定番化したと思われるおすすめツール群とその特徴、およびVSCodeのレイアウトに関する設定を紹介していきます。
これからVSCodeでPythonを利用した開発を始めたい人はもちろん、ある程度ご経験のある人にもプラスになる情報がきっとあるため、ぜひ参考にしていただけると嬉しいです。

拡張機能

ここではおすすめの拡張機能を紹介します。
前提として、Python本体の拡張機能を入れる必要があります。

Linter, Formatter

Ruff

PythonのLinterとしてはFlake8、コード整形ツールとしてはBlack、importのsortingはisortが主流ではありますが、これら全てを兼ね備えているのがRuffです。
Rustで開発されているRuffは上記既存のツールよりも動作が数十倍早いとされており、設定も一括で行えるため現在はこちらの導入を進めているケースも多いのではないでしょうか。

導入にあたって、VSCodeのsettings.jsonへは以下の項目を追加します。

{
    "[python]": {
        "editor.codeActionsOnSave": {
            "source.fixAll": "explicit",
            "source.organizeImports": "explicit"
        },
        "editor.defaultFormatter": "charliermarsh.ruff",
        "editor.formatOnSave": true
    },
    "ruff.lint.args": [
        "--config=ruff.toml"
    ],
    "ruff.format.args": [
        "--config=ruff.toml"
    ]
}

前半はVSCodeの挙動や設定について、後半はRuff自体の挙動についての設定になります。
Ruff自体の挙動についてはさらに、ここで指定したruff.tomlを同じ階層に作成して設定します。
デフォルトではこちらの設定通りになっていますので、無視させたいディレクトリ名などお好みで設定しましょう。

型チェッカー

Mypy Type Checker

Pythonのコードを型チェックしてくれるライブラリです。公式ドキュメントはこちら
mypyは型ヒントをもとに型チェックを行うため、型ヒントを書く習慣をつけるのにも有用です。

ただ、あまりルールを厳しくしてしまうとそれはそれで体験が悪いので、

"mypy-type-checker.args": [
    "--disallow-untyped-defs"
]

このようにsettings.jsonに設定するのがおすすめです。こちらは返り値や引数に型が書かれているかどうかをチェックする設定になります。
他の設定も上記拡張機能ページのSettingsの欄に記載されているので、個人やチームのお好みで設定してみてください。

テストツール

Pytest

Pythonのテストツールとしてはこちらが最も標準的なのではないでしょうか。
Python Test Explorer for Visual Studio Codeを導入するとVSCode上でテスト・デバッグを簡単に行えるようになるのでおすすめです。

その他便利な拡張機能

autoDocstring - Python Docstring Generator

爆速でdocstringを生成してくれる拡張機能です。
スクリーンショット 2024-11-29 18.52.46.png

三点引用符などを3つ入力して予測で表示されるGenerate Docstringを叩けば気持ちよくdocstringが作成されます。
mypyで型ヒントを作成し忘れないようにしておけば、こちらで作成したdocstringにも引数の型が自動で転記されるのでコンボ感があります。

Code Spell Checker

スクリーンショット 2024-11-29 18.54.51.png
指が知らず知らずのうちに思っていたのと違うキーを叩いてしまっていた…そんな経験、誰しもありますよね。
この拡張機能を入れることでそういった事故を防ぐことができます。
コードを読んだ人からひと笑い取るだけならいいですが、気づかずにエラーを引き起こしてしまうと目も当てられません。

GitLends

VSCode単体でもファイルの差分を確認することはできますが、こちらの拡張機能を利用することで

  • 過去のコミットでの変更履歴
  • ファイル単位での変更履歴

などが確認できるようになります。
過去のコミットでどのようなファイルにどのような変更が加えられたのか確認したい時や、特定のファイルがどのような経緯でその状態に至ったのかを確認したい時に便利です。

Error Lends

スクリーンショット 2024-11-29 19.03.08.png
このように、波線の内容を表示してくれるようになります。
ご覧の通りSpell Checkerとのコンボでより快適なコーディングが行えるようになりますが、怒られすぎて鬱陶しくなる時もあります。やろうと思っていたことを指摘されるとちょっとむかつきますよね。

indent-rainbow

今までのスクリーンショットで、なんかインデントに色ついてるな?と思った方もいらっしゃるのではないでしょうか。それです。
階層が見やすくなって便利です。
ちなみに、settings.jsonworkbench.colorCustomizationsを使用して同じようなことも再現できます。
こちらは空の改行にも色がつくようになりますが、個人的には後述の拡張機能のこともあり空の改行には何も表示されないほうが助かるので、indent-rainbowを利用しています。

Trailing Spaces

スクリーンショット 2024-11-29 19.16.29.png

こちらが後述の拡張機能です。
このように空の改行や末尾に余計なスペースがある場合、それを可視化してくれます。
こちらの表示を優先するほうが個人的には好みです。

Blockman - Highlight Nested Code Blocks

スクリーンショット 2024-11-29 19.20.19.png

画面は多少ごちゃつきますが、ネストされたコードブロックが見やすくなります。
現在カーソルがあるブロックは別の色で囲われるようになります。
便利だなあ〜と言う気持ちと、ごちゃごちゃしてるなあ〜という気持ちになります。

TODO Highlight

スクリーンショット 2024-12-03 9.07.52.png

TODO や FIXMEが見やすくなります。
ちょっと眩しいですがデフォルトカラーが可愛いです。もちろん色は変更可能です。

vscode-icons

スクリーンショット 2024-12-03 16.35.45.png

この拡張機能はPythonに限った話ではありませんが、入れると入れないとでは見やすさが段違いなのでおすすめです。

Rainbow CSV

スクリーンショット 2024-12-03 16.51.36.png
見やすい!きれい!
Pythonを使う場合csvを開きたくなることもあると思うのですが、色でカラムを判別できるので視認性が高くて便利です。

Edit CSV

スクリーンショット 2024-12-03 17.02.09.png
簡易的にではありますがCSVの編集が行えます。Rainbow CSVで編集箇所のアタリをつけて、こちらでちょっとした編集を行うのがおすすめです。

Markdown Preview Enhanced

数式をレンダリングしたり、パスを通してコードブロックのコードを実行できるようにしたり、外部ファイルを読み込んで表示したりできます。
詳しくはこちらのドキュメントに解説が載っています。

VSCodeの設定

こちらは作業効率を少しずつ上げてくれるであろう、VSCode自体の設定編です。
公式ドキュメントに全ての設定が載っていますが…項目が多すぎますね。日が暮れます。
挙がっていないもので、この設定おすすめ!というものがあればコメントで教えていただけると嬉しいです。
なお、こちらの設定はsettings.jsonを変更することで編集可能です。
(settings.jsonの開き方はこちら)

カラーテーマ

最近ギャルの使うVSCodeのテーマの記事が投稿されてましたね。自分だけの最強のギャル、作り出していきたいものです。

カラーテーマは大きく分けて黒系か白系の二つがあり、その中でさらに何色に寄った背景色をベースにしているか、という違いがあります。

以下、おすすめのカラーテーマです。

GitHub Theme

スクリーンショット 2024-12-09 10.34.45.png

定番カラーテーマその1。GitHubのコードプレビューの配色でコードを見ることができます。
上のようなダークテーマのほかにも白基調のテーマもあるので、GitHubの見た目が好きな人にはおすすめ。

Ayu

スクリーンショット 2024-12-09 10.33.32.png

なんとなく定番のような気がするテーマその2。使っている人も多いのではないでしょうか。
GitHubと比べてより多くの色分けがされているのと、どことなく目に優しい配色(な気がする)。
自分のおすすめはAyu Mirageです。(上記画像配色)

Noctis

スクリーンショット 2024-12-09 10.38.09.png

上記2つほどではないが人気のテーマ。個人的にはこちらのNoctis Azureusが可愛くて好きです。
でも引数と変数名が同じ色なのが気になる…気になりませんか?気になってきましたよね。

…以下、気にならない人は次の項目まで飛ばしてください。


拡張機能の各テーマは、settings.jsonに行う色の設定を代わりにやってくれているという状態のため、逆にこちらから色を指定して上書きすることも可能です。

検索バーでDeveloper: Inspect Editor Tokens and Scopesを選択すると、

スクリーンショット 2024-12-11 18.56.30.png

このように、各要素のスコープを調べることができます。
4つ並んでいるうち一番上が最も具体性の高いスコープのため、一番上が設定されてなければ二番目の設定が適用される、といった仕組みになっています。

スクリーンショット 2024-12-11 18.58.11.png

変数名はsource.pythonを設定することによって変更できるため、

    "editor.tokenColorCustomizations": {
        "[Noctis Azureus]": {
            "textMateRules": [
                {
                    "scope": [
                        "meta.indexed-name.python",
                    ],
                    "settings": {
                        "foreground": "#5addc5"
                    }
                },
                {
                    "scope": [
                        "source.python",
                    ],
                    "settings": {
                        "foreground": "#d0d25d"
                    }
                }
            ],
        }
    },

このようにsettings.jsonに書き加えることで、

スクリーンショット 2024-12-11 19.02.11.png

変更したい箇所の文字色を変更し、カラーテーマを自分好みに変更することができます。

フォント

フォントに関しては(Macの方は)あまり設定する必要もないかと思うのですが、人によって見やすくなったり見づらくなったりすると思うので、お好みで設定してください。
単純な文字の造形もそうですが、言語による文字幅が異なったりするため英語と日本語を並べるとパッと見たときのレイアウトの印象が異なります。
ここでは、さまざまなところで言及されている著名な日本語対応フォントをいくつかご紹介します。

Source Han Code JP

スクリーンショット 2024-12-16 18.34.11.png

Adobeによるフォント。数字がカワイイ
文字幅は広め。(個人的にはもうちょっと幅狭のほうが…英字幅の間延び感…)

PlemolJP

スクリーンショット 2024-12-16 18.34.28.png

IBMが公開したフォントをこちらの方が手を加えて作成されたフォント。
なんとなく英字に洋ゲー感がある気がします。伝わりますか?

UDEV Gothic 35JPDOC

スクリーンショット 2024-12-16 18.34.39.png

こちらも上と同じ方が作成されたフォントです。
3:5幅版のほうが好みなのでそちらを紹介させていただいています。

その他settings.jsonの設定

キャレットの点滅

画面収録 2024-12-13 17.24.18.gif

"editor.cursorBlinking": "phase"

デフォルトでは「パッ パッ」という点滅の仕方だと思いますが、
こちらは「ふわ…ふわ…」という感じで気分が良いです。
GIFなので点滅がゆっくりになってしまっていますが、実際はもう少し早いです。

キャレットの移動アニメーション

57059-spn77.gif

"editor.cursorSmoothCaretAnimation": "explicit"

デフォルトは特にアニメーションがありませんが、設定すると移動するカーソルの軌跡が見えるようになります。
間違ってクリックしたときなど、どこに飛んだのかわかりやすくなります。

エクスプローラーのインデントサイズ、ガイド

スクリーンショット 2024-12-13 17.40.53.png

"workbench.tree.indent": 12,
"workbench.tree.renderIndentGuides": "always"

階層が深いプロジェクトは12くらいが良いです。階層浅ければ20くらいまで上げると見やすい気がします。
また、こちらはコードと違って色がついていないので、ガイドがあると見やすいと感じます。
ちなみに、このようにカスタムCSSを利用することでエクスプローラの階層も色分けすることも可能です。

ウィンドウタイトルを消す

スクリーンショット 2024-12-13 17.48.10.png

"window.title": " "

検索バーが虫眼鏡マークだけになり気分がいいです。すっきりしてるのが好きな人におすすめ。

インデントガイドを消す

スクリーンショット 2024-12-13 17.49.13.png

"editor.guides.indentation": false

実は今までずっとこれがfalseになっていました。
拡張機能でインデントに色をつけたので無くすと気分がいいです。
…が、これもあった方がいいという人もいる気がします。お好みです。

カーソルを棒ではなくブロックに

スクリーンショット 2024-12-13 17.50.09.png

"editor.cursorStyle": "block"

見やすくはなりますが、文字の上にカーソルがあるときの体験が微妙な気もするのでお好みです。

スクリーンショット 2024-12-13 17.50.23.png
(文字の上にある場合の様子)


現在自分が使用している設定のみを紹介させていただきましたが、他にもスクロールバーを隠したり、ミニマップを消したり、サイドバーを左右逆にさせたり…自分の好みに応じてレイアウトをどんどんいじることができます。
こういう設定、いじりはじめると終わりはありませんが…ふとした息抜きに調べてみるのも楽しいです。

おわりに

本記事では、VSCodeを利用したPythonでの開発で用いられるツールについて、用途ごとに解説してきました。
こういったツールは日々ベストプラクティスが変化していきますが、特にLinter, Formatterに関してはこの一年でだいぶ様相が変化したと思います。

なお、Ryeやuvなどのパッケージ管理ツールに関してはこれだ!というデファクトスタンダードが確立されていない状態だと感じているため、本記事ではあえて定番化されているもののみを紹介させていただきました。
(uvに集約されていく気配を感じますが…)

他にもこんなツールが便利だというアドバイスがございましたら、ぜひコメントいただけると嬉しいです。

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

72
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
72
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?