APIデザインの基礎|REST・GraphQL・WebSocket の選択と設計
Webシステムの通信方式(API)の主要パターンを比較し、ユースケースに応じた適切な選択と設計原則を解説します。
REST API
HTTPメソッド(GET・POST・PUT・DELETE)とリソース(URL)でシステムを設計する最も一般的なAPI設計。ステートレス・キャッシュ可能・均一インターフェースがRESTの原則。設計が直感的でドキュメント化しやすく、最も広く採用されている。
GraphQL
Facebook開発のクエリ言語ベースAPI。クライアントが必要なデータを宣言的に指定して取得できる。メリット:Over-fetching(不要なデータの取得)・Under-fetching(複数リクエスト)を解消。デメリット:キャッシュが難しい・N+1問題のリスク。フロントエンドが複雑なBFFパターンに向く。
WebSocket
双方向リアルタイム通信を実現するプロトコル。一度接続を確立すると、サーバーからのプッシュ通知が可能。チャット・リアルタイム通知・ライブダッシュボードに使用。
選択基準
- 一般的なCRUDシステム:REST
- 複雑な取得要件・フロントエンドの柔軟性:GraphQL
- リアルタイム双方向通信:WebSocket
まとめ
API設計で最初に選ぶべきはREST。シンプルで標準的なため、チームの学習コストとツールのサポートが最も充実しています。特定のユースケースが明確になった段階でGraphQL・WebSocketを検討する段階的アプローチが現実的です。
エンジニア・技術者におすすめの書籍
技術力を上げたいエンジニアに、実践的な名著を厳選して紹介します。





