はじめに
Web アプリを学んでいると必ず出てくる「API」。
中でも REST API / GraphQL / gRPC はよく比較されますが、違いがわかりにくい…と感じる方も多いと思います。
前回と重なる部分もあると思いますがご了承ください。
この記事では、それぞれの特徴や使いどころをまとめました。
そもそも Web API とは?
Web API とは、インターネット越しにアプリ同士がデータをやり取りするための仕組みのこと。
アプリ同士が会話するための「共通のルール」のようなものです。
よく使われる3つの API 方式
1. REST API(レスポンスAPI)
これは前回の投稿でざっくりと解説しました。
いちばん一般的で、Web開発の定番。
URL と HTTP メソッド(GET/POST/PUT/DELETE)を使ってデータをやり取りします。
特徴
- シンプルで理解しやすい
- どの言語でも使える
- Web アプリやモバイルアプリで広く採用されている
向いている場面
- ブログ、SNS、ECサイトなど一般的な Web サービス
- バックエンド学習の最初の API としても最適
2. GraphQL(グラフキューエル)
Facebook が開発した柔軟なデータ取得ができる API。
REST と違い、必要なデータだけをまとめて取得できます。
特徴
- 必要な項目だけ取得できる(=無駄な通信が減る)
- フロントエンド側で柔軟にデータを指定できる
- スキーマで型が定義されていて扱いやすい
向いている場面
- 多くのデータを組み合わせて取得する SPA(React/Vue)
- クライアント主導の柔軟なデータ要求があるサービス
3. gRPC(ジーアールピーシー)
Google が開発した高速通信に特化した API 方式。
RESTよりも圧倒的に軽くて速いのが特徴です。
特徴
- バイナリ形式(Protocol Buffers)で超高速
- マイクロサービス同士の通信によく使われる
- 型が明確でエラーが起きにくい
向いている場面
- 高速処理が必要なシステム
- サーバー同士・マイクロサービス間の通信
- IoTのような軽量通信が求められる環境
まとめ:どう使い分けるの?
| API方式 | 強み | よく使う場面 |
|---|---|---|
| REST | とにかくシンプルで広く使われる | Webサービス全般 |
| GraphQL | 必要なデータだけ取得できる | SPA/モバイルアプリ |
| gRPC | 高速で型が強い | マイクロサービス・IoT |
結局どれを学べばいい?
最初に学ぶなら REST API 一択 です。
理由:
- ほぼすべてのWebアプリがRESTベース
- Laravel、Rails、Django など主要FWもRESTが基本
- API の考え方を理解しやすい
REST が理解できると、GraphQL や gRPC にもスムーズに移れます。
さいごに
この記事が、APIの違いを理解するきっかけになれば嬉しいです。