アーキテクチャ 2026-06-27 ⏱ 約 10 分

APIスタイルの比較:REST・GraphQL・gRPC・Webhook・WebSocket・メッセージング

REST・GraphQL・gRPC・Webhook・WebSocket・メッセージングという6つのAPIスタイルを、通信モデルによる分類軸で整理し、それぞれの概要・設計観点・pros/consと使い分けの指針を横断的にまとめる。API設計でスタイルを選ぶときの地図となる記事。

Read in: en
APIスタイルの比較:REST・GraphQL・gRPC・Webhook・WebSocket・メッセージング

はじめに

APIと一口に言っても、その通信スタイルは一つではない。

リクエストに応答する同期的なものから、サーバーから一方的に通知するもの、複数のシステムが非同期にメッセージを交換するものまで、目的に応じた選択肢がある。

本記事では、代表的な6つのAPIスタイルを横断的に比較する。

それぞれの概要・設計観点・pros/consを整理し、最後に使い分けの指針を示す。個別の深掘りは、関連記事へのリンクをたどってほしい。

分類軸

比較の前に、APIスタイルを整理する分類軸を示す。

この軸で6スタイルを俯瞰すると、次のように整理できる。

スタイル 通信モデル 主な方向 同期性
REST リクエスト/レスポンス クライアント主導 同期
GraphQL リクエスト/レスポンス クライアント主導 同期
gRPC リクエスト/レスポンス(+ストリーム) クライアント主導 同期
Webhook イベント通知 サーバー主導 非同期
WebSocket 双方向ストリーム 双方向 非同期
メッセージング メッセージ交換 仲介経由 非同期

REST

HTTPのメソッド(GET/POST/PUT/DELETE)とURLでリソースを操作する、最も普及したスタイルである。

設計観点

リソースを中心に設計し、ステートレスな通信を基本とする。HTTPのキャッシュやステータスコードをそのまま活かせる。

pros / cons

深掘りはWeb APIの設計を参照してほしい。

GraphQL

クライアントが必要なデータの形をクエリで指定し、1回のリクエストで過不足なく取得するスタイルである。

設計観点

スキーマを型で定義し、1つのエンドポイントに集約する。オーバーフェッチやアンダーフェッチを抑えられる。

pros / cons

深掘りはGraphQLの採用判断を参照してほしい。

gRPC

Protocol BuffersとHTTP/2を使う、高速なRPCスタイルである。

設計観点

スキーマ(.proto)からコードを生成し、型安全に通信する。単方向だけでなく双方向ストリーミングも扱える。

pros / cons

深掘りはgRPCの採用判断を参照してほしい。

Webhook

イベントが起きたとき、サーバーが登録済みのURLへHTTPで通知するスタイルである。

設計観点

受信側がエンドポイントを用意し、送信側がイベント発生時にPOSTする。ポーリングを不要にする「逆向きのAPI」である。

pros / cons

WebSocket

1つのコネクション上で、クライアントとサーバーが双方向にメッセージを送り合うスタイルである。

設計観点

HTTPからアップグレードして常時接続を張る。チャットや通知など、低遅延の双方向通信に向く。

pros / cons

メッセージング

送信側と受信側の間にブローカー(メッセージキューやイベントストリーム)を挟み、非同期にメッセージを交換するスタイルである。

設計観点

RabbitMQのようなキューや、Kafkaのようなログ型ストリームを仲介に使う。送信側と受信側を時間的・空間的に疎結合にする。

pros / cons

横断比較表

観点 REST GraphQL gRPC Webhook WebSocket メッセージング
結合度 やや密(スキーマ共有) 密(接続維持) 最も疎
スキーマ OpenAPIで補完 型必須 .proto必須 緩い 緩い 任意(CloudEvents等)
リアルタイム性 中(ストリーム) 中(非同期)
双方向 × × ○(ストリーム) △(逆方向) △(pub/sub)
スケール 容易 容易 容易(水平)
代表用途 一般的なCRUD 柔軟なデータ取得 内部マイクロサービス 外部連携通知 チャット・実時間 イベント駆動・非同期処理

使い分けの指針

要件からスタイルを選ぶときの目安を示す。

実際には、1つのシステムで複数を組み合わせることが多い。たとえば、外部公開はREST、内部はgRPC、通知はWebhook、非同期処理はメッセージング、という具合である。

まとめ

APIスタイルは、通信モデル(リクエスト/レスポンスか、イベント・ストリームか)と同期性で整理できる。

どれが優れているかではなく、要件に合うスタイルを選び、組み合わせることが重要である。

参考

Tags: API REST GraphQL gRPC WebSocket Webhook メッセージング
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事