差分表示というのは難しいです。従来は文章やプログラミングコードのような上から順番に書かれているフォーマットが対象だったはずです。最近では画像であったり、形式を変更したものに対しても差分表示が求められたりします。 今回紹介するGraphtageはツリー構造になっているファイルフォーマットに対して使える差分ソフトウェアになります。

Graphtageの使い方

たとえばJSONです。2つのJSONがあります。一つは整形されたもの。

{
  "foo": [
      1,
      2,
      3,
      4
  ],
  "bar": "baz",
  "moongift": "Hello"
}

もう一つは整形されていないもの。従来の差分表示ソフトウェアでは、どちらかにフォーマットを合わせる必要がありました。

{"foo": [1, 2, 3], "bar": "baz"}

実行結果です。

HTMLにもできます。

Graphtageが対象としているのは次のようなファイルフォーマットです。

  • JSON
  • XML
  • HTML
  • YAML
  • CSV

こうしたツリー構造のようなものになっているフォーマットに対する差分が可能です。特化している分、最適な表示が期待できそうです。

GraphtageはPython製のオープンソース・ソフトウェア(LGPL)です。

trailofbits/graphtage: A semantic diff utility and library for tree-like files such as JSON, JSON5, XML, HTML, YAML, and CSV.