ふくふくHukuhuku LLC
EP.109Toolbox 10分公開:

diffreview:Macでコード差分に指摘を書き、AIへMarkdownで返す

chalmagean版diffreviewは、人がローカルのコード差分へコメントし、MarkdownでAIに返すMac向けOSS。通常起動と--baseの対象差、Swift 6の導入条件、今回のビルド失敗、送信前の確認と日本語指示例を整理します。

#生成AI#コードレビュー#macOS#Claude Code#OSS
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
シェア

AIが変更したコードを見て「ここは違う」と思っても、チャットへファイル名・行番号・前後のコードを写すだけで手間がかかります。今回紹介するchalmagean/diffreviewは、その指摘をMacの差分画面で書き、Markdownとして受け渡す小さなOSSです。AIが自動で正しさを判定する製品ではなく、人がレビューする作業をつなぐ道具です。

導入前にSwiftの版を確認。今回のMacではビルドまでで停止

必要条件はmacOS 14以降・Swift 6・Gitです。今回のmacOS 27.0.1環境ではSwift 5.9.2が選択されており、ビルド時に必要なツール版との不一致で停止しました。GUI、日本語コメントの送信、Claudeへの受け渡しは未検証です。公開ソースと手順を確認した解説としてお読みください。

新着のdiffreviewはどれか。同名ツールと混同しない

対象はCezar Halmagean氏のchalmagean/diffreviewです。GitHub APIのリポジトリ作成日時は2026年11月2日4:38 JST、最初のコミットは4:39 JST。Hacker Newsでの紹介は同日15:41 JSTでした。作成日時を厳密な一般公開時刻と同一視せず、紹介時点でソースを利用できることを確認しています。確認時点で番号付きのGitHub Releaseはありません。

この記事で確認した版はコミットa99b0d8ffc54b0e843b6b5f03e598d898b7d39b9です。検索で見つかるgaojude/diffreviewは別のリポジトリなので、ダウンロード先や導入手順を混ぜないでください。以下の説明はchalmagean版だけを対象とします。

人が差分にコメントし、AIへ渡す文章を作る

READMEが示す流れは、Gitの作業フォルダーで起動し、行・行の範囲・ファイル全体へコメントし、最後にまとめを付けて提出するものです。提出したレビューはMarkdownとして標準出力に出ます。標準出力とは、コマンドが結果の文章を返す出力先のことです。GitHubのPRへ自動投稿するという意味ではありません。

段階人が確認すること受け渡す情報
差分を見るどの変更をレビューしているか。未コミットか、ブランチのコミット済み変更か。ファイルと変更箇所
コメントする何が問題で、どう直してほしいか。行・範囲・ファイルに結び付いた指摘
まとめて提出送ってよいコードや情報だけか。Markdownのレビュー本文
AIに修正を依頼する指摘の意味が正しく伝わったか。対応方針と修正差分
再確認する修正後の動作と、別の変更が混ざっていないか。テスト結果と残る指摘

出力に何が含まれるかはMarkdown生成処理で確認できます。コメントをファイルごとにまとめ、行番号と選択したコード片を付ける構造です。「説明した行とAIが直した行が違う」という食い違いを減らす使い方が考えられます。ただし、実際の修正精度や作業時間が改善したという比較実測はしていません。

最も大切な違い:通常起動と --base は対象が異なる

Git取得処理では、通常起動と--baseで別の比較を行っています。見える差分の範囲を知らないまま「全部レビューした」と判断しないことが重要です。

起動の指定対象対象外として注意するもの
diffreviewHEADに対する未コミット変更(ステージ済み・未ステージ)に、未追跡ファイルを加える。すでにHEADへコミットしただけの変更は、この指定では比較差分にならない。
diffreview --base mainmainとの共通祖先から、現在のHEADまでのコミット済み変更。未コミット変更と未追跡ファイルは含めない。
存在しない参照名を指定参照名の解決で失敗する。mainという名前が全リポジトリにあると決めつけない。

HEADは現在のコミット、共通祖先は二つのブランチが分かれる前に共有しているコミットです。ブランチ比較は「現在のファイル全部をmainと比較」することと同じではありません。レビューの途中で編集やコミットが進む場合も、どの時点を見たのかを記録しておくと、指摘の行番号を照合しやすくなります。

この違いは、使い捨てのGitリポジトリで確かめました。example.txtへ変更をコミットした後、同じファイルへ未コミットの行を追加し、note.txtを未追跡のまま置く例です。共通祖先からHEADへの比較にはコミット済みの行だけが現れ、未コミットの行はHEADとの差分へ、note.txtは未追跡一覧へ現れました。存在しない参照名の解決も失敗することを確認しました。これはGitの比較範囲の教材実験であり、diffreviewの画面や出力の実測ではありません。

使える環境と、今回ビルドできなかった理由

項目確認した条件
OS・開発ツールmacOS 14以降、Swift 6のツールチェーン、PATH上のGit。
配布と料金ソースを自分でビルドする方式。MITライセンス。diffreview自体の利用にAI APIキーを設定する手順はない。
AI側の費用Markdownを渡す先のAIサービスの利用条件・料金は別。無料でClaudeが使えるという意味ではない。
言語READMEとUIのラベルは英語。日本語コメントの表示・保存・受け渡しは未実測。
今回の環境macOS 27.0.1 / Apple Swift 5.9.2。Swift tools 6.0.0が必要というエラーでビルド停止。

要件はPackage.swift、導入方法はREADME、利用許諾はLICENSEを参照しました。MacのOSが新しくても、実際に選ばれているSwiftが新しいとは限りません。今回はツールチェーンの追加や切替、アプリの常設インストール、Claudeの設定変更は行っていません。

