Protobuf定義パーサー
.proto定義テキストを解析し、メッセージ、Enum、サービスを視覚化。JSON SchemaやTypeScriptに変換します。
このツールについて
Protobuf定義パーサーは、Protocol Buffer(.proto)定義ファイルを
解析し、その構造をインタラクティブなツリービューで表示する無料のブラウザベース
ツールです。Protocol Buffers(protobuf)はGoogleが開発した言語中立・プラットフォーム
中立のシリアライゼーションフォーマットで、gRPCサービス、マイクロサービス間通信、
データストレージなどで広く使用されています。複雑な.protoファイルを手動で
読み解く代わりに、このツールがすべてのメッセージ、フィールド、Enum、サービス、
RPC定義を数秒で構造化して視覚化します。
パーサーはproto3とproto2の構文に対応し、すべての構造要素を抽出します。型、
フィールド番号、repeated・optional・requiredなどのラベルを含む
フィールド付きメッセージ、ネストされたメッセージ、値付きEnum、oneofグループ、
mapフィールド、クライアント・サーバーストリーミングを含むRPCメソッド付き
サービス定義を処理します。フィールド型はスカラー型(int32、string、
boolなど)とメッセージ・Enum参照を区別してハイライト表示されます。
視覚化に加えて、protobuf定義を2つの有用な出力形式に変換できます。JSON Schema 出力は、protobufメッセージの構造を記述する標準準拠のJSON Schemaを生成します。 JSON Schema Generatorと併用して検証に利用できます。 TypeScript出力は、protobuf構造を反映した型安全なTypeScriptインターフェースと Enumを生成します。JSON to TypeScriptコンバーターと 同様のアプローチです。両方の出力はJSON YAML変換ツールで さらなる形式変換が可能です。
すべての解析とコード生成はブラウザ内でJavaScriptを使用して完全に実行されます。
.proto定義がお使いの端末から外に出ることはなく、サーバーとのやり取り、
ログ記録、サードパーティサービスの関与はありません。独自のAPI定義や内部
サービススキーマでも安全に使用できます。
使い方
- 左側のInputパネルに
.proto定義テキストを貼り付けます。 - 入力しながら右パネルに解析結果が自動更新されます。
- Tree Viewをクリックして、メッセージ、Enum、サービスのインタラクティブな折りたたみ可能ツリーを表示します。
- JSON Schemaをクリックして、protobufメッセージのJSON Schema表現を生成します。
- TypeScriptをクリックして、定義からTypeScriptインターフェースとEnumを生成します。
- Basic MessagesやE-Commerceプリセットボタンでサンプル
.proto定義を読み込めます。 - CopyをクリックするかCtrl+Shift+Cを押して、生成された出力をクリップボードにコピーします。
人気のProtobuf定義例
よくある質問
どのprotobuf構文バージョンに対応していますか?
パーサーはproto3とproto2の両方の構文に対応しています。syntax宣言、メッセージ、Enum、サービス、oneofグループ、mapフィールド、repeated/optional/requiredラベル、ネストされた定義を認識します。proto3が推奨され、最も一般的に使用されるバージョンです。
JSON Schema変換はどのように動作しますか?
各protobufメッセージはJSON Schemaのオブジェクト型に変換されます。スカラー型はJSONの対応する型にマッピングされます(int32/int64はintegerに、double/floatはnumberに、stringはstringに、boolはbooleanに、bytesはbase64エンコーディング付きstringに)。repeatedフィールドは配列に、mapフィールドはadditionalProperties付きオブジェクトに、enumフィールドはstring enumになります。
TypeScript変換はどのように動作しますか?
各protobufメッセージは適切に型付けされたフィールドを持つTypeScriptインターフェースに変換されます。スカラー型はTypeScriptのプリミティブにマッピングされます(number、string、boolean、bytes用のUint8Array)。repeatedフィールドは配列に、mapフィールドはRecord型に、EnumはTypeScript enumになります。oneofグループはオプショナルなユニオン型として表現されます。
ネストされたメッセージとEnumに対応していますか?
はい。パーサーは任意の深さのネストされたメッセージとEnum定義を完全にサポートしています。ツリービューでは、ネストされた型は親メッセージの下に折りたたみ可能な子ノードとして表示されます。JSON Schema出力ではネストされた型はインラインで解決され、TypeScript出力ではネストされたEnumとインターフェースが親インターフェースと並んで生成されます。
gRPCサービスとストリーミングRPCはどのように表示されますか?
サービスはツリービューでRPCメソッドとともに表示されます。クライアントストリーミング(入力のstreamキーワード)とサーバーストリーミング(出力のstreamキーワード)は明確に示されます。TypeScript出力では、ストリーミングRPCはストリームパラメータと戻り値にAsyncIterable型を使用します。
データは安全ですか?
はい。すべての解析とコード生成はJavaScriptを使用してブラウザ内で完全に実行されます。データがサーバーに送信されることはありません。ツール使用中にブラウザの開発者ツールのネットワークタブで確認できます。
.protoファイルに構文エラーがある場合どうなりますか?
パーサーは構文エラーを行番号付きで出力パネル上部の警告バナーに報告します。定義のできるだけ多くの部分を解析しようとするため、エラーが存在しても部分的な結果が表示される場合があります。一般的な問題には、セミコロンの欠落、閉じ括弧の不足、フィールド番号の欠落があります。