IBM Rational ClearCaseとは
IBM Rational ClearCaseは、ソフトウェア開発における
ソースコードやその他の開発資産を管理するための
バージョン管理システム(VCS)です。
構成管理(SCM)ツールとしても機能し、
IBMのラショナル部門によって開発されました。ClearCaseは、数百人から数千人規模の開発者が関わるような、中規模から大規模な商用ソフトウェアプロジェクトで広く利用されています。
ClearCaseには、SCM機能に加えて、UCM(Unified Change Management)という別のSCM機能も搭載されています。
Linux、
Solaris、Windowsといった様々なプラットフォームに対応しており、巨大なバイナリファイルや多数のファイル、大規模なリポジトリを効率的に扱うことができます。分岐、ラベル付け、ディレクトリのバージョン管理といった高度な機能も備えています。
ClearCaseの歴史
ClearCaseは、
1992年にAtria Softwareによって
UNIX向けに開発されました。その後、Windows版もリリースされています。Atriaの開発者の一部は、以前にアポロコンピュータのDSEE(Domain Software Engineering Environment)の開発に携わっていました。1989年にアポロコンピュータが
ヒューレット・パッカードに買収された際、彼らはアポロを離れてAtriaに移籍しました。その後、AtriaはPure Softwareと合併してPureAtriaとなり、さらにラショナルに吸収され、最終的に
IBMに買収されました。
IBMは現在もClearCaseの開発と販売を続けています。ソフトウェア開発企業にとって、ClearCaseは非常に有名な製品です。
DSEEの影響
ClearCaseには、DSEEで導入された多くの概念が取り入れられています。DSEEは、ファイルアクセス時に特定のハンドラプログラムを呼び出すことで、ファイルのバージョン管理を実現していました。この仕組みにより、ユーザーがファイルを開くと、自動的にバージョン管理されたコピーと入れ替えられていました。DSEEの中心となるのは、ソフトウェアモジュールとその依存関係を記述したファイルです。このファイルを手動で作成する必要がありましたが、一旦作成できれば、DSEEは最適なビルド方法を計算し、以前に処理されたモジュールを再利用できました。
DSEEは、"version spec"または"thread"という概念も導入しました。これは、特定のユーザー環境やビルドにおいて許可されるバージョンのリストです。threadには、ビルドやソフトウェアリリースの署名も含まれていました。これにより、開発者は以下の要素をthreadで管理できました。
編集のために確保されたコピー(チェックアウト)
最新バージョン(開発者向け)
特定のブランチバージョン(開発の別のライン)
ラベル付きバージョン(特定のリビジョン)
特定のビルドでのバージョン
特定のソフトウェアリリースでのバージョン
threadはファイルごとに上から下へと処理され、開発者のthreadは、最初に確保されたバージョン、次にラベル付きバージョンなど、さまざまなバージョンで構成されます。DSEEの
ファイルシステム機能は通常備わっていないため、ClearCaseは後述するMVFS(MultiVersion File System)という仮想
ファイルシステムを利用します。"thread"の概念は、ClearCaseのダイナミックビューに対応しています。
ClearCaseのビュー
ClearCaseでバージョン管理されたオブジェクトは、リポジトリであるVOB(Versioned Object Base)に履歴とともに保存されます。ClearCaseの大きな特徴は、MVFSによる仮想
ファイルシステムです。これにより、ダイナミックビューを通じてVOBを仮想
ファイルシステムとしてマウントし、一貫性のあるバージョン群を選択して派生オブジェクトを生成できます。ダイナミックビューは、ソフトウェア構成にマッピングされ、リポジトリ/サンドボックスモデルとは異なり、製造物を初期段階から管理できます。
ClearCaseは、スナップショットビューもサポートしています。これは、1つまたは複数のVOBにまたがったディレクトリツリーのコピーであり、ローカルに保存されます。スナップショットビューは、ネットワークが切断された状態でも利用でき、後でVOBと同期できます。この動作モードは、CVSに似ています。
クライアントコンピュータ上のソフトウェアの観点から見ると、ビューは別の
ファイルシステムのように見えます。ビュー内で新しいファイルを通常のOSの手段で作成した場合、ClearCaseはそれらのファイルを「ビュープライベート」ファイルとして生成します。これらのファイルは他のビューからは見えません。これにより、開発者個人の修正は他の開発者の環境に影響を与えません。ビュープライベートファイルは、いつでもバージョン管理された要素に変換できます。
開発者は通常、複数のビューを使って作業します。ビューを共有することもできますが、一般的にはブランチを共有することが一般的です。ブランチの階層は、開発プロジェクト全体で1つの開発ブランチを共有し、小規模なチームがサブブランチを共有し、個々の開発者が個人ブランチを持つという形でよく利用されます。
Configuration specification
ClearCaseでは、各ビューは対応するコンフィギュレーション仕様(config spec)によって制御されます。config specは、ビューで表示されるべき要素(ファイルやディレクトリ)と、それらの要素のバージョンを指定するテキストファイルです。ClearCaseは、要素のどのバージョンを表示すべきかを判断する際、config specを上から順に調べて、一致するルールが見つかるまで評価します。
以下は、config specの例です。
チェックアウトされたすべての要素を表示
element
CHECKEDOUT
'module2_dev_branch'上にバージョンがある場合、そのブランチの最新バージョンを表示
element .../module2_dev_branch/LATEST
'somefile'という名前のファイルは、メインブランチの最新バージョンを表示
element .../somefile /main/LATEST
特定のファイルの特定のバージョンを使用
element /vobs/project1/module1/a_header.h /main/proj_dev_branch/my_dev_branch1/14
'project1/module1'配下で'PROJ1_MOD2_LABEL_1'というラベルが付いた要素を表示
element /vobs/project1/module1/... PROJ1_MOD2_LABEL_1 -nocheckout
'project1/module2'配下で'ANOTHER_LABEL'というバージョンのすべての要素を表示
element /vobs/project1/module2/... ANOTHER_LABEL -mkbranch module2_dev_branch
config specでは、'include'文を使用して別のconfig specを参照することもできます。
ClearCaseの独自機能
VOB (Versioned Object Base): ファイル要素、ディレクトリ要素、派生オブジェクト、およびそれらに関連するメタデータをバージョンごとに格納するリポジトリです。MultiSiteを使用すると、VOBを異なるサイト間で複製できます。
Configuration Record: ダイナミックビューでビルドを行う際に、ClearCaseはビルド中に読み込んだすべてのファイルのバージョンを記録します。この情報は、ビルドで使用されたファイルを表示するための新しいビューを作成したり、特定のビルドで使用されたすべてのファイルにラベルを付けたりするために使用できます。
ビルド回避: MVFSを使用すると、同じ構成レコードを持つダイナミックビュー間で、ビルドによって生成された派生オブジェクトを共有できます。
Unix/Windows相互運用性:
UNIXサーバー上のVOBは、Windowsクライアントのビューからアクセスできます。一方、Windowsサーバー上のVOBは、
UNIXクライアントからはスナップショットビューとしてのみアクセスできます。
他の製品との連携: Rational ClearQuest、Rational RoseなどのIBM製品や、TextPad、Microsoft Visual Studio、Code::Blocks、EclipseなどのIDEとプラグインを介して連携できます。
ClearCaseの欠点
トランザクションがアトミックではない。
コードベースが古く、新機能の追加が遅い。
非常に複雑で、構成設定に注意が必要。
動作が遅く、単純なコミットやチェックアウトにも時間がかかることがある。
関連項目
バージョン管理システム
ソフトウェア構成管理
外部リンク
IBM Rational ClearCase 日本語公式ページ
IBM developerWorks' Rational ClearCase V7.0 site - フリーな試用版
Eclipse ClearCase Integration, Open Source
ClearCase Web Client, Commercial
Rational ClearCase Commands Reference
*
SRA Rationalホームページ