【構成管理】バージョン管理の目的や手法は?集中管理分散管理

なんとなくバージョン管理を行っているけれど、一回も過去の環境を再現したことがないとか、いざという時に、うまく環境を復元できなかったなどありますでしょうか。

これらはバージョン管理がうまくいっているかのことですが、プロジェクトで動作が正常に行われているでしょうか。

バージョン管理とは?

バージョン管理システムの最も基本的な機能は、ファイルの作成日時、変更日時、変更点などの履歴を保管することである。

これにより、何度も変更を加えたファイルであっても、過去の状態や変更内容を確認したり、変更前の状態を復元することが容易となります。

バージョン管理の目的

  1. 以前の状態に戻る
  1. 変更履歴を調査する
  1. プロジェクトを管理する
  1. 変更者と変更理由を知る

なぜバージョン管理が必要?

素早い開発が可能に

・ある環境でバグなどの問題が発生した場合には、過去にさかのぼって変更の差分を確認することで原因を分析したり、
・別に同じ環境を作って同じ問題が再現するかどうか調査できます。
・ソフトウェアへの影響が大きな“変更”や試験的な機能の追加を安心して行えるので、結果として素早い開発が可能になります。

余計な情報でコードが肥大しない

・バージョン管理システムを使用すると、変更内容はバージョン管理システムに記録されるので、変更前の内容をコメントアウトしてコード中に残すようなことをする必要はありません。
・余計な情報でコードが肥大しがなくなるので、人が読みやすい状態を保てます。

バージョン管理システムの基本的な利用方法

  1. ファイルをリポジトリに登録する。
  1. ファイルをリポジトリからローカル環境に取り出す(チェックアウト)
  1. ローカル環境で、ファイルに対し変更を行う。
  1. 変更したファイルをリポジトリに書き戻す(チェックイン)

ソースコードのバージョン管理

・コード共同所要の原則への理解
・このソースコードは本番環境または開発環境などでも同じように動作しなければならない。
・テストを書く習慣、こみぅとと前に他のテストも含めて通してからコミットする習慣

設定情報のバージョン管理

・環境によって異なる設定値(接続先データベース情報など)が書かれた設定ファイル
・開発環境用、ステージング環境用、本番環境用などにわけて定義し、容易に切り替え
・本場環境に配置するまえにアプリケーションの各所を書き換えないとかだめ
  • データベースのスキーマ定義、マイグレーションの SQL、初期データ
  • 環境構築用の設定ファイル・スクリプト

バージョン管理ができないもの

  • ソースコードをコンパイルしてできたバイナリファイル
  • 秘密鍵ファイルなどの他人に見せてはいけないもの

Javaのclassファイルのように何かから生成できるものは管理せず、生成元だけ管理するでしょう。OSのパッチやミドルウェアも管理しようと思えばできますが、容量の関係でやらないことが多いでしょう。

「集中管理方式」と「分散管理方式」

バージョン管理システムは大きく2つに分けると、「集中管理方式」「分散管理方式」があります。集中管理方式の「CVS」「Subversion」が多く利用されていましたが、複数人での分散開発の容易さやパフォーマンスに優れた分散管理方式の「Git」「Mercurial」などがスタンダードになりつつあります。

(Visited 9 times, 1 visits today)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする