Protobuf 互換性チェッカー
.proto ファイルの二つのバージョンを比較し、wire 形式または JSON ですでに書き込まれたメッセージに影響する変更を見つけます。削除された番号、型の変更、フィールド名の変更、enum の変更をそれぞれ説明します。
各最大 1,000,000 文字の .proto ファイルを二つ受け付けます。トークンは最大 200,000 個、メッセージと enum は各 2,000 個、メッセージごとのフィールドは 10,000 個、メッセージのネストは 32 階層までです。比較はブラウザー内のバックグラウンドワーカーで実行されます。JSON レポートと検出事項一覧の CSV をダウンロードできます。 既存データの書き込みに使われたバージョン。変更後のファイルは New schema に貼り付けます。 最大1,000,000文字。 実行前に設定を確認してください。
処理結果
Protobuf 互換性チェッカー
- メイン欄に古い .proto ファイルを貼り付けます。
- New schema フィールドに新しいバージョンを貼り付けます。
- チェックを実行し、重大度の高い順に結果を確認します。
- JSON レポートまたは CSV 一覧をダウンロード
できること・制限
各最大 1,000,000 文字の .proto ファイルを二つ受け付けます。トークンは最大 200,000 個、メッセージと enum は各 2,000 個、メッセージごとのフィールドは 10,000 個、メッセージのネストは 32 階層までです。比較はブラウザー内のバックグラウンドワーカーで実行されます。JSON レポートと検出事項一覧の CSV をダウンロードできます。
重大度
互換性を損なう変更があると、古いプログラムと新しいプログラムでバイナリメッセージを誤読する可能性があります。例: 番号を予約せずにフィールドを削除する、予約範囲の番号を再利用する、wire エンコードが異なる型に変更する、単数と反復可能の間で変更する、メッセージまたは enum を削除する、enum 値の番号を変更する。JSON の互換性を損なう変更では、バイナリデータは引き続き使えますが、フィールド名や enum 値名の変更などにより JSON またはテキスト形式が変わります。警告は、wire 上は動作しても値を切り詰めたり別の意味に解釈したりする変更(int32 から int64 への変更など)、または oneof への追加・削除を示します。
比較方法
protobuf 言語ガイドのメッセージ更新規則に従い、メッセージと enum はパッケージ名を除いた名前で、フィールドは番号で照合します。ほかのメッセージ内にネストされたメッセージと enum も比較します。
未対応の内容
パーサーは、メッセージ、enum、oneof、map、ネスト型、予約済み番号と名前、フィールドオプションを含む proto2 および proto3 ファイルを読み取ります。import は一覧表示されますが解決されないため、他のファイルの型は名前だけで比較されます。edition、group、extension は拒否されます。service はスキップされます。