はじめに

契約書、社内ポリシー、技術仕様書、マーケティングコピーなど、何を扱っていてもパターンは同じです。すぐに複数の .docx バージョンがたまり、ある時点でそれらの間で何が正確に変わったかを確認する必要があります。Word の組み込み Compare ダイアログはたまに手動でチェックする分には問題ありませんが、比較が定期的なプロセスの一部となったり、サーバー側で自動化する必要がある場合はあまり役立ちません。

GroupDocs.Comparison for .NET はコードから比較を実行し、レビュー担当者が好む形式で結果を生成できます。ライブラリは Word ドキュメント用に 2 つの出力モードをサポートします:

  1. Revision mode — 差分は Word の改訂(変更履歴)マークアップとして記述されます。レビュー担当者はファイルを開き、慣れ親しんだ Review → Accept / Reject コントロールで変更を 1 つずつ確認できます。
  2. Highlight mode — 挿入、削除、変更されたテキストが文書本文内に色ハイライトとして描画され、最終テキストを読んでいる間に一目で差分が確認できます。

この記事では、両方のアプローチを実用的な C# サンプルと共に解説し、WordCompareOptions クラスとそのプロパティを検証し、どのモードをいつ使用すべきかを議論します。

前提条件

開始する前に:

  • .NET 6.0 以上。
  • GroupDocs.Comparison for .NET — NuGet でインストール:
dotnet add package GroupDocs.Comparison
  • ライセンス ファイル (GroupDocs.Comparison.lic)。これがない場合、ライブラリは透かしとサイズ制限がある評価モードで動作します。テスト用に 一時ライセンス をリクエストできます。
  • 比較対象の Word ファイルを 2 つ用意します — ここでは source.docxtarget.docx と呼びます。例の内容は次の通りです:
source.docx target.docx

方法 1: 改訂(トラック)比較

使用シーン: Microsoft Word の組み込み Review → Accept / Reject ツールを使って、各変更を個別に承認または却下する必要がある場合—たとえば契約交渉やポリシー承認サイクル時。

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_revision.docx", options);
}

改訂(変更履歴)モードで生成された文書:

改訂(変更履歴)モードでの比較結果

内部で何が起きているか:

  • ComparisonDisplayMode.Revisions はエンジンにネイティブな Word 変更履歴マークアップを出力させます。
  • DetectStyleChanges = true により、書式(太字、フォントサイズ、色)などの変化もテキスト編集と同様に検出します。
  • 出力ファイルは Microsoft Word で Review ペインが開いた状態で表示され、すべての挿入、削除、書式変更が一覧化され、承認または却下が可能です。

改訂モードは文書コンテンツを再描画する必要がなく、単に改訂メタデータを付与するだけなので、2 つのモードのうち速い傾向にあります。


方法 2: ハイライトモード比較

使用シーン: ステークホルダーが変更点を明示的に示すクリーンな文書を求め、すべての改訂を個別に処理したくない場合。典型的な例は、管理者が最新バージョンを Word で開き、ハイライトされた挿入・削除をすばやくスキャンして更新の影響を把握したいときです。

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Highlight
    };

    comparer.Compare("result_highlighted.docx", options);
}

ハイライトモードで生成された文書:

ハイライトモードでの比較結果

内部で何が起きているか:

  • ComparisonDisplayMode.Highlight は差分をインラインの色ハイライトとして描画します — 削除は赤、挿入は緑、書式変更は青(WordCompareOptions / CompareOptions と関連 StyleSettings で調整可能な既定色)。
  • 文書は余計な手順なしで読み取りや印刷が可能です。
  • ファイルに変更履歴メタデータは追加されません。

ハイライトモードは実際の文書コンテンツを変更し書式を適用する必要があるため、内部的に多くの処理を行います。大きなファイルでは改訂モードに比べてパフォーマンス差が顕著になることがあります。


WordCompareOptions の探索

上記の両例は WordCompareOptions を使用しています。このクラスは共通設定を CompareOptions から継承し、Word 文書固有のプロパティを追加します。ここで表示モード (DisplayMode)、書式変更の追跡 (DetectStyleChanges)、改訂に表示される作者名 (RevisionAuthorName)、改行やブックマークの比較方法などを制御できます。

さらに、基底の CompareOptions は挿入、削除、変更項目のスタイル (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle) を公開しているため、必要に応じてハイライトの色や書式を細かく調整できます。

以下は、改訂モードでテキストのみをチェックするためのオプション設定例です:

var options = new WordCompareOptions
{
    DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
    DetectStyleChanges = false,
    RevisionAuthorName = "QA Bot",
    CompareBookmarks = true
};

変更をプログラムから取得する

出力モード(改訂またはハイライト)に関わらず、共通の Comparer.GetChanges API で検出された差分の構造化リストを取得できます。このメソッドは Word だけでなく、サポートされているすべてのフォーマットで使用可能です。

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    comparer.Compare("result_revision.docx");

    var changes = comparer.GetChanges(); // returns ChangeInfo[]
}

この機能は、独自のワークフローで変更を後処理したい場合に便利です。たとえばカスタム HTML レポートの作成、レビューシステムへの差分投入、編集統計の集計などに利用できます。詳細は公式 API リファレンスをご覧ください: Comparer.GetChanges


パスワード保護されたドキュメントの取り扱い

ドキュメントがパスワードで保護されている場合でも比較できます。パスワードは Comparer 作成時に LoadOptions を介して渡します。この方法は Word、PDF、その他サポートフォーマットでも同様です。

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source_protected.docx",
    new LoadOptions { Password = "secret" }))
{
    comparer.Add("target_protected.docx");

    var options = new WordCompareOptions
    {
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_protected.docx", options);
}

無料トライアルを取得する

GroupDocs.Comparison for .NET は 公式リリースページ からダウンロードできます。制限なしでテストしたい場合は、一時ライセンス をリクエストしてください — クレジットカードは不要です。


よくある質問

Q: サーバーに Microsoft Word または Office をインストールする必要がありますか?
A: いいえ。GroupDocs.Comparison は単体の .NET ライブラリで、DOCX ファイルの読み書きを自前で行います。

Q: Word 以外のフォーマットでも比較できますか?
A: はい。ライブラリは PDF、Excel、プレゼンテーション、プレーンテキストなど多数の形式をサポートしています。完全な一覧は ドキュメント にあります。

Q: ライセンスを設定しなかった場合はどうなりますか?
A: 評価モードで動作し、出力ドキュメントに透かしが入り、最初の数ページしか処理されません。テスト用に 一時ライセンス を取得するとこれらの制限が解除されます。

Q: ハイライトの色はカスタマイズできますか?
A: デフォルトの色は多くのケースで問題ありませんが、詳細なスタイリング制御が必要な場合は CompareOptionsStyleSettings プロパティで設定できます。


結論

GroupDocs.Comparison for .NET はコードから Word 文書を差分比較するための 2 つのクリーンな方法を提供します。改訂モードはチームが既に使っているレビュー・ワークフローにそのまま組み込み可能です。一方、ハイライトモードは変更点をすばやく視覚的に把握したいユーザー向けの即時サマリーを提供します。WordCompareOptions クラスを活用すれば、書式検出や作者情報、ブックマーク・文書プロパティの比較まで細かく設定できます。

シナリオに合ったモードを選択するか、両方生成してそれぞれのオーディエンスに好みのビューを選んでもらいましょう。

追加リソース