はじめに
アドカレ初参加で記事書いてみるの意外と面白かったので何個か書いてみてます!
普段そこまで拡張機能使えてないんですが使えた方が効率的(後かっこいい)ので今回はPython書く上で役立ちそうな拡張機能について調べてみました!
他にもこんなのあるよとかここ違うとかこれ古いで〜とかあればぜひ教えてください!
インストール方法(念のため)
VSCode拡張マーケットで「対象の拡張機能」で検索し、インストールします。
ほぼ必須?みんな入れてるかもだけど一応紹介
Python (Microsoft公式拡張機能)
この拡張機能はpython開発をサポートしてくれる拡張機能です。
多分Python書いてたら右下にこれ入れる??って最初に出てくるようなもので
以下のような基本的なサポートをしてくれる拡張機能となっています!
・コード編集
・コードのエラーチェック
・フォーマット 等
これ入れると一緒にPylance、Python Debuggerも一緒にインストールされます!
Japanese Language Pack for Visual Studio Code
この拡張機能はVSCodeのUIを日本語化する拡張機能です。
デフォルトだと英語表記でよくわからんところとか多いのでみんなとりあえず入れてるものかな??というやつです!
ここから本題便利な拡張機能
intelliCode
この拡張機能はAIを活用した補完機能で、よりコンテキストに合った候補を提示してくれるものです。
とりあえず入れといても損はないかも?
GitHub Copilot
この拡張機能はコードの入力をリアルタイムに解析し、ユーザーの入力補助等の機能を提供します。
例えばコード補完などは以下のように途中まで入力してみると残りの部分(若干グレーの部分)をサンプルで提供してくれます。
関数のdocstringを書くときも自動で補完してくれます!
いっつも書くの忘れて困るから助かる、、、
こちらは有料プランに登録したりそれに伴いGitHubのアカウントとの連携が必要だったりで業務上は自由に使えないこともあるかもしれません
ただ最初は無料プラン(30日)とかあったりするのでお試しで使ってみてください!
Trailing Spaces
この拡張機能はコードの末尾にあるスペースを可視化してくれるものです。
コピペとか調整とかで半角スペースが入ってしまうのはみんな経験あると思います。
実際スペース入ったからエラーが起きるわけではないですが、不要なものは消した方が良いです!
特に半角スペースは普通に書いてもなかなか気づかないけど赤表示↓されるので見つけやすくなります!
Black Formatter
この拡張機能はPythonのコードを自動的に整形してくれるものです
整形するための設定
.vscode/setting.jsonファイルに以下のように記載します。
{
"[python]": {
// 拡張機能の場合には以下のような指定
"editor.defaultFormatter": "ms-python.black-formatter",
// ファイルを保存すると自動でフォーマットする
"editor.formatOnSave": true
},
}
整形結果
例えばこういうようなコードがあった場合の修正前後は以下となります。
修正前:
配列やインデントなどを自動で調整してくれました
細かい設定があんまりできなかったりしますがとりあえず入れてみるのもありかも?
Python Test Explorer for Visual Studio Code
この拡張機能はPytestなどのユニットテスト周りをVSCode上で実行できるものです。
テスト駆動開発(TDD)が容易になり、失敗したテストを素早く特定・修正可能になります!
なんかややこしかったのでVSCode側でのテスト環境の準備をしてみます。
1.VSCodeの左側のタブのpytestを選択し、「Configure Python Tests」というボタンを選択
2.テストのフレームワークを選択するように言われるので今回は「pytest」を選択
3.テストケースファイルが含まれているディレクトリを選択
今回はテストケースファイルは「test」フォルダに置くことにします。
4.テストケースファイルを用意
テスト対象ファイル:backend/caluculate.py
def add(a: int, b: int) -> int:
"""2つの整数を加算する"""
return a + b
def subtract(a: int, b: int) -> int:
"""2つの整数を減算する"""
return a - b
def multiply(a: int, b: int) -> int:
"""2つの整数を掛け算する"""
return a * b
def divide(a: int, b: int) -> float:
"""2つの整数を割り算する (0除算時は例外を発生)"""
if b == 0:
raise ValueError("除数は0以外でなければなりません")
return a / b
テストコード:test/test_caluculate.py
import pytest
from backend.caluculate import add, subtract, multiply, divide
def test_add():
assert add(3, 2) == 5
assert add(-1, 1) == 0
assert add(0, 0) == 0
def test_subtract():
assert subtract(3, 2) == 1
assert subtract(2, 3) == -1
assert subtract(0, 0) == 0
def test_multiply():
assert multiply(3, 2) == 6
assert multiply(-1, 2) == -2
assert multiply(0, 100) == 0
def test_divide():
assert divide(6, 2) == 3.0
assert divide(5, 2) == 2.5
# 例外発生テスト
with pytest.raises(ValueError, match="除数は0以外でなければなりません"):
divide(10, 0)
ついでにpytestもインストール
python3 -m venv venv
source venv/bin/activate
pip install pytest
※仮想環境にインストール後VSCode上のインタープリターで↑で作ったやつ選択しておく
テスト実行するとテスト結果が出てくるよ!
100%だとこんな感じ
普通に実行したGithubActionsとかで実行したりもするけど
書いてる時にある程度試せるし試しやすいから便利
Ruff
この拡張機能は、 Flake8 (および数十のプラグイン)、 Black、isort、 pydocstyle、pyupgrade、 autoflakeなどを置き換えるのに使用できるものです。
コメントで教えていただいて初めて知ったのですが、上の方で紹介した整形周りも統合されてるようなのでこいつでひとまとめにしてしまっても良いかもですね!
整形するための設定
.vscode/setting.jsonファイルに以下のように記載します。
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
},
"editor.defaultFormatter": "charliermarsh.ruff"
}
・プロジェクト直下にpyproject.tomlを作成して、以下のように設定します。
[tool.ruff]
exclude = [
".venv",
".ruff_cache"
]
indent-width = 4
[tool.ruff.lint]
select = [
"F", # Flake8
"B", # Black
"I", # isort
"E", # error
"W" # warning
]
ignore = []
fixable = ["ALL"]
例えば変なスペースとか不要なインポートがある以下のpythonも整形してくれます
修正前
修正後
まとめ
調べてみるととんでもない数の拡張機能があったのと使ったことないやつばかりで全然書き切れないですが、
最初にも書いた通りこれ使ってるとかこれ古いよとかあったらぜひ教えてください!