ニュース

「Visual Studio Code」のMarkdown機能が言語サーバーに ~他のエディター、ツールでの活用に道筋

他の拡張機能をブロックしないというメリットも

「Visual Studio Code」の公式ブログ

 「Visual Studio Code」の開発チームは8月16日(現地時間)、「Markdown」の言語サーバー(Language Server)を発表した。

 言語サーバーは、プログラミング言語のソースコードを解析したときに得られる情報をコードエディターに提供するバックエンド。シンタックスハイライト(構文色分け)や自動補完、リファクタリング、定義への移動といった高度なコーディング支援機能を実現するためのものだ。

 コンパイラー、インタープリターとコードエディターが密接に繋がっていると他の言語、エディターへ対応を広げるのが難しくなるが、両者のやり取りを「言語サーバープロトコル」(LSP)として標準化してしまえば、LSP対応の言語サーバーとコードエディターを自由に組み合わせられるようになる。

 「Visual Studio Code」は6年前からMarkdown記法をサポートしており、シンタックスハイライトなどの機能を提供している。しかし、これはあくまでも拡張機能向けに提供されている「VS Code API」を活用したものだった。これだけであれば、言語サーバーのような大掛かりなものを実装する必要はない。

 しかし、公式ドキュメント「vscode-docs」のように巨大なMarkdownリポジトリは少なくない。「VS Code API」を利用すると他の拡張機能を短時間ではあるがブロックすることがあり、このような巨大リポジトリでは生産性を損なうことがある。一方、言語サーバーは独立したプロセスで動作するため、そのような懸念はない。他のエディターやCLIツールとの連携も容易になる。

 言語サーバーへの移行は大がかりであったようだが、水面下で行われ、「Visual Studio Code 1.70」以降であればほとんどすべての言語機能が新しい言語サーバーに置き換えられているという。この取り組みは以下の2つのオープンソースライブラリにまとめられ、「GitHub」で公開されている。

  • Markdown Language Service:「Visual Studio Code」のMarkdown機能を他のエディターやツールで再利用できるように抽出したTypeScriptライブラリ
  • Markdown Language Server:「Markdown Language Service」による言語サーバープロトコルの実装

 「Markdown Language Service」はパッケージ管理システム「npm」でインストールすることもできる。