release-manager について
release-managerは、コミット分析からデプロイ計画までを扱うソフトウェアチーム向けのリリース管理スキルです。変更履歴、セマンティックバージョン、準備状況を扱うスクリプトに加え、ホットフィックスやロールバックの指針を含みます。
主な機能
- 01Conventional Commitsから変更履歴を生成
- 02セマンティックバージョンの更新分析
- 03リリース準備状況の評価
- 04リリース計画と調整
- 05ホットフィックスとロールバックの指針
活用シーン
- 01git履歴から変更履歴を作成
- 02リリースのバージョン更新を決定
- 03準備状況を確認して関係者と調整
- 04緊急修正とロールバックを計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alirezarezvani/ claude-skills --skill release-managerインストール後、Claude Code で/release-managerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
changelog_generator.pyREADME.mdrelease_planner.pyversion_bumper.pyassets/sample_commits.jsonsample_git_log_full.txtsample_git_log.txtsample_release_plan.jsonexpected_outputs/changelog_example.mdrelease_readiness_example.txtversion_bump_example.txtreferences/conventional-commits-guide.mdhotfix-procedures.mdrelease-workflow-comparison.md詳細
リリースマネージャー
ティア: 強力
カテゴリー: エンジニアリング
ドメイン: ソフトウェアリリース管理と DevOps
概要
リリースマネージャーのスキルは、ソフトウェアリリースをエンドツーエンドで管理するための包括的なツールと知識を提供します。Conventional Commits の解析から、変更履歴の生成、バージョン更新の判定、リリースプロセスの調整まで、このスキルによって、信頼性が高く、予測可能で、十分に文書化されたソフトウェアリリースを実現できます。
主な機能
- git の履歴から Conventional Commits を使用した変更履歴の自動生成
- コミットの分析と破壊的変更に基づくセマンティックバージョンの更新
- 包括的なチェックリストと検証によるリリース準備状況の評価
- ステークホルダー向けのコミュニケーションテンプレートを含むリリース計画と調整
- 自動復旧手順を含むロールバック計画
- 緊急リリースのためのホットフィックス管理
- 段階的なロールアウトのためのフィーチャーフラグ統合
主なコンポーネント
スクリプト
- changelog_generator.py - git のログを解析し、構造化された変更履歴を生成します
- version_bumper.py - Conventional Commits から適切なバージョン更新を判定します
- release_planner.py - リリース準備状況を評価し、調整計画を生成します
ドキュメント
- 包括的なリリース管理の方法論
- Conventional Commits の仕様と例
- リリースワークフローの比較(Git Flow、Trunk-based、GitHub Flow)
- ホットフィックスの手順と緊急対応プロトコル
リリース管理の方法論
セマンティックバージョニング(SemVer)
セマンティックバージョニングは、次の MAJOR.MINOR.PATCH 形式に従います。
- 互換性のない API 変更を行った場合はMAJORバージョン
- 下位互換性を保ちながら機能を追加した場合はMINORバージョン
- 下位互換性のあるバグ修正を行った場合はPATCHバージョン
プレリリースバージョン
プレリリースバージョンは、ハイフンと識別子を付けて表します。
1.0.0-alpha.1- 初期テスト用のアルファリリース1.0.0-beta.2- より広範なテスト用のベータリリース1.0.0-rc.1- 最終検証用のリリース候補
バージョンの優先順位
バージョンの優先順位は、各識別子を比較して決定します。
1.0.0-alpha<1.0.0-alpha.1<1.0.0-alpha.beta<1.0.0-beta1.0.0-beta<1.0.0-beta.2<1.0.0-beta.11<1.0.0-rc.11.0.0-rc.1<1.0.0
Conventional Commits
Conventional Commits は、自動化ツールを利用できるように、コミットメッセージに構造化された形式を提供します。
形式
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
種類
- feat:新機能(MINOR バージョンの更新に対応)
- fix:バグ修正(PATCH バージョンの更新に対応)
- docs:ドキュメントのみの変更
- style:コードの意味に影響しない変更
- refactor:バグ修正や機能追加を伴わないコード変更
- perf:パフォーマンスを改善するコード変更
- test:不足しているテストの追加、または既存のテストの修正
- chore:ビルドプロセスまたは補助ツールの変更
- ci:CI 設定ファイルとスクリプトの変更
- build:ビルドシステムまたは外部依存関係に影響する変更
- breaking:破壊的変更の導入(MAJOR バージョンの更新に対応)
例
feat(user-auth): add OAuth2 integration
fix(api): resolve race condition in user creation
docs(readme): update installation instructions
feat!: remove deprecated payment API
BREAKING CHANGE: The legacy payment API has been removed
変更履歴の自動生成
変更履歴は Conventional Commits から自動生成され、次のように整理されます。
構造
# Changelog
## [Unreleased]
### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security
## [1.2.0] - 2024-01-15
### Added
- OAuth2 authentication support (#123)
- User preference dashboard (#145)
### Fixed
- Race condition in user creation (#134)
- Memory leak in image processing (#156)
### Breaking Changes
- Removed legacy payment API
グループ化のルール
- 新機能には Added(feat)
- バグ修正には Fixed(fix)
- 既存機能の変更には Changed
- まもなく削除される機能には Deprecated
- 削除された機能には Removed
- 脆弱性の修正には Security
メタデータの抽出
- プルリクエストとイシューへのリンク:
(#123) - 破壊的変更を目立つように強調
- スコープ別のグループ化:
auth:、api:、ui: - 貢献者を認識するための Co-authored-by
バージョン更新の戦略
バージョンの更新は、前回のリリース以降のコミットを分析して決定します。
自動検出ルール
- MAJOR:
BREAKING CHANGEを含むコミット、またはタイプの後に!が付いたコミット - MINOR:破壊的変更を含まない
featタイプのコミット - PATCH:
fix、perf、securityタイプのコミット - バージョン更新なし:
docs、style、test、chore、ci、buildのみ
プレリリースの扱い
# Alpha: 1.0.0-alpha.1 → 1.0.0-alpha.2
# Beta: 1.0.0-alpha.5 → 1.0.0-beta.1
# RC: 1.0.0-beta.3 → 1.0.0-rc.1
# Release: 1.0.0-rc.2 → 1.0.0
複数パッケージに関する考慮事項
複数のパッケージを含むモノレポの場合:
- 各パッケージに影響するコミットを個別に分析します
- スコープ付きのバージョン更新に対応します:
@scope/[email protected] - パッケージ間で連携したリリース計画を生成します
リリースブランチのワークフロー
Git Flow
main (production) ← release/1.2.0 ← develop ← feature/login
← hotfix/critical-fix
利点:
- 関心事を明確に分離できます
- main ブランチを安定した状態に保てます
- 機能開発を並行して進められます
- リリースプロセスを構造化できます
手順:
- develop からリリースブランチを作成します:
git checkout -b release/1.2.0 develop - リリースを確定します(バージョン更新、変更履歴)
- main と develop にマージします
- リリースにタグを付けます:
git tag v1.2.0 - main からデプロイします
トランクベース開発
main ← feature/login (short-lived)
← feature/payment (short-lived)
← hotfix/critical-fix
利点:
- ワークフローを簡素化できます
- 統合を迅速化できます
- マージの競合を減らせます
- 継続的インテグレーションに適しています
手順:
- 短期間で終了する機能ブランチを作成します(1~3日)
- main に頻繁にコミットします
- 未完成の機能にはフィーチャーフラグを使用します
- 自動テストのゲートを設けます
- フィーチャートグルを使用して main からデプロイします
GitHub Flow
main ← feature/login
← hotfix/critical-fix
利点:
- シンプルで軽量です
- デプロイサイクルが速くなります
- Web アプリケーションに適しています
- オーバーヘッドを最小限に抑えられます
手順:
- main から機能ブランチを作成します
- 定期的にコミットしてプッシュします
- 準備ができたらプルリクエストを作成します
- テストのために機能ブランチからデプロイします
- main にマージしてデプロイします
フィーチャーフラグの統合
フィーチャーフラグを使うと、安全かつ段階的にロールアウトできます。
フィーチャーフラグの種類
- リリースフラグ:本番環境での機能の表示を制御します
- 実験フラグ:A/B テストや段階的なロールアウトに使用します
- 運用フラグ:サーキットブレーカーやパフォーマンスの切り替えに使用します
- 権限フラグ:ロールベースで機能へのアクセスを制御します
実装戦略
# Progressive rollout example
if feature_flag("new_payment_flow", user_id):
return new_payment_processor.process(payment)
else:
return legacy_payment_processor.process(payment)
リリースの調整
- フラグを無効にした状態で、機能をフラグの背後に置いてコードをデプロイします
- ユーザーの一部に対して段階的に有効化します
- メトリクスとエラー率を監視します
- データに基づいて全面展開するか、迅速にロールバックします
- 次回以降のリリースでフラグを削除します
リリース準備チェックリスト
リリース前の検証
- 予定されている機能がすべて実装され、テスト済みである
- 破壊的変更が移行ガイドとともに文書化されている
- API ドキュメントが更新されている
- データベースのマイグレーションがテストされている
- 機密性の高い変更に対するセキュリティレビューが完了している
- パフォーマンステストが基準を満たしている
- 国際化文字列が更新されている
- サードパーティとの連携が検証されている
品質ゲート
- ユニットテストのカバレッジが 85% 以上である
- 統合テストに合格している
- エンドツーエンドテストに合格している
- 静的解析で問題がない
- セキュリティスキャンに合格している
- 依存関係の監査で問題がない
- 負荷テストが完了している
ドキュメントの要件
- CHANGELOG.md が更新されている
- README.md に新機能が反映されている
- API ドキュメントが生成されている
- 破壊的変更の移行ガイドが作成されている
- デプロイに関する注意事項が準備されている
- ロールバック手順が文書化されている
関係者の承認
- プロダクトマネージャーの承認
- エンジニアリングリードの承認
- QA による検証の完了
- セキュリティチームの承認
- 法務レビュー(該当する場合)
- コンプライアンスチェック(規制対象の場合)
デプロイの調整
コミュニケーション計画
社内の関係者:
- エンジニアリングチーム:技術的な変更とロールバック手順
- プロダクトチーム:機能の説明とユーザーへの影響
- サポートチーム:既知の問題とトラブルシューティングガイド
- 営業チーム:顧客向けの変更点と説明用の要点
社外へのコミュニケーション:
- ユーザー向けのリリースノート
- 開発者向けの API 変更履歴
- 破壊的変更の移行ガイド
- 該当する場合はダウンタイムの通知
デプロイシーケンス
- デプロイ前(T-24h):最終検証、コードを凍結
- データベースのマイグレーション(T-2h):スキーマ変更を実行して検証
- ブルーグリーンデプロイ(T-0):トラフィックを段階的に切り替え
- デプロイ後(T+1h):メトリクスとログを監視
- ロールバック可能期間(T+4h):ロールバックを判断する時点
監視と検証
- アプリケーションのヘルスチェック
- エラー率の監視
- パフォーマンスメトリクスの追跡
- ユーザーエクスペリエンスの監視
- ビジネスメトリクスの検証
- サードパーティサービス連携の稼働状況
ホットフィックス手順
ホットフィックスは、即時のデプロイが必要な重大な本番環境の問題に対処します。
重大度の分類
P0 - 重大:システム全体の停止、データ損失、セキュリティ侵害
- SLA:2時間以内に修正
- プロセス:緊急デプロイ、全員で対応
- 承認:エンジニアリングリード + オンコールマネージャー
P1 - 高:主要機能の障害、ユーザーへの重大な影響
- SLA:24時間以内に修正
- プロセス:優先的なレビューとデプロイ
- 承認:エンジニアリングリード + プロダクトマネージャー
P2 - 中:軽微な機能の問題、ユーザーへの影響は限定的
- SLA:次のリリースサイクルで修正
- プロセス:通常のレビュープロセス
- 承認:通常の PR レビュー
緊急対応プロセス
- インシデントの宣言:オンコールチームにページを送信
- 評価:重大度と影響を判断
- ホットフィックスブランチ:最後の安定版リリースから作成
- 最小限の修正:根本原因のみに対処
- 優先的なテスト:自動テスト + 手動検証
- 緊急デプロイ:本番環境にデプロイ
- インシデント後の対応:根本原因の分析と再発防止
ロールバック計画
すべてのリリースには、テスト済みのロールバック計画が必要です。
ロールバックのトリガー
- エラー率の急増:30分以内にベースラインの2倍を超過
- パフォーマンスの低下:レイテンシが50%以上増加
- 機能障害:コア機能が動作しない
- セキュリティインシデント:脆弱性が悪用された
- データ破損:データベースの整合性が損なわれた
ロールバックの種類
コードのロールバック:
- 以前の Docker イメージに戻す
- データベースと互換性のあるコード変更のみを行う
- コードをロールバックするより、機能フラグを無効にする方法を優先
データベースのロールバック:
- 非破壊的なマイグレーションに限る
- マイグレーション前にデータをバックアップする
- 前進のみのマイグレーションを優先(列の追加は行い、削除は行わない)
インフラストラクチャのロールバック:
- ブルーグリーンデプロイの切り替え
- ロードバランサーの設定を元に戻す
- DNS の変更(伝播に時間がかかる)
自動ロールバック
# Example rollback automation
def monitor_deployment():
if error_rate() > THRESHOLD:
alert_oncall("Error rate spike detected")
if auto_rollback_enabled():
execute_rollback()
リリースメトリクスと分析
主要業績評価指標
- リードタイム:コミットから本番環境への反映までの時間
- デプロイ頻度:週または月あたりのリリース数
- 平均復旧時間:インシデント発生から解決までの時間
- 変更失敗率:インシデントの原因となったリリースの割合
品質メトリクス
- ロールバック率:ロールバックされたリリースの割合
- ホットフィックス率:通常のリリースあたりのホットフィックス数
- バグ流出率:リリースあたりの本番環境のバグ数
- 検出時間:問題の特定にかかる時間
プロセスメトリクス
- レビュー時間:コードレビューにかかる時間
- テスト時間:自動テストと手動テストにかかる時間
- 承認サイクル:PR からマージまでの時間
- リリース準備:リリース作業にかかる時間
ツール連携
バージョン管理システム
- Git:コミットメッセージ規約の解析に対応した主要な VCS
- GitHub/GitLab:プルリクエストの自動化と CI/CD
- Bitbucket:パイプライン連携とデプロイゲート
CI/CD プラットフォーム
- Jenkins:パイプラインのオーケストレーションとデプロイの自動化
- GitHub Actions:ワークフローの自動化とリリースの公開
- GitLab CI:環境管理機能を備えた統合パイプライン
- CircleCI:コンテナベースのビルドとデプロイ
監視とアラート
- DataDog:アプリケーションパフォーマンスの監視
- New Relic:エラー追跡とパフォーマンス分析
- Sentry:エラーの集約とリリースの追跡
- PagerDuty:インシデント対応とエスカレーション
コミュニケーションプラットフォーム
- Slack:リリース通知と調整
- Microsoft Teams:ステークホルダーとのコミュニケーション
- Email:外部顧客への通知
- Status Pages:公開インシデントに関するコミュニケーション
ベストプラクティス
リリース計画
- 定期的なリリースサイクル:予測可能なリリーススケジュールを確立する
- 機能の凍結:リリースの48時間前に変更を凍結する
- リスク評価:変更がもたらす潜在的な影響を評価する
- ステークホルダーとの連携:すべてのチームが準備できていることを確認する
品質保証
- 自動テスト:包括的なテストカバレッジを確保する
- ステージング環境:本番環境に近いテスト環境を用意する
- カナリアリリース:ユーザーの一部に段階的に展開する
- モニタリング:問題を事前に検出する
コミュニケーション
- 明確なスケジュール:スケジュールを早めに伝える
- 定期的な更新:リリースプロセス中に状況を報告する
- 問題の透明性:問題について率直に伝える
- 事後検証:インシデントから学び、改善する
自動化
- 手動作業の削減:繰り返し作業を自動化する
- 一貫したプロセス:毎回同じ手順を実行する
- 監査証跡:すべてのリリース活動を記録する
- セルフサービス:チームが安全にデプロイできるようにする
よくあるアンチパターン
プロセスのアンチパターン
- 手動デプロイ:エラーが発生しやすく、一貫性に欠ける
- 直前の変更:適切なテストなしにリスクを持ち込む
- テストの省略:検証せずにデプロイする
- 不十分なコミュニケーション:ステークホルダーが変更を把握していない
技術的なアンチパターン
- モノリシックなリリース:規模が大きく頻度の低い、リスクの高いリリース
- 結合したデプロイ:一緒にデプロイする必要があるサービス
- ロールバック計画がない:問題から迅速に復旧できない
- 環境の乖離:本番環境とステージング環境が異なる
文化的なアンチパターン
- 非難する文化:変更や問題の報告を恐れる
- ヒーロー文化:プロセスではなく個人に依存する
- 完璧主義:小さな改善のためにリリースを遅らせる
- リスク回避:恐れから必要な変更を避ける
はじめに
- 評価:現在のリリースプロセスと課題を評価する
- ツールの設定:リポジトリ用のスクリプトを設定する
- プロセスの定義:チームに適したワークフローを選ぶ
- 自動化:CI/CD パイプラインと品質ゲートを導入する
- トレーニング:新しいプロセスとツールについてチームに説明する
- モニタリング:リリースのメトリクスとアラートを設定する
- 反復的な改善:フィードバックとメトリクスに基づいて継続的に改善する
Release Manager スキルは、混乱したデプロイを予測可能で信頼性の高いリリースへと変え、組織全体の信頼を築きます。