6. バージョン管理
定義
バージョン管理(Version control) システム(Git、Subversion、Mercurialなど)は、ファイルを論理的に組織し、チーム・組織全体での作成・アクセス・更新・削除を調整する手段です。自動化・継続的インテグレーションと密接に関わり、研究は包括的なバージョン管理の利用が継続的デリバリーを予測することを一貫して示しています。
AI時代にこのケイパビリティはさらに強力です。強いバージョン管理の実践は、AI導入が個人の効果性とチームパフォーマンスに与えるポジティブな効果を増幅します。
なぜ重要か: 再現性と追跡性
- 再現性(Reproducibility): どの環境も完全自動でプロビジョニングし、同じ構成から再現した新環境が同一であることを知れる必要がある。
- 追跡性(Traceability): どの環境でもすべての依存関係のバージョンを迅速・正確に把握し、2つのバージョン間の差分を比較できる必要がある。
そこから災害復旧、監査可能性、より高い品質、容量管理、欠陥対応という利点が生まれます。
AIの視点: 速度のための安全網
AI導入によりコード生成の量と速度が劇的に増えます。これは処理量を高めますがデリバリー不安定さの増加とともに現れます。強いバージョン管理は、AI生成コードを自信をもって実験できるようにする必須の安全網です。
AIは強力な非決定性を開発者のワークフローに持ち込むため、「準備ができたらコミット」という旧来のモデルは不十分です。外側のループ(クリーンでレビュー可能な変更)の規律を内側のループへ持ち込み、クリーンな状態ごとに小さく頻繁なコミットを行う必要があります。
またバージョン管理は今やAI成果物を保存する場所です。
- AIプロンプトをバージョン管理して知識を共有し、監査証跡を作る。
- エージェント設定ファイル(例:
GEMINI.md、CLAUDE.md)をバージョン管理して、チームの規範とガードレールを定める。
実装方法: 何をバージョン管理するか
チームは以下の資産を共有リポジトリにチェックインすべきです。
- すべてのアプリケーションコードと依存関係(ライブラリ、静的コンテンツ)
- データベーススキーマ・参照データ生成スクリプト
- 環境作成ツール・成果物(Terraformファイル等)
- コンテナ作成・構成ファイル(Dockerfile等)
- すべての自動テスト・手動テストスクリプト
- パッケージング・デプロイ・DBマイグレーション・環境プロビジョニングのスクリプト
- 支援成果物(要件文書、デプロイ手順、リリースノート)
- AI成果物(プロンプト、エージェント設定ファイル)
- コンテナオーケストレーション(Kubernetes、OpenShift等)
- すべてのクラウド構成ファイル(CloudFormation、Pulumi等)
- その他のインフラ支援スクリプト・構成
よくある落とし穴
- 限定的な適用: アプリケーションコードにだけバージョン管理を適用。ベストプラクティスはすべてのテスト・本番環境の再現能力を要求する。
- 内側のループの放置: AIでコードを速く生成しながら「完璧になるまで」コミットを遅らせると、バージョン履歴の安全を失う。
- マージ競合: 頻繁・複雑な競合はlong-livedブランチのようなプロセス問題の兆候。AIが生む高いコード量がこれを悪化させる。
改善方法
- すべてのコミットが、バージョン管理情報だけでどの環境にもデプロイ可能なパッケージの自動作成をトリガーするようにする。
- バージョン管理のスクリプト・構成だけで本番類似のテスト環境を必要時に作成できるようにする。
- テスト・本番インフラをスクリプト化し、容量追加・災害復旧を完全自動化する。
測定方法
- コミット頻度: 高い頻度は高い個人効果性と関連、特にAI使用時
- ロールバック依存度: 変更を元に戻す機能を積極的に活用するほど、チームパフォーマンスへのAIのポジティブ効果が大きくなる
- アプリケーションコード / システム構成 / アプリケーション構成 / ビルド・構成自動化スクリプトのバージョン管理比率と復旧容易性
出典
本記事はDORAのVersion controlを要約したものです。原文 © Google LLC、CC BY 4.0。