MicrosoftがPython型解析向けTSPを公開
原題: Type Server Protocol
なぜ重要か
Python型解析の通信仕様を公開標準化することで、Pylance以外のツールチェーンとの相互運用が促進され、Pythonエコシステム全体の静的解析基盤が強化される可能性がある。
Microsoftは、Python型解析データの取得を目的としたJSON-RPCプロトコル「Type Server Protocol(TSP)」の仕様をPylanceリポジトリ上で公開した。TSPはワークスペースの型解析状態を管理するtype serverと通信し、プロトコルバージョン確認・スナップショット取得・import解決・型クエリなど複数の操作をサポートする。現行バージョンは0.4.1で、マルチコネクション交渉機能が追加されている。
MicrosoftがPylanceリリースリポジトリ上で公開した「Type Server Protocol(TSP)」は、Python静的解析の基盤となるtype serverとの通信を標準化するJSON-RPCプロトコルだ。
TSPの設計思想は、既存のLanguage Server Protocol(LSP)との親和性にある。`Position`や`Range`といったLSPのデータ型をそのまま流用し、URIの文字列表現もLSPに準拠する。メソッド名には`typeServer/`プレフィックスが統一的に付与される。
プロトコルの用途は幅広い。type serverはワークスペース全体の型解析状態を保持し、クライアントからの要求に応じてPythonの検索パス、import解決結果、計算済み型・宣言型・期待型といった型クエリ結果を返す。
仕様の定義は複数のアーティファクトで管理されている。TypeScriptインターフェース定義ファイル`typeServerProtocol.ts`、機械可読なプロトコルモデル`tsp.json`、そしてJSONスキーマ`tsp.schema.json`の3ファイルが「信頼できる唯一の情報源」として位置付けられる。
バージョン管理にはセマンティックバージョニングを採用する。0.x系では、マイナーバージョンの変更が破壊的変更を含む可能性があることが明記されている。パッチバージョンは同一マイナー系内での後方互換性を保証する。
版歴を見ると、0.1.0で初版リリース後、0.2.0でリクエスト型・フィールドの追加、0.3.0で複雑な型シェイプへの移行、0.4.0で`Type`ユニオンとstubベースの型ペイロードへの切り替え、0.4.1でマルチコネクション交渉と`typeServer/connection`制御リクエストの追加が行われており、まだ活発に仕様が変化している段階だ。