20140808 社内勉強会資料

Preview:

DESCRIPTION

社内向け勉強会で使用した資料

Citation preview

ソフトウェア開発におけるバージョン管理システムのお話

by Shinya Kinoshita

注意事項

本資料は社内勉強会用に作成したものです。

バージョン管理システムとは

コンピュータ上で作成・編集されるファイルの変更履歴を管理するためのシステム

どんな時に使うのか

• ソフトウェアをチームで開発する場合• メンバーの変更履歴が確認できる• メンバーの変更内容を取り込むことができる

• 製品としてリリースした時点のファイルの状態を管理する場合

使わなかったらどうなるか

• 変更時にバックアップファイルを毎回作成しないといけない

• 変更前と変更後の箇所が分かるようにファイルの内容を編集しないといけない

• ファイルを紛失した際に復旧できない場合がある• 複数プロジェクトで同一ファイルを編集する場合の変更履歴の管理が複雑になる

何を管理したらよいか

• ソースコード• ビルドスクリプト• ドキュメント• データベースにおける DDL定義、初期データ

• 環境構築用の設定ファイル・スクリプト

何を管理しなくてよいか

• ソースコードをコンパイルしてできたバイナリファイル

• 公開鍵、秘密鍵、証明書等の厳重に管理しないといけないファイル

• ログファイル• アプリケーションにより出力された一時ファイル• 統合開発環境の設定ファイル

リポジトリとは

• バージョン管理システムがファイルを管理するために作成するディレクトリ

• リポジトリの作成単位に決まりはない• ソフトウェア全体で1つのリポジトリを作成• ソフトウェアの機能単位でリポジトリを作成

ブランチとは

• バージョン管理システムの管理下にあるファイルやディレクトリ等をコピーし、それぞれ同時並行で変更できるようにするための仕組み

• 1つのリポジトリに複数のブランチが存在することがある

集中型とは• サーバー上にリポジトリを1つ配置する

• 開発者はサーバー上のリポジトリに対してファイルの変更内容を登録したり、他の開発者の変更内容を取得する

• 変更を管理することに重点をおいている

分散型とは• 開発者や管理者ごとに1つのリポジトリを所有する

• 開発者は自分のリポジトリに対してファイルの変更内容を登録する

• 他の開発者の変更内容は他の開発者のリポジトリから取得する

• 変更を共有することに重点をおいている

ホスティングサービス

• Google Code

• オープンソースとして公開するもののみ利用可能• GitHub

• 無料で利用できるが公開が前提となる• 非公開にしたい場合は有料プランを利用する

• BitBucket

• 公開・非公開どちらでも無料で利用可能• 6人以上のプロジェクト利用の場合は有料プランを利用する

参考情報

• DevOps時代の開発者のための構成管理入門( 3)http://www.atmarkit.co.jp/ait/articles/1305/20/news015.html

終わり