Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

gRPCとは?gRPCを徹底的に解説する

ネットでgRPCというものをよく見ることがありますね。それでは、このgRPCはどういうものなのでしょうか?本文では、gRPCについて徹底的に解説します。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

現在、ネットでgRPCというものをよく見ることがありますね。それでは、このgRPCはどういうものなのでしょうか?本文では、gRPCについて徹底的に解説します。

RPCとgRPC?

gRPCとは何かを紹介する前に、まずは「RPCとは何か」を知っておく必要があります。

RPCとは

RPC(Remote Procedure Call)は、リモート手続き呼び出しとも呼ばれ、分散コンピューティング環境において異なるプロセスやコンピュータ間でプログラムの呼び出しを行うための通信プロトコルです。RPCは、ネットワークを介してクライアントとサーバーの間でメッセージの送受信を行い、クライアントがサーバー上で実行されているプログラムや関数をリモートで呼び出すことができます。

RPCは、クライアントがリクエストを送信し、サーバーがそれに応答するという要求-応答モデルに基づいています。クライアントは、ローカルで実行されているかのようにリモートのプログラムを呼び出すことができ、結果を受け取ることができます。RPCは、ネットワークを透過的に扱うため、クライアントとサーバーの実装の詳細を意識することなく、分散システムを構築することができます。

クライアントのサーバー

一般的なRPCの仕組みでは、プログラミング言語やプラットフォームに依存しない中立的なインターフェース記述言語(IDL)を使用して、クライアントとサーバーの間でやり取りするメソッドやパラメータの情報を定義します。IDLを使用することで、異なるプログラミング言語やプラットフォームを使用しているクライアントとサーバーでも相互通信が可能になります。

RPCの概念と仕組みを利用した上、そもろもgRPCとは何でしょう?

gRPCとは

gRPCは、Googleが開発したオープンソースの高性能なリモートプロシージャコール(RPC)フレームワークです。簡単に言うと、gRPCの「g」はGoogleのことを指していて、Googleが開発したRPCのことになります。

gRPCは、Protocol Buffers(protobuf)というシリアライゼーション形式を使用して、クライアントとサーバー間の効率的な通信を可能にします。クライアントとサーバーの間でストリームや双方向通信をサポートすることができます。また、多言語に対応しており、さまざまなプログラミング言語で使用することができます。

gRPCのデータ送信プロセス

上図からわかるように、gRPCでリモート手続き呼び出しを行う場合、クライアントはgRPC Stubだけが必要で、Proto Requestを通じてgRPC Serverにサービスの呼び出しを開始し、gRPC ServerはProto Response(s)を通じて呼び出し結果をクライアントに返します。

ということで、gRPCは実際にRPCの一種であることがわかります。それでは、gRPC APIをデバッグしたり、テストしたりするには、どうしたらいいですか?gRPCは比較的に新しい規格のプロトコルとして、それに対応できるツールも少なくなります。次は、gRPCに完璧に対応できるAPI管理ツールを皆さんに紹介します。

ApidogはgRPC APIの作成とテストに対応可能

Postmanの他に、Apidogは、gRPC APIに完璧に対応できます。Apidogは、APIの設計、開発、デバッグ、テスト、モックなどの機能をも一体化した包括的なプラットフォームです。また、Apidogは日本語に対応しているので、非常に便利です。

button

gRPCプロジェクトの作成

Apidogのホームページで「新しいプロジェクト」ボタンをクリックして、gRPCプロジェクトを新規作成することができます。

grpcgRPCプロジェクトの作成

Protoのインポート

gRPCは、API中心のテクノロジーなので、開発に移る前に、.protoファイルを通じて、サービス、方法およびメッセージを定義する必要があります。そこで、Apidogを使用して、gRPCの単体テストを行う前に、APIの定義として.protoファイルをインポートする必要があります。

初のインポート

現在、.protoファイルをインポートするには、2つの方式が利用できます。

  • ローカルファイル
  • .protoファイルのURL
grpcProtoのインポート
  • .protoファイルは1つのprotoとしてインポートされ、その中のserviceはサービスになり、rpcは方法になります。
  • 当該.protoファイルは他の.protoファイルに依存している場合、手動で依存関係を追加する必要もあります。
  • .protoファイルは他の.protoファイル内のserviceに依存している場合、そのpackage は、選択の .protoファイルの packageと同じな場合、同じな Protoにインポートされます。

再インポート

インポートした.protoファイルが変更された場合、Apidogでそれを再インポートすることができます。Protoを右クリックして、「再インポート」をクリックします。

grpcProtoの再インポート

実行の方法

.protoファイルを使用して、 gRPCの方法を定義する場合、以下のように4つの方法が利用できます。

  • Unary:一元実行
  • Server Streaming:サーバーのストリーミング
  • Client Streming:クライアントストリーミング
  • Bidirectional Streaming:双方向ストリーミング

一元実行

一元の実行は、HTTPリクエストに似ています。アドレスバーにURLを入力して、「Message」タブでJSONフォーマットでメッセージを入力した後、「実行」ボタンをクリックします。

grpc一元実行

ストリーミング方式

ストリーミング方式は、Websocketの接続に似ています。「Message」タブでJSONフォーマットでメッセージを入力して送信できます。サーバーストリーミング、クライアントストリーミング、双方向ストリーミングは、全てストリーミング方式に属しています。

Apidogは、タイムラインを備えており、時間順に実行の状態、送受信のメッセージを表示します。メッセージをクリックすると、メッセージの詳細を見ることができるので非常に便利です。

grpcストリーミング方式

