Protocol Buffers ツール
Protocol Buffers メッセージのエンコード、デコード、検証
Proto スキーマ
スキーマ情報
入力
スキーマを解析してメッセージタイプを選択し、フォームフィールドを生成します
出力
生フィールド
| フィールド番号 | ワイヤータイプ | 値 |
|---|
Protocol Buffers ドキュメント
Protocol Buffers とは?
Protocol Buffers(Protobuf)は、Google が開発した言語中立、プラットフォーム中立の拡張可能な構造化データシリアライゼーション機構です。データシリアライゼーションにおいて、XML や JSON よりも小さく、高速で、シンプルです。
主な特徴
- 言語中立・プラットフォーム中立
- XML/JSON より小さく高速
- スキーマ定義による強い型付け
- 前方互換性と後方互換性
- 自動コード生成
- 効率的なバイナリエンコーディング
このツールの使い方
- スキーマエディタに .proto スキーマ定義を入力
- 「スキーマを解析」をクリックしてスキーマを検証・解析
- 操作するメッセージタイプを選択
- エンコード時:JSON データを入力し、「エンコード」をクリック
- デコード時:バイナリデータを入力し、「デコード」をクリック
- 「生デコード」を使用してスキーマなしでバイナリデータを分析
ツール機能
エンコード
JSON データを Protocol Buffers バイナリ形式に変換。フォームベースの入力でデータ入力と型検証が簡単に。
デコード
Protocol Buffers バイナリデータを読み取り可能な JSON 形式に変換。Base64、16進数、C スタイル16進数入力形式をサポート。
生デコード
スキーマなしで protobuf バイナリデータを分析。デバッグ、リバースエンジニアリング、未知のメッセージ分析に便利。
フォーム入力
スキーマに基づいて入力フォームを生成するユーザーフレンドリーなインターフェース。ネストされたメッセージ、列挙型、繰り返しフィールドをサポート。
Proto 構文リファレンス
Protocol Buffers はメッセージタイプを定義するためのシンプルな構文を使用します:
syntax = "proto3";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phones = 4;
}
syntax: protobuf バージョン(proto2 または proto3)を指定message: フィールドを持つメッセージタイプを定義field: 各フィールドには型、名前、一意の番号があるenum: 列挙型を定義repeated: フィールドを繰り返し(配列/リスト)としてマークoptional: フィールドをオプションとしてマーク(proto3)
スカラー型
Protocol Buffers は様々なスカラー型をサポート:
| 型 | 説明 | デフォルト値 |
|---|---|---|
| int32, int64 | 符号付き整数(可変長エンコーディング) | 0 |
| uint32, uint64 | 符号なし整数 | 0 |
| sint32, sint64 | ZigZag エンコーディングの符号付き整数(負数に効率的) | 0 |
| fixed32, fixed64 | 固定幅符号なし整数(4 または 8 バイト) | 0 |
| sfixed32, sfixed64 | 固定幅符号付き整数(4 または 8 バイト) | 0 |
| float, double | 浮動小数点数(32 または 64 ビット) | 0.0 |
| bool | ブール値(true/false) | false |
| string | UTF-8 エンコードされたテキスト文字列 | "" |
| bytes | 任意のバイナリデータ | empty |
ワイヤータイプ
Protobuf はワイヤータイプを使用してバイナリデータから値を読み取る方法を決定します:
| ワイヤータイプ | 意味 | 用途 |
|---|---|---|
| 0 | Varint | int32, int64, uint32, uint64, sint32, sint64, bool, enum |
| 1 | 64-bit | fixed64, sfixed64, double |
| 2 | Length-delimited | string, bytes, embedded messages, packed repeated |
| 5 | 32-bit | fixed32, sfixed32, float |
ベストプラクティス
- 新しいプロジェクトには proto3 構文を使用 - よりシンプルで広くサポート
- フィールド番号を安定に保つ - 既存のフィールドの番号を再利用または変更しない
- データを明確に説明する意味のあるフィールド名を使用
- 頻繁に使用するフィールドには番号 1-15 を予約(1 バイトで済む)
- 配列/リストには 'repeated' キーワードを使用
- 可能な値の固定セットを持つフィールドには列挙型を定義
よくある質問
Protocol Buffers (Protobuf) とは何ですか?
Protocol Buffers は、構造化データをシリアル化するための言語に依存しない、プラットフォームに依存しない拡張可能なメカニズムです。JSON に似ていますが、より小さく、より高速で、ネイティブ言語バインディングを生成します。gRPC マイクロサービスで広く使用されています。
このオンライン Protobuf ツールの使い方は?
まず、`.proto` スキーマ定義をエディタに貼り付けます(またはサンプルをロードします)。「スキーマを解析」をクリックし、メッセージタイプを選択します。その後、「エンコード」(JSON → バイナリ)と「デコード」(バイナリ → JSON)モードを切り替えてデータを処理できます。
「生デコード (Raw Decode)」とは何ですか?
生デコードを使用すると、`.proto` ファイルがなくてもバイナリ Protobuf メッセージを検査できます。バイナリ構造を解析し、フィールド番号、ワイヤータイプ、値を表示します。これは、未知のパケットのデバッグやリバースエンジニアリングに非常に役立ちます。
データ処理は安全ですか?
はい。このツールは、JavaScript (protobuf.js) を使用してブラウザ内で 100% 実行されます。スキーマ、JSON データ、バイナリデータがサーバーに送信されることはなく、機密情報のプライバシーが確保されます。
一般的なユースケース
- マイクロサービス間通信(gRPC)
- データストレージとキャッシング
- 設定ファイル
- ネットワークプロトコルと API
参考資料
関連ツール
JSONフォーマッター
可読性とデバッグ向上のためにJSONデータをフォーマットおよび検証
スキーマからSQL DDLジェネレーター
CSV/JSONデータをSQL DDL CREATE TABLE文に変換、MySQL、PostgreSQLに対応、データ型を自動推論
JSON YAML変換ツール
JSONとYAML形式間の双方向変換、カスタムインデントとフロー/ブロックスタイルをサポート
Base64エンコーダ/デコーダ
テキストやファイルの変換をサポートし、Base64文字列を素早くエンコード/デコード
XML整形ツール
XMLデータを整形し、構文をハイライト表示して検証します
進数変換ツール
2進数、8進数、10進数、16進数間の変換、2-36の任意の基数をサポート