AI時代に使える差分確認ツールdifitを触ってみた

こんにちは、ナナオです。 最近はClaude Codeにコードを書かせることが増えてきました。 便利なんですが、そうなると今度は「エージェントが書いた差分をどう確認するか」が地味に悩みどころになってきます。 ターミナルでgit diffを眺めるのもいいんですが、量が多いと結構つらい。かといってわざわざコミットしてPRを立ててGitHub上で見るのも大げさです。 そんなときにちょうどよさそうなdifitというツールを見つけたので、触ってみました。 ※この記事はopus4.8の力を借りて作成しました。 difitとは GitHub - yoshiko-pg/difit: A lightweight command-line tool that spins up a local web server to display Git commit diffs in a GitHub-like Files changed view · GitHub The local code review tool for the AI era! 「AI時代のローカルコードレビューツール」を名乗っているツールです。 やってくれることはシンプルで、ローカルでコマンドを叩くと、Gitの差分をGitHubの「Files changed」そっくりの画面でブラウザに表示してくれます。 git diffをターミナルで読むのではなく、あの見慣れたレビュー画面でサッと確認できる、というわけですね。 そしてこのツールの本領は、その先の「コメントをAIエージェントへのプロンプトとしてコピーできる」というところにあります。このあたりは後で紹介します。 インストールと基本的な使い方 Node.js製なので、インストールなしでnpxからいきなり試せます。 # インストール不要、最新コミットの差分をそのまま表示 npx difit 気に入ったらグローバルに入れておくと楽です。 npm install -g difit 使い方はGitのコマンドを知っていれば直感的です。引数に見たい対象を渡すだけ。 difit # HEAD(最新コミット)の差分 difit 6f4a9b7 # 特定のコミット difit feature main # feature と main を比較 特に便利なのが、コミット前の変更を確認できるキーワードたちです。 ...

2026年7月10日 · にあえん

headroomでトークンを削減した話

こんにちは、ナナオです。 突然ですが、AIコーディングエージェントのトークン消費って本当に気になりますよね。 普段は Claude CodeとOpenCode Goを併用しているんですが、両方とも長時間セッションを回しているとあっという間にトークン消費が伸びていきます。 「これ、無駄な部分削れないかな」と思って調べたら headroom を見つけたので、試しに入れてみました。 ※この記事の作成にはMiniMax-M3を大いに活用しています。 headroomとは GitHub - headroomlabs-ai/headroom: Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server. · GitHub Introduction | Headroom headroom は、AIエージェントが読み取るコンテキスト(ツール出力、ログ、RAG 結果、ファイル、会話履歴)を LLM に渡す前に圧縮するレイヤーです。 公式の説明では「the context compression layer for AI agents」と書いてあって、Python実装のコアに Rust 製トランスフォーマーを組み合わせた構成になっています。 2026年7月時点で57k starがついており、わりと有名なんじゃないかと思います。 インストールとプロキシ起動 Docker イメージをそのまま使います。 docker pull ghcr.io/chopratejas/headroom:latest docker run -d --name headroom -p 8787:8787 \ ghcr.io/chopratejas/headroom:latest これで 8787 番ポートにプロキシが立ちます。コンテナ内で headroom proxy が立ち上がっている状態です。 ...

2026年7月9日 · にあえん

ファジーファインダーって何?fzfとzoxideでディレクトリ移動が画期的に変わります

こんにちは、ナナオです。 前回はzoxideを紹介しました。 今回は予告通りfzfの話です。 fzfとは GitHub - junegunn/fzf: :cherry_blossom: A command-line fuzzy finder · GitHub fzf is a general-purpose command-line fuzzy finder fuzzyとは「あいまい」という意味です。 つまり、ファジーファインダーとはあいまい検索をターミナルでやってくれるツールになります。 ファイル名、コマンド履歴、git のブランチ、grep の結果など、リスト状のものならだいたい fzf にパイプで渡せば絞り込みできます。 入力すると即座に候補が絞られて、Enter で確定。基本これだけです。 ちなみに実装はGo製です。 インストール zoxide のときと同じく mise で入れます。 mise use -g fzf zsh で使うなら補完とキーバインドも読み込んでおきます。 # .zshrc source <(fzf --zsh) これであとはfzfで使えます。デフォルトではファイル検索が立ち上がります。 単体でよく使うパターン いくつか実例。 Ctrl + R でコマンド履歴を検索 先ほどのキーバインドを読み込んでおくと使えます。これは単にターミナルのショートカットみたいな感覚で使えます。コマンドを打つ必要すらありません。 「さっき打ったあのコマンドなんだったっけ」状態から救われるやつですね。 git のブランチを選ぶ git branch --all | fzf | xargs git checkout …こんな感じで、リストを fzf に食わせる前のコマンドを組み立てる発想があることでいろいろと助けられる場面は多そうです。 ...

2026年7月8日 · にあえん

