リモートプロシージャコール(りもーとぷろしーじゃこーる)
最終更新:2026/4/25
リモートプロシージャコールは、異なるコンピュータ間でのプログラムの実行を可能にする通信技術である。
別名・同義語 分散処理ネットワークプログラミング
ポイント
分散システムやネットワークプログラミングにおいて、異なるプロセス間での連携を実現するための基盤技術として広く利用されている。
リモートプロシージャコールとは
リモートプロシージャコール(RPC)は、あるコンピュータプログラムが、ネットワークを介して別のコンピュータ上のプログラム(リモートプロシージャ)の実行を要求し、その結果を受け取るための通信プロトコルです。あたかもローカルの関数を呼び出すかのように、リモートのプログラムを利用できる点が特徴です。
RPCの仕組み
RPCの基本的な流れは以下の通りです。
- クライアント: リモートプロシージャの呼び出しを要求します。
- クライアントスタブ: 要求をネットワーク上で送信可能な形式に変換(シリアライズ)します。
- ネットワーク: シリアライズされた要求がネットワークを介して送信されます。
- サーバースタブ: ネットワークから要求を受信し、元の形式に変換(デシリアライズ)します。
- サーバー: リモートプロシージャを実行します。
- サーバースタブ: 実行結果をネットワーク上で送信可能な形式に変換(シリアライズ)します。
- ネットワーク: シリアライズされた結果がネットワークを介して送信されます。
- クライアントスタブ: ネットワークから結果を受信し、元の形式に変換(デシリアライズ)します。
- クライアント: リモートプロシージャの実行結果を受け取ります。
RPCの利点
- 分散システムの構築: 異なるコンピュータに分散されたプログラムを連携させ、大規模なシステムを構築できます。
- モジュール化: プログラムを機能ごとに分割し、リモートプロシージャとして公開することで、再利用性と保守性を向上させることができます。
- 異種環境の連携: 異なるOSやプログラミング言語で記述されたプログラム間でも連携できます。
RPCの課題
- ネットワークの遅延: ネットワークを介した通信であるため、遅延が発生する可能性があります。
- セキュリティ: リモートプロシージャの実行を不正アクセスから保護する必要があります。
- 障害耐性: サーバー側の障害が発生した場合、クライアント側のプログラムに影響を与える可能性があります。
代表的なRPC技術
- gRPC: Googleが開発した高性能なRPCフレームワーク。
- REST: HTTPプロトコルを利用したWeb APIの設計スタイル。RPCの一種として扱われることもあります。
- SOAP: XML形式でメッセージを交換するRPCプロトコル。