Subversionとコラボレーション開発

こんにちわ。静岡支社のnagayasuです。

前回、前々回はxamppというパッケージを使って、コーディングを行う方法を紹介しました。今回はコラボレーション開発で使用されるSubversionというツールを紹介したいと思います。

上書きや紛失の問題

様々な受託案件の中には、複数の人が同時に携わるものが多くあります。こういった開発ではテストサイト上で他の人が作成したファイルを上書きしてしまったというトラブルが良く起こります。

DreamWeaverのサイト管理には簡易的なチェックイン/チェックアウト機能が用意されていますが、あまり使用されていないようです。

コラボレーション開発としてのSubversion

複数の人(他社も含む)が関わるコラボレーション開発では、こういったトラブルを防ぐ為のツールとしてSubversionが有用です。

Subversionとはバージョン管理システムとして使われるサーバ/クライアントソフトウェアです。 サーバ側のソフトウェアも必要ですが、インフラとして整備されていれば意識する事はないでしょう。 一般的に開発者が利用するクライアントソフトウェアには以下のようなものがあります。

  • svn(主にプログラマが使用)
  • TortoiseSVN(WindowsのExplorerに統合されたGUIクライアント)
  • SCPlugin(MacのFinderに統合されたGUIクライアント、別途svnのインストールが必要)

バージョンを管理するという事は、いつでもバックアップを取り出す事ができるということです。 ほとんどの場合はそういった必要はありませんが、バックアップがあるという安心感はとても大きいです。

Subversionを使用すると他の人の修正内容を容易に自分の環境に取り込む事ができます。ファイルの修正がぶつかった場合の検出もSubversionが自動的に通知してくれる為安心して開発する事ができます。

Subversionで用いられる用語

Subversionには普段聞きなれていない、いくつかの独自の用語があります。ここでは独自の用語について簡単に説明します。

repository / リポジトリ
サーバ側でファイルを管理する為の場所。すべてのファイルはリポジトリに保管されます。一般的にリポジトリはURLの形式で表現されます。
working copy / 作業コピー
リポジトリから自分のパソコンにダウンロードしたファイル一式。作業中はそのファイルに対して追加・修正などを行います
checkout / チェックアウト
リポジトリから作業コピーを取り出す為の操作。
commit / コミット
自分が作業コピーに対して行った修正を、リポジトリに登録する為の操作。この操作を行うまで作業コピーに対して行った修正内容はリポジトリには反映されません。
update / 更新
他の人が行った修正内容を自分の作業コピーに取り込む為の操作。一度チェックアウトを行った後は、updateを通して自分の作業コピーを最新の状態に保ちます。
コミットログ
commitの操作時に、行った修正についての記録を残す事ができます。この記録をコミットログと呼びます。

開発前の準備

弊社では下記のステップで開発をスタートしています。

  • 案件の立ち上げ時にテストサイトを設置
  • 同時にSubversionのリポジトリを作成
  • コミットログ用のMLを作成し、関係者を登録
  • 関係者が作業コピー(working copy)をチェックアウト(checkout)する
  • それぞれ自分の担当の作業を行いコミット(commit)する
  • コミットされたデータは5分程度の周期でテストサイトに反映

他の人の作業成果を取り込むにはある程度の周期で自分の作業コピーに更新(update)を掛ける必要があります。更新を掛けると、他の人がコミットしたデータが自分の作業コピーに反映されます。

誰がいつどういう内容をコミット(commit)したかはコミットログ用のMLにメールで通知されます。その為、自分がコミットした内容はすぐに他の人に通知されます。

使用における注意

この開発スタイルを取り込む為には、前回紹介したXAMPPを用いて自分のパソコンにプレビューできる環境を用意する必要があります。これはテストサイトに不適切な状態でファイルをアップロードさせない為にも必要な事です。XAMPPを使っていれば自分のパソコンで確認を行える為、テストサイトで確認する為という理由でコミットする事が無くなります。

プログラマは担当者が誰でも更新を行えるように全体を設計する必要があります。これはサイト全体に一貫した規約を適用するということです。担当者以外でも問題なく作業を行えるようにディレクトリやファイルの配置などについて具体的な規約を用意します。XHTMLやCSSについても分業する為の規約を用意すると良いでしょう。