zoxideでディレクトリ移動を楽にしよう

zoxideとは GitHub - ajeetdsouza/zoxide: A smarter cd command. Supports all major shells. · GitHub zoxide is a smarter cd command という売り文句の通り、cdをより便利に使えるコマンドになります。 基本的にはcdと代わりませんが、zoxideは過去の移動履歴を覚えてくれるという特徴があります。 一度移動したディレクトリのことを覚えてくれるので、いちいち絶対パスで指定しなくて済みます。これは楽! インストールと使い方 miseでインストール可能なので、今回はmiseを使います。 mise use -g zoxide インストール出来たら.zshrcに以下の設定を書き込みます。 eval "$(zoxide init zsh)" これでインストールできました。 コマンドはzで使えます。 ということで、一度使ってみましょう。 # ブログを書いてるディレクトリに移動してみる ~ on ☁️ (ap-northeast-1) ❯ z ~/tools/hugo-blog # 移動完了、ホームディレクトリに戻る hugo-blog on  main [$⇡] on ☁️ (ap-northeast-1) ❯ z # パスを指定せずブログのディレクトリ名だけ打つと… ~ on ☁️ (ap-northeast-1) ❯ z hugo-blog # ブログのディレクトリに戻ってこれた! hugo-blog on  main [$⇡] on ☁️ (ap-northeast-1) ❯ …はい、これだけでも十分便利ということが伝わるかと思います。 ...

2026年7月7日 · にあえん

アルゴ式の問題を解く Go 3 の倍数だが 5 の倍数でない

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数だが 5 の倍数でない | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 && n % 5 != 0 { fmt.Println("Yes") } else { fmt.Println(n) } } ということで今回はこれで👍

2026年7月5日 · にあえん

アルゴ式の問題を解く Go 3 の倍数または 5 の倍数

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数または 5 の倍数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 || n % 5 == 0 { fmt.Println("Yes") } else { fmt.Println(n) } } ということで今回はこれで👍

2026年7月4日 · にあえん

アルゴ式の問題を解く Go 3 の倍数かつ 5 の倍数

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数かつ 5 の倍数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 && n % 5 == 0 { fmt.Println("Yes") } else { fmt.Println(n) } } ということで今回はこれで👍

2026年7月3日 · にあえん

アルゴ式の問題を解く Go バスに乗る時刻

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 バスに乗る時刻 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var t, a int fmt.Scan(&t, &a) if a % t == 0 { fmt.Println(a + a % t) } else { fmt.Println(a + t - a % t) } } ということで今回はこれで👍

2026年7月2日 · にあえん

herdr + moshiで外出先でAIコーディングする

こんにちは、ナナオです。 最近、AIコーディングによる開発がメインになっています。 日々、AIからの承認を確認しているのですが、ふと思ったのが 「せっかく5時間は自由に使えるトークンがあるのに、外からトークン消費できないのはもったいない!」 …はい、私はドケチなのです。 ということで今回はタイトルにもある通り、herdrとmoshiを使って外からAIコーディングをしてみました。 herdrとmoshiについて herdrはターミナルで使うマルチプレクサです。 Herdr: one terminal for the whole herd 要はtmuxがデフォルトで高機能になったものと考えてください。 moshiはスマホで使えるターミナルアプリです。 Moshi — SSH & MOSH Terminal for Claude Code & AI Agents 準備と導入 家での開発は主にWSLを使っています。 ただし、WSLのネットワークは独立しているため、外部からはアクセスできません。 そこでtailscaleを使いました。以前記事も書きましたね。 /87a0ed4d506974cd38eeab4b3ea27c89 tailscaleのプライベートネットワークに参加することで、ちょっと強引ですが外からアクセスするための条件を整えました。 既に常用しているスマホにはtailscaleを入れていたので、あとはmoshiでtailscaleのIPアドレスを入れて接続してあげたら成功しました。 使ってみた感想 とにかくAIコーディングが捗る捗る!! herdrはモバイルレイアウトに対応しているため、とにかく見やすいですし操作感も文句ありません。 (もちろんAIコーディングだからというのはあると思いますが) moshiもSSH接続といった最低限の機能であれば十分なくらい接続性が安定しており、こちらも文句ありません。 課金すればherdrで開いている特定のワークスペースを開くこともできるようですが、普通にSSH接続して「herdr」とコマンド入力すれば簡単に自宅の環境を開けるので、課金する必要はなさそうだな~と思いました。 今回はtailscaleを使いましたが、MacやLinuxの方はそれを使わなても接続できるので簡単です。 今後の個人開発が楽しみです! ということで今回はこれで👍

2026年7月1日 · にあえん

アルゴ式の問題を解く Go バスの必要台数

こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 バスの必要台数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n, a int fmt.Scan(&n, &a) c := n / a if n % a > 0 { c++ } fmt.Println(c) } ということで今回はこれで👍

2026年6月30日 · にあえん