BloomRPCは、すべてのgRPC開発者が最終的に問いかける「gRPCのPostmanはどこにある?」という質問への答えでした。.protoファイルを読み込み、編集可能なJSONリクエストボディを取得し、送信ボタンを押すだけ。それはシンプルで無料であり、1つのことをうまくこなすことで約9,000のGitHubスターを獲得しました。しかし、2023年1月4日、そのリポジトリはアーカイブされました。READMEには、プロジェクトが停滞し、問題が山積し、メンテナーは現在「その使用はもはや推奨されない」と明確に述べています。彼らはawesome-grpcリストを指し示し、幸運を祈っています。
ここに直接の答えがあります。Apidogは、BloomRPCの最良の代替ツールであり、単に.protoファイルの読み込みウィンドウを置き換えるだけではありません。これは、4つのgRPC呼び出しタイプすべて(ユニーク、サーバー ストリーミング、クライアント ストリーミング、双方向ストリーミング)をサポートし、ローカルパス、URL、またはサーバーリフレクションから.protoファイルをインポートし、gRPC作業をREST、WebSocket、GraphQLエンドポイントと同じプロジェクトにまとめ、ドキュメント、コラボレーション、保存されたデバッグ設定も含まれます。もし端末から使い捨ての呼び出しだけが必要な場合は、より軽量なツールも存在し、それらについても正直に説明します。この記事では、BloomRPCで何が失われたのか、何に置き換えるべきか、そしてどのように移行するかを正確に説明します。
BloomRPCとは何だったのか、そしてなぜそれがなくなったのか
BloomRPCは2018年にElectronデスクトップアプリとしてリリースされ、クライアントを書かずにgRPCコールを行うという1つの仕事を持っていました。.protoファイルをインポートすると、サービスとメソッドがリストされ、各リクエストメッセージのJSONスケルトンが生成され、メタデータを編集して送信することができました。ユニークコールと基本的なストリーミングには問題なく、「問題なく無料」であったため、何年もの間、デフォルトのgRPC GUIとなっていました。
アーカイブ通知は、その時代をきっぱりと終わらせます。アーカイブされたリポジトリは、バグ修正、依存関係の更新、リリースがないことを意味します。Electronアプリにとって、それは中立的な状態ではありません。バンドルされたChromiumとNodeのバージョンはセキュリティサポートの対象外になり、新しいproto構文とgRPC機能は処理されず、既知のバグ(BloomRPCにはprotoのインポートや特定のストリーミングフローに関する長年の問題がありました)はそのまま残されます。メンテナーはそれについて正直でしたが、これは多くの廃止プロジェクトができたこと以上のことです。メッセージは「これをインストールするのをやめてください」というものです。
ツールとしてのBloomRPCの形は正しかったため、人々はまだBloomRPCを探しています。問題は、その形(別のスタンドアロンのgRPCウィンドウ)を置き換えるのか、それとも根本的な断片化を修正するのかということです。gRPCを実行するほとんどのチームはRESTも実行しており、それらを2つの異なるツールでテストすることは、BloomRPCが静かに課していた税金でした。私たちは以前、優れたgRPCクライアントとは何かについて書きましたが、要するに「プロトを読み込み、呼び出しを送信する」ことは今や当たり前のことであり、差別化要因はそれ以上の部分にあります。
答え:Apidog
Apidogは、設計、デバッグ、テスト、モック、ドキュメント作成をカバーする、50万人以上の開発者に利用されているAPI開発プラットフォームです。公式ドキュメントによると、そのgRPCサポートは、BloomRPCができたこととBloomRPCが決して完成させなかった部分を網羅しています。
- 4つの呼び出しタイプすべて。 ユニーク、サーバー ストリーミング、クライアント ストリーミング、双方向ストリーミングのすべてをサポートしています。ストリーミング呼び出しはWebSocketセッションのように機能します。呼び出しを開き、メッセージタブからメッセージを書き込んで送信すると、タイムラインビューで送受信されたメッセージが順序通りに表示されます。BloomRPCのストリーミングサポートは、最後には部分的でバグが多く、ここでは文書化された機能です。
- API定義をインポートする3つの方法。 ローカルの.protoファイルを読み込むか、URLからインポートするか、またはサーバーリフレクションを使用して、protoファイルを手元に持たずに実行中のgRPCサーバーから直接サービスをプルします。もしprotoが他のprotoに依存している場合は、依存関係ディレクトリを一度追加するだけです。
- JSONイン、JSONアウト。 BloomRPCと同様に、Apidogはprotobufメッセージを編集可能なJSONとしてレンダリングするため、バイナリペイロードを手動でエンコードする必要はありません。そのマッピングについて理解する必要がある場合は、protobufからJSONへの変換を参照してください。
- TLS、メタデータ、認証。 リクエストごとにgrpc://またはgrpcs://を切り替え、実際のサービスが持つ設定のためにメタデータと認証構成をアタッチします。トークンとmTLSパターンについては、当社のgRPC認証ガイドがこれとよく合います。
- 行き止まりではありません。 保存されたgRPC呼び出し(サーバーURL、メッセージ、メタデータ)はチームメイトと共有でき、RESTエンドポイント、テストシナリオ、公開されたドキュメントと同じワークスペースに存在します。これは、スタンドアロンのgRPCウィンドウでは決して提供されなかった部分です。
機能別の切り替えの様子
呼び出しを行う
日常の使用感は、おなじみのものに感じるでしょう。protoをインポートし、サービスとメソッドを選択し、生成されたJSONボディを編集し、サーバーアドレスを設定して送信します。ユニークコールは応答ペインを返し、ストリーミングコールはメッセージをプッシュし、タイムラインを監視するセッションを開きます。ステータスコードはgRPCステータスコードとして返されますが、これはHTTPとは読み方が異なります。最初の週はgRPCステータスコードの参照を手元に置いておくと便利です。
ストリーミング、特に
これは最も大きなアップグレードです。BloomRPCのクライアントサイドおよび双方向ストリーミングは、そのオープンな問題の一般的な原因でした。Apidogは4つのモードすべてを文書化し、ストリーミングコールをワンショットのリクエストではなく、ライブセッションとして扱います。もしあなたのサービスがストリームに大きく依存しているなら、この違いが全体的な決定要因となります。各モードがどのような場合に適合するかについての背景は、gRPCストリーミングの解説を参照してください。
サーバーリフレクション
BloomRPCはprotoファイルを必要としました。Apidogはサーバーリフレクションもサポートしており、リフレクション対応サーバーを指し示すことで、適切なprotoリビジョンを探すことなくサービスを閲覧できます。他の誰かが所有するステージングサーバーを素早く試す際に、これが最も煩わしいステップを取り除きます。
クライアントを超えて
ここがカテゴリーの大きな飛躍です。BloomRPCでは、デバッグされた呼び出しはウィンドウを閉じると消えてしまいました。Apidogでは、gRPCサービスはプロジェクト内に存在します。チームメイトは、protoを再インポートしたりメタデータを再入力したりする代わりに、あなたの保存されたデバッグ設定を再利用できます。同じワークスペースには、RESTおよびWebSocketの作業、自動化されたgRPC APIテスト、HTTPエンドポイントのモック、および公開可能なドキュメントが含まれています。ほとんどのgRPCバックエンドは、どこかでRESTまたはGraphQLも提供しています。もしこれらのプロトコル間の境界を検討しているなら、私たちはREST vs GraphQL vs gRPCでそれらを比較し、gRPC vs RESTでトレードオフを深く掘り下げました。
BloomRPCとApidogの比較概要
| BloomRPC | Apidog | |
|---|---|---|
| ステータス | 2023年1月アーカイブ済み。READMEには使用を推奨しないと記載 | 活発に開発中 |
| ユニークコール | はい | はい |
| サーバー / クライアント / 双方向ストリーミング | 部分的、既知の問題あり | すべてサポート、タイムライン付きセッション形式 |
| Protoインポート | ローカルの.protoファイル | ローカルファイル、URL、サーバーリフレクション |
| TLS | 基本 | リクエストごとにgrpc:// / grpcs://を切り替え |
| メタデータと認証 | メタデータ編集 | メタデータと認証設定 |
| チーム共有 | なし (ローカルのみ) | 保存されたコールはチームワークスペースで共有 |
| その他のプロトコル | gRPCのみ | REST, WebSocket, SSE, GraphQL, gRPC |
| ドキュメント、テスト、モック | なし | 同じプラットフォーム、同じプロジェクト |
| 価格 | 無料 (放棄済み) | 最大4ユーザーまで無料プラン |
BloomRPCからの移行
正直な移行に関する注意点:エクスポートできるものはありません。BloomRPCは意味のあるポータブルな状態を保持していなかったため、それから離れるのは些細なことです。
- .protoファイルを集める。 それらはBloomRPCではなく、あなたのリポジトリにあります。それが「エクスポート」のすべてです。
- Apidogにインポートする。 プロジェクトを作成し、proto(またはそのURL)を追加し、protoが他のprotoをインポートする場合は依存ディレクトリを追加します。サービスとrpcメソッドはサービスとメソッドとして表示されます。または、ファイルを完全にスキップして、実行中のサーバーに対してサーバーリフレクションを使用します。
- サーバーアドレスとTLSを設定する。 ターゲットURLを入力し、grpc://またはgrpcs://を選択します。
- メタデータと認証を再作成する。 BloomRPCに貼り付けていたヘッダーとトークンを再度追加しますが、今回はリクエストと一緒に保存されるため、一度入力するだけです。
- 保存して共有する。 保存された呼び出しはチームの共有デバッグ設定となり、これまでになかったものだとすぐに気づくでしょう。
BloomRPCを使い慣れたユーザーであれば、Apidogで10分以内に呼び出しを送信できるはずです。なぜなら、ステップ1から3はすでに知っている手順だからです。
他に知っておくべきBloomRPCの代替品
gRPCを完全なAPIプラットフォーム内で利用したいならApidogが最適です。もしあなたのニーズがより限定的なら、限定的なツールを公正に評価しましょう。
- grpcurl: gRPC版のcurl。シェルスクリプト、CIチェック、リフレクション対応サーバーに対するワンライナーに適したツールですが、GUIではなく、そう装うこともありません。私たちは最高のgrpcurl代替品で詳細に比較しました。
- grpcui: grpcurlの兄弟で、一時的なWeb UIを1つのサーバーに提供します。5分間のちょっとした試用には最適ですが、意図的に状態は保存されません。
- Kreya: gRPCとREST専用のデスクトップクライアントで、洗練されたプロトワークフローと無料ティアがあります。スタンドアロンクライアントを特に求めるなら、BloomRPCの直接の後継に最も近いものです。Kreyaとは何か、そして最高のKreya代替品でその限界がどこにあるかを確認してください。
- Postman: 2022年にgRPCサポートを追加しました。もしチームがすでに費用を払っているなら機能します。通常のPostmanの価格設定とワークスペースのトレードオフが適用され、それは最高のPostman代替品でカバーされています。
- evans: 対話型モードを備えたgRPC用のターミナルREPL。tmuxを使う人に愛されていますが、BloomRPCのGUIを求めていた人には不向きです。
パターンは次のとおりです。CLIは自動化向け、単一目的のGUIは独立したgRPC作業向け、そしてApidogはgRPCが複数のプロトコルの一つであり、呼び出し、テスト、ドキュメントを1か所にまとめたい場合です。
よくある質問
BloomRPCはまだメンテナンスされていますか?
いいえ。リポジトリは2023年1月4日にアーカイブされ、READMEには使用がもはや推奨されないと記載されています。アップデート、セキュリティ修正、リリースは今後ありません。現在のgRPCクライアントの比較では、新しいセットアップの選択肢から除外すべきです。
BloomRPCの設定をApidogにインポートできますか?
BloomRPCはポータブルなものを何も保存していなかったため、インポートファイルはありません。移行は、リポジトリから.protoファイルを再インポートするか(またはサーバーリフレクションを使用)、その後サーバーアドレス、TLSスキーム、およびメタデータを設定することを意味します。これは10分程度の作業であり、その後、設定は1台のマシンに閉じ込められるのではなく、保存され共有可能になります。
ApidogはgRPCストリーミングをサポートしていますか?
はい、ユニーク、サーバー ストリーミング、クライアント ストリーミング、双方向ストリーミングの4つの呼び出しタイプすべてをサポートしています。ストリーミング呼び出しは、メッセージを送信し、トラフィックのタイムラインを監視するライブセッションとして実行されます。各モードがいつ適切かを確認するには、gRPCストリーミングを参照してください。
コマンドラインで素早くgRPCコールが必要な場合はどうすればいいですか?
grpcurlを使用してください。特にリフレクション対応サーバーに対しては、スクリプト化されたアドホックな呼び出しをうまく処理し、どのGUIを選択するかに関わらずCIに含めるべきです。当社のgrpcurl代替ガイドは、それが十分でなくなる場所をカバーしています。
同じツールでgRPCとREST APIをテストできますか?
Apidogでは可能です。gRPC、REST、WebSocket、SSE、GraphQLがすべて1つのプロジェクト内に存在するため、gRPCとRESTの両方のインターフェースを公開するサービスは1つの場所にまとめることができます。gRPC APIのテストに関するガイドでは、エンドツーエンドのワークフローを紹介しています。
アーカイブされたクライアントを引退させる
BloomRPCはあなたに去るように言いました。残る疑問はどこへ行くかです。Apidogを.protoファイルまたはリフレクション対応サーバーに設定し、最初のユニークコールとストリーミングコールを行い、API作業の残りの部分の隣にそれらを保存してください。Apidogを無料でダウンロードしてください。4人までのチームは無料で、必要な移行ファイルはあなたのプロトファイルだけです。
