Skip to content

CHANGELOGをClaudeに自動生成させる

リリースのたびにCHANGELOGを手書きしていませんか? Gitのコミット履歴はすでにそこにあります。Claude Codeを使えば、その情報を整理されたChangelogへと自動変換できます。

コミット履歴をテキストで取り出す

Section titled “コミット履歴をテキストで取り出す”

まずClaude Codeに渡すための素材を用意しましょう。git log コマンドで直近のコミットを整形して出力します。

Terminal window
git log v1.2.0..HEAD --pretty=format:"%h %s (%an, %ad)" --date=short > commits.txt

このコマンドは「前回タグ v1.2.0 から現在の HEAD まで」の範囲を対象に、コミットハッシュ・件名・著者名・日付を1行ずつ書き出します。出力例はこんな感じです。

a3f1c2d fix: ログイン画面のバリデーションエラーを修正 (yamada, 2025-06-10)
b91e004 feat: ダークモード対応を追加 (sato, 2025-06-08)
c02fa11 chore: 依存パッケージをアップデート (tanaka, 2025-06-07)
コミット: Gitでファイルの変更を履歴として記録する操作。

次に、このテキストをClaudeへ渡して整形させます。Claude Codeのチャット欄に以下のように入力してください。

以下のGitコミット履歴をもとに、Keep a Changelogフォーマットの日本語CHANGELOGを生成してください。
feat/fix/chore などのプレフィックスでセクションを分類し、バージョンは v1.3.0、リリース日は今日の日付を使ってください。
---
[commits.txt の内容をここに貼り付け]
---

Claudeは Added / Fixed / Changed のセクションに自動で振り分け、人間が読みやすいMarkdownを返してくれます。

プロンプト: AIへの指示文。Claude Codeへの指示の質がそのまま出力の質に影響する。

スクリプトにまとめて毎回使い回す

Section titled “スクリプトにまとめて毎回使い回す”

毎回手作業で貼り付けるのは面倒なので、シェルスクリプトにまとめてしまいましょう。

#!/bin/bash
PREV_TAG=${1:-$(git describe --tags --abbrev=0)}
COMMITS=$(git log "$PREV_TAG"..HEAD --pretty=format:"%h %s (%an, %ad)" --date=short)
claude "以下のGitコミット履歴からKeep a Changelog形式の日本語CHANGELOGを生成してください。\n\n$COMMITS"

./gen-changelog.sh v1.2.0 のように前のタグを引数に渡すだけで、Claudeがそのままターミナル上にChangelogを出力します。出力内容を CHANGELOG.md に追記すれば完成です。コミット〜リリースの一連の作業がぐっとスムーズになりますよ。