トップ OSS紹介 gRPC

gRPC

サポート対象

NRIのOpenStandiaが提供するgRPC最新情報

バージョンアップ情報

gRPC情報

gRPCとは

gRPC(ジーアールピーシー)はGoogleが2015年に開発したオープンソースのRPCです。RPC(Remote Procedure Call/遠隔手続き呼び出し)とは、ネットワーク上の他端末と通信するための仕組みのことで、これによって他端末のプログラムをリモートで実行することができます。

gRPCは、Google社内で10年以上利用されていた独自のRPCであるStubbyをもとにしており、SPDYやHTTP/2、QUICの台頭に連動して標準化されました。

主な特徴

gRPCは、クライアントアプリケーションが他端末上のサーバーアプリケーションのメソッドを直接呼び出せるため、分散アプリケーションやサービスを容易に作成できます。
リモートで実行できるメソッドはクライアントのスタブに記載されています。スタブからメソッドを指定すると、サーバー側にて指定されたメソッドを処理します。

他のコンポーネントとのやりとりを記述するIDL(Interface Definition Language)としてProtocol Buffersを利用しています。
Protocol Buffersとはオープンソースのバイナリシリアライズプロトコルであり、サービスの定義やクライアントライブラリの自動生成を容易に実施できます。
そのため、異なる言語やプラットフォーム同士であっても効率よくデータのやりとりができます。

またgRPCはHTTP/2上で動作するため、双方向ストリーミングや1つのTCP接続に対する多重リクエストを実現します。これにより、gRPCを用いてレスポンシブでリアルタイム性のあるアプリを開発することができます。

ユースケース

gRPCはiOSおよびAndroid用のライブラリを生成でき、HTTP/2を使用してプロキシやファイアウォールを容易に通過できるため、モバイルクライアントやWebクライアントをバックエンドサービスと繋げる際に利用されています。ブラウザで使用するJSライブラリを開発する際にも利用されています。また、マイクロサービスの相互接続として理想的であり、Googleでもマイクロサービスを接続するためにgRPCを使用しています。
下記URLに具体的なユースケース例の記載があります。

動作環境

gRPCはC++やJava、python、Go、Rubyなどさまざまな言語に対応しています。
言語ごとの公式サポート状況は下記の表の通りです(※202211月現在)。

C/C++

Linux,Mac:GCC 6.3以上、Clang 6以上
Windows (10以降):Visual Studio 2017以上

C#

Linux,Mac:.NET Core, Mono4以上
Windows (10以降):.NET Core, NET4.5以上

Dart

Linux,Mac,Windows:Dart:2.12以上

Go

Linux,Mac,Windows:Go 1.13以上

Java

Linux,Mac,Windows:Java 8以上(Android:Kitkat以上)

Kotlin

Linux,Mac,Windows:Kotlin:1.3 以上

Node

Linux,Mac,Windows:Node v8 以上

Objective-C

macOS (10.10以上)、iOS(9.0以上):XCode 12以上

PHP

Linux,Mac:PHP:7.0以上

Python

Linux,Mac,Windows:Python:3.5以上

Ruby

Linux,Mac,Windows:Ruby:2.3以上

最新の情報は、下記URLをご参照ください。

gRPCのライセンス

gRPCのライセンスは、「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • tRPC

    tRPC

    ティーアールピーシー。フルスタックのTypeScript開発者向けのフレームワークです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。