API

OpenAPI Generatorとは|生成できるもの・仕組み・対応言語と導入方法

OpenAPI Generatorは、OpenAPI仕様(旧Swagger)で書いたAPI定義から、クライアントSDK・サーバースタブ・APIドキュメントを自動生成するオープンソースツールです。40以上のクライアント生成器と20以上のサーバー生成器を備え、OpenAPI v2/v3に対応します。この記事は「そもそも何をするツールか」「何が生成できるか」「どう導入するか」を最短で押さえる入り口です。Javaでの具体的な生成手順や、OpenAPI仕様そのものの書き方は、それぞれ専用記事にまとめています。

まとめ:OpenAPI Generatorの要点

  • OpenAPI仕様からコードとドキュメントを生成するツール。Swagger Codegenのコミュニティ主導フォークで、更新は本家より活発。
  • 生成できるのは主に3種:クライアントSDK・サーバースタブ・APIドキュメント。
  • 仕組みは「仕様ファイル → 言語別テンプレート → 出力」。テンプレートを差し替えれば生成物をプロジェクト規約に寄せられる。
  • 導入はnpm・Docker・Homebrew・jar(Maven Central)から選べ、最小構成はCLIの1コマンド。
  • 最新安定版は7.23.0(2026年6月)。生成物は再生成で上書きされるため、手修正の保護とバージョン固定が実務の要。

OpenAPI Generatorとは:定義とSwaggerとの関係

OpenAPI仕様は、APIのエンドポイント・入出力・スキーマをYAMLまたはJSONで記述する標準フォーマットです。OpenAPI Generatorはその仕様ファイルを入力に取り、対象言語のコードやドキュメントを機械的に出力します。手書きしていたAPIクライアントやサーバーの雛形を仕様から起こすことで、フロントエンドとバックエンドを同じ定義で分業でき、仕様と実装のズレを抑えられます。

Swagger CodegenからのフォークとSwaggerとの違い

OpenAPI Generatorは、Swagger Codegenのバージョン2.3.1〜2.4.0時点(2018年)で、SmartBear社とのガバナンス方針の相違を機にコミュニティが分岐(フォーク)して生まれました。Swagger Codegenの主要コントリビューター40名以上が創設メンバーとして移り、現在は本家より新しい言語・機能への追随が速いのが実態です。なお「Swagger」はOpenAPI仕様の旧称であり、かつSmartBear系ツール群(Swagger UI/Swagger Editor等)の名称でもあります。ツールとしてのSwagger Codegenと、仕様としてのSwagger(=OpenAPI)は別物です。仕様そのものの書き方はOpenAPIとは|Swaggerとの違い・仕様書(YAML/JSON)の書き方とSwagger UIをわかりやすく解説で扱っています。

OpenAPI Generatorで生成できるもの

生成物は用途で3つに大別できます。1つの仕様ファイルから、呼ぶ側・実装する側・読む側のいずれも起こせるのが特徴です。

生成物 用途 主な出力例
クライアントSDK APIを呼び出す側のコード Java・TypeScript・Python・Go・PHP ほか
サーバースタブ APIを実装する側の雛形 Spring・FastAPI・Node系 ほか
APIドキュメント 仕様の可読化 HTML・Markdown

クライアントSDKとサーバースタブは、同じ仕様から同時に生成できます。これにより、API定義を変えたら両側のコードを再生成するだけで整合を保てます。

コード生成の仕組み:仕様→テンプレート→出力

生成はコマンド1つで走ります。入力する仕様ファイル、使うジェネレーター、出力先を指定すると、内部でMustacheテンプレートに仕様が流し込まれ、対象言語のファイル群が書き出されます。テンプレートを差し替えられる設計のため、生成コードを自社のコーディング規約やロギング方針に合わせて調整できます。

npx @openapitools/openapi-generator-cli generate \
  -i openapi.yaml \
  -g java \
  -o ./out

