BloomRPCは、「gRPCのPostmanはどこにある?」という問いに対する代表的な回答でした。.protoファイルを読み込み、生成されたJSONリクエストを編集して送信するだけでgRPCを試せる、シンプルな無料のデスクトップクライアントです。しかし、2023年1月4日にリポジトリはアーカイブされました。READMEでもプロジェクトの停滞と未解決の問題に触れ、「使用はもはや推奨されない」と明記されています。
BloomRPCの代替として、Apidogを使うと、単に.protoファイルを読み込んで呼び出すだけでなく、gRPCの4つの呼び出し形式、保存・共有、RESTやWebSocketとの同一プロジェクトでの管理まで行えます。この記事では、BloomRPCを置き換える手順と、用途別の代替ツールを実装目線で整理します。
BloomRPCとは何だったのか、なぜ移行すべきなのか
BloomRPCは2018年にElectronデスクトップアプリとして登場しました。基本的な使い方は次のとおりです。
-
.protoファイルをインポートする - サービスとRPCメソッドを選ぶ
- 生成されたJSONリクエストを編集する
- メタデータを設定して送信する
Unary RPCや基本的なストリーミングを手軽に実行できたため、長い間gRPC GUIの定番でした。
ただし、アーカイブ済みのリポジトリには、今後のバグ修正、依存関係更新、セキュリティ修正、リリースは期待できません。Electronアプリでは、バンドルされたChromiumやNode.jsの更新が止まることも無視できない問題です。また、新しいproto構文やgRPC機能への追従も行われません。
BloomRPCのUI設計自体は実用的でした。しかし、現在のチーム開発では「gRPCだけを単独アプリで試す」より、REST・WebSocket・GraphQLを含むAPI作業をまとめて管理できるほうが実用的です。優れたgRPCクライアントには、protoを読み込んで呼び出せることに加え、保存、共有、テスト、ドキュメント化まで求められます。
BloomRPCの代替としてApidogを使う
Apidogは、設計、デバッグ、テスト、モック、ドキュメント作成を扱うAPI開発プラットフォームです。50万人以上の開発者に利用されており、公式ドキュメントではgRPCの利用方法も公開されています。
BloomRPCから移行する際に重要なポイントは次の5つです。
-
4種類のgRPC呼び出しを実行できる
- Unary
- Server Streaming
- Client Streaming
- Bidirectional Streaming
-
proto定義を3つの方法で読み込める
- ローカルの
.protoファイル - URL
- サーバーリフレクション
- ローカルの
-
JSONでリクエストを編集できる
- protobufバイナリを手作業で組み立てる必要はありません。
- JSONとprotobufの対応を確認したい場合は、protobufからJSONへの変換を参照してください。
-
TLS・メタデータ・認証をリクエスト単位で設定できる
-
grpc://またはgrpcs://を選択 - Authorizationヘッダーやカスタムメタデータを設定
- トークンやmTLSの設計は、gRPC認証ガイドも参考になります。
-
-
呼び出し設定を保存・共有できる
- サーバーURL、リクエストメッセージ、メタデータを保存
- チームメイトが同じ設定を再利用
- REST、WebSocket、SSE、GraphQLのAPIと同じプロジェクトで管理
BloomRPCからApidogへ移行する手順
BloomRPCには、実用的なポータブル設定のエクスポート機能がありません。そのため、移行は「proto定義を再利用し、接続設定を作り直す」作業になります。
1. .proto ファイルを用意する
まず、サービス定義を含む .proto ファイルをリポジトリから確認します。
依存するprotoがある場合は、ディレクトリ構成も確認してください。
proto/
├── user.proto
├── common/
│ └── pagination.proto
└── google/
└── protobuf/
└── timestamp.proto
例えば user.proto が次のように他のprotoをimportしている場合、依存ディレクトリも指定する必要があります。
import "common/pagination.proto";
import "google/protobuf/timestamp.proto";
2. ApidogでgRPCサービスをインポートする
Apidogでプロジェクトを作成し、次のいずれかを選びます。
- ローカルの
.protoファイルをインポートする -
.protoのURLを指定する - サーバーリフレクションを使う
サーバーリフレクションが有効な環境では、protoファイルを探さずに実行中のサーバーからサービス一覧を取得できます。ステージング環境を素早く検証したい場合に便利です。
3. RPCメソッドを選び、JSONリクエストを編集する
サービスとメソッドを選択すると、リクエスト用JSONを編集できます。
たとえば、次のproto定義があるとします。
service UserService {
rpc GetUser(GetUserRequest) returns (GetUserResponse);
}
message GetUserRequest {
string id = 1;
}
リクエストには次のようなJSONを入力します。
{
"id": "user_123"
}
Unary RPCであれば送信後にレスポンスペインで結果を確認できます。gRPCのステータスコードはHTTPステータスとは意味が異なるため、必要に応じてgRPCステータスコードを参照してください。
4. 接続先、TLS、メタデータを設定する
接続先に応じて、スキームを設定します。
grpc://localhost:50051
TLSを使う場合は、次のように設定します。
grpcs://api.example.com:443
認証情報やカスタムメタデータも追加します。
authorization: Bearer <token>
x-request-id: debug-request-001
BloomRPCで毎回貼り付けていた値も、Apidogではリクエストと一緒に保存できます。
5. 保存してチームで共有する
検証済みの呼び出しを保存すると、チームの再利用可能なデバッグ設定になります。
保存する対象の例:
- サーバーURL
- TLS設定
- メタデータ
- 認証設定
- リクエストJSON
- ストリーミング時に送るメッセージ
これにより、「どのprotoを使うか」「どのヘッダーを付けるか」「どの環境URLに接続するか」をチームメイトが再現しやすくなります。
gRPCストリーミングを扱う
BloomRPCから移行する大きな理由の1つが、ストリーミング対応です。
Apidogでは、次の4形式を扱えます。
| 呼び出し形式 | 用途 |
|---|---|
| Unary | 1リクエスト、1レスポンス |
| Server Streaming | 1リクエストに対し、サーバーが複数メッセージを返す |
| Client Streaming | クライアントが複数メッセージを送信し、最後にレスポンスを受け取る |
| Bidirectional Streaming | クライアントとサーバーが双方向にメッセージを送る |
ストリーミング呼び出しでは、1回の送信で完結するリクエストとしてではなく、ライブセッションとして扱います。
実装・検証時の流れは次のとおりです。
- ストリーミングRPCを開く
- メッセージタブでJSONメッセージを入力する
- メッセージを送信する
- 受信メッセージをタイムラインで確認する
- 必要に応じて追加メッセージを送信する
各モードの使い分けは、gRPCストリーミングの解説を確認してください。
BloomRPCとApidogの比較
| 項目 | BloomRPC | Apidog |
|---|---|---|
| ステータス | 2023年1月にアーカイブ。READMEで使用非推奨 | 活発に開発中 |
| Unary RPC | 対応 | 対応 |
| Server / Client / Bidirectional Streaming | 部分的、既知の問題あり | すべて対応、タイムライン付きセッション |
| Protoインポート | ローカル .proto
|
ローカルファイル、URL、サーバーリフレクション |
| TLS | 基本対応 | リクエストごとに grpc:// / grpcs:// を切り替え |
| メタデータ・認証 | メタデータ編集 | メタデータと認証設定 |
| チーム共有 | なし、ローカル中心 | 保存済みコールをチームワークスペースで共有 |
| 対応プロトコル | gRPCのみ | REST、WebSocket、SSE、GraphQL、gRPC |
| ドキュメント・テスト・モック | なし | 同じプラットフォーム、同じプロジェクトで管理 |
| 価格 | 無料、ただし放棄済み | 最大4ユーザーまで無料プラン |
gRPC以外も同じプロジェクトで扱う
BloomRPCはgRPC専用のクライアントでした。一方で、実際のバックエンドではgRPCとREST、GraphQL、WebSocketが併存することがあります。
Apidogでは、以下を同じプロジェクトにまとめられます。
- gRPCサービスのデバッグ
- REST APIのリクエスト作成
- WebSocket・SSEの検証
- GraphQL APIの操作
- gRPC APIテスト
- HTTP APIのモック
- 公開用ドキュメントの作成
プロトコルごとにツールを切り替えたくない場合、この構成が実用的です。プロトコル選定を検討している場合は、REST vs GraphQL vs gRPC、またはgRPC vs RESTも参考にしてください。
他に知っておくべきBloomRPCの代替品
用途によっては、より小さなツールが適していることもあります。
grpcurl
gRPC版のcurlです。CI、シェルスクリプト、リフレクション対応サーバーへのアドホックな呼び出しに適しています。GUIは不要で、コマンドライン中心の運用をしたい場合に向いています。詳しくはgrpcurl代替ツールの比較を参照してください。grpcui
grpcurlの関連ツールで、単一サーバー向けの一時的なWeb UIを提供します。短時間の確認には便利ですが、状態を保存する用途には向きません。Kreya
gRPCとREST向けのデスクトップクライアントです。スタンドアロンのgRPCクライアントを求める場合、BloomRPCに近い選択肢です。Kreyaとは何か、Kreya代替ツールも確認してください。Postman
2022年にgRPCをサポートしました。すでにチームで導入している場合は選択肢になります。ただし、価格設定やワークスペース運用を含めた比較は必要です。詳しくはPostman代替ツールを参照してください。evans
対話型モードを備えたgRPC用ターミナルREPLです。tmuxやターミナル中心の開発環境には適していますが、GUIを求める場合には不向きです。
選び方を簡潔にまとめると、次のようになります。
- CLIと自動化が中心: grpcurl
- 一時的なGUI確認: grpcui
- gRPC専用のデスクトップクライアント: Kreya
- gRPCと複数のAPIプロトコルをまとめて管理: Apidog
よくある質問
BloomRPCはまだメンテナンスされていますか?
いいえ。リポジトリは2023年1月4日にアーカイブされ、READMEでも使用非推奨とされています。今後の更新、セキュリティ修正、リリースは期待できません。新規セットアップでは、現在利用できるgRPCクライアントを選ぶべきです。
BloomRPCの設定をApidogにインポートできますか?
BloomRPCにはポータブルな設定エクスポートがないため、直接インポートするファイルはありません。
移行では次を行います。
- リポジトリから
.protoファイルを取得する - Apidogへインポートする、またはサーバーリフレクションを使う
- サーバーURL、TLS、メタデータ、認証を設定する
- 呼び出しを保存して共有する
ApidogはgRPCストリーミングをサポートしていますか?
はい。Unary、Server Streaming、Client Streaming、Bidirectional Streamingの4形式をサポートしています。ストリーミングはライブセッションとして実行し、送受信メッセージをタイムラインで確認できます。詳細はgRPCストリーミングを参照してください。
コマンドラインで素早くgRPCを呼び出したい場合は?
grpcurl を使ってください。特にサーバーリフレクション対応の環境では、スクリプト化された呼び出しやCI検証に適しています。GUIでの手動検証とCLIでの自動化を併用する構成も実用的です。
同じツールでgRPCとREST APIをテストできますか?
Apidogでは可能です。gRPC、REST、WebSocket、SSE、GraphQLを1つのプロジェクトに配置できます。gRPCとRESTの両方を提供するバックエンドでも、リクエスト、テスト、ドキュメントを分散させずに管理できます。
アーカイブされたクライアントを引退させる
BloomRPCは役割を終えました。移行時に必要なのは、基本的には既存の .proto ファイルだけです。
まずprotoをインポートするか、サーバーリフレクションでサービスを取得します。次に、Unary RPCとストリーミングRPCを1つずつ実行し、接続先、認証、メタデータを保存してください。以後は、個人マシンに閉じた設定ではなく、チームで再利用できるgRPCデバッグ環境として運用できます。
Apidogを無料でダウンロードして、既存のgRPCサービスから移行を始めてください。最大4ユーザーまでのチームは無料で利用できます。
Top comments (0)