使い方
「変更前(古い定義)」に古い .proto、「変更後(新しい定義)」に新しい .proto を貼るか、「ファイルを開く」で読み込みます。「サンプルで試す」でも確かめられます。
1 つだけ確かめたいときは「定義を確認」を押します(左の欄を読みます)。2 つを比べるときは「差分を調べる」を押します(Ctrl または ⌘ + Enter も使えます)。
確認では、メッセージ・フィールド(番号・型・ラベル)・enum・service と rpc の一覧と、行番号つきの指摘が出ます。差分では、破壊的変更の候補・注意・安全な変更が出ます。
「Markdown をコピー」で PR の説明に貼れる表にできます。「JSON を保存」では、判定・件数・変更の一覧を保存します。
できること
定義の一覧
package・import・message(入れ子)・enum・oneof・map・service と rpc(stream)を読み、フィールドの番号・型・ラベルを一覧にします。
行番号つきの指摘
番号の範囲外(1〜536870911)・予約の 19000〜19999・番号と名前の重複・reserved の再利用・proto3 の enum の先頭・未定義の型などを行番号で示します。
互換性の区分
フィールド番号の変更、番号の使い回し、型の変更、ラベルの変更、削除したフィールドを reserved にしていないことを「破壊的」にまとめます。int32 と int64 などの互換の組は「注意」にします。
判定の理由を各行に
どの規則でその区分にしたかを行ごとに書きます。規則の一覧も画面で読めるので、レビューの根拠にできます。
ブラウザの中だけで処理
.proto は送信せず、ブラウザの中だけで解析します。import 先のファイルを取りに行くこともしません。
こんなときに
- proto を変更する PR で、フィールド番号の変更や型の変更がないかを確かめたい
- 削除したフィールドを reserved にしたかを、一覧で確認したい
- 番号の重複・範囲外・予約番号の再利用を、コードを生成する前に行番号つきで見つけたい
- 社内の proto 定義を外部に送らずに、旧新の互換性を調べたい
対応形式
入力
出力
対応状況
| 機能 | 対応 | 補足 |
|---|---|---|
| .proto の読み込み(proto2・proto3・editions の syntax・edition 行) | 対応 | — |
| package・import・message(入れ子)・enum・oneof・map・service と rpc(stream)の一覧 | 対応 | — |
| フィールドの番号・型・ラベル(optional・repeated・map)の一覧 | 対応 | — |
| 指摘: 番号の範囲・予約の番号・重複・reserved の再利用・proto3 の enum・名前の重複・未定義の型 | 対応 | protoc の検査と完全には一致しません。読んだ範囲の指摘です |
| 旧新の比較: 番号・型・ラベル・削除・reserved・enum・rpc | 対応 | ワイヤー上の互換の考え方による判定です。実際のデータや読む側のコードは分かりません |
| extend・proto2 の group | 一部対応 | extend は読み飛ばして注記します。group は読めない行として示します |
| oneof の入れ替えと、option の値の比較 | 非対応 | 比べません |
| import 先のファイルや型の確認 | 非対応 | 取得しません。import 先の型は「確認できない」と注記します |
| バイナリのデコード(binary_data_studio をご利用ください) | 非対応 | — |
| コード生成・protoc の実行 | 非対応 | — |
| オフラインでの利用 | 対応 | 一度開いたあとは通信なしで動作します |
制限・注意事項
- 1 つの .proto は 30 万文字まで。ファイルは 1 MB まで読み込みます。
- 一覧と指摘は全件を数えたうえで画面に出します。
- 判定は互換性の一般的な考え方によるもので、API ごとの方針によって変わります。
プライバシーと安全性
.proto はお使いのブラウザの中だけで解析し、送信も保存もしません。ページを閉じると内容は消えます。analytics には、入力の中身や件数を含まない実行の記録だけを送ります。
よくある質問
フィールド番号を変えると何が起きますか?
int32 を int64 に変えても大丈夫ですか?
削除したフィールドはどう扱えばよいですか?
import 先の型は確認できますか?
バイナリのデータは読めますか?
関連ツール
JSON→型・Schema生成(Schema Codegen)
JSON のサンプル・JSON Schema・OpenAPI を貼ると、10 種類の形式の型定義を生成します。複数のサンプルを並べると、省略されるキーや型の違いも推論します。データは端末の外へ送信しません。
Binary Data Studio(バイナリビューア・16進ダンプ)
ファイルをドロップすると、オフセット・16 進・文字欄の 16 進ダンプで開きます。巨大なファイルも見えている範囲だけを読むので固まらず、データは端末の外へ送りません。検索・値の解釈・比較・書き出しまで 1 画面でできます。
OpenAPI 差分・破壊的変更チェック
変更前と変更後の OpenAPI(または Swagger 2.0)を貼るだけで、クライアントが壊れる破壊的な変更を一覧します。パスの削除・必須項目の追加・型の変更などを「破壊的」「注意」「非破壊」に分け、各行に判定の理由を付けます。定義はブラウザの外へ送りません。
AsyncAPI 確認・イベント API 差分チェック
AsyncAPI の YAML・JSON を貼るだけで、サーバー・チャンネル・操作・メッセージの一覧と、解決できない $ref や使われていない components の指摘を行番号つきで出します。旧と新を比べると、チャンネルや操作の削除、payload の項目の削除や必須化などの候補を示します。定義はブラウザの外へ送りません。
GraphQL スキーマ確認・破壊的変更チェック
GraphQL の SDL(schema.graphql)を貼るだけで、型・フィールド・引数の一覧と、未定義の型などの指摘を行番号つきで出します。旧と新の 2 つを比べると、フィールドの削除や引数の必須化など、破壊的変更の候補を安全な変更と分けて示します。定義はブラウザの外へ送りません。
テキスト・コード Diff
変更前と変更後を貼り付けるかファイルをドロップするだけで、追加・削除された行と、行の中で変わった単語まで色分けして表示します。結果は unified 形式のパッチとしてコピー・保存でき、入力はブラウザの外へ出ません。
最終更新: