鳥を探す話でも軒先の話でもない。Visual Diffのプログラムを探し回っていた最中のことだ。
複数のテキスト、とくに同一テキストの異なるバージョンの間で、変更箇所や追加された箇所を確認するツールとしてはUNIXのdiffツールが一般的だ。
だが、diffはそもそも差分を修正する「パッチ」を作成する目的で作られたツールであり、人間がその出力結果を見て深い洞察が得られるかといえば、ちょっとそれは人間ワザではないレベルのスキルが必要であった。
厳密にいえば、オプションを適宜指定すればそれほど高いスキルが必要になるというわけでもないが、そのオプションを選択するという時点でちょっと願い下げ、といった具合いだ。
そんなわけで、コマンドラインから使うdiffツールにGUIをかぶせて使いやすくしよう! というアプローチが行われるのは、必然的な成り行きといえた。
とはいうものの、探してみてそれほどゴロゴロしているわけでもなかった。事実、検索エンジンで探したのではなく、MLの過去ログにそのような議論があったので、そこで見つけたキーワードで探し当てた次第だ。
いくつか有望なものを調べてみたところ……同僚が必要としているレベルには達していなかったが、自分の目的(プログラムの修正・追加の検出)にはかなうレベルと判断。
日本語が表示できないツールとか、ちょっと表示が地味すぎて使う気になれないツールまでさまざまだったが、その中でなにげにピカイチだったのが、おそろしく意外なことに……Mac OS XのDevelopper Toolsをインストールすると一緒に入ってくる「FileMerge」だったのだ。
FileMergeという本来の目的とはずいぶんと異なる印象を与える名前が災いしたためか、これまで長らくFileMergeに注目することはなかった。「それってcatコマンドのGUI版か?」ぐらいにしか思っていなかったのだ。
だが、これがひじょーーに重要で有用なツールだと分かったのはついさっきだ。ジャスト、ついさっきである。
起動すると、なんの変哲も無いウィンドウがひらいて……ここに比較すべきテキスト、ないしはフォルダをドラッグ&ドロップする。UNIX系のツールだと、ドラッグ&ドロップを受け付けてくれなかったりしたので、これだけでもずいぶん嬉しい。
フォルダを……と、書いたが、フォルダを指定すると、ファイルブラウザが表示され、指定階層下のファイルのうち変更が加わったものをハイライト表示。ダブルクリックするとdiff表示する。
FileMergeのdiff表示にたどりつくまで、少々苦労をした。ふつーの文章テキストを喰わせては、クラッシュする……という不毛な作業を繰り返してしまったからである。実に、FileMergeは与えるテキストファイルの改行コードやらフォーマットやらを選ぶようで、野蛮なJedit4文章などを喰わせてはならないようなのだ。
AppleScript StudioのプロジェクトをFileMergeに喰わせて、AppleScript(テキスト形式)をdiff表示させてみた。
「こ、これはいい………………」
自分がこれまでに出会った最高のdiff表示といえば、CodeWorrior上のものであった。実に美しく、このdiff表示のためだけにCodeWorriorを使い続けている、というCWユーザーの言葉に深く納得したものだ。
だが、もはやこれでCodeWorriorを使い続けるべき理由は消滅したと言ってよいに相違ない。FileMergeのdiff表示は実に実用的かつ美麗なものであるからである。
さらに、diff表示をスクロールさせてみてびびった。左右のテキスト行がそろう場所まで片方がスクロールを待つような動作を行ったり、差分箇所がそれにともなってうにょうにょと動いたりと、その姿は圧巻であった。
FileMergeを長らく使ってこなかったことを深く悔やんだ。目下抱えている問題の多く(巨大なプログラムを組みすぎて修正箇所が分からなくなる)が、このツールひとつで解消されそうだからである。
AppleScript Studioのユーザーがどの程度いるかは分からないが、このFileMergeを使わないでいることは非常にもったいない。悪いことは言わないので、すぐにFileMergeを起動してプログラムのdiffを表示させてみるべきである。まさか、最初からこんなもんがもれなく入っているとは思わなかった。もっと早く気付くべきであった。合掌。