Markdown関連のソフトウェアがとても多くなっています。軽量マークアップ言語のシェアはMarkdownが半分以上になっているのではないでしょうか。そうやってコンテンツが増えていくと、次に作成から活用の段階に入っていきます。 単純にHTMLファイルにするだけでなく、もっとMarkdownフォーマットを活用したソフトウェアが出てくることでしょう。そのベースに使えそうなのがMarkdown diffです。

Markdown diffの使い方

Markdown diffはMarkdownファイル同士の差分がとれるようなのですが、執筆時点ではそのコマンドは用意されていません。現在は構造解析ができるようです。

$ mdast README.md 
{ t: 'Document',
  start_line: 1,
  start_column: 1,
  end_line: 58,
  children: 
   [ { t: 'SetextHeader',
       start_line: 1,
       start_column: 1,
       end_line: 2,
       inline_content: [ { t: 'Str', c: 'Markdown diff' } ],
       level: 1,
       children: [] },
     { t: 'Paragraph',
       start_line: 4,
       start_column: 1,
       end_line: 6,
       inline_content: 
        [ { t: 'Str',
            c: 'Markdown diff, or mddiff, is a tool to diff two markdown files. It constructs' },
          { t: 'Softbreak' },
          { t: 'Str', c: 'an' },
          { t: 'Str', c: ' ' },
          { t: 'Link',
            destination: 'http://en.wikipedia.org/wiki/Abstract_syntax_tree',
            title: undefined,
            label: [ { t: 'Str', c: 'AST' } ] },
          { t: 'Str', c: ' ' },
          { t: 'Str', c: 'for both files and' },
          { t: 'Softbreak' },
          { t: 'Str', c: 'then compute the diff on those trees.' } ],
       children: [] },
  :

このようにMarkdownファイルの構造がとれます。さらにGraphvizを使ってビジュアル化も可能です。

このような画像が作れます。

構造が表現できれば、それを使って差分を表示するのは難しくないでしょう。それだけでなくMarkdownから別なフォーマットへ変換したり、システムの中で活用するのも難しくなさそうです。Markdownの可能性を引き上げてくれそうなソフトウェアです。

Markdown diffはnode/JavaScript製、MIT Licenseのオープンソース・ソフトウェアです。

nono/mddiff