DEV Community

Cover image for 最高のBloomRPC代替ツール
Akira
Akira

Posted on • Originally published at apidog.com

最高のBloomRPC代替ツール

BloomRPCは、「gRPCのPostmanはどこにある?」という問いに対する代表的な回答でした。.protoファイルを読み込み、生成されたJSONリクエストを編集して送信するだけでgRPCを試せる、シンプルな無料のデスクトップクライアントです。しかし、2023年1月4日にリポジトリはアーカイブされました。READMEでもプロジェクトの停滞と未解決の問題に触れ、「使用はもはや推奨されない」と明記されています。

Apidogを今すぐ試す

BloomRPCの代替として、Apidogを使うと、単に.protoファイルを読み込んで呼び出すだけでなく、gRPCの4つの呼び出し形式、保存・共有、RESTやWebSocketとの同一プロジェクトでの管理まで行えます。この記事では、BloomRPCを置き換える手順と、用途別の代替ツールを実装目線で整理します。

BloomRPCとは何だったのか、なぜ移行すべきなのか

BloomRPCは2018年にElectronデスクトップアプリとして登場しました。基本的な使い方は次のとおりです。

  1. .proto ファイルをインポートする
  2. サービスとRPCメソッドを選ぶ
  3. 生成されたJSONリクエストを編集する
  4. メタデータを設定して送信する

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つです。

  1. 4種類のgRPC呼び出しを実行できる

    • Unary
    • Server Streaming
    • Client Streaming
    • Bidirectional Streaming
  2. proto定義を3つの方法で読み込める

    • ローカルの .proto ファイル
    • URL
    • サーバーリフレクション
  3. JSONでリクエストを編集できる

    • protobufバイナリを手作業で組み立てる必要はありません。
    • JSONとprotobufの対応を確認したい場合は、protobufからJSONへの変換を参照してください。
  4. TLS・メタデータ・認証をリクエスト単位で設定できる

    • grpc:// または grpcs:// を選択
    • Authorizationヘッダーやカスタムメタデータを設定
    • トークンやmTLSの設計は、gRPC認証ガイドも参考になります。
  5. 呼び出し設定を保存・共有できる

    • サーバーURL、リクエストメッセージ、メタデータを保存
    • チームメイトが同じ設定を再利用
    • REST、WebSocket、SSE、GraphQLのAPIと同じプロジェクトで管理

BloomRPCからApidogへ移行する手順

BloomRPCには、実用的なポータブル設定のエクスポート機能がありません。そのため、移行は「proto定義を再利用し、接続設定を作り直す」作業になります。

1. .proto ファイルを用意する

まず、サービス定義を含む .proto ファイルをリポジトリから確認します。

依存するprotoがある場合は、ディレクトリ構成も確認してください。

proto/
├── user.proto
├── common/
│   └── pagination.proto
└── google/
    └── protobuf/
        └── timestamp.proto
Enter fullscreen mode Exit fullscreen mode

例えば user.proto が次のように他のprotoをimportしている場合、依存ディレクトリも指定する必要があります。

import "common/pagination.proto";
import "google/protobuf/timestamp.proto";
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

リクエストには次のようなJSONを入力します。

{
  "id": "user_123"
}
Enter fullscreen mode Exit fullscreen mode

Unary RPCであれば送信後にレスポンスペインで結果を確認できます。gRPCのステータスコードはHTTPステータスとは意味が異なるため、必要に応じてgRPCステータスコードを参照してください。

4. 接続先、TLS、メタデータを設定する

接続先に応じて、スキームを設定します。

grpc://localhost:50051
Enter fullscreen mode Exit fullscreen mode

TLSを使う場合は、次のように設定します。

grpcs://api.example.com:443
Enter fullscreen mode Exit fullscreen mode

認証情報やカスタムメタデータも追加します。

authorization: Bearer <token>
x-request-id: debug-request-001
Enter fullscreen mode Exit fullscreen mode

BloomRPCで毎回貼り付けていた値も、Apidogではリクエストと一緒に保存できます。

5. 保存してチームで共有する

検証済みの呼び出しを保存すると、チームの再利用可能なデバッグ設定になります。

保存する対象の例:

  • サーバーURL
  • TLS設定
  • メタデータ
  • 認証設定
  • リクエストJSON
  • ストリーミング時に送るメッセージ

これにより、「どのprotoを使うか」「どのヘッダーを付けるか」「どの環境URLに接続するか」をチームメイトが再現しやすくなります。

gRPCストリーミングを扱う

BloomRPCから移行する大きな理由の1つが、ストリーミング対応です。

Apidogでは、次の4形式を扱えます。

呼び出し形式 用途
Unary 1リクエスト、1レスポンス
Server Streaming 1リクエストに対し、サーバーが複数メッセージを返す
Client Streaming クライアントが複数メッセージを送信し、最後にレスポンスを受け取る
Bidirectional Streaming クライアントとサーバーが双方向にメッセージを送る

ストリーミング呼び出しでは、1回の送信で完結するリクエストとしてではなく、ライブセッションとして扱います。

実装・検証時の流れは次のとおりです。

  1. ストリーミングRPCを開く
  2. メッセージタブでJSONメッセージを入力する
  3. メッセージを送信する
  4. 受信メッセージをタイムラインで確認する
  5. 必要に応じて追加メッセージを送信する

各モードの使い分けは、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にはポータブルな設定エクスポートがないため、直接インポートするファイルはありません。

移行では次を行います。

  1. リポジトリから .proto ファイルを取得する
  2. Apidogへインポートする、またはサーバーリフレクションを使う
  3. サーバーURL、TLS、メタデータ、認証を設定する
  4. 呼び出しを保存して共有する

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)