Protobuf定義パーサー

.proto定義テキストを解析し、メッセージ、Enum、サービスを視覚化。JSON SchemaやTypeScriptに変換します。

このツールについて

Protobuf定義パーサーは、Protocol Buffer(.proto)定義ファイルを 解析し、その構造をインタラクティブなツリービューで表示する無料のブラウザベース ツールです。Protocol Buffers(protobuf)はGoogleが開発した言語中立・プラットフォーム 中立のシリアライゼーションフォーマットで、gRPCサービス、マイクロサービス間通信、 データストレージなどで広く使用されています。複雑な.protoファイルを手動で 読み解く代わりに、このツールがすべてのメッセージ、フィールド、Enum、サービス、 RPC定義を数秒で構造化して視覚化します。

パーサーはproto3とproto2の構文に対応し、すべての構造要素を抽出します。型、 フィールド番号、repeatedoptionalrequiredなどのラベルを含む フィールド付きメッセージ、ネストされたメッセージ、値付きEnum、oneofグループ、 mapフィールド、クライアント・サーバーストリーミングを含むRPCメソッド付き サービス定義を処理します。フィールド型はスカラー型(int32stringboolなど)とメッセージ・Enum参照を区別してハイライト表示されます。

視覚化に加えて、protobuf定義を2つの有用な出力形式に変換できます。JSON Schema 出力は、protobufメッセージの構造を記述する標準準拠のJSON Schemaを生成します。 JSON Schema Generatorと併用して検証に利用できます。 TypeScript出力は、protobuf構造を反映した型安全なTypeScriptインターフェースと Enumを生成します。JSON to TypeScriptコンバーターと 同様のアプローチです。両方の出力はJSON YAML変換ツールで さらなる形式変換が可能です。

すべての解析とコード生成はブラウザ内でJavaScriptを使用して完全に実行されます。 .proto定義がお使いの端末から外に出ることはなく、サーバーとのやり取り、 ログ記録、サードパーティサービスの関与はありません。独自のAPI定義や内部 サービススキーマでも安全に使用できます。

使い方

  1. 左側のInputパネルに.proto定義テキストを貼り付けます。
  2. 入力しながら右パネルに解析結果が自動更新されます。
  3. Tree Viewをクリックして、メッセージ、Enum、サービスのインタラクティブな折りたたみ可能ツリーを表示します。
  4. JSON Schemaをクリックして、protobufメッセージのJSON Schema表現を生成します。
  5. TypeScriptをクリックして、定義からTypeScriptインターフェースとEnumを生成します。
  6. Basic MessagesE-Commerceプリセットボタンでサンプル.proto定義を読み込めます。
  7. CopyをクリックするかCtrl+Shift+Cを押して、生成された出力をクリップボードにコピーします。

人気のProtobuf定義例

すべての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ファイルに構文エラーがある場合どうなりますか?

パーサーは構文エラーを行番号付きで出力パネル上部の警告バナーに報告します。定義のできるだけ多くの部分を解析しようとするため、エラーが存在しても部分的な結果が表示される場合があります。一般的な問題には、セミコロンの欠落、閉じ括弧の不足、フィールド番号の欠落があります。

関連ツール