OpenAPIを利用するツール

OpenAPI(OAS) を利用するツールや OpenAPI を生成するツールなどを改めて一通りおさらい。
ツールの使用目的からまとめているので、かなり重複があります。

# おことわり

使ったことがないツールも多いので、内容に正確性はないです。足りないものや間違いがありましたら教えていただけますと助かります。

# OpenAPI を記載するためのツール

### Swagger Editor

https://editor.swagger.io/

左側に OpenAPI を書くと右側にAPI定義を記載してくれるツール。
まずは OpenAPI とはどんなものかを知るときには、最初からペットショップのサンプルも張り付けてあるので便利。

### Apidog

https://apidog.com/jp/

APIデザイン中心の開発プラットフォーム。
作成したプロジェクトを選択してエクスポートすると、プロジェクトの内容を OpenAPI 形式で出力することができます。

### Stoplight Studio

https://stoplight.io/

OpenAPIをデザインするためのツール。
GUIでAPIの内容を記載していくと、合わせてOpenAPIの内容も記載してくれる。
Code を確認することにより、OpenAPIの内容を確認することができる。

# ソースから OpenAPI を生成するツール

### apidoc-to-openapi

https://github.com/GrahamMThomas/apidoc_to_openapi

[APIDOC](https://apidocjs.com) から OpenAPI を出力するツール。
2019年あたりからリリースがとまっている模様。
<!-- あまりメンテナンスされていない？ -->

### springdoc-openapi

https://springdoc.org/

SpringのAPIをAPIドキュメントに変換してくれる。
実行すると、swagger-ui が起動し、その中にOpenAPIのファイル(open-api.json)も出力してくれる[^1]。
Kotolinもサポート。

[^1]:https://springdoc.org/#how-can-use-custom-jsonyml-file-instead-of-generated-one

# OpenAPI からソースを生成するツール

OpenAPI で API の定義を記載したファイルから、APIサーバーやクライアントのコードを生成するツール。

### OpenAPI Generator

https://github.com/OpenAPITools/openapi-generator

サーバーのスタブと API クライアントのソースコードを生成してくれる。
サーバー側は C#、Go、Haskel、Java、Kotlin、PHP、Python、NodeJS、Ruby、Rust、Scalaなど。
API クライアント側は、Go、Haskell、Java、Node.js/JavaScript、Perl、PHP、Python、Ruby、Rust、Scal、Swift、TypeScriptなどに対応。
たくさんありすぎて書ききれない、、、

### Apidog

https://apidog.com/jp/

Apidog でもソースコードの生成が可能です。
OpenAPI から生成するというよりは、Apidog で API 仕様を書くか、 OpenAPI のファイルをインポートしてからその内容を元にソースを出力することができます。
出力できる言語は、Java、PHP、Kotolin、JavaScript、C#、Go、Scala、Python、Rust、Ruby、Perlなどのクライアントとサーバーのコードを出力することができます。
あと、Swiftのクライアントコードを出力することもできます。

### aspida

https://github.com/aspida/aspida

ブラウザと Node.js のための API クライアントを生成してくれるツール。

### openapi-python-client

https://github.com/openapi-generators/openapi-python-client

Python 用の API クライアントを生成してくれるツール。

# OpenAPI からAPIを叩くツール

主にテストとして、APIサーバーに接続してAPIを実行し、結果を確認することができるツール。

### Postman

https://www.postman.com/

APIを外部から実行し動作を確認することができるツール。
OpenAPI の内容をインポートして、API定義を読み込むことができる。

### Insomnia

https://insomnia.rest/

Insomnia も OpenAPI の内容をインポートして、APIを実行することができる。

### Apidog

https://apidog.com/jp/

ApidogもAPI仕様から対象のAPIを実行することができる。

### Swagger Editor

https://editor.swagger.io/

Swagger Editor もAPIを叩くことができます。ただ、OpenAPIを貼り付ける必要があるので、ちょっと確認する以外の用途では使いづらいかも。

# OpenAPI からテストを生成するツール

### PACT

https://pact.io/

APIの契約テストを行うツール。
APIクライアント側（コンシューマ側）のテストと、APIサーバー側（プロデューサー側）のテストを行うことができる。
両方を同じテスト仕様（契約）によってテストすることにより、APIクライアント側とAPIサーバー側の結合が問題なく行えることを検証する。

### Apidog

https://apidog.com/jp/

Apidog では、自動テストを管理することができ、OoenAPIの内容から指定したパラメータに対して正しいステータスを返すのかといったテストを行うことができます。

# OpenAPI から仕様書を生成するツール

### Swagger UI

https://swagger.io/tools/swagger-ui/

OpenAPIの内容を仕様書として表示するツール。
Swagger Editor の右側（？）。
APIサーバーの簡単な動作確認もできる。

# OpenAPI から API Gateway を設定するツール

## AWS

### Amazon API Gateway

https://aws.amazon.com/jp/api-gateway/

Amazon API Gateway では、Gateway の設定を OpenAPI の定義を読み込むことによって行うことができます。[^2][^3]

[^2]:https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-import-api.html
[^3]:https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/http-api-open-api.html

## Azure

<!-- ### Azure Application Gateway -->

<!-- ### Azure Front Door これは CDN -->

### Azure API Management

https://azure.microsoft.com/ja-jp/products/api-management

Azure API Management でも、OpenAPI を設定としてインポートすることができます。[^4]

[^4]:https://learn.microsoft.com/ja-jp/azure/api-management/import-api-from-oas?tabs=portal

## GCP

### API Gateway

https://cloud.google.com/api-gateway?hl=ja

Google Cloud では名前もそのままの API Gateway があります。
APIの設定維持に OpenAPI の内容をインポートすることができます。[^5]

[^5]:https://zenn.dev/ncdc/articles/1cb8151cfdfb3c

<!--
## Kubernetes

### Ingress

## リバースプロキシー

### Nginx
-->