TypeScript向けLSP Serverの選び方と導入ガイド

LSP(Language Server Protocol)の仕組みと背景 テキストエディタやIDEで「定義ジャンプ」「補完」「リネーム」といった言語機能を使うには、各エディタが言語ごとの解析ロジックを個別に実装する必要がありました。エディタがM種類、プログラミング言語がN種類あるとき、M x N個の実装が必要になる問題、いわゆる「M x N問題」が長年の課題でした。 LSP(Language Server Protocol)は、この問題を解消するためにMicrosoftが2016年に策定したオープンプロトコルです。言語固有の解析処理を「Language Server」として独立したプロセスに切り出し、エディタとの通信をJSON-RPCベースの標準プロトコルで行います。各エディタはLSPクライアントさえ実装すれば、あらゆる言語のLanguage Serverと連携できるようになります。 LSPの仕様は現在バージョン3.17が最新です。このバージョンでは型階層(Type Hierarchy)やInlay Hints、ノートブックドキュメントのサポートなどが追加されました。 出典: Microsoft Language Server Protocol TypeScript用の主要LSP Server実装 TypeScriptの言語サーバーには複数の選択肢があり、それぞれアーキテクチャや対応エディタが異なります。 typescript-language-server 最も広く利用されているTypeScript用LSPサーバーです。npmパッケージとして配布されており、内部ではTypeScriptのtsserverをバックエンドとして起動し、その機能をLSPプロトコルでラップして提供します。Neovim、Emacs、Vim、Helix、Sublime Textなど、VSCode以外のほぼすべてのエディタで標準的に使われており、GitHubでは5,000以上のプロジェクトで利用されています。 npm install -g typescript-language-server typescript typescript-language-server --stdio 出典: typescript-language-server GitHub vtsls VSCodeに組み込まれたTypeScript拡張機能を、スタンドアロンのLSPサーバーとして切り出したプロジェクトです。VSCode内部のAPIを埋めて最小限のパッチを適用することで実現しており、本家VSCode拡張の更新に追従しやすい設計になっています。補完の速度と正確性に優れ、LazyVimではデフォルトのTypeScript LSPとして採用されています。2026年1月にv0.3.0がリリースされ、現在も活発に開発が続いています。 npm install -g @vtsls/language-server vtsls --stdio 出典: vtsls GitHub tsserver(VSCode内蔵) VSCodeに組み込まれている言語サービスの基盤です。tsserverはLSPではなく独自のプロトコルで通信しており、VSCode専用の仕組みとして動作します。補完、診断、リファクタリングなどのあらゆる機能を網羅しており、VSCodeにおけるTypeScript体験のベースラインとなっています。ただし独自プロトコルのため、他のエディタからは直接利用できません。typescript-language-serverやvtslsは、このtsserverの機能をLSP経由で公開する役割を担っています。 Deno LSP Deno実行環境に組み込まれたLSPサーバーです。deno lspコマンドで起動でき、DenoプロジェクトにおけるTypeScript/JavaScript開発を支援します。npmベースのNode.jsプロジェクトとDenoプロジェクトが混在する環境では、ファイルパスやプロジェクト設定によるLSPの切り替えが必要になります。 TypeScript 7.0(Corsa)の公式LSPサーバー TypeScript 7.0(開発コードネーム: Corsa)では、コンパイラ全体がGoで再実装され、LSPネイティブの言語サーバーが公式に提供される予定です。従来のtsserver独自プロトコルが不要になり、あらゆるLSP対応エディタから統一的に利用できるようになります。詳細は後述します。 実装比較表 項目 typescript-language-server vtsls tsserver Deno LSP TypeScript 7.0 LSP プロトコル LSP LSP 独自 LSP LSP バックエンド tsserver VSCode TS拡張 TypeScript本体 Deno内蔵 Go実装 インストール npm npm VSCode同梱 Deno同梱 開発中 対応エディタ Neovim/Emacs/Vim等 Neovim/Helix/Zed等 VSCode専用 LSP対応全般 LSP対応全般 補完速度 良好 高速 高速 良好 非常に高速(見込み) 設定の柔軟性 高い 高い VSCode設定に依存 Deno設定に依存 未確定 Vue/Svelte対応 プラグイン経由 VSCode拡張互換 VSCode拡張経由 非対応 未確定 エディタ別の導入手順 Neovimでの設定 Neovim 0.11以降では、組み込みのLSPクライアント設定が大幅に簡素化されました。nvim-lspconfigプラグインを使うと、数行で設定できます。 ...

2026年2月9日 · 4 分 · 12258 文字 · uiuifree