53 個の開発ツールを、常に最新に — 上流の新しいリリースは数時間以内に apt に届きます。 Discord に参加

📅 より、apt ミラーの利用にはサブスクリプションが必要になります。 料金を見る · 🆓 ずっと無料のミラーがあります

🔀 最新の difftastic を Ubuntu にインストール

行単位ではなく構文で比較する、構造的な差分ツール

最新バージョン: 0.70.0 · 更新日 2026-08-18
提供元バージョン
deb.griffo.io0.70.0 ✅
公式 Ubuntu🚫 パッケージなし
← ホームに戻る
📌 特定のリリースに入れますか? Ubuntu 22.04 (jammy) · Ubuntu 24.04 (noble) · Ubuntu 25.10 (questing) · Ubuntu 26.04 (resolute)

difftastic とは

difftastic(コマンドは difft)は構造的な差分ツールです。行を比べる代わりに、両方のファイルを tree-sitter でパースして構文木を作り、実際に変わった構文はどこかを報告します。ブロックのインデントし直し、引数リストの折り返し、閉じ括弧の移動は差分でなくなり、整形の中に埋もれた変数のリネームこそが浮かび上がります。

🚀 最新版であることの意味: difftastic は tree-sitter の文法を通じてコードを理解し、その文法は各リリースに同梱されています。1 年前のビルドは 1 年前の言語しかパースできません。新しい構文はパースエラーになり、エラーが多すぎるファイルは黙って行単位の差分に切り替わります。まさに difftastic を入れて避けたかった挙動です。リリースごとに、大きなファイル向けのアルゴリズムとメモリの改善も入っています。

⚡ difftastic の主な機能

🌳 構文を理解する差分

両側を構文木としてパースし、構造として比較します。整形だけの差分は消え、本当の変更が浮かび上がります。

🧩 30 を超える言語

Rust、Python、TypeScript、Go、C、C++、Java、Ruby、YAML、JSON、HTML、CSS、Markdown など多数。difft --list-languages で拡張子込みの一覧が出ます。

🪟 左右並列でもインラインでも

--display で、左右並列、両側表示、インライン、機械可読な JSON から選べます。

🔗 Git をそのまま置き換え

git の外部 diff コマンドとして動きます。Mercurial、Jujutsu、Fossil でも同じように使えます。

🚦 正直なフォールバック

未知の拡張子、巨大なファイル、パースエラーが多すぎる場合は、失敗する代わりに単語単位のハイライト付き行差分に切り替わります。

🗂️ ディレクトリとコンフリクト

2 つのディレクトリをコマンド 1 つで比較できます。マージコンフリクトのマーカーが入ったファイルを渡せば、コンフリクトを差分として読むこともできます。

🚀 公式アーカイブより、いつも先へ: Debian と Ubuntu は、リリース時点でパッケージのバージョンを固定します。このリポジトリは上流の新しいリリースを、たいてい数時間以内に公開します。apt upgrade を実行するだけで、常に最新版を使い続けられます。

📦 deb.griffo.io からインストールする

コマンドの実行方法

ステップ 1: リポジトリを追加する

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update

🆓 ずっと無料のミラーがあります。 deb-free.griffo.io は、アカウントもサブスクリプションもなしでパッケージをずっと無料で配布しています。上流より最大2か月遅れ、セキュリティ修正は即座に公開されます。現在収録しているのは cliamp、Ghostty、lazydocker、Oh My Posh と Zed です。difftastic は含まれていないため、今日入手する方法は上のリポジトリだけですが、ご要望があれば追加できます。

無料ミラーの仕組み →

ステップ 2: difftastic をインストールする

# 最新の difftastic をインストール
sudo apt install difftastic

# インストールを確認
difft --version
# 最新の difftastic をインストール
apt install difftastic

# インストールを確認
difft --version

ステップ 3: git に組み込む

# 2 つのファイルを直接比較
difft old.py new.py

# あるいは、すべての diff で git に difftastic を呼ばせる
git config --global diff.external difft

# 素の git diff も、フラグひとつで使えます
git --no-ext-diff diff

# man ページはパッケージに同梱されています
man difft

