CoderTools

Protocol Buffers ツール

Protocol Buffers メッセージのエンコード、デコード、検証

Proto スキーマ

サンプルスキーマ:

入力

スキーマを解析してメッセージタイプを選択し、フォームフィールドを生成します

出力

Protocol Buffers ドキュメント

Protocol Buffers とは?

Protocol Buffers(Protobuf)は、Google が開発した言語中立、プラットフォーム中立の拡張可能な構造化データシリアライゼーション機構です。データシリアライゼーションにおいて、XML や JSON よりも小さく、高速で、シンプルです。

主な特徴

  • 言語中立・プラットフォーム中立
  • XML/JSON より小さく高速
  • スキーマ定義による強い型付け
  • 前方互換性と後方互換性
  • 自動コード生成
  • 効率的なバイナリエンコーディング

このツールの使い方

  1. スキーマエディタに .proto スキーマ定義を入力
  2. 「スキーマを解析」をクリックしてスキーマを検証・解析
  3. 操作するメッセージタイプを選択
  4. エンコード時:JSON データを入力し、「エンコード」をクリック
  5. デコード時:バイナリデータを入力し、「デコード」をクリック
  6. 「生デコード」を使用してスキーマなしでバイナリデータを分析

ツール機能

エンコード

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, sint64ZigZag エンコーディングの符号付き整数(負数に効率的)0
fixed32, fixed64固定幅符号なし整数(4 または 8 バイト)0
sfixed32, sfixed64固定幅符号付き整数(4 または 8 バイト)0
float, double浮動小数点数(32 または 64 ビット)0.0
boolブール値(true/false)false
stringUTF-8 エンコードされたテキスト文字列""
bytes任意のバイナリデータempty

ワイヤータイプ

Protobuf はワイヤータイプを使用してバイナリデータから値を読み取る方法を決定します:

ワイヤータイプ 意味 用途
0Varintint32, int64, uint32, uint64, sint32, sint64, bool, enum
164-bitfixed64, sfixed64, double
2Length-delimitedstring, bytes, embedded messages, packed repeated
532-bitfixed32, 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

参考資料

クイックメニュー

最近のツールはありません