ライブ Changelog
GitHub Actions を通じて各コミット後に自動更新される changelog ページ。Conventional commits を解析し、開発履歴を表示します。
Git のコミット履歴から抽出された、詳細な開発タイムライン。このページは main ブランチへの push ごとに自動更新されます。
更新履歴を読み込み中...
仕組み
changelog は以下の GitHub Actions workflow を使用します:
- push で実行 —
mainへの各 push で workflow が実行されます - git 履歴を解析 — コミットハッシュ、作成者、日付、メッセージを抽出
- コミットを分類 — conventional commit タイプを検出(feat、fix、chore など)
- JSON データを更新 —
data/changelog.jsonに書き込み - 変更をコミット —
[skip ci]を使用して無限ループを防止
Tech Stack
| コンポーネント | 技術 | 目的 |
|---|---|---|
| 自動化 | GitHub Actions | main への push で実行 |
| スクリプト | TypeScript + tsx | git log を解析して JSON を生成 |
| データ | JSON | コミットデータを保存 |
| レンダリング | Next.js Server Component | ロケール対応の動的ページ |
| i18n | next-intl | ロケール対応の日付フォーマット |
Conventional Commit の解析
スクリプトは標準的な conventional commit プレフィックスを認識します:
feat:— 新機能fix:— バグ修正chore:— メンテナンスタスクdocs:— ドキュメント更新refactor:— コードリファクタリングstyle:— スタイル変更test:— テスト更新perf:— パフォーマンス改善
コミットは自動的に分類され、統計が計算されます。
ループ防止
GitHub Action は以下の方法で無限ループを回避します:
- コミットメッセージに
[skip ci]を追加 - workflow で
if: "!contains(github.event.head_commit.message, '[skip ci]')"をチェック
ファイル
.github/workflows/update-changelog.yml # GitHub Action
scripts/generate-changelog.ts # 生成スクリプト
data/changelog.json # 生成されたデータ
lib/types/changelog.ts # TypeScript 型定義
app/[locale]/changelog/page.tsx # ページコンポーネント
components/changelog-stats.tsx # 統計コンポーネント
components/changelog-table.tsx # テーブルコンポーネント
Outcomes
- •main への push ごとに GitHub Actions workflow が実行
- •Conventional commit の解析(feat、fix、chore など)
- •日付ごとにコミットをグループ化、ロケール対応フォーマット
- •5言語での完全な i18n サポート