システム開発

OpenAPI・Swagger おーぷんえーぴーあい・すわっがー

API仕様REST APIドキュメント自動生成スキーマコード生成
OpenAPI・Swaggerについて教えて

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

REST APIの「取扱説明書」を標準フォーマットで書く仕組みだよ! このフォーマットで書くと、見やすいドキュメントが自動で生成されるし、クライアントコードも自動生成できちゃうんだ。システムをつなぐとき「APIの仕様書OpenAPIで」と言えば、開発者にすぐ伝わるんだ!


OpenAPI・Swaggerとは

OpenAPI仕様(OAS)は、REST APIのインターフェースを機械・人間が読める形式で記述するための標準仕様です。もともとはSmartBear社が開発した「Swagger」というツールセットの仕様部分が、2016年にLinux Foundation傘下のOpenAPI Initiativeに寄贈され「OpenAPI」という名称になりました。現在もSwaggerという名称はツール群(Swagger UI・Swagger Editor・Swagger Codegen)として残っています。

OpenAPI仕様で書かれたYAML/JSONファイルには、エンドポイント一覧・HTTPメソッド・リクエスト/レスポンスのデータ構造・認証方法などが記述されます。これを使うと:

  1. Swagger UIで視覚的に見やすいAPIドキュメントを自動生成
  2. Swagger Codegen / OpenAPI Generatorで各言語のクライアントSDKを自動生成
  3. API設計段階(Design-First)で仕様を共有し、実装前に合意形成

発注側にとっては「OpenAPIで仕様書を提供してください」と一言言うだけで、標準化された仕様書が手に入り、他システムとの連携もスムーズになります。


OpenAPI仕様の主要要素

要素内容
pathsAPIエンドポイント一覧/orders, /users/{id}
components/schemasデータ構造の定義Order, User, Error
requestBodyリクエストの形式・必須項目POSTで送るJSONの構造
responsesレスポンスの形式・ステータス200 OK, 404 Not Found
securitySchemes認証方式の定義Bearer Token, API Key
serversAPIのベースURLhttps://api.example.com/v1

歴史と背景

  • 2011年 — Tony TamがSwaggerを開発。REST API記述の先駆けとなる
  • 2014年 — Swagger 2.0リリース。事実上の業界標準として広まる
  • 2016年 — SmartBear社がSwaggerの仕様部分をOpenAPI Initiativeに寄贈。「OpenAPI Specification」に改称
  • 2017年OpenAPI 3.0リリース。Swagger 2.0から大幅に機能強化
  • 2021年OpenAPI 3.1リリース。JSON Schemaとの完全互換を実現
  • 2023年現在 — AWS・Google・Microsoft・GitHubなど主要プラットフォームのほぼすべてがOpenAPIで仕様を公開

OpenAPI仕様書の例

openapi: 3.0.0
info:
  title: 注文管理API
  version: 1.0.0
paths:
  /orders/{id}:
    get:
      summary: 注文を取得する
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
components:
  schemas:
    Order:
      type: object
      properties:
        id:
          type: integer
        amount:
          type: number
        status:
          type: string

OpenAPIのワークフロー

OpenAPIを使った開発ワークフロー(Design-First) ① API設計 OpenAPI YAMLを チームで合意 ② ドキュメント Swagger UIで 自動生成 ③ コード生成 クライアントSDKを 自動生成 ④ テスト・検証 仕様に対する 自動バリデーション OpenAPIを使うメリット • 仕様書とコードが同期 • 認識齟齬を防ぐ • 開発速度アップ

関連する規格・RFC

規格・RFC番号内容
OpenAPI Specification 3.1OpenAPI Initiativeが管理する最新の公式仕様
JSON Schema Draft 2020-12OpenAPI 3.1がスキーマ定義に採用している標準
RFC 8259(JSON)OpenAPIで使用されるJSONフォーマットの仕様

関連用語