この記事は Open API Advent Calendar 2017 の 1 日目の記事です。
Open API Specification は、 Open API Initiative が策定を進めている REST API を定義するための仕様です。どの URL にどのようなパラメータを渡すとどのような結果が返ってくるかを記述するための JSON/YAML ベースのフォーマットで、ツールやサービスとの連携も図られています。
今年 2017 年は、 3.0.0 がリリースされました。元となった Swagger が 1, 2 で Open API Spec としては最初のバージョンとなります。 構造の改善 が入り、全体的に使い勝手が良くなった・細かいハックをしなくても運用しやすくなったという印象です。 また、 2016年の API Blueprint (apiary) に続き RAML の Mulesoft なども加わったことで、 Swagger 陣営は勝利宣言をしました。
ツールの面では Swagger Editor/UI がサポートを開始 し、いよいよ本格的に利用を開始できる感じになってきました。また、他にも対応したツールが出てきています (公式リスト、非公式リスト)。ツールを作った際には OAI のページから投稿 できるようなので、有名になるチャンスかもしれません。
サービスの領域でも、 AWS の API Gateway や GCP Cloud Endpoint、 [Azure Functions] (https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-openapi-definition) も Swagger ではなく OpenAPI に言及しています。バージョン 3 は、すでにそろっているわけではありませんが、次第に広まるだろうと予想されます。
Swagger/OpenAPI を活用しているプロダクトとしては Kubernetes が挙げられます。彼らは apimachinary という(おそらく今の所) Kubernetes 専用のライブラリを通して活用しています。 VM Ware の Docker Registry Harbor も Swagger の仕様が書かれています。リリースからまだそれほど経っていないからだとは思いますが、バージョン 3 を活用したプロダクトは見つかりませんでした。
サーバレスやコンテナといった盛り上がっている領域の裏で、今後このような OpenAPI のエコシステムに支えられたプロダクトが多く出てくると期待しています。 Advent Calendar の 1 日目として 現状の OpenAPI 事情をまとめてみました。