はじめに成果物
↑これから
↑これがコマンド一発で生成できました
背景
Slackは外部から実行可能なWebAPIの仕様をOpenAPI(Swagger) Specification
として公開しています
※ OpenAPIについてはこちら
以前SlackのWebAPIを呼び出すアプリを作っていたとき、OpenAPI Generatorを利用してPHPのコードを自動生成しようとしていましたが、当時のSpecファイルに不具合があり生成できませんでした
以下のissueが上がっていたのでウォッチしていたのですが、修正がリリースされたようなので改めてOpenAPI Generatorでコード生成を試してみました
準備
- macOS 10.14.5
- docker 18.09.2
OpenAPI GeneratorはDockerイメージが提供されているので、Dockerが使える環境ならすぐに利用可能です
手順
対象は以下のSlack公式WebAPIのSpecファイルです
コード自体はコマンド一発で生成可能です
docker run --rm -v $(pwd)/slack-openapi-php:/out \
openapitools/openapi-generator-cli generate \
-i https://raw.githubusercontent.com/slackapi/slack-api-specs/master/web-api/slack_web_openapi_v2.json \
-g php -o /out
docker run
でopenapitools/openapi-generator-cli
イメージを指定し、対象Specファイルは-i
オプションでGitHubのURLを直接指定しています
変換する言語を-g
オプションで指定し、成果物の出力先を-o
オプションで指定しています
成果物は以下のようになりました
README.md
やドキュメントも生成されるので、自前でguzzle
やcURL
を使って実装する際の参考としても効果的に使えそうです
まとめ
SlackのOpenAPI SpecからOpenAPI Generatorを利用してPHPのクライアントコードを生成してみました
OpenAPI GeneratorはSpecファイルさえ適切に定義されていれば、PHPでのクライアント以外にも多様な変換が可能です
Specファイルを参照しても実装のイメージがつかないようなときに、一度実装中の言語で生成できないか試してみるのもいいかもしれません