2年の開発期間を経て Postgres Language Server がついに公開

BigGo Editorial Team
2年の開発期間を経て Postgres Language Server がついに公開

開発者コミュニティは、約2年間の開発期間を経て公開された Postgres Language Server という PostgreSQL 開発のための強力な新ツールを利用できるようになりました。このオープンソースの言語サーバーは、PostgreSQL の SQL 方言に対する自動補完、構文エラーのハイライト、型チェック、リンティングなどの重要な機能を提供します。

Postgres Language Server の GitHub リポジトリ。その開発とコミュニティの貢献を強調しています
Postgres Language Server の GitHub リポジトリ。その開発とコミュニティの貢献を強調しています

SQL 開発体験の課題を解決

Postgres Language Server は、PostgreSQL データベースを広範囲に扱う開発者のワークフローにおける大きなギャップを埋めるものです。このツールが登場する前は、開発者はリアルタイムのフィードバックなしに SQL を記述し、エラーを検出するためにマイグレーションを実行したり、スキーマ情報を手動で調べたりする必要がありました。この言語サーバーは SQL 開発に最新の IDE 機能をもたらし、開発者が実行前にエラーを検出できるようにします。

このプロジェクトが特に興味深いのは、SQL の解析へのアプローチです。共同開発者の一人がコメントで説明したように、彼らは根本的な課題に直面しました:PostgreSQL のパーサーは複雑で常に進化しているため、カスタムパーサーを作成することは現実的ではありません。さらに、言語サーバーは有効な SQL 文と不完全な SQL 文の両方を処理する必要があります。

「シンプルな解決策は、実際に2つのパーサーを使用することです - Postgres 自体が使用するオリジナルの libpg_query と、不完全な文のための tree-sitter を使用し、解析結果をマージします。これにより、診断のための実用的な AST と、例えば自動補完のための tree-sitter の CST の両方を取得できます。」

多用途な実装と統合

Postgres Language Server は汎用性を念頭に置いて構築されています。IDE 統合のために Language Server Protocol (LSP) を活用していますが、そのトランスポートに依存しない設計により、CLI、HTTP API、WebAssembly モジュールなど複数のインターフェースを通じて機能にアクセスできます。これにより、開発者の好みの環境に関係なくツールにアクセスできます。

このサーバーはすでにダウンロード可能なバイナリ、npm パッケージ、VSCode 拡張機能として利用可能であり、Neovim ユーザー向けには nvim-lspconfig と mason を通じてインストールすることができます。この幅広い利用可能性は、チームがツールをできるだけアクセスしやすくするという取り組みを示しています。

Postgres Language Server の機能:

  • オートコンプリート
  • 構文エラーのハイライト表示
  • 型チェック( EXPLAIN エラーインサイトを通じて)
  • リンティング( Squawk にインスパイアされた)

利用可能なインストール方法:

  • リポジトリからのバイナリダウンロード
  • npm パッケージ
  • VSCode 拡張機能
  • Neovim( nvim-lspconfig と mason を介して)

使用されている主要技術:

  • libpg_query( Postgres 自身のパーサー)
  • tree-sitter(不完全なステートメントを処理するため)
  • トランスポートに依存しない設計のサーバー・クライアントアーキテクチャ

将来の方向性とコミュニティへの影響

現在、この言語サーバーは SQL 文に焦点を当てていますが、開発者は将来的に関数本体や PL/pgSQL のサポートを拡大する計画を示しています。コミュニティはすでにバグの報告や改善の提案を始めており、開発者は問題に迅速に対応するという印象的な反応を示しています。

コミュニティメンバーが提起した特に興味深い可能性の一つは、様々なプログラミング言語に埋め込まれた SQL と言語サーバーを統合する可能性です。これにより、Python、Rust、TypeScript などの言語で書かれたコード内の SQL 文の静的チェックと自動補完が可能になります。この機能にはエディタ側のソリューションが必要ですが、開発者はワークスペース API での直接サポートのオプションを検討していると述べています。

トリガー、Row Level Security、SQL 関数などの PostgreSQL 機能を大いに活用するプラットフォームで作業する開発者にとって、このツールは開発体験の大幅な向上を表しています。構文エラーに関する即時フィードバックを提供し、スキーマ情報に基づく自動補完を提供することで、Postgres Language Server はデータベース開発ワークフローを合理化し、開発プロセスの早い段階で潜在的な問題を検出するのに役立ちます。

参考: Postgres Language Server | ![部分は画像の代替テキストです。 最後に、部分は画像のキャプションです。

これらを自然な日本語に翻訳し、英語の固有名詞(postgres-tools、CLI)の前後にスペースを入れます。

<Translate_Data> この画像は、SQL クエリに関連するエラーメッセージを表示するコマンドラインインターフェイス(CLI)の出力を描写しており、開発体験の向上や様々なプログラミング言語との潜在的な SQL 統合についての議論と直接関連しています。新しい言語サーバーツールを使用した実用的な例を示しています。

「 postgres-tools 」 CLI からのエラー出力で、SQL 構文チェックと型検証の実用的な適用を強調しています](https://img.bgo.one/news-image/202503291915_postgres-language-server-launches_1.jpg)
*部分は画像のキャプションです。

これらを自然な日本語に翻訳し、英語の固有名詞(postgres-tools、CLI)の前後にスペースを入れます。

<Translate_Data> この画像は、SQL クエリに関連するエラーメッセージを表示するコマンドラインインターフェイス(CLI)の出力を描写しており、開発体験の向上や様々なプログラミング言語との潜在的な SQL 統合についての議論と直接関連しています。新しい言語サーバーツールを使用した実用的な例を示しています。 「 postgres-tools 」 CLI からのエラー出力で、SQL 構文チェックと型検証の実用的な適用を強調しています