派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

RPC型フレームワークとは?RESTとの違いや注目される背景を解説

Webアプリを開発するとき、「REST」という考え方があります。そんな中、「tRPC」「gRPC」「GraphQL」といった名前もよく聞くようになりました。そして、「Hono」や「ElysiaJS」などのWebフレームワークでも「RPC」という考え方が使われています。なぜRPCが注目されているのか、実際にどのような点が便利なのかを解説します。

RESTとは

まずはREST(Representational State Transfer)について振り返ってみましょう。RESTは、Webブラウザが取得するリソース(データの種類)をURLで表現し、HTTPのGETやPOST、PUT、DELETEといったメソッドで操作する考え方です。

たとえば、一般的なWebサイトの閲覧では、URLを指定すると、そのURLからデータを取得します。このとき、Webブラウザは裏側でHTTPのGETというメソッドを使ってWebサーバーと通信し、その結果を表示しています。

一方、Webブラウザで掲示板やECサイト、SNSなどにアクセスし、投稿するときは、Webサーバー上のデータを更新します。このとき、Webブラウザは裏側でHTTPのPOSTというメソッドを使って通信します。HTMLのformタグを使うときに、次のような「method="POST"」という指定を書いたことがある人も多いでしょう。

<form action="..." method="POST">
...
</form>

もちろん、GETを使って更新する、POSTを使って更新しない、といった使い方もできますが、管理の観点から次のように使い分けることが一般的です。

このとき、HTTPのメソッドと合わせてURLをどのように設計するかを意識しなければなりません。

RPCとは何か

RESTは、WebブラウザからWebサーバーに対してHTTPメソッドとURLで処理を呼び出す考え方でした。これは、外部にあるプログラムを呼び出す方法だと考えることもできます。

プログラムを作るときは、関数や手続き、メソッドと呼ばれる処理のかたまりを呼び出します。これらは、同じプログラム内にあることが多いですが、自分のコンピューター上にあるライブラリを呼び出すことや、外部のプログラムを呼び出すこともあります。

今回の「RPC」は「Remote Procedure Call」の略で、直訳すると「遠隔手続き呼び出し」です。つまり、呼び出す関数や手続きが外部にあることが特徴です。このとき、これまでの関数を呼び出すときと同じように使うことを前提としています。

たとえば、JavaScriptでローカルの関数を実行するときは、次のように記述します。

const user = getUser(1);

一方、JavaScriptでRPCの関数を実行するときは、次のように記述します。

const user = await client.getUser(1);

このように、処理を実行した結果の応答を待つために、「await」と記述して非同期で通信することを意識する程度で、呼び出し側のプログラムでの実装方法に大きな差はありません。RESTのようにメソッドやURLを意識する必要はなく、見た目がローカル関数の呼び出しに近いため、開発者にとっては「関数を呼ぶだけ」という感覚に近く、RESTよりも直感的です。

ネットワークの遅延や障害、認証や認可などの違いを考慮する必要がありますが、大事なのは、RPCは「関数名」で操作を表現できることです。RESTのようにURLを意識する必要はなく、関数名をどのように設計するかを考えればよいのです。

RPC型フレームワークの例

RPCを使うとき、対応したフレームワークを使うことで手軽に実装できます。このとき、TypeScriptというプログラミング言語を使った代表的なRPCフレームワークとして「tRPC」があります。サーバー側とクライアント側で同じプログラミング言語を使うことで、型情報を自動的に共有できることが最大の特徴です。

サーバー側での型情報の変更がクライアント側にも即座に反映されるため、「型が合わずにエラーが発生する」というミスが減ります。Next.jsとの相性が非常に良く、個人開発やスタートアップで多く採用されています。

また、Googleが開発した、高速・高効率なRPCフレームワークとして「gRPC」があります。データのやり取りにProtocol Buffersという形式を使い、JSONより軽量なバイナリ形式で通信します。

これはマイクロサービス(大きなシステムを小さなサービスに分割する構成)でよく使われており、処理速度が求められる場面で活躍します。学習コストはやや高めですが、大規模なシステム開発では強力な選択肢です。

厳密にはRPCとは異なりますが、「必要なデータを関数的に取得する」という考え方が似ている方法としてGraphQLがあります。データベースからデータを抽出するときにSQLを実行するのと同じように、1つのURLにアクセスしながらも「欲しいデータの形を自分で指定できる」ことが特徴です。

RPC型フレームワークのメリット

RPCを使うメリットとして、型安全性が高いことが挙げられます。RESTでは自由な形式でデータを送信できますが、tRPCのようにTypeScriptと組み合わせると、APIを呼び出すときの入力や出力で型が保証されます。呼び出しているAPIが何を返すのかが明確になり、ドキュメントを何度も読み返す手間が減ります。

また、関数を呼び出す感覚で開発できることから、URLの設計やHTTPメソッドの選択を考える必要はありません。これまでの関数呼び出しと同じように、ビジネスロジックの実装に集中できます。

そして、AIなどによるソースコードの自動生成でもより確実に実装できることが期待できます。定義ファイルを用意することで、クライアント側のソースコードも自動生成できることから、手書きのソースコードが減り、ミスも少なくなることが期待されます。

まとめ

RPC型フレームワークは「別サーバーの処理をローカルの関数のように呼び出す」という考え方で、RESTと比較して型の安全性や開発体験の向上、ソースコードの自動生成といったメリットがあります。まずは小さなプロジェクトで試してみてください。

【筆者】増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピューターを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『Pythonではじめるアルゴリズム入門』『図解まるわかり プログラミングのしくみ』『「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック』、最新刊の『AI用語図鑑』(翔泳社)がある。

※本記事に記載されている会社名、製品名はそれぞれ各社の商標および登録商標です。
※本稿の内容は2026年6月時点の情報に基づいています。