Macの差分比較ツール|用途を決めてから道具を選ぶ

Macで差分比較ツールを探すとき、検索結果は先に「おすすめ3選」から始まります。ところが並んでいる道具は、テキストを比べるもの、画像を比べるもの、フォルダの構造を比べるものが混ざっていて、料金も無料から月額まで幅があります。比べたいものが決まっていないまま一覧を眺めても、選べません。順番を逆にして、何を比べたいのかを1つ決めてから候補を絞ると、多くの場合は最初からMacに入っている道具で足りることが分かります。足りない場合も、どこが不足しているのかを言葉にできていれば、有料の道具を選ぶ判断が速くなります。

「差分比較」で探されているものは3つに分かれている

同じ言葉で探されていても、目的は大きく3つに分かれます。

  • テキストの比較。設定ファイル、原稿、書き出したCSVの前後。行や単語の単位で違いを見たい。
  • 画像の比較。書き出し直したロゴやスクリーンショット。見た目が同じに見えるものの中から、変わった箇所を探したい。
  • フォルダの比較。納品したものと手元にあるもの。どのファイルが増えて、減って、中身が変わったのかを一覧で知りたい。

この3つは必要な仕組みが別です。テキストは行の対応付け、画像は画素の差、フォルダは名前と更新日時と中身の突き合わせで、同じ道具が全部を得意にしている必要はありません。上位の記事が「1本に集約」を勧める一方で、標準のコマンドだけで済ませている人も多いのは、この分岐のどこにいるかが人によって違うからです。

なぜ道具を使うのかについては、次の整理が要点を突いています。

テキスト比較ツールの最大の価値は、「人間が見落とす差分を機械的にハイライトする」ことです。スピードのためじゃなく、ミスを構造的に潰すための道具です。 出典: rkpg.net

速さではなく見落としを潰すため、という位置づけは、道具選びの基準にもなります。目で追って確認できる程度の違いなら、道具を増やす価値は小さいです。反対に、半角スペース1つや全角と半角の混在のように、目では等しく見える差を扱うなら、機械が印を付けてくれること自体が目的になります。

Macには最初から2つ入っている

有料の候補を見る前に、すでに手元にあるものを確かめておきます。

1つは diff です。説明書の1行目は「differential file and directory comparator」で、ファイルだけでなくディレクトリの比較も担当することが最初に書かれています。オプションの数は多く、無視の指定も出力形式の指定も揃っています。

もう1つが FileMerge です。ターミナルから opendiff と打つと起動し、説明書には「FileMergeアプリケーションをターミナルから起動して、ファイルまたはディレクトリをグラフィカルに比較する」と書かれています。2つのファイルでも2つのディレクトリでも渡せて、-ancestor で共通の元になったファイルを指定すると3方向の比較になります。2人が同じファイルの複製を別々に直したときに使う想定だと、説明書自身が書いています。-merge で保存先を指定すれば、統合した結果を書き出せます。すでに起動していれば、同じ画面に新しい比較が追加されます。

ただし FileMerge には前提があります。説明書の FILES 欄に「opendiff と FileMerge は Xcode 開発ツールの一部としてインストールされる」と書かれていて、Xcodeが無いMacには入っていません。Xcode自体はApp Storeで無料ですが、配布の容量が約3.1GBあり、現在の版は macOS 26.6 以降を求めます。画像の比較のために3.1GBを取得するのが妥当かどうかは、比較の頻度で決まります。

目で読むための指定を覚えると、標準のdiffで足りる場面が増える

diff が読みにくいと言われるのは、既定の出力形式が人向けではなく機械向けだからです。説明書にある指定を3つ加えるだけで、見え方が変わります。

-y(--side-by-side)は出力を2列にして、間に印を出します。印は、対応する行が同一なら空白、という形で説明書に定義されています。左右に並べば、どこが動いたのかを目で追えます。列の幅は -W で指定でき、既定は130桁です。ターミナルの幅に合わせて広げるか狭めるかで、折り返しの読みにくさが解消します。

--color は追加を緑、削除を赤で着色します。値は never、always、auto の3つで、auto は出力が端末で、かつ COLORTERM が設定されているときだけ着色する動きです。色そのものは DIFFCOLORS という環境変数で差し替えられます。auto にしておくと、ファイルへ書き出したときに制御文字が混ざりません。

-q(--brief)は違いがあるかどうかだけを1行で返し、変更の一覧を出しません。数十個のファイルを突き合わせて「どれが違うか」だけ知りたい段階では、これが一番速い読み方です。ディレクトリ同士なら -r で下の階層まで再帰的に比較し、-N は片方にしか無いファイルを、もう片方では0バイトのファイルがあるものとして扱います。

無視の指定も実務では効きます。-b は行末の空白と連続した空白の違いを無視し、-w は空白とタブを完全に無視します。説明書の例は if ( a == b ) と if(a==b) が等しいと判定されると書いています。-B は空行だけの差を無視し、-i は英字の大小を無視します。整形を通した前後を比べるときは、この4つのどれを使うかで結果が変わります。