-iが入力の仕様ファイル、-gがジェネレーター名(言語やフレームワーク)、-oが出力先です。テンプレートを上書きしたい場合は、公式テンプレートを取り出して修正し、生成時に参照させます。

対応言語とジェネレーターの選び方

OpenAPI Generatorは40を超えるクライアント生成器と20を超えるサーバー生成器を持ちます。同じ言語でも複数のジェネレーターが用意されており、たとえばJavaのクライアントはokhttp-gson(既定)・resttemplate・webclient・native・feignなどから選べます。使えるジェネレーターの一覧はlistコマンドで確認できます。

npx @openapitools/openapi-generator-cli list

どのジェネレーターを選ぶかは、既存プロジェクトのHTTPクライアントやシリアライザに合わせるのが基本です。Javaでのライブラリ選択と実際の生成手順はOpenAPI GeneratorでJava生成|CLI導入・generateコマンド・ライブラリ選択で詳しく扱っています。

OpenAPI Generatorの導入方法

導入経路は複数あり、使い方に応じて選びます。試すだけならnpm(npx)、環境を汚したくないならDocker、ビルドに組み込むならMaven/Gradleプラグインが向きます。

入手方法 指定 向く用途
npm @openapitools/openapi-generator-cli 手軽に試す・CIで版固定
Docker openapitools/openapi-generator-cli ローカル環境を汚さない
Homebrew brew install openapi-generator macOSでの常用
jar Maven Centralから取得 Java環境・ビルド組み込み

npm版はopenapitools.jsonにバージョンを書いて固定でき、CIでの再現性を担保しやすいのが利点です。MavenやGradleのプラグインを使えば、ビルド時にコード生成を自動で走らせられます。導入の細部やトラブル対処はJava生成の手順記事にまとめています。

導入が向く場面と避けるべき場面

効果が大きいのは、API仕様がある程度固まっていて、クライアントやサーバーを複数言語・複数チームに展開する場面です。仕様を単一の正とするスキーマ駆動開発では、定義の変更を再生成で全実装へ波及させられ、手書きの写経とズレを減らせます。

一方で、仕様が日々揺れる立ち上げ初期は、再生成のたびに周辺コードが動く負担が生成のメリットを上回ることがあります。生成コードに手を入れて運用したい場合も注意が必要で、再生成で上書きされる前提を崩すと保守が破綻します。対象が1言語・小規模なら、生成器を導入せず手書きした方が速いケースもあります。導入是非は「仕様の安定度」と「展開する言語数」で判断するのが実務的です。

使う際の注意点:再生成とバージョン固定

生成物は再生成で上書きされます。手を加えたいファイルは.openapi-generator-ignoreで保護し、生成コードは直接編集せず継承やラップで拡張するのが安全です。またジェネレーターのバージョンが変わると出力が変わるため、CIではopenapitools.jsonなどでバージョンを固定し、生成結果の再現性を保ちます。生成コード自体をリポジトリにコミットするか、ビルド時に都度生成するかも、チームで方針を決めておくべき論点です。

よくある質問

OpenAPI GeneratorとSwagger Codegenの違いは?

OpenAPI GeneratorはSwagger Codegenのコミュニティ主導フォークです。対応言語や新機能への追随が速く、テンプレートの差し替えもしやすい傾向があります。

無料で使えますか?

Apache License 2.0のオープンソースで、無料で利用・改変・商用利用ができます。

どの言語・フレームワークに対応していますか?

40以上のクライアント生成器と20以上のサーバー生成器に対応します。使える一覧はlistコマンドで確認できます。

OpenAPI 2.0(Swagger 2.0)の仕様でも使えますか?

OpenAPI v2・v3の両方に対応しています。

Javaで使うにはどうすればよいですか?

CLIの導入とgenerateコマンド、Javaのライブラリ選択をJava生成の手順記事にまとめています。

関連記事

資料請求

RELATED POSTS 関連記事