プロトコルバッファ(Protobuf)フォーマッタ
ガイド
プロトコルバッファ(Protobuf)フォーマッタ
Protocol Buffers — Googleの言語ニュートラル、プラットフォームニュートラルなシリアライゼーション形式 — は、gRPCマイクロサービスからモバイルアプリAPIまであらゆるものを強化します。しかし、.protoファイルはすぐに乱雑になり、特に複数の開発者が同じスキーマ定義に触れる場合、その傾向が強くなります。一貫性のないインデント、ずれたフィールド番号、いい加減なフォーマットは、コードレビューを苦痛にし、差分を読みにくくします。
このフォーマッタは、.protoファイルをクライアントサイドで解析し、Googleのprotobufスタイル規約に従ったクリーンで一貫性のあるフォーマットで再出力します。データはブラウザから離れることはありません。
使い方
入力フィールドに.protoファイルの内容を貼り付けるか、.protoファイルを直接アップロードしてください。希望のインデント(2または4スペース)を選択し、protobuf構文バージョンを選択して、オプションでタグ番号によるフィールド並べ替えを有効にします。フォーマットされた出力は、シンタックスハイライト付きで即座に表示され、コピーまたはダウンロードの準備が整います。
特徴
- Proto2およびProto3のサポート – バージョンに応じたフォーマットルールで、両方の構文バージョンを処理します
- 設定可能なインデント – チームのスタイルに合わせるために、2スペースまたは4スペースのインデントを選択できます
- フィールド並べ替え – よりクリーンなスキーマのために、メッセージフィールドをタグ番号で並べ替えることができます
- 構文検証 – 不一致のブレース、無効なフィールド番号、欠落している構文宣言などの一般的なエラーを、行レベルのエラーレポートで検出します
- Syntax Highlighting – キーワード、型、文字列、コメント、フィールド番号のカラーコーディングされた出力
- クライアント側処理 – スキーマ定義はブラウザから離れることはありません
- 出力のダウンロード – フォーマットされた結果を.protoファイルとしてエクスポートします
このツールを使用するタイミング
バージョン管理に.protoファイルをコミットする前、コードレビュー中にスタイルの違いを正規化するため、または一貫性のないprotobuf定義を持つ新しいコードベースへのオンボーディング時にフォーマッタを使用してください。スキーマ移行ツールの自動生成された.protoファイルをクリーンアップするのにも便利です。
よくある質問
-
proto2とproto3構文の違いは何ですか?
Proto3は、requiredおよびoptionalフィールドラベル(デフォルトですべてのフィールドがoptional)、デフォルト値宣言の削除、拡張機能のAny型への置き換えにより、protobuf言語を簡素化しました。Proto3はJSONマッピングとマップのファーストクラス機能としてのサポートも追加しました。ほとんどの新しいプロジェクトでは、requiredフィールドやカスタムデフォルト値などのproto2固有の機能が必要ない限り、proto3を使用すべきです。
-
protobufフィールド番号はなぜ重要ですか?
Protocol Buffersのフィールド番号は、バイナリワイヤフォーマットでフィールドを識別するために使用されます。.protoファイルが使用されたら、フィールド番号を変更または再利用しないでください。そうすると、既存のシリアライズされたデータとの後方互換性が壊れます。番号1〜15はエンコーディングで1バイトを使用するため、頻繁に使用されるフィールドには効率のために低い番号を付けるべきです。範囲19000〜19999はprotobuf実装によって予約されています。
-
JSONと比較してProtocol Buffersを使用する利点は何ですか?
Protocol Buffersは、テキストではなくバイナリ形式を使用するため、JSONよりも大幅に小さいペイロード(JSONの3〜10倍小さい)を生成し、シリアライズおよびデシリアライズが高速です。また、厳密なスキーマを強制するため、実行時ではなくコンパイル時にデータ型のエラーを検出します。しかし、JSONは、人間が読めるAPI、ブラウザベースのアプリケーション、およびスキーマの柔軟性がパフォーマンスよりも重要な状況に適しています。
-
gRPCはProtocol Buffersをどのように使用しますか?
gRPCはProtocol Buffersをインターフェース定義言語(IDL)と基盤となるメッセージシリアライゼーション形式の両方として使用します。.protoファイルでサービスメソッドとメッセージタイプを定義し、protocコンパイラを使用してターゲット言語でクライアントおよびサーバーコードを生成します。gRPCは、ユニタリー(単一リクエスト-レスポンス)、サーバーストリーミング、クライアントストリーミング、双方向ストリーミングの4つの通信パターンをサポートしています。
-
protobufスキーマにおける後方互換性とは何ですか?
後方互換性とは、新しいバージョンの.protoスキーマを使用するコードが、古いバージョンでシリアライズされたデータを引き続き読み取ることができることを意味します。これを維持するには、既存のフィールド番号を変更したり、削除されたフィールド番号を再利用したり(代わりにreservedキーワードを使用)、新しいoptionalフィールドのみを追加したりしないでください。proto2でrequiredフィールドを削除したり、フィールドタイプを変更したりすると、互換性が壊れ、データの破損や解析エラーが発生する可能性があります。
恵 スコアボードが到着しました!
スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!