比較の方式まで選べることは、あまり知られていません。-A(--algorithm)には myers、patience、stone の3つがあり、説明書はそれぞれの性質を書き分けています。myers は最短の編集手順を求める方式、patience は行を論理的にまとめて読みやすい出力を作る変種、stone は Hunt-McIlroy あるいは Hunt-Szymanski として知られる最長共通部分列を探す方式です。差分が妙な位置でずれて読みにくいときは、patience を試す価値があります。

Gitを使っているなら、比較の入口はgitの側にある

バージョン管理の下にあるファイルなら、専用の道具を導入する前に git の比較機能を使い切るほうが早いです。

まず、管理外のファイル2つも比較できます。git diff --no-index <path> <path> という形が説明書の書式に載っていて、説明には「ディスク上の2つのファイルの間の変更」を表示できると書かれています。Gitのリポジトリの外でも、この形なら使えます。

読み方を変える指定もあります。--word-diff は単語の単位で差を出し、既定の plain は削除を [-削除-]、追加を {追加} の形で表示します。color を指定すると色だけで示し、--color を含む動きになります。文章や翻訳の比較では、行単位より単語単位のほうが差の位置が分かります。--stat は変更の量を一覧にする指定で、幅は端末の幅、端末に繋がっていなければ80桁が既定です。どのファイルがどれだけ動いたかを先に見て、それから中身に入る順番が取れます。

GUIの道具と繋ぐ役目は git difftool が担います。説明書は「よく使われる差分比較ツールを使って、リビジョン間のファイルを比較・編集できる」と定義していて、git diff と同じオプションと引数を受け取ります。-d(--dir-diff)は変更されたファイルを一時的な場所へ複製してディレクトリ単位の比較を行う指定で、この形では起動前の確認が出ません。使う道具は -t <tool> で指定し、指定しなければ設定変数 diff.tool が使われます。選べる名前の一覧は git difftool --tool-help が返します。つまりGUIの道具を1つ選んで設定しておけば、以降は git difftool の1コマンドから呼び出せます。

行ではなく構造で比べる道具

コードを比べる場面では、行単位の比較そのものが合わないことがあります。整形ツールが1行を複数行に割っただけで、差分が全面真っ赤になる現象です。

difftastic は、この問題に正面から取り組んだCLIの道具です。公式の説明は「構文を理解する構造的な差分の道具」で、tree-sitter でコードを解析し、行単位ではなく構文で比較すると書かれています。整形ツールが折り返しただけの変更と、中身が変わった変更を区別できます。さらに、@@ -5,6 +5,7 @@ の読み方を知らなくても分かるように、実際の行番号を変更前と変更後の両方で表示します。対応する言語には C++、C#、Go、Java、JavaScript、Kotlin、PHP、Python、Ruby、Rust、TypeScript などが並びます。

delta は役目が別です。公式の説明は「git、diff、grep の出力のための構文強調付きページャ」で、比較そのものは行わず、出力の読みやすさを担当します。機能の一覧には左右に並べる表示、行番号、マージの衝突の表示、git blame への対応が挙がっています。標準の diff や git diff の出力をそのまま流し込む使い方になるため、既存の手順を変えずに読みやすさだけを改善できます。

この2つはどちらもターミナルで動くので、GUIを開かずに済みます。画像の比較はできません。用途が分かれていることを、そのまま受け入れる形の道具です。

料金と対応範囲を並べる

判断の材料として、ここまでの候補を横に並べます。料金は2026年9月時点で各公式サイトに掲載されている金額です。条件や金額は変わることがあります。

道具 料金 テキスト 画像 フォルダ 備考
diff 無料(標準搭載) 対応 非対応 対応(-r) 出力はターミナル。左右表示は -y
FileMerge 無料(Xcodeに同梱) 対応 対応 対応 Xcodeの取得が必要。約3.1GB、macOS 26.6以降
VS Code 無料 対応 非対応 非対応 code --diff <file1> <file2>
difftastic / delta 無料(オープンソース) 対応 非対応 対応 構文で比較する/出力を読みやすくする
Kaleidoscope 月額8米ドル(1利用者・3台) 対応 対応 対応 7日間の試用。macOS 15.x 以降
Beyond Compare 35米ドル/70米ドル(買い切り) 対応 上位版で対応 対応 Windows・macOS・Linux。上位版への更新は原則半額

VS Codeの比較は、コマンドラインの説明書に -d または --diff <file1> <file2> として載っていて、説明は「ファイルの差分エディタを開く。2つのファイルパスを引数として必要とする」です。すでにVS Codeを使っているなら、追加の取得は要りません。

Kaleidoscope は公式の価格ページで、月額プランが8米ドルで1利用者・3台、チーム向けが年払いで1人あたり月額10米ドルと示されています。試用は全機能が使える7日間で、動作条件は macOS Sequoia(15.x)以降です。価格は米ドルで、税は含まれないと明記されています。

