OpenAPI3.0のまともなGoコード生成ツールがいない

OpenAPI3.0のまともなGoコード生成ツールがいない

5Gを調べててOpenAPI3.0を使いたくなることがありました。 OAIとコミュニティがゴタゴタしたりSwaggerも影響を受けたりしてた印象のままで、アップデートしていませんでした。 改めてツールや動向を調べました。これはそのメモです。

はじめに

少なくともGoのコード生成でまともなツールは見つかりません。悲しいです。 ボヤいたら@t2yさんからレスもらいました。

安定したOSSのコード生成ツールが出てくるほどにエコシステムが育っていません。

まずOAIとコミュニティのゴタゴタがあり魅力が落ちていたこと。またgRPC、GraphQLと魅力的な競合技術があるため、Webやスマホアプリ界隈がOpenAPIから離れつつあること。そして5GCでAPI定義に採用されているものの、サービス実装者(モバイル機器ベンダー)にとってOSSで公開するメリットがないこと。

この3つが原因として大きいのかなと想像しました。

モバイルベンダは5GCのサービス機器を開発するためコードジェネレータなりを自作してると想像してます。 ですが彼らにコードジェネレータを公開するモチベーションはなさそうです。ドキュメント・クライアント・レスポンスバリデーターが外部から使えれば十分だから。

じぶんは今すぐ安定したコードジェネレータが欲しいわけではないのですが。 今後は時間をかけて oapi-codegen, openapi-codegen でコード生成を改善するか自作するか関わらない道を探すか考えます。 openapi-codegenは根本対応の他にテンプレート改善で済ませる道もあるようです。

リンク集

OpenAPIはOpenAPI Initiativeで策定されています。 いまの最新は 3.0.3 でした。

ツール

公式ドキュメントにツール一覧がある。課金勢に向けたエンプラツールとOSSのツールが用意されている。 サードパーティも含めて無課金勢で使えるツール一覧はこちら。

参考資料

やってみた

oapi-codegenでサービス定義からGoのコード生成をしようとした。パースエラーが起きた。openapi-codegenで3GPPのサービス定義からGoのコード生成した。生成されたコードがシンタックスエラーが大量発生。 これからやること。

comments powered by Disqus