
コンピューティングにおいて、ファイル比較とは、通常はソース コードなどのテキスト ファイルなどのデータ オブジェクト間の相違点と類似点を計算して表示することです。
これらのメソッド、実装、および結果は、通常、Unixユーティリティにちなんでdiff [ 1 ]と呼ばれます。出力はグラフィカルユーザーインターフェースで表示されるほか、ネットワーク、ファイルシステム、リビジョン管理などの大規模なタスクの一部として使用されることもあります。 diff
広く使用されているファイル比較プログラムとしては、diff、cmp、FileMerge、WinMerge、Beyond Compare、File Compareなどがあります。
多くのテキスト エディターやワード プロセッサは、ファイルまたはドキュメントの変更点を強調表示するためにファイルの比較を実行します。
メソッドの種類
ほとんどのファイル比較ツールは、 2つのファイル間の最長共通部分列を検出します。最長共通部分列に含まれないデータは、変更、挿入、または削除として表示されます。
1978年、ポール・ヘッケルは、最も移動の多いテキストブロックを識別するアルゴリズムを発表しました。[ 2 ]これはIBM History Flowツールで使用されています。[ 3 ]他のファイル比較プログラムはブロックの移動を検出します。
いくつかの特殊なファイル比較ツールは、 2つのファイル間の最長の増加部分列を見つけます。[ 4 ] rsyncプロトコルは、ローリングハッシュ関数を使用して、通信オーバーヘッドを低く抑えながら、離れた2台のコンピュータ上の2つのファイルを比較します。
ワードプロセッサにおけるファイル比較は通常、ワードレベルで行われますが、ほとんどのプログラミングツールにおける比較は行レベルで行われます。バイトレベルまたは文字レベルの比較は、一部の特殊なアプリケーションで役立ちます。
画面
ファイル比較の表示方法は様々ですが、主な方法は2つのファイルを並べて表示するか、1つのファイルのみを表示し、一方のファイルからもう一方のファイルへの変更点をマークアップで示す方法です。どちらの場合も、特に並べて表示する場合は、コード折りたたみやテキスト折りたたみを使用して、ファイルの変更されていない部分を非表示にし、変更された部分のみを表示することができます。
推論
比較ツールは様々な理由で使用されます。バイナリファイルを比較したい場合は、バイトレベルが最適でしょう。しかし、テキストファイルやコンピュータプログラムを比較したい場合は、通常、横並びの視覚的な比較が最適です。[ 5 ]これにより、ユーザーはどちらのファイルを保持するか、すべての差異を含む1つのファイルを作成するためにファイルを結合するか、[ 6 ]あるいは、何らかの「バージョン管理」機能を使用して、両方のファイルをそのまま保存して後で参照できるようにするかを選択できます。
ファイル比較は、ファイル同期とバックアップにおいて重要かつ不可欠な要素です。バックアップ手法において、データ破損の問題は重要な問題です。破損は予告なく、またユーザーが気付かないうちに発生し、少なくとも通常は、失われた部分を回復するには手遅れになるまで発生します。通常、ファイルが破損しているかどうかを確実に知る唯一の方法は、次にそのファイルを使用するか開いたときです。それができない場合は、比較ツールを使用して、少なくとも差異が発生したことを認識する必要があります。したがって、ファイル同期またはバックアッププログラムが実際に有用で信頼できるものであるためには、ファイル比較機能が組み込まれている必要があります。[ 7 ]
歴史的な用途
ファイル比較が登場する以前には、磁気テープやパンチカードを比較する機械が存在していました。IBM 519カード再生装置は、パンチカードの組が同一かどうかを判定することができました。1957年、ジョン・ヴァン・ガードナーは、IBM 704上でコンパイル時の問題をデバッグするために、ロードされたFortranプログラムのセクションのチェックサムを比較するシステムを開発しました。[ 8 ]
参照
- ファイル比較ツールの比較
- コンピュータ支援レビュー - テキスト比較ソフトウェア
- データ差分 – 時間の経過に伴う変化を圧縮する方法
- デルタ符号化 – データ伝送方式の種類
- 文書比較 – コンピュータ文書処理
- 編集距離 – 文字列の類似性を表すコンピュータサイエンスの指標
参考文献
- ^ "diff"、The Jargon File。
- ^ Heckel, Paul (1978)、「ファイル間の差異を分離するための手法」(PDF)、Communications of the ACM、21(4):264– 268、doi:10.1145/359460.359467、S2CID 207683976 、 2011年12月4日取得
- ^ Viégas, Fernanda B.; Wattenberg, Martin; Kushal, Kushal Dave (2004), Studying Cooperation and Conflict between Authors with history flow Visualizations (PDF) , vol. 6, Vienna: CHI, pp. 575– 582 , 2011年12月1日閲覧
- ^ Liwei Ren、Jinsheng Gu、Luosheng Peng (2006年4月18日). 「ソフトウェアバイナリファイルのブロックレベルコードアライメントアルゴリズム」 . Google Patents . USPTO . 2019年5月10日閲覧。
- ^マッケンジー、デイビッド、エガート、リチャード・ストールマン (2003). Gnu DiffとPatchによるファイルの比較とマージ. ネットワーク理論. ISBN 978-0-9541617-5-0。
- ^ 「ファイル比較ソフトウェア:vc-dwimとvc-chlog」 . www.gnu.org . 2023年4月16日閲覧。
- ^ 「SystemRescue - System Rescueホームページ」www.system-rescue.org . 2023年4月16日閲覧。
- ^ John Van Gardner. 「FortranとInterceptプロジェクトの起源」(PDF) . 2011年12月6日閲覧。