Stoplight studioを利用しています。
gRPCやGraphQLのSchemaファイルと比較するとJSONまたはyaml形式でDocumentの要素も強く定義が多く手動で書くのがめんどくさいため、GUIベースで入力すべきところがわかるので良いです。
またoapi-codegenはinteger型のgenerate結果が必ずInt型になってしまっていたが、優秀な同僚がPRを出してくれたためuint64でも使えるようになりました。
最近興味があるがProductionでまだ利用できていないものの紹介
ちょっとAPI駆動開発から外れてしまうがSchema駆動開発近いものだと思っているsqlcを紹介します。
ORMapperの代わりになるようなものです。
使い方は下記のように予め利用するQueryを記載し、
-- name: GetAuthor :one
SELECT * FROM authors
WHERE id = $1 LIMIT 1;
そのSQLファイルを元にGenerateを行うと
fetchedAuthor, err := db.GetAuthor(ctx, insertedAuthor.ID)
if err != nil {
return err
}
のような関数が自動で生成され、DBからデータを型安全に利用することができます。
SQLはいろんなところでいろんな呼び方がされやすく管理がしにくいがSQLファイルにまとまることで、Queryの質が担保されやすくなるのではと考えています。
ここ1年API駆動開発に取り組んできて何が変わったかというと、サーバーサイドエンジニアとフロントエンジニアのやりとりやプロダクトを跨いだサーバーサイドエンジニアのやりとりがSchemaを返すことによって定義がはっきりし認識の齟齬が減りました。
簡単にMockを生成することができるため、サーバー側の実装を待たずにクライアントの実装がしやすくなりました。
API駆動開発をしない世界だとクライアントの実装するために、サーバーの実装を読むみたいなことをしなくてはならなくことも0ではなかったのでそれが間違いなくなくなります。
今回はAPI駆動開発のみに関して深く話したが、DX CriteriaはこのようなDigital TransformationやDeveloper eXperienceを良くするのための基準が設けられています。 DX Criteriaのはじめ方については3日目のアドベントカレンダーのNAVITIME_Techさんの記事を参考にはじめていただけたら良さそうです。
今日で30歳になりました。お祝いコメントお待ちしています。
会社でもアドベントカレンダーをやっているのでそちらも是非お願いします。
明日のCTOA Advent Calendar 2020はIwarkさんの記事になります。