https://zenn.dev/dyoshikawa/articles/ed61d6bf0e8ef1

最近、案件でGraphQLを使ったスキーマ駆動開発を行ったところ体験が非常に良かったため、OpenAPIでもスキーマ駆動開発を試してみました。

普及度でいうとOpenAPI Generatorの方が高そうですが、今回はAspidaエコシステムに乗ってみます。

Aspidaファミリーのopenapi2aspidaでOpenAPI YAMLファイルからTypeScriptの型定義を生成し、フロントエンド・バックエンドでimportして利用するようにします。また、バックエンドフレームワークにExpressを使用しているという前提で、express-openapi-validatorを設定しOpenAPIスキーマを元によしなにバリデーションするようにします。

Aspida選定の理由

OpenAPI GeneratorがJava製なのに対し、AspidaはTypeScript製のため、フロントエンドとバックエンドをTypeScriptで開発している場合はnpm経由で比較的ハマらず導入しやすい点、また、個人的にAspidaの方が生成される型が好みだった点があります。

フロントエンドとバックエンドの言語がTypeScriptでない場合は、クロスプログラミング言語対応のOpenAPI Generatorを選定する、もしくはツールを併用するなど検討する必要がありそうです。

環境

サンプルOpenAPIファイル