Kotlin を使用して Swagger Code Generator に独自のコード生成モジュールを追加する

Swagger は API デザインのデファクトとして広く使用されています。コード生成機能を使用すれば、APIデザインを元に各種言語用のコードを自動生成することもできます。

Swagger 公式のコード生成機能は Swagger Code Generator としてソースコードが公開されており、必要に応じて出力されるコードをカスタマイズすることができます。軽微なカスタマイズであればテンプレートファイルの修正のみで可能ですが、ファイル構成なども含めてカスタマイズしたい場合は Java で独自のコード生成ロジックを記述しなければいけません。

この記事では Java の代わりに Kotolin を使用して、 Swagger Code Generator に独自のコード生成モジュールを追加する方法について解説します。

Swagger Code Generator

github.com

Swagger Code Generator は Swagger 公式のコード生成モジュールです。 標準で各種言語の出力に対応しており、swift のコード生成にも対応しています。

独自のコード生成モジュールを追加する方法は公式サイトの Making your own codegen modules セクションに記載してあります。 Swagger Code Generator は Java で記述されているため、テンプレートの作成からモジュールの使用まで全て Java を使用せねばなりません。

Swagger Code Gen Module with Kotlin

Java の代わりに Kotlin を使用して独自のコード生成モジュールを生成できるようにしたサンプルプロジェクトを公開しました。

github.com

プロジェクトは以下の構成になっています。

  • scr/main/kotlin/io/swagger/codegen/language
    • Kotlin で記述したコード生成クラスが格納されています
  • swift4
    • テンプレートファイルが格納されています
  • build.gradle
    • ビルド用のGradle ファイルです
  • swagger.json
    • サンプルの Swagger ファイルです

サンプルとして格納されているのは、Swagger Code Generator の swift 4 用コード生成クラスを Kotlin に変換したものです。 コード生成クラスとテンプレートファイルを修正することで、独自のコード生成モジュールの開発を開始します。

独自のコードを生成する

プロジェクトのビルドには gradle が必要になります。 公式サイトのインストール手順に従い、SDKMAN や homebrew などでインストールしてください。

gradle がインストールされたら、以下のコマンドを実行します。

gradle run

これで swagger.json に定義された内容が swift のコードとして出力されます。 コード生成クラスを修正した場合も、同様に run コマンドを実行すればすぐに結果を確認することができます。

プロジェクトの編集にはKotlin のコード補完や gradle の実行にも対応した IDE である IntelliJ を使用すると効率良く作業できます。  

まとめ

Kotlin を使用して Swagger に独自のコード生成モジュールを追加するサンプルプロジェクトについて説明しました。 swift や Kotlin に慣れ親しんだモバイルアプリ開発者であれば、Java よりも Kotlin の方が効率よくコードを記述できると思います。