hiro99ma blog

proto: Buf CLI(かきかけ)

2025/07/15

はじめに

gRPC のプロジェクトがあり、”buf” というディレクトリがあった。
そういえば昔使ったことがあるけど忘れてしまった、というわけで記事にしている。

proto ファイルのちょっとした履歴管理と lint に使っていたような気がする。

インストール

これを書いている時点(2025/07/15)では v1.55.1 が最新だった。
インストール方法はいろいろあるが、私は GitHub の Releaseページからbuf-Linux-x86_64バイナリをダウンロードした。 assets がたくさんあって折りたたまれているファイルもあるので、開くとよいです。

$ buf --version
1.55.1

私の環境に 2年くらい前インストールしていたのが v1.28 だったので、まあまあバージョンが上がりやすいツールなのだろう。

始めてみよう

この Quickstart は 2025/07/15時点で Buf CLI v1.32.0 以上となっている。

書いてあるとおりにやれば良いのだが、最初に git clone する URL が SSH になっているので、 どうせ書き換えても pull request などするわけでもないから HTTPS でよいだろう。

$ git clone https://github.com/bufbuild/buf-examples.git && cd buf-examples/cli/quickstart/start/

image

最近の protoc

proto2 や proto3 があったが、その次の edition 2023 までは「Open Struct API」、さらに次の edition 2024+ から「Opaque API」になったそうだ。

インストールするものが変わるわけではないようだ。

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

Protobuf Editions

インストールガイドだけで判断するのは危険なので元を探そう。

“syntax” から “edition” への移植ガイドもある。
ドキュメントにあったコードの変更を WinMerge で見てみた(コメントは削除した)。

proto2

image

proto3

image

proto2 と 3 ってoptionalがデフォルトになったくらいのイメージしかなかったのだが、同じ edition に置き換えると違いがあることが分かるものだ。 今すぐどうこうということはないだろうけど、5年後くらいには「最新のプロジェクトなのにproto3なのかー」みたいなことになりそうな気はする。
バイナリ互換は保たれるようだし、新しいプロジェクトでは edition で初めて見るのもよいと思った。

prototiller

prototillerという変換ツールがある。
と思ったのだがprotocのv31.1をダウンロードしたが、そういう実行ファイルは無かった。 どうやら “prototiller” というのは通称のようなもので実装ガイド

proto2/3 からの移植だけでなく、edition のアップグレードなんかもあるのだろう。

おわりに

まとめたら。

writer: hiro99ma
tags: その他  

 < Top page

コメント(Google Formへ飛びます)

GitHub

X/Twitter

Homepage

About me