Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

VSCodeでもKotlinが書きたい!公式Kotlin LSPの今とこれから

技術本部 Contract One Engineering Unit の髙野です。2024年に新卒で入社し、AI契約データベース「Contract One」を開発しています。

KotlinConf 2025で突如として発表されたKotlin LSPは、Jetbrains IDEが主流だったKotlin開発に大きな変革をもたらす可能性を秘めています。 そんなKotlin LSPについて、現状と今後の展望をまとめます。

Kotlin LSPとは?

Kotlin LSPは、Jetbrainsが開発している公式のLanguage Serverです。IntelliJなどの内部コードに依存しているため、大部分がクローズドソースとして開発が進められています。

github.com

2025年5月27日に初版(v0.252.17811)がリリースされ、 2025年8月6日に第2版(v0.253.10629)がリリースされました。まだPre-alphaフェーズで、今後は2週間ごとにリリースされる予定です。*1

配布形式

Visual Studio Code 拡張機能

Visual Studio Codeのマーケットプレイスには登録されておらず、Releasesページから.vsixファイルをダウンロードし、Visual Studio Codeにドラッグアンドドロップします。詳しいインストール方法はREADMEをご覧ください。

Standalone

Standalone版が配布されており、VimやEmacsなどのエディタでも利用可能です。ただし、記事公開時点で、Standalone版にはfilewatcher関連のバグがいくつかあります。

Termux Issue · Issue #75 · Kotlin/kotlin-lsp · GitHub

completion not working in MacOS · Issue #77 · Kotlin/kotlin-lsp · GitHub

macOSでlibfilewatcher_jni.dylib関連のエラーが出た際には、ReleasesページのZIPからインストールするのではなく、Homebrewからインストールすることで解消する可能性があるので試してみてください。Homebrewからのインストール方法はREADMEをご覧ください。

Kotlin LSPでできること

LSPの仕様に則り、さまざまな機能が提供されています。代表的なものを紹介します。

  • Code Completion
  • Hover
  • Rename
  • Go to definition (Kotlin, Kotlin builtins, Javaに対応)
  • Diagnostics
  • Code Actions (Quickfixes, Organize Imports, Go to references)
  • Semantic Tokens (Semantic Highlighting)

ホバーでKDocが表示されている様子

AI連携と生産性向上への期待

Kotlin LSPは、AIベースのコーディング支援ツールとの相性も抜群です。Coding Agentがより自律的に動けるようになります。

GitHub Copilotとの連携

Visual Studio CodeのGitHub Copilotと組み合わせると、シームレスにLSPのエラーも検知してコードを修正してくれます。

例えば、Kotlin 2.1から段階的に変更されるcopyメソッドの可視性に関するワーニングに対し、GitHub CopilotがLSPのDiagnosisを見て自動で @ConsistentCopyVisibility を付与してワーニングを解消してくれました。

Serena MCPとの連携

github.com

Serenaでは LSPを利用した意味的なコード分析をサポートしています。Kotlinコードでは、コミュニティ版Kotlin LSPである fwcd/kotlin-language-server を使うように実装されていますが、動作の保証はされていません。

公式のKotlin LSPが登場したことにより、コミュニティ版から乗り換えるPull Requestが出ていたりします。社内では、Serenaが公式Kotlin LSPで動作したとの報告もあり、期待が高まります。

触ってみた感想

初版リリース時は実用レベルには達していなかったKotlin LSPですが、第2版のリリースでゾンビプロセスの発生が抑制されたほか、Diskキャッシュレイヤーが新設されてメモリ使用量が削減されました。 Contract OneのリポジトリでKotlin LSPを使用すると、初版では10GB程度メモリを消費していましたが、第2版では6GBまで削減されました。

しかし、まだ改善の余地も多くあり、普段使いできるレベルには達していません。

  • 参照へのジャンプ: IntelliJのようなCmd + Clickでの参照表示機能はまだないため、いちいち右クリック -> Go to references しなければいけない。
  • インポートの追加: Quickfixesによるimport文の自動追加機能がない。
  • 保存時のフォーマット: Organize importsやFormattingの自動実行機能がない。

今後の展望

Kotlin LSPのロードマップが公開されており、さらなる機能拡充が予定されています。

  • Inlay Hintsへの対応 *2
  • Gradle + Kotlin Multiplatformのサポート
  • Refactoring (移動、シグネチャの変更) への対応
  • Code Formatting への対応
  • Windowsサポート
  • Visual Studio CodeのGUIでのアプリ実行およびデバッグの対応 *3

これらの機能が実現されれば、Kotlin LSPはさらに強力なツールとなり、JetBrains IDEに依存しない開発環境の選択肢が広がります。

まとめ

Kotlin LSPはゆっくりと着実に進化しており、Visual Studio CodeなどのエディタでのKotlin開発体験を大きく変える可能性を秘めていると感じています。特にAIとの連携による生産性向上は目覚ましく、今後の開発動向から目が離せません。

現状では足りない機能も多く、本格的なプロダクション利用には課題も残りますが、今後のアップデートによる機能拡充を期待しています。


Contract Oneでは、グロースフェーズで一緒に働いてくれる仲間を募集しています。カジュアル面談の応募をお待ちしています。

open.talentio.com

© Sansan, Inc.