開発者の注目集める分散バージョン管理システム(DVCS)--その理由とは

文:Justin James(Special to TechRepublic) 翻訳校正:村上雅章・野崎裕子 2010年09月28日 08時00分

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

 バージョン管理は、ほとんどの開発者が日常的に行っている作業のはずだ。開発工程において、バージョン管理にまつわる大きな失敗を避けようとすれば、バージョン管理システムを使用する必要が出てくる。しかし、これは使いこなすことが難しく、また使うだけで素晴らしい毎日を送れるようになるものでもないのである。

 バージョン管理について開発者の口から出てくるのは、たいていが不満であり、その不満は特に従来のシステムに対するものが多い(開発やサポートが終了し、世の中から姿を消そうとしているものに不満が集中しているのは、不幸中の幸いと言えるかもしれない)。しかし筆者は、尊敬している知人たちが分散バージョン管理システム(DVCS)の良さを口にしているのを耳にしたため、このシステムについて調べてみることにした。そこで本記事では、DVCSについて筆者が今回調査した内容に基づき、従来のバージョン管理システムとの違いや、多くの開発者たちに好まれている理由について説明する。

DVCSと従来のバージョン管理システムは、どこが違っているのか

 DVCSと従来のバージョン管理システムの主な違いは、リポジトリを配備する場所にある。

 従来のバージョン管理システムでは、中央リポジトリにすべてのファイルのマスターコピーが格納されている(場合によっては、パフォーマンスや冗長性といった観点から複数のノードにミラーリングされている)。このため開発者は、自らのローカルディスク上に個人的なコピーを作成し(チェックアウト)、その内容をマスターコピーに反映したい際にはチェックインを行うようになっている。ユーザーはリポジトリ上のファイルにロックをかけることで、ファイルの内容が変更中である旨を他者に知らせることができる。そしてファイルが複数のユーザーによって個別に変更されている場合、リポジトリにチェックインする時点で、サーバ上にある該当ファイルの内容と、チェックインする内容の差分を解決する必要がある。何らかの実験を行ったり、異なるバージョンを作成したいという場合には、コードツリーを分岐させることで、まったく異なったコピーを作成することができる。また、最終的に2つのツリーを1つにマージすることもできるものの、その際にもそれら2つのツリーの差分を解決する必要がある。

 DVCSはこういったやり方を変えることになる。中央サーバ上に中央リポジトリを配備するのではなく、開発者それぞれが自らのリポジトリを保持することになる(このため「分散化」と呼ばれるわけだ)。この形態はピアツーピアのネットワークに似ている。これにより、従来のバージョン管理システムよりも冗長性を高くすることが可能になる。このこと自体は目新しい考え方ではない。大きな違いはチェックインに対するアプローチである。従来のシステムでは単にファイルを置き換え、新たなバージョン番号を付与するようになっているのに対して、DVCSではチェンジセットというものを用いるようになっている。このチェンジセットはチェックインを行うたびに1つ作成される。このため、ツリー中にある最初の(同じ)ペアレントに対して2人の開発者が個別に変更を加える場合、並行した2つのブランチが自動的に作成される。このようにすることでシステムは、2つのブランチ間における実質的な違いの内容を把握できるようになるため、バージョン番号が異なった2つのファイルを単に比較することになるシステムに比べると、簡単にマージが行えるというわけだ。このトピックについては、MercurialのWikiに詳しい説明があるので、参考にしてもらいたい。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

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

この記事を読んだ方に

関連キーワード
クラウドコンピューティング

関連ホワイトペーパー

連載

CIO
ITアナリストが知る日本企業の「ITの盲点」
シェアリングエコノミーの衝撃
デジタル“失敗学”
コンサルティング現場のカラクリ
Rethink Internet:インターネット再考
インシデントをもたらすヒューマンエラー
トランザクションの今昔物語
エリック松永のデジタルIQ道場
研究現場から見たAI
Fintechの正体
米ZDNet編集長Larryの独り言
大木豊成「仕事で使うアップルのトリセツ」
山本雅史「ハードから読み解くITトレンド放談」
田中克己「展望2020年のIT企業」
松岡功「一言もの申す」
松岡功「今週の明言」
内山悟志「IT部門はどこに向かうのか」
林 雅之「デジタル未来からの手紙」
谷川耕一「エンプラITならこれは知っとけ」
大河原克行「エンプラ徒然」
内製化とユーザー体験の関係
「プロジェクトマネジメント」の解き方
ITは「ひみつ道具」の夢を見る
セキュリティ
エンドポイントセキュリティの4つの「基礎」
企業セキュリティの歩き方
サイバーセキュリティ未来考
ネットワークセキュリティの要諦
セキュリティの論点
スペシャル
エンタープライズAIの隆盛
インシュアテックで変わる保険業界
顧客は勝手に育たない--MAツール導入の心得
「ひとり情シス」の本当のところ
ざっくり解決!SNS担当者お悩み相談室
生産性向上に効くビジネスITツール最前線
ざっくりわかるSNSマーケティング入門
課題解決のためのUI/UX
誰もが開発者になる時代 ~業務システム開発の現場を行く~
「Windows 10」法人導入の手引き
ソフトウェア開発パラダイムの進化
エンタープライズトレンド
10の事情
座談会@ZDNet
Dr.津田のクラウドトップガン対談
Gartner Symposium
IBM World of Watson
de:code
Sapphire Now
VMworld
Microsoft WPC
Microsoft Connect()
HPE Discover
Oracle OpenWorld
Dell Technologies World
AWS re:Invent
AWS Summit
PTC LiveWorx
吉田行男「より賢く活用するためのOSS最新動向」
古賀政純「Dockerがもたらすビジネス変革」
中国ビジネス四方山話
ベトナムでビジネス
日本株展望
企業決算
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]