Protobuf は LSP をサポートしています。ご自由にご利用ください。

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 がどのようにサポートできるかお気軽にお問い合わせください。優れた開発者ツールづくりに興味をお持ちの場合は、キャリアページをご覧ください。

同じ日のほかのニュース

一覧に戻る →

2026/08/17 2:01

第 3 の世界組み込みエンジニアによる「RISC-V はもっと慎重だったべきだ」という批判への回答

## Japanese 翻訳: RISC-V は、ライセンス料という障壁によって競合他社(ARM など)が妨げられることなく、シームレスなスケーラビリティを提供するオープンアーキテクチャを有しているため、安価なマイクロコントローラー市場で支配的になると位置づけられています。Dmitry Grinberg 氏の「RISC-V:彼らはもっとよく知るべきだった」と題した論文に触発された議論において、トリニダード・トバゴ在住の組み込みエンジニアである Armstrong Subero は、Grinberg 氏の批判が発展途上国における重要な経済的現実を見落としていることを指摘しています。Grinberg 氏が安価なマイクロコントローラーへの要件を正しく特定したことは事実ですが、彼は単一の ISA(指令セットアーキテクチャ)内で低エンドおよび高エンドのニーズの両方を満たす RISC-V の能力を見積もり低估していました。Subero は、ARM が仮想メモリーといった高度な機能のためにユーザーがコアファミリーを切り替える必要(Cortex-M から Cortex-A など)とし、これには高額なロイヤルティ、販売交渉、そして多くの場合主要な小売業者での ID 検証の障壁を含む長いリードタイムが必要とされると反論します。一方、RISC-V は MMU や権限分離といった機能能力を、同じアーキテクチャ内のオプション拡張として扱い、契約上の壁を取り除いています。Subero は、アクセシビリティは単に技術的な設計のみならず経済的実現可能性にもよることを強調しています。発展途上地域へのチップの運搬コスト(他の地域で「送料無料」であるのに対して 60〜200 ドル)が、学生のアクセスを著しく妨げていると指摘します。Subero は、フラグメンテーションという主張に対し、具体的な RISC-V インプレメンテーションを挙げ反論しています:10 セントの CH32V003(RV32EC)、USB 3.2 Gen1 とイーサネットを搭載した高級二コアの CH32H417、そして Linux/seL4/Xous を実行する Baochip-1x SoC です。Subero は、このスタック全体の専門知識を習得するために運搬費だけで 100 ドル未満で達成でき、価格と入手可能性での勝利がグローバルアクセシビリティに決定的要因であることを示しています。AI 主導の需要が高騰させるにつれて ARM ライセンスコストが上昇する中、RISC-V は、発展途上国のエンジニアがアーキテクチャ的な妥協や金銭的ペナルティなしに高度な機能にアクセスすることを可能にする、より包摂的な代替案として登場しています。

2026/08/16 21:48

Claude: システムプロンプト

## Japanese Translation: 入力テキストは「Loading」文字列の繰り返しのみを含んでおり、実際のニュース、記事の内容、または物語構造を提供していません。したがって、関連する背景を確立するための日付、製品名、IT 詳細、または特定のデータポイントはいっさい含まれていません。テキストが実質的な情報を欠いているため、予測、将来の展開、または後続事件を示すことも、ユーザー、企業、あるいはより広い業界に対する含意を特定することもできません。その結果、情報提供レポートではなく汎用的なステータスインジケーターとなっています。

2026/08/13 21:44

90年代の SIMD:Intel の Pentium MMX をプログラミングする

## Japanese Translation: インテルの MMX テクノロジーは、1997 年に Pentium MMX プロセッサと同時に出荷され、パックされた整数演算および固定点数学のための新しい 57 の命令を追加することでマルチメディア性能を強化することを目的として設計されました。これは、既存の x87 フローティングポイントレジスタの下位半分を再利用して作成された 8 つの 64 ビットレジスタ(MM0–MM7)を利用していました。この設計により、MMX 操作と標準的なフローティングポイントコードの間で厳格な排他性が強制され、MMX の使用後にプログラマーがこれらの共有リソースをクリアし、通常の計算に戻る前にバグを防ぐために `EMMS` 命令を実行する必要がありました。独自のベクトルレジスタを備えた純粋な SIMD アーキテクチャとは異なり、MMX は共有された FP ステートへの依存関係により、重大な制約を招きました。 AMD などの競合他社は、SIMD アプローチを用いてインテルに対抗しようとしましたが(3DNow!、1998 年)、最終的にはインテルの優位性と、CPU 側のマルチメディアタスクの多くを引き継ぐ専用グラフィックハードウェア(例:Voodoo カード)の急成長により市場での牽引力を失いました。MMX は、128 ビットレジスタとネイティブなフローティングポイントサポートをもたらした、より優れた SSE 命令セットによって 1999 年および 2000 年に置き換えられました。その限界と最終的な時代遅れに尽管如此、MMX はベクトル化演算とデータ並列プログラミングのための基礎概念を確立し、現代的な CPU アーキテクチャへの道を整えました。