Open2

Buf でのモジュールの単位

かんなかんな

protobuf を1つのリポジトリで管理している場合、Buf の module はどの単位でつくるとよいのだろうか?

例えば google みたいな構成だったとする。Buf もこのような <organization>/<service>/<version> という構成を推奨している。
googleapis/google at master · googleapis/googleapis
Buf - Files and packages

protobuf-repo
└── google
    └── service1
    │   └── v1
    │       └── hoge.proto
    └── service2
        └── v1
            └── hoge.proto

以下のように package を定義したとき、module root からの相対パスとして扱われる(Buf - Files and packages)。
つまり protobuf-repo 全体が一つの module ということになる。
まあこれでよい、ということなのかもしれない。
Workspace という概念があるが、これはいつ使うの?という気もする。
Buf - Workspaces: organize multiple modules

package google.service1.v1;

Buf - Workspaces: organize multiple modules
Buf - Files and packages
Buf - Modules: Buf's key primitive

かんなかんな

module はバージョニングの単位となるので、それを基準にモジュールの粒度を決めるのが良さそう。
これは正解はないだろう。自分の組織にあった構成にするというだけ。