Protobuf .proto TypeScript インターフェース&列挙型 変換ツール

Protobuf .proto TypeScript インターフェース&列挙型 変換ツール

Protocol Buffers(proto2 および proto3)のメッセージ定義、列挙型(enum)、ネストされたフィールドを解析し、クリーンな TypeScript インターフェースに変換します。

プリセット:
Protocol Buffers (.proto) スキーマ
proto3
/**
 * Generated by ToolsAA Protobuf to TypeScript Converter
 * Syntax: proto3 | Package: identity.v1
 * 100% Client-Side Pure Execution
 */

export enum AccountStatus {
  ACCOUNT_STATUS_UNSPECIFIED = 0,
  ACCOUNT_STATUS_ACTIVE = 1,
  ACCOUNT_STATUS_PENDING_VERIFY = 2,
  ACCOUNT_STATUS_SUSPENDED = 3,
  ACCOUNT_STATUS_ARCHIVED = 4
}

export type UserProfileAuthCredential =
  | { case: 'passwordHash'; value: string }
  | { case: 'oauthProviderId'; value: string }
  | { case: 'webauthnPublicKey'; value: Uint8Array }
  | { case: undefined; value?: undefined };

export interface UserProfile {
  /** @field 6 */
  metadata: Record<string, string>;
  /** @field 1 */
  userId: string;
  /** @field 2 */
  email: string;
  /** @field 3 */
  displayName?: string;
  /** @field 4 */
  status?: AccountStatus;
  /** @field 5 */
  roles: string[];
  /** @field 7 */
  createdAt: string;
  /** @field 8 */
  lastLoginAt: string;
  /** @oneof auth_credential */
  authCredential?: UserProfileAuthCredential;
}

export interface GetUserRequest {
  /** @field 1 */
  userId: string;
}

export interface ListUsersRequest {
  /** @field 1 */
  pageSize: number;
  /** @field 2 */
  pageToken: string;
}

export interface UpdateUserRequest {
  /** @field 1 */
  user?: UserProfile;
}
Proto AST 解析エンジン

サーバー通信なしで proto2 および proto3 構文木を即時ブラウザ解析

マルチ出力形式

TypeScript インターフェース、列挙型、判別共用体、Zod バリデーションスキーマを出力

プライバシー保護

完全ブラウザ完結処理により、社内機密の gRPC 定義が外部サーバーへ送信されることは一切ありません

ネイティブ Proto3 & Proto2 AST パーサー

メッセージ、列挙型、入れ子型、パッケージ名前空間を厳格な型安全性を備えた TypeScript 宣言へと変換します。

完全ローカル実行とデータ漏洩ゼロ

100% ブラウザ内でコード生成を完結させ、社内機密の gRPC スキーマが外部サーバーに送信されるリスクを根絶します。

gRPC・Zod エコシステム対応の即戦力コード生成

フィールド番号付き JSDoc、カスタマイズ可能な 64 ビット整数マッピング、判別共用体、Zod バリデーションスキーマを出力します。

技術リファレンス&アーキテクチャガイド

Protobuf .proto から TypeScript インターフェース&列挙型変換ガイド — リファレンスガイド

Protocol Buffers(proto2 および proto3)のメッセージ定義、列挙型(enum)、ネストされたフィールドを解析し、クリーンな TypeScript インターフェースに変換します。

主要パラメータ&設定項目

フィールドの命名規則 (Field Casing)Enum (camelCase | snake_case | preserve)

生成される TypeScript インターフェースのプロパティ命名規則を指定します。camelCase は TypeScript の慣用的なスタイルおよび Google 公式の JSON マッピング仕様に準拠します。

初期値: camelCase
宣言スタイル (Declaration Style)Enum (interface | type)

メッセージ型を TypeScript の 'interface' 構文または 'type' エイリアス構文のどちらで出力するかを指定します。

初期値: interface
64ビット整数マッピング (64-Bit Integer Mapping)Enum (string | number | bigint)

JavaScript の 53 ビット精度制限(2^53 - 1)による桁落ちを防ぐため、int64、uint64、sint64 等の変換型を指定します。

初期値: string
バイト列の型表現 (Bytes Representation)Enum (Uint8Array | string | Buffer)

Protobuf の bytes 型をブラウザや Node.js 環境向けにどの TypeScript 型へマッピングするかを指定します。

初期値: Uint8Array
列挙型生成スタイル (Enum Generation Style)Enum (enum | union | const_object)

Protobuf の enum を TypeScript の数値列挙型、文字列リテラル直和型(Union)、または const オブジェクトのどれに変換するかを制御します。

初期値: enum

プロの活用テクニック&推奨設定

oneof フィールドの直和型(Discriminated Union)化

Protobuf の oneof 定義は TypeScript の判別可能な直和型(Discriminated Union)に変換され、switch 文による網羅的な型絞り込みが可能になり、排他的なフィールドの不正設定を未然に防ぎます。

