LoginSignup
2
1

More than 3 years have passed since last update.

OpenAPI3へのスキーマファースト開発移行(ツール編)

Last updated at Posted at 2020-09-09

OpenAPI3へのスキーマファースト開発移行(ツール編)

スキーマファースト開発をプロジェクトへ導入してから1年が経ちました。
ツール編では移行の方針や使用ツールについて書いていきます。

Prerequisite :runner:

  • Rails + vue.jsのSPA開発
  • TDD導入済み

Tools :wrench:

Why :question:

  • SPA開発においてAPIとクライアントの開発を行っていましたがチーム開発においてAPI実装への依存度が高かった
  • チームメンバーが増えてくるとAPI仕様の共有や変更の共有にコミュニケーションコストが増えてきた
  • API仕様書を正にして変更があれば自動テストをFailさせたい

Purpose and Rules :triangular_ruler:

  • API・クライアントの実装効率化
  • RESTful API準拠及びOpenAPI3に仕様準拠
  • YAMLで管理
  • API仕様書の分割と結合
  • YAMLのAPI仕様書を読み込み自動テスト(API/クライアント)
  • API仕様書からhtmlドキュメントを生成
  • (モックサーバー起動)

Tools詳細

OpenAPI3

  • OpenAPI3
  • REST-APIの標準仕様であり3系から効率的に記述できるようになっているため3系を使用します
  • docs
  • ドキュメントは英語のみですがサンプルも多く十分理解しやすいです

Swagger Editor

multi-file-swagger

  • multi-file-swagger
  • APIのPathsやComponentを共通化、リポジトリ管理するために分割をしています。分割したYAMLファイルを結合するために使用しています
  • プロジェクトでは自動テスト直前に自動結合させて常に最新の仕様書でテストを走らせています。

OpenAPI Generator

  • OpenAPI Generator
  • API仕様書のhtmlドキュメントを生成するために使用
  • 一部OpenAPI3の構文に対応していない箇所がありOpenAPI Generatorに合わせた書き方をする必要があります。
  • プロジェクトではCIでテストがGreenになったら最新のhtmlドキュメントをS3にアップロードし開発者以外がAPI仕様を閲覧できる状態にしています。

committee

  • committee
  • API仕様書をもとにリクエスト/レスポンス形式をチェックするライブラリです。現在も開発が活発でOpenAPI3に対応したのをきっかけに導入を決めました。

まとめ

  • 次回はスキーマ分割とAPI/クライアントの自動テストを書きたいと思います
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1