
2026/08/17 3:48
Protobuf は LSP をサポートしています。ご自由にご利用ください。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
原文の要約は、発表から技術的な詳細へ、そして今後の改善へと論理的に流れを続け、重要なハイレベル情報を欠かさずにキーポイント一覧の内容を正確に反映しており、よく書かれています。
Text to translate:
Repeat the original. The original summary is well-written, flows logically from the announcement to technical specifics and then to future improvements, while accurately reflecting the content of the Key Points List without missing critical high-level information.
本文
Buf、初のフル機能かつ本番環境対応 Protobuf LSP サーバーをリリース
Buf は、初のフル機能かつ本番環境で利用可能な Protobuf 向けの LSP(Language Server Protocol)サーバーを発表しました。
LSP とは何か?
LSP は、VSCode や IntelliJ、Neovim などの現代の IDE に言語サポートを統合するための標準的な APIです。具体的には以下のような高度な機能を提供します。
- 定義へ移動(Go to definition)
- コード補完(Autocompletion)
- 参照の検索(References)
- 文脈に応じた構文ハイライト
Protobuf エコシステムの画期的展開
長らく LSP サポートが欠けていた Protobuf ですが、この状況は開発者にとって画期的な転換点です。Buf CLI に搭載された LSP サーバーにより、Protobuf も現代の IDE における不可欠なサポートを確立しました。
Buf は、既存のライブラリやツールのエコシステムを備えている理由から、Protobuf を最高のスキーマ言語であると信じています。単に賢明な選択肢としてではなく、最も扱いやすいものにするため、LSP サーバーを開示し、以下の Buf ツールファミリーの一員としました。
- Protovalidate
- ConnectRPC
- Buf Schema Registry
- Protobuf-ES(Chromium 採用中)
どのプロジェクトやユースケースにおいても、Protobuf を選択することが容易で明確な選択肢となるよう尽力しています。
試してみる方法
1. Visual Studio Code (VSCode)への導入
VSCode は現在最も人気のあるグラフィカルエディタの一つであり、優秀な LSP サポートを備えています(LSP も VSCode から発祥)。Buf LSP を使用するには以下の手順のいずれかを行ってください。
- Buf エクステンションをインストール
- 既にインストールされている Buf CLI のバージョン(LSP サーバーがバンドルされたもの)が自動的に使用されます。
- CLI が未インストールの場合は、自動でインストールされます。
2. Neovimへの導入
Neovim は Buf のエンジニアたちが最も愛用しているエディタです。Buf LSP もここで素晴らしいパフォーマンスを発揮します。
必要なことは、Buf CLI をインストールし、Neovim でそれを LSP サーバーとして設定することだけです。
事前準備:nvim-lspconfig
既定の LSP 設定オプションを提供する
nvim-lspconfig リポジトリをインストールしておいてください。
設定方法
以下のいずれかの方法で設定を行います。
方法 A: .nvimrc ファイルへ追加
.nvimrc ファイルに以下の行を追加します:
lspconfig.buf_ls.setup {}
方法 B: init.lua(または設定ファイル)へ追加
init.lua のどこかへ以下を追加することもできます:
vim.lsp.config('buf-lsp', { cmd = { 'buf', 'lsp', 'serve' }, filetypes = { 'proto' }, root_markers = { 'buf.yaml', '.git' }, })
有効化
設定ファイル(
.nvimrc)で以下のコマンドを実行して LSP を有効化します:
vim.lsp.enable('buf-lsp')
さらに詳しい情報は Neovim Wiki でご参照ください。
注:他のエディタを使用している場合は、そのエディタにおける LSP の統合方法を確認し、サーバープロセスを起動する
コマンドが実行されるよう設定してください。buf lsp serve
技術的背景と利点
Buf はすでに Protobuf コンパイラのフロントエンド(ファイル解析やプラグイン呼び出しを行う部分)を維持しており、これを protocompile と呼んでいます。この実装は:
- 完全に準拠している
よりもはるかに高速で柔軟性があるprotoc
その高い性能から、Google も大規模なコードベースの一部において
protoc と併用しています。
Buf LSP を構築する際、私たちは protocompile を次のレベルに引き上げました:
- 新しいクエリ駆動型のフロントエンドを開発
- インクリメンタルコンパイルを実現
- 診断機能を大幅に向上
具体的な改善例
protoc とは異なり、重複した repeated 修飾子を正しく診断できます。
error: encountered more than one type modifier --> testdata/parser/type/repeated.proto:23:14 | 23 | repeated repeated M x4 = 4; | -------- ^^^^^^^^ help: consider removing this | | | first one is here
なぜ重要なのか?
- 新しい AST と中間表現の実装:FileDescriptorProto を使用せず、エラーを正確に診断します。
- 柔軟性の向上:Protobuf に追加される新機能(例:2024 年版など)の実装が容易になります。
- メモリー効率:非常に大規模な Buf モジュールを含むワークスペースも処理可能です。
今後の展望とコミットメント
Buf LSP の開発は止まりません。常に診断機能を改善し、LSP サーバーにさらに多くの機能を追加する予定です。
次期機能
- インポートの自動修復
とのより密接な連携(例:モジュールの自動インポート)buf.yaml- カスタムオプションへのコード補完および参照検索
- フィールドまたは列挙値番号の自動提案
- Protovalidate 専用サポート、CEL スニペット用の構文ハイライトを含む
Buf では、みなさんが Protobuf で成し遂げられることの限界を常に押し広げ続け、すべての人にとってスキーマ駆動型開発を可能にします。
組織内のデータに関する基準の強制についてご支援をご希望の場合は、Buf がどのようにサポートできるかお気軽にお問い合わせください。優れた開発者ツールづくりに興味をお持ちの場合は、キャリアページをご覧ください。