🐔

自動生成したソースコードは Git 管理する?それとも、しない?

2023/01/24に公開

こんにちは。地図パズル製作所の都島です。

皆様、突然ですが、自動生成したソースコードは Git 管理するでしょうか?しないでしょうか?私の場合、OpenAPI を使っているのですが、OpenAPI Generator などでフロントエンドのソースコードを生成するときにこの問題に直面します。たぶん、他の場面でもありますよね。

この問題って結構好みが分かれそうに思います。Git 管理するとコンフリクトしやすくなったりしますし、Git 管理しないとリポジトリを最新にするたびに、生成コマンドを実行しないといけなかったり、どちらも面倒です。

私は今まで Git 管理する方針でいたのですが、Git 管理しない方法でちょっとかっこいい方法に気づいたので共有します。「ちょっとかっこいい」って何だろう、という感じだと思いますが、結局のところコマンドを毎回打つのですが、、「プログラミング分かっている」という感じがする方法だと思ってもらえると思います。(もしかしたら、普通のプログラマの方には常識なのかもしれません、、、)

この方法では Makefile を使います。私は Makefile なんてもう過去のものだと思っていたのですが、結構使えるんですね。Makefile は依存関係を記述して、依存元が更新されていた場合、依存先を生成するコマンドを実行するということをします。なので、例えば、openapi の YAML で API を記述して、openapi-generator でクライアント側の API アクセスのソースコードを生成している場合、自動生成を Makefile にやらせれば、OpenAPI の YAML が更新されていた時だけ、自動生成コマンドを実行して、そうでないときは実行しない、ということができます。こんな感じです。

Makefile
.PHONY: api
api: ./API.yaml
	openapi-generator-cli generate -g typescript-axios -i ./API.yaml -o ./api

ということで、こうしておいて、make を実行すると、API.yaml が更新されていた時だけ、OpenAPI Generator のコマンドが実行されて、無駄にコマンドを実行することはなくなります。

ということで、自動生成したソースコードを管理するちょっとかっこいい方法でした!もっといい方法もあると思うので、ご存じの方がいらっしゃったら、コメントで教えてください!

では、最後にいつも私がつくっている地図パズル製作所の宣伝をします!

https://chizu-puzzle.com

ぜひ挑戦してみてください!

参考

https://zenn.dev/na0x2c6/articles/buff-your-development

Discussion