コードを自動生成するときは必ずCIにチェック機構を作る

2025/11/10

はじめに

主に静的型付け言語でORMやGraphQLクライアントのコードを自動生成するときには、必ずCIで生成漏れがないかチェック機構を作ろうという話です。

生成源となるスキーマやモデル定義を変更したときに、自動生成されたコードが最新の状態になっているかをCIでチェックする仕組みを入れておくことが重要です。

Gitの差分チェックを使う

どうやってチェック機構を作るかというと、gitのgit diff --exit-codeを使うことをお勧めします。

このコマンドは差分がある場合は終了コード1を返し、差分がない場合は終了コード0を返します。

例えば、CIのジョブで以下のようなスクリプトを実行します。

Terminal window
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 1
fi

このようなスクリプトを仕込んでおけば、生成源を変更した際に自動生成コードが最新でない場合にCIが失敗してくれます。