TS → Protobuf proto3
マイクロサービススキーマ&RPC自動生成

TypeScript インターフェースから Protocol Buffers proto3 への変換ツール

TypeScriptのinterfaceやtype定義を、インクリメンタルなタグ番号を持つProtobuf 3構文のmessage、field、enumに変換します。

100% クライアント側プライバシー
サーバー送信ゼロ
プリセット:
Protobuf 3 コンパイラ設定&タグ採番構成
syntax = "proto3"•snake_case
TypeScript Interface / Types
syntax = "proto3";
package identity.v1;
Proto メッセージ0 メッセージ (0 フィールド)
列挙型0 個の列挙型を解析
gRPC サービス0 gRPC サービス (identity.v1)

100% クライアント側 TypeScript AST 解析

サーバーへの送信や保存は一切ありません。TypeScriptインターフェースの抽出、型トークン解析、Protobufスキーマの生成はすべてブラウザメモリ上で安全に実行されます。

スマート Proto3 タグ採番とフィールド正規化

フィールドタグを1から順次自動採番し、識別子をProtobuf標準のsnake_caseに変換、複雑なRecord型をproto mapに適切にマッピングします。

本番対応 gRPC & Proto3 サービス生成

TypeScriptのRPCインターフェース署名を本番対応のgRPCサービス定義、リクエスト/レスポンスメッセージ、ストリーミングスタブへ変換します。

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

TypeScript インターフェースから Protocol Buffers proto3 への変換ツール — リファレンスガイド

TypeScriptのinterfaceやtype定義を、インクリメンタルなタグ番号を持つProtobuf 3構文のmessage、field、enumに変換します。

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

フィールド命名形式Enum (snake_case | camelCase | preserve)

生成されるフィールド識別子のケースを指定します。Google Protobufスタイルガイドに準拠し、message内のフィールド名はlower_snake_caseが推奨されます。

初期値: snake_case
数値のデフォルト型Enum (int32 | int64 | double | float | uint32)

TypeScriptの汎用'number'型から変換されるProtobufのスカラー数値型を指定します。

初期値: int32
オプショナル項目の形式Enum (proto3_optional | implicit | wrappers)

TypeScriptのオプショナルプロパティ(field?: type)の出力方法を制御します。'proto3_optional'は明示的な'optional'キーワードを出力しフィールドプレゼンスを維持します。

初期値: proto3_optional
Proto パッケージ名String

生成される.protoファイルの先頭に宣言されるパッケージ名前空間を指定し、サービス間での名前衝突を防止します。

初期値: api.v1
標準インポートの自動追加Boolean

TypeScriptのDate、unknown、Record型を検出し、対応するgoogle/protobuf/timestamp.protoやstruct.protoのインポート文を自動挿入します。

初期値: true

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

タグ番号の不変性を維持

本番環境のProtobufスキーマでは、一度デプロイしたフィールド番号(1, 2, 3...)を変更・再利用してはなりません。バイナリシリアライズの互換性を維持するため、新項目は必ず新しいタグ番号で末尾に追加するかreserved宣言を使用してください。

Date型からTimestampへのマッピング

TypeScriptのDate型は自動的に'google.protobuf.Timestamp'へ変換されます。コード生成時のprotocコンパイルにおいてGoogle Well-Known Typesが参照可能であることを確認してください。

Record型と連想配列の変換

TypeScriptの'Record<string, T>'やインデックスシグネチャ'{ [key: string]: T }'は、Protobufの'map<string, T>'フィールドへと正確にマッピングされ、無駄なラッパーメッセージを作成しません。

判別可能なUnion型をoneofへ変換

判別可能なUnion型(type Event = A | B)はProtobufの'oneof'ブロックに変換することで、相互排他的な状態を表現し、通信時のシリアライズ効率を最適化できます。

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

TypeScriptの'number'型が曖昧で意図しないスカラー型に変換される