高度なオプション

動的値の自動生成

Apidog は、.protoファイルの内容を識別できるので、「自動生成」をクリックして、送信メッセージを自動的に生成できます。また、動的値ボタンをクリックして、動的値を利用することもできます。

grpc動的値の自動生成

変数の使用

gRPCのメッセージとMetadataで、Apidogの変数を利用できます。

grpc変数の使用

TLSをオンにする

gRPC APIは、TLSを通じて安全に接続することができます。

Apidogを使用すると、URLの前のプロトコルをクリックして、TLSの状態を快適に切り替えます。

また、URLに「grpcs://」を使用すると、ApidogはTLSをオンにします。それに対して、「grpc://」の場合は、TLSは無効になります。

grpc TLSをオンにする

サーバーのURLと環境の管理

URLアドレスの右側にある「+」アイコンをクリックして、現在利用中のサーバーURLを環境に追加することができます。

grpc サーバーのURLと環境の管理

そして、右上で環境やサーバーのURLを選択し、URLの設定を「デフォルトを継承」にすることで、すべての方法も同じなURLで単体テストを行うようになります。

URLの設定を「デフォルトを継承」にする

ProtoファイルとAPIのパラメータを確認

Protoファイルの内容を確認

Apidogの左側にメニューツリーのProtoをクリックすると、Protoファイルのオリジナル内容を確認できます。

Protoファイルの内容を確認

リクエストとレスポンスのパラメータを確認

gRPCはシーケンス化フォーマットとしてProtoBufを使用しています。これは、メッセージの送受信の際に、各メッセージがProtoBufフォーマットで転送されることを意味しています。ProtoBufは、他のテキストに基づくフォーマット(JSON,XML)とは異なり、バイナリ形式なので、人間がそれを読み書きしたりすることが難しくなります。

そこで、ApidogでgRPC APIを呼び出す際には、すべてのメッセージをJSONフォーマットで作成したり、表示したりしています。

APIの情報ページで、JSONフォーマットで表示されているレスポンスとパラメータの情報を確認できます。

リクエストとレスポンスのパラメータを確認

ProtoBufは、 JSONデータとの間、次のようなマッピング関係が存在しています。

ProtoBuf 3 JSON JSONのサンプル
message object {"fooBar": v, "g": null, …}
enum string "FOO_BAR"
map<K,V> object {"k": v, …}
repeated V array [v, …]
bool true, false true, false
string array "Hello World!"
bytes base64 string "YWJjMTIzIT8kKiYoKSctPUB+"
int32, fixed32, uint32 number 1, -10, 0
int64, fixed64, uint64 string "1", "-10"
float, double number 1.1, -10.0, 0, "NaN", "Infinity"
button
Skywork-OR1-32B: Deepseek R1に迫るオープンソース最上位モデル観点

Skywork-OR1-32B: Deepseek R1に迫るオープンソース最上位モデル

2025年4月13日、SkyworkAIはSkywork-OR1(Open Reasoner 1)シリーズをリリースしました。このシリーズには3つのモデルが含まれます:Skywork-OR1-Math-7B、Skywork-OR1-7B-Preview、そしてSkywork-OR1-32B-Previewです。 * これらのモデルは、数学的推論能力とコード推論能力に特化した大規模なルールベースの強化学習を用いてトレーニングされています。 * モデルはDeepSeekの蒸留アーキテクチャを基盤として構築されています:7BバリアントはDeepSeek-R1-Distill-Qwen-7Bをベースとしており、32BモデルはDeepSeek-R1-Distill-Qwen-32Bをベースとしています。 💡美しいAPIドキュメントを生成する素晴らしいAPIテストツールが欲しいですか? 開発チームが最大の生産性で一緒に作業するための統合型オールインワンプラットフォームが欲しいですか? Apidogはすべての要求を満たし、より手頃な価格でPostmanを置き換えます!ボタン Sky

中村 拓也

4月 13, 2025

2025年の30のベストPostman代替ツール | 無料でオープンソースのAPIテストツール観点

2025年の30のベストPostman代替ツール | 無料でオープンソースのAPIテストツール

Postmanは長い間、API開発のための定番ツールとして広く利用されており、API設計、テスト、およびドキュメント作成を提供しています。これにより、ソフトウェア業界でほぼ10年間普遍的な存在となっています。 しかし、2021年にPostmanが大幅な料金プランの変更を実施したことで、その優位性が揺らぎました。無制限ユーザーライセンスを廃止し、ユーザーごとの月額料金に移行したことが多くの開発者に影響を与え、無料でオープンソースの、コスト効率の良いPostmanの代替ツールを探す動きが加速しました。 幸運なことに、APIツールの景観は大いに広がり、機能が豊富で無料またはオープンソースのAPIテストツールが溢れています。この記事では、これらの機能、利点、欠点について包括的に説明します。 なぜユーザーはPostmanから離れているのか? Postmanは数年間、API開発およびテストのための定番ツールでした。しかし、多くのユーザーにとって、その無料プランの制約が致命的な問題となります — 特にプロジェクトが拡大し、チームが成長するにつれて。以下はユーザーが代替手段を探す理由です:

Oliver Kingsley

4月 11, 2025

Apidogで複数のリクエストボディ例を追加する方法観点

Apidogで複数のリクエストボディ例を追加する方法

Apidogで複数のリクエストボディ例を追加することは、APIドキュメントを強化する効果的な方法です。この簡単な手順により、さまざまな例を通じて開発者の理解を深め、実装効率が向上します。

中村 拓也

3月 12, 2025