はじめに
七尾百合子さん、お誕生日 202日目 おめでとうございます!1 nikkieです。
Know your editor2(汝のエディタを知れ)とはよく言ったもので、VS Code で Python を書くときの Today I learned です。
目次
前提:Pylance
私は VS Code で Python を書いています。
Microsoft による「Python 拡張」をインストールして使っています3。
この拡張は Pylance をインストールします。
Pylance – performant Python language support (Installed extensions より)
Pylance は Microsoft による Pyright を使っています
(Pylance が Language Server にあたるんですかね? 宿題事項)
Using Pyright, Pylance has the ability to supercharge your Python IntelliSense experience with rich type information, helping you write better code faster.
PyCon JP 2025 で型チェッカの歴史を語る発表のスライドより
問題のある関数の呼び出し方を Pylance に指摘させたい
私はこれまで実行時エラーにしてきたのですが、Pylance (静的解析)で指摘させられるのかを調べました4。
.vscode/settings.json に python.analysis.typeCheckingMode という設定項目があります。
https://github.com/microsoft/pylance-release?tab=readme-ov-file#settings-and-customization
設定値は4段階で off / basic / standard / strict です。
デフォルトでoffになっています。
Pyright のドキュメントには、それぞれの設定値がどのルールを指摘するかの一覧があります。
https://microsoft.github.io/pyright/#/configuration?id=diagnostic-settings-defaults
問題のある関数の呼び出し方の指摘は、basic に上げるだけで有効になりました。
| Diagnostic Rule | Off | Basic | Standard | Strict |
|---|---|---|---|---|
| reportCallIssue | "none" | "error" | "error" | "error" |
https://github.com/microsoft/pylance-release/blob/main/docs/diagnostics/reportCallIssue.md
This includes incorrect argument types, missing or extra arguments, and issues with callable objects.
この Pyright の設定を、.vscode/settings.json ではなく、pyproject.toml に書くことにしました。
[tool.pyright] typeCheckingMode = "basic"
python.analysis.typeCheckingMode のドキュメントを読み、以下を見つけました。
Note that the value of this setting can be overridden by having a pyrightconfig.json or a pyproject.toml.
「Python プロジェクトにおける pyright の設定だから pyproject.toml に書いてみるか」くらいの軽い気持ちで書いています。
これだけで Pylance が問題のある関数の呼び出し方を指摘するようになり、感動しました。
なお、python.analysis.typeCheckingMode のドキュメントには、パフォーマンスの考慮が記載されています。
Setting
python.analysis.typeCheckingModetooffcan improve performance by disabling type checking analysis, which can be resource-intensive, especially in large codebases.
この考慮のためにデフォルトがoffなんでしょうかね
実際に指摘できることの確認:google-adk のバージョンアップ
google-adk は 1.2.1 -> 1.3.0 で get_fast_api_app の引数が変わっています。
session_db_url -> session_service_uri
これに静的解析で気づくことを今回のゴールにします。
作業ディレクトリにて
% uv init --no-readme % uv add 'google-adk<1.3'
uv が作った.venv下の Python 処理系を「Select Interpreter」。
pyproject.tomlには上記の設定を書きます。
main.pyを書いていくと
from google.adk.cli.fast_api import get_fast_api_app def main(): app = get_fast_api_app( )

パラメーター "agents_dir", "web" に引数がありません
静的解析で指摘されました!
以下のようにすると指摘は消えます5
def main(): app = get_fast_api_app( agents_dir="./my_agent", web=False, session_db_url="sqlite:///./test.db", )
それでは google-adk のバージョンアップです。
pyproject.tomlから上限を撤廃します。
[project] dependencies = [ - "google-adk<1.3", + "google-adk", ]
これでuv sync -P google-adkで最新化されます(1.15.1まで上がりました)。
main.pyを開くと

"session_db_url" という名前のパラメーターがありません
google-adk の引数変更が静的解析で指摘されました!🙌
終わりに
pyproject.tomlに Pyright の設定を書いて Pylance も設定し、関数の呼び出し方の問題を指摘させることができました。
関数の呼び出し方の問題(reportCallIssue)は basic で十分でした。
より厳しく指摘させたい場合は、Pyright のドキュメント「Diagnostic Settings Defaults」の表や、Pylance のリポジトリのルール一覧を参照しながら設定することになりそうです。
今まで使っていなかったのを後悔するほど、めちゃめちゃ有用そうです。
ただ、パフォーマンスとトレードオフという点は念頭に置きたいと思います。
長いことVS CodeのPylanceでPython書いてきましたが、pyproject.toml でpyrightを設定すると
— nikkie(にっきー) / にっP (@ftnext) 2025年10月5日
[tool.pyright]
typeCheckingMode = "basic"
関数の呼び出し方の問題を指摘してくれることを知りました。
これまで実行時エラーにしてきましたが、今後は静的解析で気付ける! pic.twitter.com/9OZeuGLOmg
宿題事項
- mypy の VS Code 拡張も同様に設定できるのかな?
- 人間にとってなかなかよさそうですが、生成AI(コーディングエージェント)にはどう見せればいいんだろう?
- serena とかは、コーディングエージェントに Language Server を見せている??
-
田中琴葉さん、お誕生日誠におめでとうございます!
↩「なんでも聞くよ!なんでも」
— nikkie(にっきー) / にっP (@ftnext) 2025年10月4日
⋆⸜⊹₊ 𝐇𝐚𝐩𝐩𝐲 𝐁𝐢𝐫𝐭𝐡𝐝𝐚𝐲 ₊⊹⸝⋆
🍰#田中琴葉誕生祭2025🎁
✅なんでも言うこと聞く券
を渡す!
👇琴葉ちゃんからお手紙💌が届きました✨
お祝いしに #ミリシタ にも会いにきてくださいね♪pic.twitter.com/k3b6n6rNEg - 『The Art of Agile Development, 2nd Edition』より↩
- ref: https://code.visualstudio.com/docs/python/python-tutorial#_prerequisites↩
- 同僚からの質問駆動です↩
-
今回は動かさないので
agents_dirはダミーなのですが、uv run adk createで作成もできます↩