it.xnews.jp
生成: 2026-07-23 読了 約 3 分 model: claude-haiku-4-5 原文: https://jointhefreeworld.org/blog/articles/emacs/emacs-eglot-scala-kotlin/index.html raw.md

Emacs 29のEglotでScalaとKotlin開発が可能に

Emacs 29でLanguage Server Protocol (LSP)クライアントのEglotが標準搭載されたことで、JVM言語の開発環境が大きく変わろうとしている。軽量で高速なEglotを使用することで、従来のように重厚なIntelliJ IDEAに依存せず、Scala、Kotlin、Javaの開発が可能になった。

Emacs 29はEglotを組み込みのデフォルトLanguage Server Protocol (LSP)クライアントとして採用した。Eglotは軽量で高速であり、Emacsの哲学に厳密に準拠している。従来、JVM言語、特にScalaやKotlinでの開発にはIntelliJ IDEAが標準とされてきたが、IntelliJ IDEAは8GB+のRAMを頻繁に消費する大規模で単一構造のJavaアプリケーションである。

Eglot設定とJVM言語サポート

著者はheks-emacs設定の一部として本番環境対応のEglot構成を使用しており、日々の業務でScalaおよびKotlin(および一部Java)を使って開発している。Metals言語サーバーは-Xmx4Gおよび-XX:+UseZGCなどのJVMチューニングフラグで設定でき、Bloop JVMプロパティではヒープサイズ4GBが設定される。Kotlin言語サーバーは--stdioオプション付きのintellij-serverを使用できる。

Metals言語サーバーは推論型とパラメータ型のインレイヒントに対応している。一方、Kotlin LSPは依存関係をトラバースする際にファイル参照をjar:///path/to/library.jar!/File.kt形式で返す。このJAR URI形式への対応にはjarchiveパッケージが機能する。

開発環境構築とNix Flakes

著者はグローバルなJDK インストールに代わってNix flakesを使用して分離された開発環境を構築している。Kotlin開発用flakeにはktfmt、ktlint、kotlin、jdk25、nil、just、yaml-language-serverが含まれる。Scala開発用flakeにはscala_2_13、jdk25、metals、sbt、scalafmt、scalafix、scala-cli、yaml-language-server、coursierが含まれている。

著者はdirenvと.envrcファイルを使用してflake設定を読み込んでいる。eglot-javaパッケージはEclipse JDT LSのワークスペース設定を提供する。なお、Metals意味的リフレッシュの無効化により、Metalsの起動に関する問題が解決される可能性がある。

この記事は元記事の事実のみに基づいて自動生成されました。

出典

jointhefreeworld.org「Emacs Eglot for Scala and Kotlin (JVM)」https://jointhefreeworld.org/blog/articles/emacs/emacs-eglot-scala-kotlin/index.html

この記事をシェア