この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:ぼうず
更新日時:2026-06-11 07:07:02

タイトル: API
SEOタイトル: API とは — Web API の種類・設計・認証完全ガイド

この記事の要点
  • API (Application Programming Interface) はソフトウェア同士が通信するための窓口・規約
  • Web API の主要方式: REST / GraphQL / gRPC / WebSocket / SOAP
  • HTTP メソッド (GET/POST/PUT/PATCH/DELETE) とステータスコード (2xx 成功 / 4xx クライアント / 5xx サーバ) が基本
  • 認証は API キー < OAuth 2.0 < JWT < HMAC 署名 の順で堅牢化
  • ドキュメンテーションは OpenAPI (Swagger) が事実上の標準、テストには Postman
  • 本番運用に必須: Rate Limiting / API ゲートウェイ / バージョニング

API とは何か

API (Application Programming Interface) は、ソフトウェアやサービスが他のプログラムから利用されるための「窓口」と「規約」をまとめた仕組みです。「決められた呼び出し方をすれば、決められた結果を返す」という契約に基づいています。

身近な例: スマホアプリが天気情報を取得する、決済を行う、地図を表示する、SNS に投稿する。これらはすべて裏側で「サービス提供側の API」を叩いています。

分類用途
Web APIREST / GraphQL / gRPCネットワーク越しの通信。本記事の中心
OS APIWin32 API / POSIXOS 機能の呼び出し(ファイル操作、プロセス等)
ライブラリ APIjQuery / React / NumPy同一プロセス内の関数呼び出し
ハードウェア APIOpenGL / DirectX / CUDAGPU・デバイスの抽象化

Web API の主要方式

方式プロトコルデータ形式得意領域
RESTHTTP/1.1, HTTP/2JSON (XML)汎用 Web API、最も普及
GraphQLHTTP (POST 主体)JSONクライアントが必要な項目だけ取得
gRPCHTTP/2 (バイナリ)Protocol Buffersマイクロサービス間の高速通信
WebSocketWS / WSS任意双方向リアルタイム通信(チャット・株価)
SOAPHTTP / SMTPXMLレガシー業務系・金融

HTTP メソッドとステータスコード

REST API の基本は HTTP メソッドとリソース URL の組み合わせです:

メソッド意味冪等性
GET取得GET /users/123
POST作成×POST /users
PUT全体更新PUT /users/123
PATCH部分更新×PATCH /users/123
DELETE削除DELETE /users/123

ステータスコードは 3 桁で意味が階層化されています:

  • 2xx 成功: 200 OK / 201 Created / 204 No Content
  • 3xx リダイレクト: 301 Moved Permanently / 304 Not Modified
  • 4xx クライアントエラー: 400 Bad Request / 401 Unauthorized / 403 Forbidden / 404 Not Found / 409 Conflict / 422 Unprocessable Entity / 429 Too Many Requests
  • 5xx サーバエラー: 500 Internal Server Error / 502 Bad Gateway / 503 Service Unavailable / 504 Gateway Timeout

REST API の呼び出し例

# curl で REST API を呼ぶ
curl -X GET https://api.example.com/v1/users/123 \
  -H "Authorization: Bearer eyJhbGc..." \
  -H "Accept: application/json"

# POST でリソース作成
curl -X POST https://api.example.com/v1/users \
  -H "Content-Type: application/json" \
  -d '{"name":"taro","email":"taro@example.com"}'

# PATCH で部分更新
curl -X PATCH https://api.example.com/v1/users/123 \
  -H "Content-Type: application/json" \
  -d '{"email":"new@example.com"}'

GraphQL の例 — 必要な項目だけ取る

# REST だと /users/123 が全項目返す
# GraphQL は欲しい項目だけ指定できる
query {
  user(id: 123) {
    name
    email
    posts(limit: 5) {
      title
      createdAt
    }
  }
}

# レスポンスはクエリと同じ形
{
  "data": {
    "user": {
      "name": "taro",
      "email": "taro@example.com",
      "posts": [...]
    }
  }
}

認証方式 — API キー / OAuth / JWT / HMAC

方式仕組み強度典型用途
API キー固定文字列をヘッダで送る社内 API / 簡易公開 API
Basic 認証ID:Pass を Base64HTTPS 前提の管理画面
OAuth 2.0アクセストークン発行サードパーティ連携(Google / Twitter / GitHub)
JWT署名付きトークンSPA / モバイル / マイクロサービス
HMAC 署名リクエスト全体に署名最高AWS / 決済 API

OpenAPI / Swagger によるドキュメント

OpenAPI Specification (OAS) は API の仕様を YAML / JSON で記述する標準。Swagger UI でブラウザから試せるドキュメントになります:

openapi: 3.0.3
info:
  title: User API
  version: 1.0.0
paths:
  /users/{id}:
    get:
      summary: Get user by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '404':
          description: Not Found
components:
  schemas:
    User:
      type: object
      properties:
        id: {type: integer}
        name: {type: string}
        email: {type: string, format: email}

Rate Limiting と API ゲートウェイ

本番 API には必ず流量制限が必要です。429 Too Many Requests を返し、レスポンスヘッダで残量を伝えます:

HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 873
X-RateLimit-Reset: 1700000000

# 上限超過時
HTTP/1.1 429 Too Many Requests
Retry-After: 60
{"error": "rate_limit_exceeded", "retry_after": 60}

大規模サービスでは API ゲートウェイ(AWS API Gateway / Kong / Apigee / Tyk)が認証・流量制御・ログ・キャッシュを一括処理します。

バージョニング戦略

  • URL に埋める: /v1/users / /v2/users(最も明示的、推奨)
  • ヘッダで指定: Accept: application/vnd.example.v2+json
  • クエリで指定: ?version=2(非推奨)

FAQ

Q: REST と GraphQL どちらを選ぶ?
A: シンプルな CRUD は REST、画面ごとに取得項目が大きく変わる SPA / モバイルは GraphQL が有利。マイクロサービス内部は gRPC。

Q: API キーと JWT の違いは?
A: API キーは固定文字列で長期間有効、JWT は有効期限付き署名トークンで失効可能。セキュリティは JWT が上。

Q: 公開 API を作るとき最低限やるべきことは?
A: HTTPS 強制 / 認証 / Rate Limit / OpenAPI ドキュメント / バージョニング / エラー形式統一の 6 点。

関連項目

  • REST — リソース指向 Web API の設計原則
  • GraphQL — Facebook 発のクエリ言語型 API
  • OAuth 2.0 / OIDC — 標準的な認可・認証フロー
  • OpenAPI / Swagger — API 仕様記述の標準