支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • ソースコード管理にはバージョン管理シ

ソースコード管理の基礎知識

ソースコード管理とは、ソフトウェア開発におけるソースコード(ファイル)の変更履歴を管理することです。「バージョン管理システム」というソフトを利用して行います。
各ファイルのバージョンは、一般的に「リポジトリ」というデータベースに保管し、ファイルの作成日時、変更日時、変更点などの履歴を管理することで、変更内容を確認したり、変更前の状態へと復元することが可能になります。
バージョン管理システムは、リポジトリの管理方式によって「集中型」と「分散型」に分類されます。

ソースコード管理の機能

●「リポジトリ」ソースコードをデータベース(リポジトリ)に格納し、複数の開発者間で閲覧・編集を行えるようにする。
●「バージョン管理」編集されたソースコードがリポジトリへ反映された際、作成日時、変更日時、変更内容、コメント等を記録し履歴を管理する。
●「差分チェック」別バージョンのソースコードを比較して、追加や削除、その他の編集が行われた部分を分かりやすく表示する。
●「コミュニケーション」開発者間でソースコードに関するリクエストやフィードバック、コメント等を効率的に行えるようにする。等

バージョン管理システム導入のメリット

●ファイルを以前の状態に戻せる
前述したように、バージョン管理システムを使用すると、変更したファイルを過去の状態で復元出来たり、変更した内容を表示出来ます。
つまり、もし作業過程で誤ってファイルに上書きしてしまった時、それに操作前のファイル情報を移す事で、その上書きを無かった事に出来ます。
これは、リポジトリに「変更を行う前のファイル情報も蓄積」されている為です。
●変更履歴を全て記録出来る
記録される内容は、主に「ファイルの作成者」、「作成日付」、「更新日付」、「更新者」、「変更履歴」、「コメント」です。
これらを材料に、どのような変更が行われたのか調査し、特定箇所の変更のみを取り消すという作業が可能です。
●デグレードの発生を防止する
デグレードとは、新しいバージョンのソフトウェアが以前よりも品質を落としてしまうことです。
その原因は様々ありますが、1つには、「バグのある古いバージョンのソースコードを反映してしまう」といったバージョン管理の失敗が挙げられます。
複数人によるシステム開発を行う際、バージョン管理システムを導入すれば、古いバージョンのファイルに誤ってチェックアウト(リポジトリからデータを取り出すこと)する事を防ぎます。

ブランチを使ったバージョン管理システム

多くのバージョン管理システムでは、リポジトリを分岐させる事が出来る「ブランチ」という仕組みがあります。
ブランチ(英語で枝という意味)は、その名の通り、リポジトリを枝分かれさせて管理する仕組みです。
これを行う理由は、「分岐したリポジトリは互いに独立性を持ち、更新内容による影響を受けない」という特徴を活かし、機能追加やバグ修正などの複数の変更を同時進行で進める為です。
また、修正ごとにブランチを分ける事で、バージョンの変更の流れが分かりやすくなります。修正が完了するまではブランチで別れて作業を進め、完了したら変更内容をマージ(統合)して1つのリポジトリにするという方法が一般的です。

集中型管理システム

複数の作業者が同じファイル群を扱うものとします。ある1つのサーバで中央集中型システムは稼働し、誰でもそのサーバからファイルのコピーを取得して作業が出来ます。
変更した内容は、サーバの内容に反映されます。
また、他の利用者が更新操作を行ったことにより、サーバ内のファイルが変更されると、その内容も自分の環境に同期出来ます。
サーバ側では全ての変更過程を記録しているので、これを元にどんな変更があったとしても前の状態に戻したり、変更があった時に何があったか知ることが出来ます。
変更をサーバに保存すると「リビジョン番号」が生成・増加します。
※リビジョン番号ー対象の変更を識別する一意の番号。書籍で例えると、第一版・第ニ版と付けられる改訂版の番号みたいなもの。
製品としては、Subversionがある。

分散型管理システム

分散型管理システムは、中央型管理システムと異なり、主となるサーバを持っていません。代わりに、独立したリポジトリを備え、他のリポジトリと同期する事が出来ます。
中央集中型では、用意出来るリポジトリは1つだけです。対して、分散型は複数のリポジトリを用意出来ます。
サーバに親となる「リモートリポジトリ」を用意し、ローカル環境である作業者のパソコンには「ローカルリポジトリ」を用意します。
そうすると、普段はローカルリポジトリ内のデータを用いて仕事を進め、ある程度進行したら、その内容をリモートリポジトリに反映させる、という使い方が出来ます。
これにより、リモートリポジトリにアクセス出来ない環境下でも作業が行えたり、ローカルリポジトリで行った作業内容を確認してからリモートリポジトリに反映させるという、ワンクッション置いた方法により、ミスの軽減になります。
実際、大規模な開発案件の時に各チームで作業を行い、ある程度進んだ時の内容を、親のリポジトリや他の開発者のリポジトリに反映させるという使い方があります。
これにより、開発者同士の作業が柔軟に行えるので、オープンソースのプロジェクト等に利用されています。製品としては、Gitがある。

まとめ

集中型管理システムの、ローカル環境ではリポジトリを使用出来ない(最新のリポジトリに反映出来ない)というデメリットを克服する為に分散型管理システムやブランチの仕組みが生まれました。
分散型管理システムの複数リポジトリに、ブランチ&マージ機能を組み合わせて、作業・バックアップの効率化を可能にします。
ただ、分散型管理システムは、集中型管理システムよりも操作が複雑で、ファイル識別に付けられるタグも、集中型管理システムのリビジョン番号の方が分かりやすいという点がありますので、一概にどちらが優れているというのは、作業目的や内容に依る所です。