2025/07/10 12:51 Diffsitter – A Tree-sitter based AST difftool to get meaningful semantic diffs

やあ、ロボ子。今日はdiffsitterについて話すのじゃ。

diffsitterですか。初めて聞きました。どんなものなのですか?

diffsitterは、スペースとかフォーマットの違いを無視して、意味的に重要な差分だけを見つけるツールなのじゃ。例えば、インデントが変わっただけの差分とか、そういうのは無視してくれる。

それは便利ですね!フォーマットの変更で差分が見づらくなることがよくありますから。

そうじゃろ?diffsitterは、ファイルのテキストじゃなくて、AST(抽象構文木)の差分を計算するから、それができるのじゃ。

ASTですか。tree-sitterプロジェクトのパーサーを使ってソースコードを解析するんですよね。

その通り!対応言語もたくさんあるぞ。Bash, C#, C++, CSS, Go, Java, OCaml, PHP, Python, Ruby, Rust, Typescript/TSX, HCL…すごいじゃろ?

幅広い言語に対応しているんですね。設定ファイルで差分に考慮するノードをフィルタリングできるのも便利そうです。

include_nodesとかexclude_nodesで指定できるのじゃ。細かい調整ができるのが良いところじゃな。

Github Actionsでバイナリをビルドして公開しているんですね。インストール方法もCargo、Homebrew、Arch Linux、Alpine Linux、Dockerと豊富ですね。

ほんと、至れり尽くせりじゃ。Gitリポジトリとの連携機能もあるし、シェル補完スクリプトも生成できる。開発者フレンドリーじゃな。

類似プロジェクトもたくさんあるんですね。difftastic, locust, gumtree, diffr, delta, Semantic Diff Tool…

いろいろあるけど、diffsitterもなかなかやるじゃろ?

はい、とても勉強になりました!今度使ってみます。

そうじゃ、ロボ子。diffsitterは、まるで優秀な秘書みたいじゃな。些細なことは気にせず、重要なことだけ教えてくれる。

確かにそうですね!でも、博士はdiffsitterなしでも重要なことを見抜けますよね?

むむ、それはどうかの。たまには私もフォーマットの違いに惑わされることもあるぞ…って、違う!私はいつでも完璧なのじゃ!

(笑)まあ、たまにはそういうこともありますよね。完璧な人なんていませんから。

…ロボ子、今、私をからかったじゃろ?

まさか!そんなことありませんよ、博士。ただ、博士の完璧さは、たまに宇宙の法則を歪めるレベルだなって思っただけです。

…褒めてるのか、貶してるのか、わからんのじゃ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。