TypeScriptの'number'は整数と浮動小数点数の両方を表します。『数値のデフォルト型』設定を変更するか、JSDocコメント(/** @type {int64} */ や /** @type {double} */)でフィールドごとに型を明示してください。

protocコンパイル時にgoogle/protobuf/timestamp.protoが見つからないエラー

『標準インポートの自動追加』が有効であることを確認し、protocやbufのビルドパスに公式のGoogle Well-Known Typesインクルードディレクトリが含まれていることを確認してください。

TypeScript定義内の無名インラインオブジェクトで変換エラーが発生する

Protobufの各メッセージには一意の名前が必要です。{ user: { id: string } }のようなインラインオブジェクトは、変換前に独立した名前付きインターフェース(interface UserSummary等)に分離してください。

よくある質問 (FAQ)

TypeScriptの配列型はProtobufでどのように表現されますか?▼

TypeScriptの配列(T[] または Array<T>)は、proto3の'repeated'フィールド修飾子(例: repeated string tags = 3;)に変換されます。数値型の場合はproto3の仕様により自動的にpackedエンコーディングが適用されます。

proto3におけるオプショナル項目(field?: type)はどのように処理されますか?▼

proto3の標準フィールドにはデフォルト値が設定されプレゼンス追跡がありません。『オプショナル項目の形式』で'proto3_optional'を選択すると、明示的な'optional'修飾子(Protobuf v3.15以降)が付与され、値がセットされたかどうかのプレゼンス判定が可能になります。

TypeScriptの文字列Enumや数値Enumは変換できますか?▼

はい。TypeScriptのenumはproto3の'enum'構文に変換されます。proto3では最初のEnum値が数値の0である必要があるため、未定義の場合は先頭に自動でUNSPECIFIED = 0が補完されます。

入力したTypeScriptコードが外部サーバーに送信されることはありますか?▼

いいえ。ASTの字句解析、トークン化、.protoコードの生成はすべてブラウザ内のJavaScriptエンジンで100%ローカルに完結します。機密コードがネットワーク経由で送信されることは一切ありません。

interfaceのextends継承や交差型(Intersection)はどのように変換されますか?▼

継承元インターフェースのプロパティや型交差(type Combined = A & B)は、フラット化されて単一のProtobufメッセージ内に連続したタグ番号で展開されます。

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

すべてのツール →
GitLab CI パイプライン生成リファレンス開発ツール

Node.js、Python、Go、Rust、Kaniko コンテナワークフローに対応した本番仕様の .gitlab-ci.yml パイプライン構築と最適化のための技術リファレンス。

ツールを開く→
Linux Supervisord (supervisord.conf) プログラム設定ジェネレーター開発ツール

自動再起動、プロセス並行数、ログ出力リダイレクト、環境変数、非特権ユーザー設定を含むSupervisordプログラム設定ブロックをブラウザ上で即座に生成します。

ツールを開く→
HAProxy ロードバランサー設定ジェネレーター開発ツール

HAProxyロードバランサー向けの本番環境対応設定ファイル生成および構文バリデーションツール。

ツールを開く→
Kubernetes Helm Chart (Chart.yaml & values.yaml) 生成ツール開発ツール

標準的なKubernetes Helm v3のChart.yaml、values.yaml、およびService、Ingress、リソース制限を備えたデプロイメントテンプレートを生成します。

ツールを開く→
マルチステージ Dockerfile ジェネレーター (Node, Go, Python, Rust)開発ツール

Node.js、Golang、Python、Rust、Java向けの高セキュアで軽量なマルチステージ Dockerfile を生成。非rootユーザー設計とBuildKitキャッシュ最適化を完全網羅。

ツールを開く→
SQL DDL から Kysely TypeScript 型定義生成ツール開発ツール

PostgreSQL、MySQL、SQLiteのSQL DDLスキーマを解析し、完全な型安全性を備えたKysely向けTypeScript型定義とインターフェースを生成するための開発者向けリファレンス。

ツールを開く→