ぱっと見、簡単そうに見えてその実、意外と大変なのが差分を表示する処理だ。マシンパワーも意外と使うので、油断ならない。だが、Web上で共有したりコラボレートしたりするアプリケーションが増えている現在にあっては、重要な機能になっている。

手軽に実装する方法は、既存のライブラリを使うことだ。それも、サーバサイドでなくクライアントサイドで。

今回紹介するオープンソース・ソフトウェアはJSBlend、JavaScriptで実装されたDiffソフトウェアだ。

JavaScriptでDiffを実装すると言うのは以前紹介したgoogle-diff-match-patchや、「Javascriptでdiffる ( with 形態素解析 ) (nakatani @ cybozu labs)」等で試みられている。JSBlendが凄いのは、ただDiffだけでなく、マージにも対応している点だ。比較は文字単位で行われている。

read-onlyで比較すると差分を表示する機能になる。相違点だけを表示する、または全体を表示すると言う切り替えが可能だ。そして、read-onlyを外すと、マージする事や、Web上でその場でデータを直したりといったことができる。尚、実際のファイル書き込みやファイル内容の取得にはPHPを利用している。

ファイルの中身さえ取得できれば、その言語は特にPHPでなくともかまわない。テキストをコラボレートしたり、Wikiのような使い方、Web上のリポジトリなど、利用できそうな場面は数多そうだ。

Projects:JSBlend - Spike Developer Zone
http://developer.spikesource.com/wiki/index.php/Projects:JSBlend