システム開発においては、複数人で一つのシステムを作り上げる関係上、プログラムやデータのバージョン管理が大切になります。また、各種ドキュメントのアップデートも発生するでしょう。
しかしバージョン管理はプロジェクトが長期化するほど煩雑になりがちで、引き継ぎのミスが起こりやすい部分でもあります。そこで今回はバージョン管理ソフトの重要性についてまとめてみました。
複数人での集中作業で頻発する「誤った上書き」を防ぐ
冒頭でも述べたように、システム開発では一つのシステムに対し集中的に開発・修正を行うことがあります。単一のプログラムに対し、複数人が同時に手を入れることは考えにくいものの、人員の入れ替わりで担当者が変わることは十分に考えられますよね。さらに関連する機能同士の開発作業が同時並行で進むことも日常茶飯事です。
このような時、引き継ぎや連携のミスでプログラムのバージョンに誤った上書きをかけてしまうと、複雑な不具合の原因になりかねません。
バージョン管理ソフトは修正や変更を反映する前に状態を保存しておけるため、誤った上書きによるデグレーションを防ぎ、例えデグレーションが発生したとしてもその被害を最小限に抑える役目を果たします。
進捗に応じた断面を保存できる
バージョン管理ソフトを活用すれば、進捗管理にも具体性が増すでしょう。進捗管理は作業の進み具合を管理するだけではなく、「実績値」を分析するためにも重要な役割を持ちます。
案件の規模や難易度に詳細な進捗管理実績を組み合わせることで、将来の開発作業に対する見積もりの精度が向上するのです。実際多くの企業で過去の進捗管理をもとに実績値を割り出し、工数見積もりの根拠として使用しています。
バージョン管理ソフトは、日ごと、月ごとといった断面でも開発状況を保存できるため、その差分からより具体的な実績値を算出可能です。
例えば1日で平均何ステップのソースコードが生み出されているかといった計算に、バージョン管理ソフトによる差分機能が活用できるでしょう。
工数見積もり時の明確な根拠と工期短縮が求められる昨今、バージョン管理ソフトの活用は必須と言えるかもしれません。
障害の原因特定に役立つ
バージョン管理ソフトには差分機能があり、プログラムの修正や機能追加によってどの部分が変更されたかを詳細に確認することができます。
この差分機能を活用すれば、万が一デグレーションを引き起こした場合の復旧作業が容易になるのです。差分機能によってあぶりだされた部分を中心に分析していくことで。原因特定にかかる時間は大幅に短縮されるでしょう。
障害発生時には、障害原因の特定をいかに早く行うかが肝になりますから、この点においてもバージョン管理の重要性がわかります。
おすすめバージョン管理ソフトは?
ここまでバージョン管理ソフトの重要性をまとめてきましたが、最後におすすめのソフトをご紹介しておきます。
バージョン管理ソフトには集中型と分散型があり、最近は分散型のソフトが主流。どちらも「リポジトリ」と呼ばれる変更情報を保持しているのですが、集中型はリポジトリを一元管理するタイプで、修正や変更を加える場合は一元管理されているリポジトリへネットワーク接続できることが条件となります。
一方、分散型はリポジトリのコピーを各クライアントが持っているため、クライアントがネットワークに接続されていなくても修正作業が可能です。
集中型
・Apache Subversion
90年代から普及していたCVNというツールに多くの改良を加え、2000年にリリースされました。
SubversionやSVNと呼ばれることも多く、分散型のGitがリリースされるまでは最も普及していたバージョン管理ソフトと言えます。
分散型
・Git
もともとはLinuxのカーネル情報を管理するために開発されたツールですが、その使いやすさから人気を集めました。
OSS出身とあってもちろんフリー。さらに質も商用に全く劣らず、ネットワーク接続を必要としないことがポイントです。
→ Gitとは?