はじめに
OpenAPI Generatorを使っている各社サービスがどのようにクライアントライブラリを生成しているのか調べてみた。
OpenAPI Generatorのサイトに、利用しているサービスの一覧が載っている。
ここからいくつかピックアップして、どのようにクライアントライブラリを生成しているか調べてみた。
注意
- 今回は、各社のパブリックリポジトリや公開ドキュメントなどをみて、そこから推測される方法をまとめたため、実際とは異なる場合がある。
- 例としてピックアップしたライブラリは、基本Pythonが中心となっている (個人的にPythonを利用することが多いため)。
Kubernetes
JavaやPython、TypeScript, Go、Rustなど、主要な言語のライブラリを生成。
Generate用のリポジトリで管理。
このリポジトリで生成用のスクリプトや設定値を管理し、各言語のライブラリを生成。
Python用のライブラリ
また、HostやAPI Keyの設定は、デフォルトの直接指定する方法に加えて、kubeconfigファイルをロードするためのHelper関数 config.load_kube_config() も別途カスタムで実装されている。
DataDog
JavaやPython、TypeScript, Go、Rustなど、現在主流な言語のライブラリを生成。
Python用のライブラリ
Keyは別途API keyをDataDogの画面から取得して使う。
生成については、Spec fileを管理しているプライベートリポジトリにて、更新があったら各クライアントライブラリも自動で生成されるようになっている。
また、OpenAPI Generatorを拡張した「Apigentools」というツールで生成をおこなっており、これはDataDogがcontributorとして開発している様子。
Mastercard
公開されているリポジトリにはJava, Python, NodeJS, Ruby, PHP, C#のライブラリが存在しているが、基本的にはSpec fileを用いてOpenAPI Generatorで各自で生成するように案内されている。
Guide
Tutorial (ここにサンプルとして生成されたライブラリコードが格納されている)
API利用のためのKey生成 (one-legged OAuth 1.0a) は、別ライブラリが用意されている。
Twilio
JavaやPython、NodeJS, Goなどの主要な言語のライブラリを生成。
Generate用のリポジトリで管理。
各言語ごとに実行ファイルを実行して生成。Kubernetesのように自動生成されている形ではなさそう。
Python用のライブラリ
Freee
Freee APIのSpec fileが公開されており、それを用いて各自で生成するようガイドしている。