安全な 64 ビット整数の送受信戦略

ブラウザや REST / gRPC-Web 環境では、64 ビット整数(int64 / uint64)を string または BigInt にマッピングしてください。標準の JavaScript number 型は 9,007,199,254,740,991 を超えると暗黙のうちに精度が欠落します。

ネストされたメッセージのスコープ分離

親メッセージの内部で定義されたネスト型は、プレフィックス付きインターフェース名(例: User_Address)または名前空間として生成され、グローバル名前空間を汚染することなく構造を維持します。

Zod による実行時バリデーションの統合

生成された TypeScript 型定義とともに Zod スキーマを活用することで、gRPC-Web や API ゲートウェイ経由で受信する信頼できない JSON ペイロードに対して厳密な実行時型チェックを実施できます。

よくあるトラブルと解決策

構文エラー: 'syntax = "proto3";' または 'syntax = "proto2";' が見つかりません

.proto ファイルの最上部に構文宣言(例: syntax = "proto3";)を明示的に記述してください。宣言の前のコメント行や空行は許容されます。

未解決の型定義またはインポートされたメッセージ依存エラー

参照されているすべてのメッセージ型、列挙型、または外部型(google.protobuf.Timestamp など)がエディタ内に定義されているか、標準 Well-Known Types であるかを確認してください。

メッセージ内の重複したフィールド番号(Tag)

Protocol Buffers では、メッセージ内の各フィールドに一意の正の整数タグ(1〜536,870,911、予約領域 19000-19999 を除く)が必要です。競合する番号を重複しないよう振り直してください。

よくある質問 (FAQ)

proto3 と proto2 の構文の違いはどのように処理されますか?▼

本パーサーは両構文を完全サポートしています。proto3 ではスカラーフィールドはデフォルトで optional 扱いとなり、proto2 では required および optional 修飾子が厳密に TypeScript の型定義(必須またはオプショナルプロパティ)に反映されます。

google.protobuf.Timestamp などの Well-Known Types はどのように変換されますか?▼

Google の標準 Well-Known Types(Timestamp、Duration、Struct、Any、StringValue 等)は、TypeScript の慣用型(Timestamp の場合は string | Date、Struct の場合は Record<string, unknown> など)に自動マッピングされます。

gRPC サービスのクライアントおよびサーバー署名コードを生成できますか?▼

はい。rpc メソッドを含む service 定義を解析し、Unary、クライアントストリーミング、サーバーストリミング、双方向ストリーミングに対応した TypeScript インターフェース契約を出力します。

独自の .proto ファイルの内容が外部サーバーに送信されることはありますか?▼

いいえ。字句解析、構文木(AST)構築、TypeScript コード生成の全工程がブラウザ内の JavaScript エンジンで 100% 完結します。データが外部ネットワークに送信されることは一切ありません。

Protobuf の repeated および map フィールドはどのように変換されますか?▼

repeated フィールドは配列型(例: string[])に変換され、map<string, T> フィールドは型付き辞書(Record<string, T>)に正確にマッピングされます。

関連するおすすめ開発ツール

すべてのツール →
OpenAPI・Swagger Markdown API仕様書生成ツール開発ツール

OpenAPI 3.0/3.1およびSwagger 2.0のJSON/YAML仕様書を、GitHub Flavored Markdown(GFM)準拠の美しいAPIリファレンスへ高速変換。

ツールを開く→
GraphQL SDL Prisma スキーマ変換ツール開発ツール

GraphQL スキーマ定義言語(SDL)のオブジェクト型、Enum、ディレクティブを、クリーンで堅牢な Prisma ORM モデルおよびリレーション定義へ自動変換します。

ツールを開く→
SQL DDL から TypeORM エンティティ生成ツール(TypeScript エンティティ)開発ツール

SQL の CREATE TABLE DDL 文を、@Column、@PrimaryGeneratedColumn、リレーションデコレータを備えたクリーンな TypeScript TypeORM エンティティクラスに変換します。

ツールを開く→
SQL CREATE TABLE DDLからZodスキーマへのコンバーター開発ツール

SQLテーブルスキーマ、データ型、制約条件、NULL許容列を厳密に型付けされたTypeScript Zodオブジェクトスキーマに変換します。

ツールを開く→
Docker Compose から Kubernetes マニフェスト変換ツール(Compose to K8s)開発ツール

docker-compose.yml のサービス、環境変数、ポート公開、ボリューム設定を Kubernetes の Deployment および Service YAML マニフェストに完全変換します。

ツールを開く→
JSONから.env環境変数への変換ツール(平坦化とエクスポート)開発ツール

ネストされたJSONペイロードをカスタマイズ可能な区切り文字とプレフィックスオプションを使用して大文字SNAKE_CASEの.env設定に平坦化します。

ツールを開く→