happytails.ai
日本語

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 互換性チェッカー
  1. メイン欄に古い .proto ファイルを貼り付けます。
  2. New schema フィールドに新しいバージョンを貼り付けます。
  3. チェックを実行し、重大度の高い順に結果を確認します。
  4. 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 はスキップされます。

次に使えるツール