Protobuf 修正ツール
壊れた .proto ファイルをオンラインで修復 — 抜けたセミコロン、閉じていない波括弧、誤った syntax 宣言、タグエラーを修正。
Protobuf 修正ツールとは?
.proto ファイルが壊れた? protoc はセミコロン 1 つの抜け、閉じられていない message 本体、はぐれた波括弧 1 つで落ちて、見つけるまで残りのファイルが使い物にならなくなります。このツールは壊れた Protocol Buffers スキーマを読んで自動的に直します — 貼り付けるとクリーンな版が返ってきます。
まず protoc がつまずく箇所をチェックします: 先頭の syntax = "proto3"; の欠落、フィールド行のセミコロン抜け、ネストした message/enum 本体での {} の不一致、引用符や import の問題。出力は公式の proto3 言語ガイド と proto3 文法リファレンス に従っているので、返ってくるのは protoc が実際に受け入れるスキーマです。
ファイルアップロードもスキーマ共有もなし — .proto はこのタブから出ません。数秒で直してバインディング生成に戻れます。
Protobuf 修正ツールの使い方
3 ステップ。リポジトリから引っ張ってきたスキーマ、コードレビューからコピーしたもの、手で編集して壊してしまったものに対応します。
壊れた .proto を貼り付けるかサンプルを読み込む
壊れたスキーマを左のエディタにドロップ。サンプル .proto を押すと、典型的なミス入りのサンプルが読み込まれます — フィールド後のセミコロン抜け、閉じない message 本体、syntax 行のセミコロン抜け。壊れた proto の例:
syntax = "proto3"
message LineItem {
string sku = 1;
int32 quantity = 2
double unit_price = 3;ここでは 2 つのエラー: syntax 宣言の後にセミコロンがない、LineItem ブロックが閉じていない。両方とも修正ツールが直す典型例です。
「Protobuf を修正!!」をクリック
緑の Protobuf を修正!! ボタンを押します。修正ツールはスキーマを読み、抜けたセミコロンを補い、{} 波括弧のバランスを取り、syntax 宣言を正規化し、import を正しく引用符で囲みます。フィールドタグ、名前、型はそのまま残します。
修正された出力を確認
右ペインに修復済みの .proto があります。プロジェクトに戻して protoc を実行し確認してください。RPC サービスを駆動するスキーマなら、バインディング生成前に Protobuf バリデータ でも結果を確認しましょう。すべてブラウザ内で動きます — スキーマは保存されません。
実際にこれを使うとき
手で編集したスキーマを救出する
新しいフィールドを追加していて波括弧をうっかり消してしまい、protoc が 3 つ下のメッセージでエラーを出している。ファイルを貼り付けて波括弧を戻して先に進みましょう — 400 行のスキーマを目視で追い回すかわりに。
LLM が生成した .proto を直す
LLM に JSON サンプルから .proto を書かせた? 構造はだいたい正しいけれど syntax = "proto3"; を忘れたり、セミコロンを落としたり、markdown のコードフェンスで囲んできたりします。修正ツールがそれらを片付けます。
雑なマージ後の修復
競合マーカーが雑に解決され、.proto がコンパイルできない。修正ツールに通して構造を組み直せば、構文と戦うかわりに Git で本来のセマンティックな差分をレビューできます。
ログやドキュメントからスキーマを復元
wiki ページ、古い PR の説明文、スクリーンショットの OCR から .proto を引っ張り出した? テキストには紛れ込んだ文字や崩れたインデントがつきものです。修正ツールが protoc の通る形に戻します。
よくある質問
私の .proto ファイルはどこかに保存・送信されますか?
スキーマは修復実行のためだけにバックエンドに送られ、保持はしません — レスポンスが返ったら消えます。あなたのデータと一緒にログを残すこともなく、リクエスト経路にサードパーティのトラッカーもありません。機微なスキーマ(社内サービス、未公開 API)なら、公開バグレポートで共有するときと同じように、貼り付け前に識別子を伏せてください。
実際にどんな種類のエラーを直しますか?
protoc がはじく一般的なもの: syntax 宣言の欠落や誤り(無ければ syntax = "proto3"; を追加)、フィールド/option/enum 行のセミコロン抜け、message/enum/service ブロック内の {} 不一致、文字列オプションや import の引用符抜け・不一致、repeated や optional といったキーワードの明らかなタイポ。
フィールドのタグ番号を変えたり名前を変更したりしますか?
いいえ。修正ツールには構文だけを直すよう明示的に指示しています — message/フィールドの名前変更、タグ番号の変更、新規フィールドの捏造は一切しません。タグ番号はワイヤフォーマットの一部であり、触ると 後方互換性 を壊します。万一セマンティックな内容が変わったように見えたら、それはバグとして扱い、コミットしないでください。
proto3 だけでなく proto2 にも対応していますか?
構文レベルの修正については対応しています — セミコロン抜け、波括弧の不一致、誤った syntax 宣言はどちらも同じように扱います。修正ツールは syntax 行に書かれているものを尊重し、proto2 スキーマを proto3 に書き換えたりはしません(required/optional やデフォルト値まわりで セマンティクスが異なる ため)。
protoc を直接実行してエラーを読めばいいのでは?
そうすべきです — protoc こそ正解の根拠です。ただし、そのエラーは一度に 1 箇所しか指さず、波括弧 1 つの抜けが下流で 10 個のエラーに連鎖し得ます。修正ツールはファイル全体を一括で通したいときに使い、その後 protoc を再実行して確認する流れです。置き換えではなく、最初の掃き掃除と思ってください。
import の多い大きなスキーマも扱えますか?
はい、1 リクエストあたり数千行までなら大丈夫です。修復は貼り付けたファイルだけを見ます — import 文をたどったり外部スキーマを取得したりはしません。スキーマが google/protobuf/timestamp.proto など他の well-known 型 を import していても、それらの import はそのまま保持されます。
その他の Protobuf ツール
構文の修正は最初のステップ。スキーマがコンパイルできるようになったら、これらのツールが残りを引き受けます: