Protocol BuffersにおけるOpen Struct APIとOpaque API
もともとProtocol BuffersのGo実装では構造体のメンバーに直接アクセスできるスタイルだった。2023年頃にOpaque APIという名前で、基本的にフィールドはプライベートとなっていてアクセサメソッドを使って参照するスタイルのAPIに移行することが発表された。このとき従来のAPIに(Opaque APIと対比する形で)Open Struct APIという名前が付いた。
新規で開発する場合は最初からOpaque APIを使えばいいが、既存のOpen Struct APIをマイグレーションする場合はハイブリッドな状態を挟むことが推奨されているらしい。ハイブリッドな状態では、何も指定しない場合はOpen Struct APIとしてビルドされる。Opaque APIに切り替えたいときは以下のコマンドを使う。
go build -tags=protoopaque移行の準備が整ったら、以下のコマンドでハイブリッドをやめてOpaque APIに完全移行する。
open2opaque setup