共同作業を効率良く行うために
C++Builderで作成するコピーツール

 最近のWindows上の開発ではすっかり定着したRADツールですが,ちょっとした欠点もあります.それは一つのEXE(プロジェクト)を複数人で開発する場合に発生します.
 VB,DelphiなどのRADツールは,プロジェクトという単位でソースファイルやリソースを管理し,開発/デバッグ時はプロジェクト内のファイルを占有することになります.そのため,2人以上が同時に同じプロジェクトを読み込み,開発/デバッグすることができません(サーバー上の共有ディスクにプロジェクトを置いた場合など).この現象は,RADツールに限らず,Visual C++などのプロジェクトという概念でプログラムを開発するツールすべてについて言えることです.
 そこで今回はC++Builderにて,この問題を多少なりとも解決するためのツールを作成します.3層構造の開発において,Visual C++はデータベース層やアプリケーション層で,速度を要求されるコンポーネントなどの開発といったクリティカルな部分に適していますが,ユーザーインターフェース層ではDelphi,C++BuilderなどのRADツールが俄然力を発揮します.

小薗 光典   ソースのダウンロードはここから(237KB)

 

RADツールにおける開発の形態

 共有ディスクに置いたプロジェクトを,2人以上で同時に開発/デバッグを行う場合のことについて考えてみましょう.
 1人目がテスト実行した時点で,実行形式であるEXEファイルが占有されます.このとき2人目がソースの修正を終え実行しようとすると,コンパイル/リンクが走りEXEファイルを出力しようとします.ところが,このEXEファイルは,1人目が現在テスト実行中で占有しているため,リンカーはEXEファイルを作成できない旨のエラーメセージを出力して終了します.
 お互いに分担というものがあるため,同一ファイルを同時に編集することはないと思いますが,このような開発形態はとても危険です.
 常識的な形態として,サーバー上の共有ディレクトリにマスタープロジェクトを置き,それぞれがこのコピーをローカルディスク上に置きます.各人はそれぞれ自分の分担をローカルディスク上で開発/テストを行い,一定のレベルに達したと判断して時点でサーバーのマスターにアップし,ほかのメンバーが上げた最新のファイルをローカルにダウンするという繰り返しになるはずです.プロジェクトにファイルを追加する場合や,総合的なテストはマスターディレクトリ上で行う必要があります.
 そこで,サーバー上のマスターディレクトリ内のファイルと,ローカルディレクトリ内のファイルにおいて,それぞれ古いものを新しいものにコピーするツールがあれば便利です.
 ずいぶんともったいぶった前置きでしたが,結局二つのディレクトリ間で同名のファイルに対して新旧判定,内容比較,コピーを行うツールということになります.
 
コピーツールの機能

 必要な機能としては,古い/新しい/同じが一目瞭然で,それらのファイルが指定によりコピーできることです.このとき,どのように違うかFC(ファイルコンペア)ユーティリティの結果により確認後にコピーしたいのが人情というものです.さらに可能であれば,コピーの前に「ごみ箱」に移動してからコピーするようにします(フロッピやネットワークドライブのファイルはごみ箱に移動できない).
 今回作成するコピーツールの画面を,図1に示します.Explorerを上下に2つ並べたような画面で,上下のツリービューにてそれぞれのディレクトリを指定します.右側のリストビューには,そのディレクトリ配下のファイルが表示されます.ファイル名の前に表示されるアイコンの意味は,バージョン情報ダイアログで説明されています.バージョン情報ダイアログを図2に示します.

  

以下略


copyright 1999 小薗 光典