♟️

OpenAPIを使用したスキーマ駆動開発

2022/05/09に公開約1,200字

Agenda

  • はじめに
  • スキーマ駆動開発で解決したい問題
  • スキーマ駆動開発の仕組み
  • 課題
  • まとめ

はじめに

今回は Magic Moment で実施している OpenAPI によるスキーマ駆動開発についてご紹介致します。

スキーマ駆動開発で解決したい問題

開発を始めた当初は、小規模なチームだったためフロントエンドとバックエンド間での認識のズレが少なかったのですが、チームの規模が大きくなりコミュニケーションコストが高くなったことでズレが生じるようになり、以下のような問題が発生しました。

  • API ドキュメントが存在しなかったため、コードを見ないと API の実装がわからなかった。
  • バックエンドを実装しながらインターフェースも考えていたため、 バックエンドの実装が終わらないとフロントエンドの開発ができなかった。
  • フロントエンド・バックエンド両方で同じインターフェースのオブジェクトを作っていたため、API に変更があった時に反映漏れなどがあり、都度認識合わせのコミュケーションが発生した。

スキーマ駆動開発の仕組み

Magic Moment では、OpenAPI 用の Repository に OpenAPI の定義を PUSH するとフロントエンドとバックエンドのコードが生成される仕組みになっており、生成したコードを各サービスの submodule としてマウントすることで、スキーマ駆動開発を実現しています。

openapi.png

使用している Generator

Client

Server

課題

  • 導入以前のコードについては、以下理由により generate されたコードへの差し替えがなかなか進まない
    • 影響範囲が広い場合が多く、開発スケジュールとの兼ね合い上、手が出せない場合がある
    • テストがない箇所が多く、うかつに手をだせない

まとめ

既存のコードを書き換えていく課題はあるものの、新機能開発に関しては、フロントエンドとバックエンドの認識のズレがなくなり、以前に比べスムーズに開発が進められ、導入した価値があったと感じています。

Discussion

ログインするとコメントできます