Visual Studio環境におけるチーム開発とワークスペースの共有
Microsoft Corporation
1997年10月
はじめに
開発者のチームのメンバー間で、複数のプロジェクトで構成される大規模なワークスペースを共有する場合には、特別に考慮しなければならないことがいくつかあります。この記事はそれらの課題に注目して、ソリューションを提供します。
- 注意:
Microsoftは、LANをまたがってプロジェクトを開いたり作成したりすることはサポートしていません。サポートされている唯一のプロジェクトの形態は、ローカルのハードディスク上から開くものだけです。この記事では、チームでプロジェクトを開発するテクニックを紹介していますが、チームのメンバーがプロジェクトをローカルのコンピュータにコピーして、ソース コード管理システム(Microsoft Visual SourceSafe(tm) 5.0を使いました)を使ってファイルを更新するという前提で解説を行っています。
ソース コード管理システムから除外すべきローカル ファイル
共有のワークスペースで複数のプロジェクトを開発し、それをソース コード管理システムにチェックインする場合(ただし、開発者はそれぞれのコンピュータにローカルのコピーを持っているものとします)、ユーザー固有のファイル(.optや.clwファイルなど)はローカルに置いておくのが最良の方法です。
以下のファイルは、ローカルのものであり、ソース コード管理システムにチェックインしてはなりません。
- filename.opt-これは、バイナリ ファイルで、ローカル コンピュータのワークスペース オプション設定ファイルです。
- filename.clw-これは、ClassWizardがクラスを追跡するために使うファイルです。
- filename.ncb-これは、ClassViewが使うバイナリ ファイルで、ローカル マシンに固有のものです。
- filename.aps-これは、ローカルのリソース ファイルで使用されるバイナリ ファイルです。
- ファイル名.mak-これは、エクスポートされたメイクファイルです。
.clwファイルはローカルにのみ存在するべきです。.clwファイルをチェックインするとファイルが読み取り専用となり、ClassWizardはファイルを認識することができなくなります。このファイルはローカルで持つようにして、プロジェクト全体に新しいソース ファイルが追加されたときにこのファイルを再生成するようにします。.clwファイルを再生成するには、旧ファイルを削除し、尋ねられたら新しいファイルを作成するように指示します。
排他的にチェックアウトするファイル
ファイルによってはプロジェクトで一意でなければならず、一度に複数の人がチェックアウトをすると結合のときに矛盾が生じるものがあります。これによって生じる矛盾は解決が困難なため、これをよく知っている人がいないと問題になります。これが起こらないようにするには、このようなファイルは、一度に一人だけが排他的にチェックアウトするようにします。
以下のファイルは結合時に矛盾を起こす可能性があります。
- filename.dsp-.dspファイルでは、一度に複数の人がコンパイラやリンカのオプションを変更すると、チェックイン時に結合処理が複雑になります。
- resource.h-ファイル内のリソースで使用される数字の中に自動的にインクリメントされるものがあります。
- mydata.rc-ファイル内のリソースで使用される数字の中に自動的にインクリメントされるものがあります。
インクルード ディレクトリの設定 [ツール]メニューを通じて表示できるディレクトリ設定ダイアログ ボックス([ツール]→[オプション]で表示されるダイアログの[ディレクトリ]で[インクルード ファイル]を選択)で設定を行うと、全ワークスペース ファイルのパスが設定されます(そして、その変更はローカル コンピュータにだけ保存されます)。これは、ほかのワークスペースに制限を設けることになります。
この方法の代わりに、[プロジェクト設定]ダイアログ ボックスの適切なタブでライブラリのパス名を指定することもできます。指定が行えるタブは、[リソース]、[OLEタイプ]、[C/C++]です([C/C++]では、[カテゴリ]で[プリプロセッサ]を選択してパスを指定します)。これらのタブには、追加のインクルード ディレクトリを指定できる編集ボックスがあります。インクルード ファイルのディレクトリ パスがプロジェクトのディレクトリ パスからの相対パスでない場合、環境変数を利用してそれらの違いを吸収できます。最もよいのは、ローカル パスを3つとも、これらのインクルード ディレクトリに設定することです(それぞれ異なっていてもかまいません)。
ファイルは、「持続」プロパティ(ファイルのプロパティ ページにあります)で環境変数を使って、.dspファイルとは異なるドライブにあるファイルの問題を解決できます。
メイクファイルのエクスポート
メイクファイルをエクスポートする場合、ディレクトリ ツリーの一貫性に問題が生じることがあります。これは特にサブプロジェクトを使っている場合に顕著です。これを避けるには、参加しているすべてのコンピュータ上で、プロジェクト ディレクトリ ツリーを、ビルドを行うマシンのプロジェクト ディレクトリ ツリーとまったく同じにします。熟練ユーザーなら、環境変数と、環境変数を設定する共通のバッチ ファイルを使って、ディレクトリ ツリーの違いを吸収し、ファイルを全部見つけられるようにできます。サブプロジェクトを含んでいるエクスポートされたメイクファイルには、パス名がハードコードされていることもあります。その場合、ディレクトリ ツリーを完全に同じにしないとなりません。
[インクルード ファイルのパス]を使ってライブラリへのパスを追加すると、エクスポートするメイクファイルにパスがハードコードされます(相対パス名が使われません)。これを解決する方法はいくつかあります。すべてのコンピュータを同じディレクトリ構成にするか、相対パス名を使うメイクファイルを生成します(後者のほうは、.dspファイルの交換する手間の分、時間がかかり柔軟性にも欠けます)。相対パスを使うエクスポート用メイクファイルを生成するには、ツールのディレクトリ設定ダイアログ ボックス([ツール]→[オプション]で表示されるダイアログの[ディレクトリ]で[インクルード ファイル]を選択)でライブラリ ファイルのパス名を追加します。その場合、メイクファイルの生成のたびに指定されたディレクトリがすべて検査されるので、時間がかかります。
プロジェクトのアンロードによる共有ワークスペースの高速化
ワークスペースのプロジェクトをいくつかアンロードしておけば、ワークスペースのロード間を短縮できます。チームで共有しているワークスペースに20のプロジェクトがあったとします。しかしある開発者がそれらのうち5つしか必要としなかったとします。その場合、ワークスペースのロード時間を短縮するために、ほかの15のプロジェクトをワークスペースから「アンロード」しておけます。プロジェクトのアンロードは、ローカルのコンピュータ上にローカルのオプションとして保存され、共有のワークスペースには影響しません。
ワークスペースからプロジェクトをアンロードするには次のようにします。
共有ワークスペースをロードし、[FileView]を表示します。
アンロードするプロジェクトを選択し、マウスを右クリックします。
[プロジェクトのアンロード]を選択します。
ワークスペースを保存します。
次回、プロジェクトを[FileView]に表示すると、ファイル アイコンが淡い色で表示されます。プロジェクトを再ロードするには、そのアイコンを右クリックして[プロジェクトの読み込み]を選択します。
ただし、アンロードしたプロジェクトがサブプロジェクトであったり、依存情報を含んでいたりすると、そのアンロード下プロジェクトは、エクスポート ライブラリ ファイルや、ビルドに必要なその他のファイルを親プロジェクトに宣言しないことがあります。これを解決するには、アンロードしたサブプロジェクトの依存情報を[プロジェクト設定]ダイアログ ボックスで指定します(このとき、必要であれば環境変数を使います)。これは、[リンク]タブの[オブジェクト/ライブラリ モジュール]を使います。サブプロジェクトがローカル マシンにコピーしてあれば、この方法で指定することで、ライブラリ ファイルをリンクするために依存情報を含んでいるプロジェクトを読む込む必要がなくなります。
[プロジェクト設定]タブのページで追加したファイルのタイムスタンプは更新されません。ユーザーは、構成ごとに(リリースまたはデバッグ)[プロジェクト設定]タブのページにライブラリ ファイルを追加する必要があります。例えば、デバッグ用ライブラリ ファイルは、[プロジェクト設定]の[リンク]タブに指定されているビルドのデバッグ用ファイルにリンクする必要があります。
環境変数の設定
環境変数は、Visual Studioの環境を自分が使っているコンピュータ上のファイルの格納場所に向けるために使用するカスタムの変数名です。これは、自分のコンピュータ上のファイルやディレクトリの構成が、共有ワークスペースのビルドを行うコンピュータのものと異なる場合は特に便利です。環境変数名は全部大文字でなければならない点に注意してください。
環境変数の設定方法(Windows NT 4.0の場合):
Visual Studio環境で環境変数を設定します。
Windows NTのタスクバーで[スタート]→[設定]をクリックします。[コントロール パネル]を開き、[システム]をクリックします。[環境]タブをクリックします。
[変数]ボックスに環境変数名を入力します。[値]ボックスにファイルのローカルなコピーへのパス名を入力します。
Visual Studioを終了して、再び起動します。
環境変数の設定方法(Windows 95の場合):
Visual Studio環境で環境変数を設定します。
Windows 95のAutoexec.batファイルに次の形式の行を追加します。
SET VARIABLENAME=pathname;
例えば次のようにします。
SET LIB=C:\Libraries\Lib;
Autoexec.batファイルを保存します。
設定を有効にするためにコンピュータを再起動します。
設定を確認するために、コマンド プロンプトでSETと入力します。
ファイル名拡張子の説明
以下は、Visual Studioに関連するファイルの拡張子のリストです。
- projectname.dsw
プロジェクト ワークスペース ファイル。 - projectname.dsp
プロジェクト ファイル(単独のプロジェクトまたはサブプロジェクトのビルドに使用)。 - projectname.opt
ワークスペース オプション設定ファイル。 - projectname.clw
ClassWizard「データベース」ファイル(クラスの追跡に使用)。 - resource.h
開発環境によって生成されるヘッダ ファイル。このファイルにはシンボル定義が含まれています。 - mydata.rc
リソース スクリプト ファイル。 - projectname.mak
プロジェクトをビルドするための指示を含んでいるメイクファイル。通常、このファイルは開発環境からエクスポートされ、ビルドを行うためにNMAKEユーティリティを使います。 - filename.aps
現在のリソース スクリプト ファイルのバイナリ形式。このファイルは読み込みを高速化するために使用されます。 - filename.ncb
これは、ClassViewで使用されるバイナリ ファイルです。