starfish

backend, frontend, ios engineer

git-czを拡張して、API開発用のgit-czを作った

2019-05-29npm

npmパッケージのgit-czを拡張して、git-cz-for-api-developer というnpmパッケージを公開しました。

今回は、このnpmパッケージの紹介をします。

git-czは、対話的にcommitメッセージを作成するnpmパッケージです。

これを利用することで、commitメッセージのフォーマットをチームで合わせることができるし、修正内容がどのようなタイプに属するのか、commitログから一目でわかるようになります。

git-czのcommitメッセージのフォーマットは、以下のようになっています。

<type>[(<scope>)]: <emoji> <subject>
[BLANK LINE]
[body]
[BLANK LINE]
[breaking changes]
[BLANK LINE]
[footer]

業務でこのgit-czを利用していたのですが、一つ問題が出てきました。

それは、実際にリリースするにあたって、どのリリースタイプになるか、commitログから一目でわからないということです。

この時、業務でバックエンドのAPI開発を担当していました。

APIに破壊的変更(major)が加えられればフロントエンドの改修が必須になるので、リリースのタイミングを検討しないといけません。

逆に破壊的変更でなければ、フロントエンドは変更せずに動作するので、すぐにリリースを行なっても問題はありません。

これをcommitログから一目でわかるように、以下のようなフォーマットに変更したいと考え、git-cz-for-api-developerを作ることになりました。

<releaseType>-<type>[(<scope>)]: <emoji> <subject>
[BLANK LINE]
[body]
[BLANK LINE]
[breaking changes]
[BLANK LINE]
[footer]

scope の部分を releaseType として利用しても良いでしょう。

しかし、その二つは意味が異なる要素なので、その決断を採用してしまうと本当の意味での scope を利用したいときに困ります。

そのため、 releaseType を追加することを決断しました。

releaseType には以下の三つの選択肢を用意しています。

  • major

    • APIへの破壊的変更
  • minor

    • APIに変更があるが、破壊的ではない
  • patch

    • APIに変更がない

releaseType をcommitメッセージに追加した結果、commitログを見れば一目でAPIへの変更があるかどうかを理解することができ、APIのバージョン番号を上げるときの指標に使うこともできます。

APIを開発している方は、ぜひ使ってみてください。