Open API とは何か

調べてもいつも忘れるので、自分でまとめてみる。 API というのは(多くの IT エンジニアにとっても)身近なものなはずで、 その API の “Open” な仕様というのは興味をひくキーワードではなかろうか。

Open API の概要

Open API (※1)と聞くと、何かの API サービスや API の実装に便利なライブラリなどを想像してしまいそうだが、そうではない。 Open API は、RESTful API のインタフェイス定義の記述形式を仕様化したもので、 統一的な定義を用いることにより開発者間の合意を助けるだけでなく、 ドキュメント生成やモック生成の自動化などにより作業効率化を図るものである。

OAI (Open API Initiative) は、Open API の策定推進のために結成された団体である。(※2) 歴史的に Open API は Swagger の仕様を移行したもので(※3)、そういった経緯で Swagger が標準的な実装となっている。

OAI のサイトが Open API Initiative で、 Open API の仕様は OpenAPI-Specification/versions at master · OAI/OpenAPI-Specification で、 バージョンごとに公開されている。(※4)

Open API の仕様

Open API では、RESTful API のインタフェイス定義自体も JSON(もしくは YAML)で記述する。 JSON は URL パスごとに用意するイメージで、 メソッドごとにパラメータとレスポンスの定義を記述するフィールド群と、 各種メタデータを記述するフィールド群をもつオブジェクトをルートとする。

swagger: '2.0'
info:
  title: Sample API
  version: '1.0'
host: api.example.com
paths:
  /hello:
    get:
      produces:
        - application/json
      responses:
        200:
          description: OK

所感

仕様自体は必要十分な構成。 JSON と聞くと入れ子が深くなるケースが気になるが、 サンプルをみる限り視認性も悪くなさそう。 個人的には使う価値は十分あると思っていて、 もちろん開発者間の合意という点だけなら、見やすいフォーマットであればなんでもいいんだけど、Swagger フレームワークの提供する便利な機能を含めて評価するべきで、非常に有用である。