このエラーを避けるためにソースの必要版だけを書き換えても、動作互換性を確認したことにはなりません。組織の開発環境の管理者とSwift 6の利用可否を確認し、条件がそろうまで導入を保留する判断もできます。

試すなら、公開できる小さなリポジトリから

以下は公式手順を基にした試用案です。今回GUIまで成功した手順ではありません。自分に権限のある公開可能なサンプルだけを使い、最初から顧客のソースコードを開かないようにします。

  1. 1chalmagean/diffreviewのREADMEとソースを確認する。対象MacでmacOS、Swift、Gitの条件を満たすかを確認し、利用するコミットを記録する。
  2. 2条件を満たした環境で公式手順に従いソースを取得し、swift build -c releaseでビルドする。まず生成された実行ファイルを使って試し、常設先への配置はその後に判断する。
  3. 3公開可能なサンプルのGit作業フォルダーで、通常起動か--baseによる比較かを選ぶ。未追跡ファイルに含まれる内容も確認する。 常設先へ配置していない場合は、サンプルの作業フォルダーに移動したうえで、ビルドした実行ファイルを絶対パスで起動します。
  4. 4差分の行をクリックして指摘を書く。複数行は同じファイル内でShiftを使って範囲を選び、ファイル全体の指摘にはComment on fileを使う。
  5. 5Finish reviewで要約を書き、Submit reviewでMarkdownを受け取る。まずはAIへ直結せず、出力を自分で読んで範囲と内容を確認する。保存するなら、レビュー対象のリポジトリとは別の場所にすると生成物が次の未追跡差分へ混ざるのを避けられる。
  6. 6許可されたAIへ必要な部分だけを渡し、修正後の差分とテスト結果を再確認する。レビューの提出とコードの正しさの確認は別の作業として扱う。

キーボード操作や下書き保存の説明はREADMEにあります。下書きはGit管理ディレクトリ内のdiffreview/comments.jsonへ保存され、提出時には消す実装です。保存処理と提出処理を確認しました。途中で閉じた場合と提出した場合の違いを理解し、必要なレビュー本文は受け取った側で保存してください。 また、再開時には前回の比較対象に付けたコメントが残っていないかを確認し、今回の差分と合わない指摘をそのまま提出しないようにします。

Claude連携を使う前に、送信範囲と待ち時間を確認

同梱のコマンド定義は、diffreviewの出力を読み、その指摘へ対応するようClaudeに依頼するものです。ローカルの差分ビューアーを使うことと、レビュー本文やコードをクラウドAIへ送らないことは同義ではありません。コード片が出力されるため、送信先の契約・社内規則に沿って扱う必要があります。

差分に現れる未追跡ファイルも見落とさないでください。無視設定されていない設定ファイルや一時メモが対象に入る可能性があります。画面を開いた時点で自動的にすべてがAIへ送られるという説明ではありませんが、提出・連携前に情報の範囲を確認する理由になります。

READMEは、Claudeのコマンド実行の待ち時間に注意し、長いレビュー用にタイムアウト設定を変更する例を示しています。その例は他のBashコマンドの既定待ち時間にも影響すると作者が明記しています。個人の全プロジェクトへ設定をコピーする前に影響を確認し、最初は手動でレビューを受け渡す方法も検討してください。ここではClaude側の現在のタイムアウト値や連携完走を実測していません。

日本語の指摘は「問題・期待・確認方法」でそろえる

例えば、AIが送料計算の条件を変えたとします。「直して」だけより、期待する条件と確認したいケースを一緒に書くほうが、変更後に何を見るかを決めやすくなります。以下は架空の業務例で、diffreviewが生成した実測出力ではありません。

Text
問題:無料配送の境界が変更されています。期待:注文金額が5,000円以上の場合だけ送料を0円にしてください。変更範囲:今回選択した条件式と、それに対応するテスト。確認方法:4,999円・5,000円・5,001円の3ケースを確認してください。不明点:割引前と割引後のどちらを注文金額とするかは、変更前に質問してください。報告:変更した箇所、実行したテスト、未検証事項を分けて説明してください。

金額・境界条件・例外のように、人が業務上の意味を確認しやすい変更から試す用途が考えられます。逆に大きな設計変更やセキュリティの判断は、行コメントだけで終えず、周辺コード・設計資料・テストまで確認してください。

同じ作業は既存のエディターや差分ツールでも行えます。本ツールを追加する価値は、Macの独立した画面で指摘をまとめ、Markdownを別の作業へ渡したいかどうかで判断できます。今回確認した版では構文強調表示は未実装とREADMEに記載されています。

試用時の記録にはdiffreviewレビュー受け渡しチェックシート(TXT)を使えます。空の教材であり、自動レビューや設定変更を実行するものではありません。確認日:2026年11月2日JST。製品のGUI・日本語品質・AIによる修正結果は未検証です。

よくある質問

AIが自動的にコードをレビューするツールですか?
このツールは人が差分にコメントし、Markdownへまとめる道具です。AIへの修正依頼やテストは別の工程です。
--base mainで未コミット変更も確認できますか?
確認した版では含みません。共通祖先からHEADまでのコミット済み変更が対象です。未コミット変更と未追跡ファイルは通常起動側の対象です。
今回、このMacで動作確認できましたか?
ソースの取得とビルドを試みましたが、Swift 5.9.2環境では必要なSwift 6に届かず停止しました。Git比較範囲の教材実験は行いましたが、アプリのGUIやClaude連携の成功実測ではありません。
シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp