😺
スキーマファーストってなんなん
背景
MTGでふと「スキーマファーストにすべきだよね」という会話になり、急に話についていけなくなりました
gRPC触った時になんかそのようなことは見た
10分ほどでインプットしたことを簡単に書く(とりあえず定義だけ)
スキーマファーストとは
- 「スキーマファーストはスキーマファイルからコードジェネレータを使ってコードを生成しAPIを開発する手法」らしい
- メリット
- スキーマファイルがコードの制約となる
- 実装者によるばらつきがなくなる
- 型変換コードを自作する必要がなくなる
- 設計書などのドキュメントでコーディング規約を設ける必要がなくなる
- API提供側と呼び出し側で並行して実装を進められる
- スキーマファイルがコードの制約となる
- デメリット
- コードジェネレータによっては対応していないOpenAPI記述があるらしい
- これはデメリットなのか?
- コードジェネレータによっては対応していないOpenAPI記述があるらしい
コードファーストとは
- 「OpenAPI Specとコードを関連付けるためのアノテーション(またコメント)を付与したコードからスキーマファイルを生成しAPIを開発する手法」らしい
- OpenAPI Specificationとは:HTTP APIのインタフェースを定義するための仕様
- がっちり設計するよりも実装しちゃう
- それ用のライブラリの導入が必要
- メリット
- 小規模ならこっちの方が早い
- デメリット
- 「ドキュメンテーションと標準化の欠如」
- スキーマファーストのメリットにあげた逆のことがデメリットとして挙げられるね
- 「ドキュメンテーションと標準化の欠如」
感想
単純にスキーマファーストっていう言葉を知らんかったね🐈
おまけ
gRPCについて
- gRPC:通信プロトコル
- protobuf:データフォーマット
- protoファイルというフォーマットで記述する
- protoc:コンパイラ
Discussion