🎯 基本的な使い方

ファイルとディレクトリを比較する:

# 2 つのファイルを左右に並べて
difft before.rs after.rs

# 1 カラム表示。従来の diff に近い出力
difft --display inline before.ts after.ts

# 2 つのディレクトリを、変わっていないファイルを飛ばして比較
difft old/ new/ --skip-unchanged --sort-paths

# このビルドが理解する言語は?
difft --list-languages

git の diff として使う:

# この差分にだけ difftastic を使う
GIT_EXTERNAL_DIFF=difft git diff

# 履歴全体を構造的な差分で
GIT_EXTERNAL_DIFF=difft git log -p --ext-diff

# difftool として登録
git config --global difftool.difftastic.cmd 'difft "$LOCAL" "$REMOTE"'
git difftool --tool difftastic

# 構造的なログのための git エイリアス
git config --global alias.dlog '!GIT_EXTERNAL_DIFF=difft git log -p --ext-diff'

出力を調整する:

# コメントだけの変更を無視
difft --ignore-comments a.go b.go

# 文脈を増やし、タブ幅は 2
difft --context 5 --tab-width 2 a.py b.py

# スクリプト向け: 構文上の変更はあったか?
difft --check-only --exit-code a.json b.json

# 環境変数で、毎回の実行の既定値を決める
export DFT_DISPLAY=inline DFT_BACKGROUND=light

🔧 ツール連携

difftastic は、すでに差分を見せてくれているツールに組み込めます:

  • git: GIT_EXTERNAL_DIFFdiff.externaldifftool の設定で。--ext-diff を付ければ git log -pgit show にも効きます
  • Jujutsu: jj の diff コマンドに設定すれば、Git 互換のワークフローのまま構文差分が得られます
  • Mercurial と Fossil: どちらも外部 diff コマンドを受け付けるので、同じバイナリがすべてのリポジトリで使えます
  • 環境変数: DFT_DISPLAYDFT_BACKGROUNDDFT_WIDTH などで既定値を一度決めておけます
  • CI とスクリプト: --check-only--exit-code は差分を出さずに「構文は変わったか」に答え、--display json は解析されるために用意されています

🚀 deb.griffo.io を選ぶ理由

📊 リポジトリの比較:
  • 公式 Ubuntu: difftastic をまったくパッケージ化していないので、素のシステムには入れるものがありません
  • cargo install difftastic: 最新ではありますが、多数の tree-sitter 文法を含む長いコンパイルの末に apt の外へ置かれ、man ページも付きません
  • 上流の tarball: 公式バイナリを、リリースのたびに手でダウンロード
  • deb.griffo.io: 最新版を自動更新でお届け

📦 パッケージのビルドリポジトリ

Ubuntu パッケージは、この GitHub リポジトリで自動的にビルド・管理されています:

🔗 関連パッケージ

deb.griffo.io では、こちらも配布しています:

🎯 こんな方に: コードを移動させたリファクタリングのレビュー、目が回らずにフォーマッタのコミットを読むこと、本当の API 変更とインデント変更を見分けること、そして「ファイル全体が変わった」がたいてい嘘であるようなコードベース。

📦 このリポジトリの最近のリリース

❓ よくある質問

difftastic は公式の Ubuntu リポジトリにありますか?

ありません。difftastic は公式 Ubuntu アーカイブにパッケージ化されていません。現在このリポジトリが唯一の apt ソースで、difftastic 0.70.0 を配布しています。

Ubuntu に最新の difftastic を入れるには?

上の手順で deb.griffo.io リポジトリを一度追加してから、sudo apt install difftastic を実行してください。新しいリリースは、いつもの sudo apt upgrade で届きます。

パッケージは署名されていますか? どのようにビルドされていますか?

すべてのパッケージはリポジトリの GPG 鍵(EA0F721D231FDD3A0A17B9AC7808B4DD62C41256)で署名されており、誰でも中身を確認できる公開の GitHub パッケージングリポジトリで、上流のリリースからビルドされています。

Ubuntu のどのリリースに対応していますか?

Ubuntu 22.04 Jammy、24.04 Noble、25.10 Questing、26.04 Resolute。