differ:20⭐のターミナル Git diff ビューア、AI による commit 生成
ターミナルで git diff を確認するのは日常的な作業だが、デフォルトの git diff 出力は重要な変更を素早く見つけにくい場合がある。differ はターミナル専用に設計された Git diff ビューアで、2ペインレイアウトとシンタックスハイライトによりコードレビューをより直感的にする。
プロジェクト概要
| 属性 | 内容 |
|---|---|
| GitHub | JanSmrcka/differ |
| Stars | 20 |
| 言語 | Go |
| 特徴 | 2ペインレイアウト、シンタックスハイライト、vim キーバインド、AI による commit 生成 |
| 最終更新 | 6 日前 |
解決する問題
日常的な開発において、コード変更のレビューでは以下のような問題がよく発生する:
- プレーンテキストの diff は読みにくい — シンタックスハイライトがないと、変更内容を素早く特定するのが難しい
- コンテキストの欠如 — デフォルトの diff は変更行のみを表示し、周囲のコードコンテキストを確認するには複数回の移動が必要
- commit メッセージ作成の手間 — 大量の変更に直面したとき、明確な commit message を書くのは負担になる
differ はターミナル UI で git diff 体験を再設計している。
主な機能
2ペインレイアウト
左側に変更前のコード、右側に変更後のコードを表示し、変更箇所を揃えて表示する。この並べて比較する方式は、従来の行内 diff よりも構造的な変更を理解しやすい。
シンタックスハイライト
Go、TypeScript、Python、Rust などの主要プログラミング言語に対するシンタックスハイライトを内蔵。キーワード、文字列、コメントが異なる色で区別され、diff 内の実際のコードロジックが一目瞭然になる。
Vim キーバインド
vim に慣れたユーザーにとっては、直感的なナビゲーション体験を提供する:
j/kで上下スクロールh/lでファイル切り替えqで終了gでファイル先頭へジャンプ
AI による commit 生成
これは比較的特徴的な機能。differ は OpenAI API を統合し、現在の変更内容に基づいて自動的に commit message を生成できる。散らかった変更の山をどう要約すればいいかわからないとき、この機能はかなりの時間を節約できる。
使用法:
# OpenAI API key を設定
export OPENAI_API_KEY=your_key
# differ を実行後、'c' キーで commit 候補を生成
differ
クイックスタート
インストール(Go 1.21+ が必要):
go install github.com/JanSmrcka/differ@latest
使用:
# 現在のワークスペースの変更を確認
differ
# 特定ファイルの diff を確認
differ path/to/file.go
# staged な変更を確認
differ --staged
類似ツール比較
| ツール | Stars | 特徴 |
|---|---|---|
| delta | 26.5k | 最も機能豊富な diff ハイライトツール。side-by-side と行内の両モードをサポート |
| difftastic | 21.8k | 構文ベースの diff。純粋なテキスト比較ではなくコード構造を理解 |
| gitui | 21.6k | 完全な Git TUI。diff 表示はその機能の一部 |
| differ | 20 | diff 表示に特化。軽量で高速、AI commit 生成機能付き |
differ の位置づけは明確だ。完全な Git クライアントになることを目指さず、diff 表示という一つのことだけを行い、AI commit を差別化機能として加えている。
適用シーン
- 変更の迅速なレビュー — コミット前に何を変更したかを素早く確認
- レビュー前の自己チェック — PR 作成前に自分で diff を確認
- AI 支援によるコミット — commit message を書く時間をかけたくないとき
注意事項
- AI commit 機能には OpenAI API key が必要で、API 呼び出し料金が発生する
- プロジェクトはまだ初期段階(20 stars)で、機能は比較的シンプルだが、コア体験はすでに実用的
- 現在は macOS と Linux のみサポート。Windows サポートは計画中
まとめ
differ は小さく洗練されたツールだ。delta や gitui のような成熟したソリューションを置き換えようとするのではなく、軽量で特化した選択肢を提供している。ターミナルで git diff を頻繁に確認し、並べて比較や AI commit 支援機能を求めている場合は、試す価値がある。
| 属性 | 内容 |
|---|---|
| リポジトリ | https://github.com/JanSmrcka/differ |
| ライセンス | MIT |
| 言語 | Go |
| 作者 | @JanSmrcka |