10.7 APIドキュメントを生成する

フロントエンド・バックエンドの両方を小さいチームで開発する場合は、APIドキュメントを準備せず「仕様はコードを見て欲しい」といったやり取りで成立する場面も多いでしょう。しかし、ある一定規模ではスケーラビリティの観点からAPI仕様書のようなリファレンスドキュメントを求められる場合が増えてきます。HTTP APIの場合はOpenAPI Specification(以後OAS)を利用すると簡単にリファレンスドキュメントを生成できて便利です。OASはYAML(JSON)でAPI情報を定義していきますが、開発が進むとともにAPI定義も進化することが多く、API定義とGoのサーバー実装との間で、同期をどう取るかの戦略が重要です。現実的にはAPI定義を正にするか、Goのコードを正にするかの2択となるでしょう。運用形態によって3つに分類します。

  1. Goのコードを元に、OASファイルを生成する(コードファースト)。 swaggo/swag などのツールが有名

  2. 自動生成は行わず、OASファイルとGoコードをダブルメンテする。またはOASファイルを提供しない。生成ツールによる制約を受けないことがメリット

  3. OASファイルから作成する(スキーマ駆動)。StoplightのようなGUIエディタツールが存在します。OASファイルからGoのコード生成することが多い。 deepmap/oapi-codegen などのツールが有名

最近はフロントエンドでもOASファイルからコードを自動生成したり、別のマイクロサービスからAPI呼び出しされる要件なども増えてきていることから、③のスキーマ駆動を選択するケースが増えてきていると感じます。 deepmap/oapi-codegen ...