VS Code用Python拡張機能の2026年3月更新版が公開された。仮想環境にインストール済みのパッケージのシンボルを[ワークスペース内のシンボルへ移動]で検索できるようになった。コードを深く理解するのに有用な機能だ。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Visual Studio Code(以下、VS Code)用のPython拡張機能の2026年3月版が、2026年4月1日に公開された。
どうも。HPかわさきです。
今回はVS CodeのPython拡張機能について取り上げます。「Microsoft for Python Developers Blog」を見ている限りでは、2025年11月以降、Python拡張機能の大きな話題はそれほど目立っていませんでした(Python
Environments拡張機能については動きがありましたが)。
Python拡張機能自体が古くからあるもので、最近は大きな機能追加よりも、必要に応じた改善や調整が中心になっているのかもしれません。VS Code本体は週次リリースになりましたが、Python拡張機能はそれとは別のペースで、必要なタイミングに合わせて更新されていく流れになりそうです。実際、ここ最近はそうした雰囲気が感じられます。
今回の更新内容として挙げられているのは主に以下の2つ。
この他にPython Environments拡張機能では幾つかのバグ修正や、Pixiの仮想環境がある場合にPixi拡張機能を推奨するようになったなどの変更がある。
以下ではその中でもワークスペース内のシンボルへの移動機能の強化について紹介する。
今回のPython拡張機能の更新では、[ワークスペース内のシンボルへの移動]コマンドで、仮想環境にインストール済みのパッケージのシンボルも検索できるようになった(コマンドは[Ctrl]+[T]キーもしくは[Command]+[T]キーで起動)。これまでは検索できるのはワークスペース内のシンボル(自分が書いたコード)に限られていた。しかし、python.analysis.includeVenvInWorkspaceSymbolsを有効にすることで、アクティブな仮想環境のsite-packagesにインストールされたサードパーティー製のライブラリのシンボルも検索対象となる。
実際に有効になるのは、python.analysis.indexingの設定もオンになっている場合のみです。
これまでに使ったことがないサードパーティー製のパッケージを含んだコードを相手にするときには、そうしたパッケージに含まれているクラスや関数、変数(定数)などについて知りたくなるときがある。こうしたときに、今回強化された[ワークスペース内のシンボルへの移動]コマンドを使えると、パッケージのドキュメントを含んだWebサイトに移動するのではなく、VS Codeを使っているまま、それらの定義位置にカーソルを移動して、その定義についてソースコードのレベルで調べられるようになるということだ。
なお、パフォーマンスへの影響を考慮し、この機能はオプトイン(明示的な有効化)が必要となっている。オプトインするにはVS Codeの設定画面で「include venv」などと入力し、以下の画像のpython.analysis.includeVenvInWorkspaceSymbolsのチェックをオンにする。
python.analysis.includeVenvInWorkspaceSymbolsの設定画面例えば、以下のようなコードがあったとする(例としては簡単過ぎるが、そこはご容赦願いたい)。
import numpy as np
data: np.ndarray = np.array([1, 2, 3, 4, 5])
print(data.mean()) # 3.0
先ほどのpython.analysis.includeVenvInWorkspaceSymbolsをオフのまま、[Ctrl]+[T]キーや[Command]+[T]キーを押下して、コマンドパレット部分に「ndarray」と入力しても、以下の画像のように何も反応がない。
しかし、python.analysis.includeVenvInWorkspaceSymbolsをオンにして同様な操作を行うと、以下の画像のようにシンボルの候補が表示される。
実は[Ctrl]+[T]キーや[Command]+[T]キーを押してから、コマンドパレットにテキストを入力するよりも、調べたいシンボルにカーソルを置いてそれらのキーを押す方が簡単です。
なお、py.typedマーカーファイルがないパッケージでは、__all__を介してエクスポートされたシンボルのみが対象となる。パッケージ内のどのレベルまでシンボルをインデクシングするかは、python.analysis.packageIndexDepthsでパッケージごとに指定可能だ。
py.typedファイルはパッケージに型ヒントが付加されていることを示すマーカーファイルです。
インデクシングの詳細を設定するには、先ほどのpython.analysis.includeVenvInWorkspaceSymbolsの設定画面にある[Python > Analysis: Package Index Depths;]リンクをクリックするか、検索ボックスで「package index depths」などと入力して、python.analysis.packageIndexDepthsの設定画面を開く。
ここで[settings.jsonで編集]リンクをクリックすると、以下のようにJSONの編集画面が表示されるので、適宜編集すればよい。
パッケージごとにインデクシングの深さなどを指定する設定可能なのは以下の3つ。
depthはどの階層までをインデクシングの対象とするか、includeAllSymbolsは__all__を介してエクスポートされたものだけをインデクシングの対象とするか、そうではなく(エクスポートされていないものまでを含む)全てのシンボルをインデクシングの対象とするかを決めるものだと考えればよい。
用途としては、「階層は浅いが全てのシンボルが検索の対象としたいのであれば、depthは浅めに、includeAllSymbolsはtrueにする」「より深くのサブモジュールまで検索対象にするが、__all__でエクスポートされているものだけでよいのなら、depthを深めに、includeAllSymbolsはfalseにする」といったことが考えられる。
もう一つ、実験的な機能としてRustベースの並列インデクサーも追加されている。この設定も実験的なもので、有効にするにはpython.analysis.enableParallelIndexingのチェックをオンにした後にウィンドウの再読込が必要にある。
ここでいうインデクサーは、Pylanceがキーワード補完や自動インポート、ワークスペースのシンボル検索のために使用しているエンジンのこと。このインデクサーが並列に処理を行うようにRustで実装したということだ。
ブログ記事によれば、大規模プロジェクトでは平均10倍高速になったとのこと(ワークスペースを開いた後、補完が早いタイミングで行えたり、IntelliSenseのレスポンスがよくなったりするというメリットがある)。逆に小規模なプロジェクトではそれほどの差が出ない可能性もある。
よく知らないサードパーティー製のライブラリを使っているときや、そうしたコードを相手にしたときには、「このクラスってどうなっているの?」「この関数の詳しい挙動を知りたい」などと感じることがよくあります。そうしたときに、Webブラウザでドキュメントを検索したり、ソースコードに含まれるパッケージを自分で検索したりしなくて済むようになったのは、コードを理解しようというときにはとても便利だと思います。
とはいえ、エージェントによる(大量の)コード生成が一般的になった今では、どこまで人間がコードの振る舞いを追えるのかというと、なかなか難しくなってきたかもしれません。個人的にはこうした機能を活用して、チマチマとコードを追いかけるのは大好きですが、そういうのもエージェントにお任せの時代になっちゃうんでしょうかねぇ……。
Copyright© Digital Advantage Corp. All Rights Reserved.