課題
チーム開発においては、ローカルコードと、中央のソースコード管理システムにチェックインされたコードの比較が必須となる。あるファイルの2つのバージョン、または複数のファイルの差分を調べたり、フォルダー内の数百ものデータファイルを分析し、前回のバックアップ以降の変更の有無や、変更の内容を確認するといった場合だ。
ファイル比較プログラム自体は、コンピュータ技術の黎明期から存在している。UNIXツール「diff」は最もよく知られた例の一つであり、「WinDiff」は、今でもWindowsプラットフォームで使われることがある。しかし、これらのクラシックユーティリティは、ZIPアーカイブや完全なフォルダー構造、リモートのFTPサーバ上のファイル比較や差分取得、同期といった高度な機能となると、たちまち限界が露呈する。
結果
そこでScooter Softwareの「Beyond Compare」の出番だ。「Beyond Compare」は、こうした高度な要件を満たすために開発され、モダンな比較・同期タスクのための強力かつ柔軟なソリューションを提供するに至ったのだ。
会社概要
Scooter Softwareは、米国ウィスコンシン州マディソンに拠点を置く、従業員所有の独立系ソフトウェア企業で、Windows、macOS、Linuxに対応したファイル/フォルダー比較プログラム「Beyond Compare」を開発・販売している。
Beyond Compareは、個人開発者から多数のユーザーを抱える大企業まで、100万人以上のユーザーに利用されている。
Scooter Softwareは、利便性の高い、しかし手頃な価格のツールの提供に努めている。
製品の歩み
Beyond Compareの最初のダウンロード版は1996年にリリースされた。当初はWindows専用のツールとして、ファイルやフォルダーの比較という基本機能に限定されていた。その後、FTPサポート、3方向マージ、フォルダーの同期、各種ファイル形式への対応など、次々と機能が追加されていった。もう一つの大きな展開はマルチプラットフォーム対応だ。macOSやLinuxにも対応し、より幅広いユーザー層を獲得している。
Running StrongBeyond Compareの現行バージョンは幅広い機能を提供しており、開発者や管理者をはじめ、ファイル/フォルダー比較を必要とするあらゆるユーザーに愛用されている。
Beyond Compareは差分を可視化する - しかも見事な方法で!
DelphiユーザーのRedditへの投稿
アプリケーションと開発
Beyond Compareの真価は、その比較ルールにあり、ユーザーは、比較ロジックが2つのファイルの差異の有無を判定する方法を指定できる。Beyond Compareは、各種プログラミング言語のコード比較を行うために設計された組み込みルール群を提供する。事前定義されたルールが用意され、Delphi、C++/C#、XML、Visual Basic®、HTML、カンマ区切りファイル等を容易に比較できる。組み込みルールが不十分な場合には、ユーザーは独自の比較条件を作成できる。
Beyond CompareとDelphi / C++Builder
Scooter Softwareは、Beyond Compareの初期リリースの開発に、Delphiの採用を決定した。そして、1996年にVCLベースのDelphiファーストバージョンでプロジェクトに着手。この緊密な技術的連携の下で、Delphi IDEとの統合は、外部の開発者の手で構築された。Scooter Softwareはこのソリューションを買収し、2010年以降、Beyond CompareをDelphi/C++Builderと直接統合した形態でも提供している。通常版から機能を限定したLite版は、RAD Studio/Delphi/C++Builder IDEから直接、実行できる。さらにこのツールは、コマンドライン経由やビルドプロセス内でも使用可能だ。Scooter Software では、Delphiの新バージョンがリリースされるたびに、製品を常にアップデートしている。
結論
Beyond Compareは単なる比較ツールではない。それは、Delphi/C++Builder開発者向けに特化したツールでもある。Beyond Compareは、Delphiを用いてネイティブ開発されており、そのプログラミング環境に最適化されている。最高精度を実現するバイト単位比較、直感的なフォルダー同期インターフェイス、3方向マージの提供、IDEとの統合を強みとして、一般的な比較プログラムを凌駕している。
Beyond Compareの詳細については、scootersoftware.com をご覧ください。
Delphi
