API・メッセージング

REST API れすと えーぴーあい

HTTPWeb APIJSONエンドポイントリソースステートレス
REST APIについて教えて

簡単に言うとこんな感じ!

Webサービス同士が「共通のお作法」で会話するための仕組みだよ!「この住所(URL)にこのお願い(GET/POSTなど)を送ると、このデータ(JSON)が返ってくる」っていうルールで動いてるんだ。アプリとサーバーの間の”標準語”みたいなもの!


REST APIとは

REST APIとは、Webシステム同士がデータをやり取りするための「設計スタイル+通信のお作法」のことです。RESTは「REpresentational State Transfer(表現状態転送)」の略で、2000年にロイ・フィールディング氏が博士論文の中で提唱したアーキテクチャスタイルです。APIは「Application Programming Interface」の略で、ソフトウェア同士が会話するための窓口のこと。つまりREST APIは、「RESTというルールに従った、システム間の窓口」です。

身近な例で言えば、天気予報アプリがスマホに天気を表示できるのは、気象データを持つサーバーにREST APIで問い合わせているから。楽天やAmazonの商品情報を他のサイトに表示する「外部連携」も、多くがREST APIを使っています。現代のWebサービスのほとんどが、何らかの形でREST APIに依存していると言っても過言ではありません。

ビジネスの現場では、「システムA(既存の基幹システム)」と「システムB(新しいSaaS)」をつなぐ際に「REST APIで連携できますか?」という会話が頻繁に登場します。APIが公開されているかどうかは、システム選定・発注の際の重要な確認ポイントのひとつです。


RESTの5つの核心:どんなルールで動いているの?

RESTには設計上の原則(制約)があります。これを守って作られたAPIを「RESTful API」と呼びます。

原則意味実務上のイメージ
統一インターフェース決まった方法(HTTPメソッド)でやり取りするメニューが統一されたファストフード
ステートレスサーバーは前の会話を覚えない毎回「初対面」として話しかける
クライアント・サーバー分離画面側とデータ側を分けて作るフロントとバックの独立
キャッシュ可能同じ回答は使い回してよいよくある質問はFAQで済ませる
階層化システム中継サーバーを挟んでもOK電話が交換機を通っても問題ない

HTTPメソッド:「お願いの種類」は4種類

REST APIでは、URLで「どのデータか」を指定し、HTTPメソッドで「何をしたいか」を伝えます。これが「CRUD操作」と対応しています。

操作の種類(CRUD)   HTTPメソッド    例:ユーザー情報への操作
─────────────────────────────────────────────────────────────
Create(作成)    →  POST      →  POST   /users        (新規登録)
Read  (読取)    →  GET       →  GET    /users/123    (ID:123を取得)
Update(更新)    →  PUT/PATCH →  PUT    /users/123    (ID:123を更新)
Delete(削除)    →  DELETE    →  DELETE /users/123    (ID:123を削除)

レスポンスの形:JSONってなに?

REST APIのデータのやり取りには、主にJSON(JavaScript Object Notation)という形式が使われます。人間にも読みやすい、シンプルなテキスト形式です。

{
  "id": 123,
  "name": "山田太郎",
  "email": "yamada@example.com",
  "department": "営業部"
}

歴史と背景

  • 2000年 — ロイ・フィールディングが博士論文でRESTを提唱。当時はSOAPという重厚なAPIが主流だった
  • 2002〜2004年 — Amazon・eBayがREST APIを外部公開。開発者に「シンプルなAPIって便利!」と広まり始める
  • 2006〜2010年 — Twitter・Facebook・GoogleがREST APIを提供。スマートフォンアプリとの連携需要が爆発的に増加
  • 2010年代前半 — REST APIがWeb開発のデファクトスタンダード(事実上の標準)に。SOAPはレガシーシステムに追いやられる
  • 2015年頃〜GraphQL(Facebookが開発)が登場し、「REST vs GraphQL」の議論が始まる。RESTは依然として圧倒的多数派
  • 現在 — クラウドサービス(AWS・Azure・Salesforceなど)のほぼすべてがREST APIを提供。システム間連携の”共通語”として定着

SOAP・GraphQL・WebSocketとの比較

REST APIの立ち位置を、他のAPI方式と比べてみましょう。

比較項目REST APISOAPGraphQLWebSocket
覚えやすさ◎ シンプル△ 複雑○ 慣れが必要
データ形式JSON(主流)XMLJSON任意
通信方向一方向(要求→応答)一方向一方向双方向
向いている用途Webサービス全般金融・官公庁の連携複雑な検索・SNSチャット・リアルタイム
普及度◎ 最多△ 減少傾向○ 増加中○ 特定用途

REST APIとSOAPのシステム上の違いをざっくり図にすると、こんなイメージです。

REST API クライアント(アプリ・ブラウザ) GET /users/123 HTTP + JSON {"id":123,"name":"山田太郎"} サーバー(Web API) URLで操作対象を識別 ✔ シンプル ✔ 軽量 ✔ ブラウザから直接OK ✔ キャッシュが使える SOAP クライアント(アプリ) <soap:Envelope>...</soap:Envelope> HTTP + XML(Envelope形式) 厳密なスキーマ定義が必要 サーバー(Webサービス) WSDLで操作を定義 ✔ 厳密な型チェック ✔ エンタープライズ向け △ 重い・複雑・学習コスト高

関連する規格・RFC

規格・RFC番号内容
RFC 7230〜7235HTTP/1.1の仕様(RESTのベースプロトコル)
RFC 7540HTTP/2の仕様(REST APIの高速化に活用)
RFC 8259JSONのデータフォーマット仕様
RFC 6749OAuth 2.0(REST APIの認証認可に広く使われる)
OpenAPI Specification(旧Swagger)REST APIの定義・ドキュメント記述の事実上の標準

関連用語

  • API — システム間の「窓口」全般を指す概念。REST APIはAPIの一種
  • JSON — REST APIのデータ形式として最も広く使われる軽量テキスト形式
  • HTTP — REST APIが使う通信プロトコル。GETやPOSTはHTTPのメソッド
  • エンドポイント — REST APIにアクセスするためのURL。窓口の「住所」にあたる
  • OAuth — REST APIへのアクセスを安全に制御する認証認可の仕組み
  • GraphQL — Facebookが開発したREST APIの代替となりうる新しいAPI方式
  • WebSocket — チャットなどリアルタイム通信に向いた双方向通信プロトコル
  • OpenAPI — REST APIの仕様を記述・共有するためのドキュメント標準