Beyond Compare は公式の購入ページで、1人用の Standard が35米ドル、Pro が70米ドルです。買い切りで年ごとの更新費用はなく、メジャーバージョンの更新は原則として半額、マイナーな更新は常に無料と書かれています。対応は Windows、macOS、Linux です。

選び方は、比べる対象を1つに絞ってから決まる

表を見て迷うのは、全部に対応しているものが良いと考えるからです。実際の判断は、いま困っている対象1つで決まります。

テキストだけなら、追加の取得は要りません。標準の diff に -y -W と --color=auto を組み合わせれば、左右に並べて色付きで読めます。整形の差で埋まるなら -w を加え、それでも読みにくければ -A patience を試します。Gitの下にあるなら git diff --word-diff のほうが早い場面もあります。ここまで試して不足が言葉にできないうちは、有料の道具を導入しても使い所が定まりません。

コードの構造まで見たいなら difftastic、出力の読みやすさだけを直したいなら delta です。どちらも無料で、ターミナルの中で完結します。デメリットは、画像とGUIでの操作が対象外であること、そして導入と設定を自分で行う手間がかかることです。

画像が絡むなら、無料の選択は FileMerge になります。メリットは追加費用がないこと、デメリットは3.1GBのXcodeを取得する必要があり、現在の版は macOS 26.6 以降を求めることです。この前提が合わないなら、画素単位の比較を持つ有料のGUIが候補に入ります。

料金の形でも分かれます。使う期間が読めない、あるいは短期で使い切るなら月額のほうが総額が小さく、長く使うなら買い切りのほうが小さくなります。台数の扱いも違い、月額側は1つの契約で3台、買い切り側は1人用の単位で数えます。どちらが得かは使い方次第で、機能の優劣とは別の軸です。

比べる前後で窓をまたぐという問題

道具を決めても、作業の形は変わりません。一覧で2つのファイルを見つけ、パスを写し取り、ターミナルに切り替えてコマンドを打ち、出力を読み、また一覧へ戻って次の組を探す。フォルダ同士の比較なら、差分の一覧を見ながら該当のファイルを開き直す往復が続きます。

工程を数えると、比較そのものより往復のほうが回数が多くなります。日本語や空白を含むファイル名なら、写し取るだけで手が止まります。差分の意味をAIに聞く場合は、窓がもう1つ増えます。ここで効くのは、より短いコマンドを覚えることではなく、フォルダとターミナルとAIが同じ窓にある状態にして、一覧で選んだ2つのパスをそのままコマンドに渡し、出力を同じ画面で読めるようにすることです。

一覧の表示、プレビュー、Gitの変更状態、コマンドパレットまでを1つの画面で担う形が何をどこまで引き受けるのかはできることに一覧があります。ノート用のアプリやコード用のエディタと役目がどう分かれるのかは、勝てない領域まで含めて他のファイル管理との比較に表で整理されています。Macに残したまま出先から結果を確かめる使い方はiPhone・iPadから続きをが該当し、Mac単体で使う範囲の費用の考え方は料金、導入前に迷いやすい点はよくある質問にまとめられています。

差分を出す仕組み自体は、diff の説明書に並ぶ3つの方式が示すとおり、何十年も前に出来上がっています。この10年で変わったのは、比較の対象がテキストからフォルダと画像へ広がったことと、結果を確かめるために開く窓の数です。前者は道具を1つ選べば片付きます。後者だけが、いまも作業時間を押し上げたまま残っています。

よくある質問

Macで2つのファイルの違いを見るのに、無料で済みますか?

済みます。diff はmacOSに最初から入っていて、-y で左右に並べ、--color=auto で色を付けられます。VS Codeを使っているなら code --diff <file1> <file2> でも開けます。画像の比較まで必要になったときだけ、追加の道具を検討することになります。

FileMergeを使うには何が必要ですか?

Xcodeが必要です。説明書には opendiff と FileMerge が Xcode 開発ツールの一部としてインストールされると書かれています。XcodeはApp Storeで無料ですが、配布の容量は約3.1GBあり、現在の版は macOS 26.6 以降を求めます。この前提が合わない場合は別の道具を選びます。

月額と買い切りは、どちらを選べばよいですか?

使う期間で決まります。Kaleidoscope は月額8米ドルで1利用者・3台、Beyond Compare は1人用が35米ドルまたは70米ドルの買い切りです。短期で使い切るなら月額、長く使うなら買い切りのほうが総額は小さくなります。どちらも2026年9月時点の公式サイトの記載で、税や条件は別途確認が必要です。

整形ツールを通したら差分が全面真っ赤になりました。読む方法はありますか?

3つ手があります。diff -w で空白とタブの違いを完全に無視する、diff -A patience で行をまとめる方式に変えて読みやすい出力を得る、そして difftastic のように構文で比較する道具を使う、の順で試すと切り分けられます。最後の1つは、折り返しただけの変更と中身の変更を区別できます。

記事一覧へ戻る