コードを自動生成するときは必ずCIにチェック機構を作る
2025/11/10
はじめに
主に静的型付け言語でORMやGraphQLクライアントのコードを自動生成するときには、必ずCIで生成漏れがないかチェック機構を作ろうという話です。
生成源となるスキーマやモデル定義を変更したときに、自動生成されたコードが最新の状態になっているかをCIでチェックする仕組みを入れておくことが重要です。
Gitの差分チェックを使う
どうやってチェック機構を作るかというと、gitのgit diff --exit-codeを使うことをお勧めします。
このコマンドは差分がある場合は終了コード1を返し、差分がない場合は終了コード0を返します。
例えば、CIのジョブで以下のようなスクリプトを実行します。
set -e# 1. 生成源からコードを自動生成するgenerate-code-command
# 2. 生成されたコードに差分がないかチェックするif ! git diff --exit-code path/to/generated/code; then echo "Error: Generated code is out of date. Please run the code generation tool." exit 1fiこのようなスクリプトを仕込んでおけば、生成源を変更した際に自動生成コードが最新でない場合にCIが失敗してくれます。