Special
» 2015年01月19日 10時00分 UPDATE

Git、Subversionユーザーにもお勧めのdiff+merge環境:開発中の「ややこしさ」と「小さな、たくさんのムダ」を排除する開発支援ツール

Gitクライアントなどを使って効率よくチーム開発を行うケースが増えた。だが、ソースコードの修正で衝突や不整合が起こった場合、手作業でマージするのが一般的のようだ。直感的に操作できるマージツールを使ってみよう。

[PR/@IT]
PR

エディターもIDEもこだわるけれど……。それだけで十分ですか?

 一日中ソースコードを読み書きするITエンジニアにとって、開発を効率化するツールはあればあるだけありがたい。「メモ帳」で1万行のプログラムを書くこともできるが、大方は、開発者向けの機能が盛り込まれた環境で、効率良く作業しているはずだ。

 サジェストや予約語、関数名を配色で視覚的に分かりやすくする機能を持つテキストエディターもあるし、IDEツールにも幾つかの定番がある。こうした道具を使うことで開発効率が上がり、ミスも減るからだ。

 では、複数のドキュメントやソースコードを比較検討する際はどうだろうか? 通常であればdiffなどを叩いて、該当箇所のアタリをつけ、該当行の具体的にどの部分がそうなっているのかを見ていくことになるだろう。

 そこで、疑問が残る。

 効率を求めてIDEやエディターにこだわっているのに、ここでは大方が通常ツールのまま使っており、また、差分比較においても、決して使い勝手が良くはない環境を使い続けているのはなぜだろうか。差分をマージする場合もおおよその環境では、標準ツール+人力、という状況ではないだろうか? ここには隠れた作業のムダが潜んでいる。

 近年では、SubversionやGitといったバージョン管理ツールを使って、効率よくチーム開発を行うケースが増えた。ソースコードを共有し、いつでも修正履歴を把握できるようにしておくことは、いまでは不可欠の作業となっていることだろう。

 そうしたソースコードの修正で、衝突や不整合が起こった場合、それぞれを比較して修正箇所を確認しながら手作業でマージしていくのが一般的だろう。修正箇所の比較やマージは、一つ一つは手間に感じないかもしれない。だが、それらが積み重なると、かなりの時間がかかる。

 エージーテックが国内展開するマージツール「Araxis Merge」は、こうした、エンジニア自身も気付かないかもしれない、見えにくいムダを解消するツールだ。有償のソフトウェアだが、Windows/Mac OS X向けに30日間無償の評価版も用意されている。本稿では、このツールの使い勝手を検証していく。

有償ツールらしいUIデザインと効率の良さ

 まずは、どんなシーンで利用するのかを見てみよう。下図は、Araxis Mergeで二つのソースコードを表示させた画面だ。右と左の2ペイン構成で、相違がある箇所がカラー表示されているのがお分かりいただけるだろう。紫色の枠が違いのある行全体、紫色のハイライト表示が同じ行で異なる文字列がある箇所、緑色のハイライト表示は行自体が異なる箇所だ。どこがどう違うのかが視覚的によく分かる。

 Araxis Merge Araxis Mergeの画面(クリックで拡大)

マージもショートカットキー1発

 もう一つ注目してほしいのは、差分表示の随所に表示されている矢印マークだ。左ペインには右向きの矢印、右ペインには左向きの矢印が表示されている。右向き矢印を押すと右側にマージされ、左向き矢印を押すと左側にマージされ、直感的な操作が可能である。後に紹介するが該当行の上下への挿入や削除も簡単にできる。

比較とマージのUI 拡大図は左ペインから右ペインへの、該当行のマージを行う場合の表示だ

 マウスクリックでも操作できるが、プログラマーにはありがたい機能として、ショートカットキーが充実していることから、例えば、左から右へのマージは[Ctrl]+[W]を押すだけだ。あとは同じようにして衝突した箇所を順に確認しながら、キーボード操作のみでマージしていける。マージツールで、こうした分かりやすい見た目と操作性を実現しているツールはほとんどない。

 例えば、オープンソースの「WinMerge」や有償の比較ツール「Diff Doc」は、以下のような画面だ。

mhad_fig03.jpg
一般的な比較ツールのUI 上段が「WinMerge」、下段が「Diff Doc」表示。(いずれもクリックで拡大)

 マージツールを使わなければ、diffなどで相違があった箇所を見つけ出してから、手作業で置き換えなければならない。ツールを使ってマージを効率化しようと考えるならば、こうした見た目や操作性の良さは、最重要の評価ポイントになる。Araxis Mergeはその点で、頭一つ抜け出た存在のツールだと言っていいだろう。

マージツールでの編集作業は?

 Araxis Mergeがどんな特徴を備えているかをもう少し踏み込んで見てみよう。まずは、編集作業のしやすさだ。

操作性を高める編集作業向けのショートカットキーが豊富

 編集時にマウスクリックや[Ctrl]+[W]で置換できることはすでに述べたが、クリックに[Ctrl]や[Shift]などのキーを組み合わせることで、上下への挿入や削除も可能になる。例えば、矢印マークにマウスオーバーすると、以下のようなオプションダイアログが表示される。

mhad_fig05.jpg ダイアログ表示ではUI操作に加えてショートカットキーのヒントも

 編集作業でよく使う「変更箇所の前に挿入」「変更箇所の後に挿入」「変更箇所を削除」などをその場ですぐに行うことができる。アイコンの表示も操作に応じて変わるなど、ユーザーエクスペリエンスに細かく配慮した設計となっていることもポイントだ。

 コピーやペーストなどの他、変更箇所へのジャンプ、一致箇所へのジャンプ、編集画面の分割などもショートカットキーで行えるようになっている(ショートカットキーの一覧)。

ミーティングがはかどるブックマーク機能・レポート機能

 ブックマーク機能やレポート表示機能も、チーム作業で重宝する機能だ。

 ブックマーク機能は、ファイルの任意の行にブックマークコメントを付ける機能だ。ソースコードにコメントを書くのではなく、誰がどのような作業を行ったかをブックマークとして残すことで、ちょっとした情報共有に利用できる。ソースコード自体が変更されないことがポイントだ。

mhad_fig06.jpg 該当行にカーソルを置いてメニューから「ブックマーク」を選択するとコメント入力ウィンドウが出てくる

 この状態でレポート表示機能を使うと、変更した箇所や内容をHTML形式などにまとめて書き出すことができる。ブックマークコメントも、このレポート内に記載される。

 これらの情報を含めたレポートを人力で作成するのは意外と手間が掛かる。Araxis merge を使用すれば1分程度で作成できる。

 用途例として、チーム作業中、あるいは修正コードの納品を受けチェックする際にチェック担当者がコメントを記しながら作業しておけば、ミーティングの際などに、そのままレビュー内容や作業内容を、実コードと併せて投影しながら情報を共有できる。

 これらは、チームでの修正作業における簡単な品質管理などにも使えそうだ。例えば、社外の開発者に修正などを依頼して納品されたコードを比較したり、修正箇所の履歴を取ったりといった使い方だ。

 レポートのファイル形式は、HTMLだけでなくXMLやUNIX diffにも対応しているため、出力結果データの再利用も容易だ。

レポート表示のサンプル レポート表示の一部(画像クリックでコメントやコード差分を含めた全体を表示)

3者比較も可能な優れた比較アルゴリズム

 チーム開発では、分岐したソースコードを親ファイルにマージするケースも少なくない。その場合には、3者比較が便利だ。3者比較では以下のような画面になる。

3者比較 3者比較の例(クリックで拡大)

 使い勝手は、2者比較と同じで、基本的にはマウスクリックやショートカットで編集を進めていくだけでいい。

 こうした3者比較においても、修正箇所のカラーリングを適切に行えることがAraxis Mergeの特徴の一つだ。比較アルゴリズムの完成度が高く、サイズの大きいファイルの比較でも、精度の高い比較が可能だという。

長大なソースでも、比較ポイントの明示指定「同期リンク」

 プログラム行数が長大になる場合、差分比較ツールでよくあるのが「比較ミス」だ。エージ―テックによると、Araxis Mergeの比較アルゴリズムではこうしたミスが出にくいというのが、実ユーザーの評価だという。

 もちろん、ミスがまったくないというわけにはいかない。例えば、比較の際に大量の行追加が行われた場合などでは、そのブロック以降が全く別のものと認識してしまうことは発生し得る。

 同製品の場合、こうした問題を回避するために「同期リンク」と呼ばれる機能が利用できる。これは、ファイル間の特定の行と行のつながりを明示的に指示するもので、比較の際の判定ミスを調整することができるのだ。

 ある部分に数百行の追加が発生したとしても、その次の行から明示的に比較行を指定することで、最後まで正確な差分結果を確認できる。

Gitクライアントソフトなどとの連携で操作がスムーズ

 差分比較やマージなどはもちろんだが、開発者として欠かせないのは、最終的にはソースコード管理ツールや開発環境などと連携できるかどうかという点だろう。

 Araxis Mergeは、スタンドアロンでファイルを読み込むこともできるだけでなく、Gitクライアントなどとも連携できる。ソースコードの比較やマージを行いたいときに、Gitクライアントソフトから呼び出し、修正を行ったあと、ソースコードの編集に戻るといった使い方が可能だ。

 SubversionやGitだけでなく、EclipseやVisual Studio Team Foundation ServerやIntelliJ IDEA、IBM Rational Synergy、Dreamweaverといった環境にも対応している。詳しい対応状況はWebページを参照してほしい

仕様書や納品書、Word、Excelデータの比較でも効力を発揮

 日本国内で同製品を展開しているエージーテックによると、Araxis Mergeがユニークなのは、開発者向けのマージツールとしてだけでなく、ファイル比較のための汎用ツールとしても使うことができる点にあるという。

 例えば、Microsoft WordやMicrosoft Excel、PDFの比較、画像ファイルの比較、バイナリファイルの比較などが可能だ。このため、法務部門での契約書の文章比較や、出版業界では原稿の比較、あるいは、製造業界では部品カタログや仕様書の比較にも多く利用されているという。

Wordファイルの比較結果 Wordファイルの比較結果(クリックで拡大)

 こうした汎用ファイルを扱ってきたノウハウから、Araxis Mergeは、他の製品にはない強みも多い。例えば、空白を差分として見るか、見ないかといった細かい設定ができる。また、画像やバイナリデータのような大容量ファイルを素早く読み込み、軽快に扱うことができる。

 ソフトウェア開発でも同様に仕様書や契約書の比較、出力バイナリデータの比較などでも視覚的に比較しやすくなるだろう。

 実際、アプリケーション開発の現場では、表示画面を作成する際に、画像比較機能を利用して、見やすい表示画面を作成するのに重宝しているユーザーもいるという。

オプション 比較や表示のオプション指定の例

 ソフトウェア開発の際にも、コンプライアンスや品質管理の点から利用されるケースも少なくない。というのも、本稿で比較対象としてきたオープンソースソフトウェアでは、ソースコードの品質や機能に安全性が担保しにくい。場合によっては企業間の取引条件として利用不可になっていたり、納品されたソースコードを自社のファイル管理システムに直接統合できなかったりするケースもある。このような場合でも、商用製品としての品質とサポートが期待できるAraxis Mergeであれば、より高性能で利便性の高い環境を、問題なく運用できることから、採用する企業も少なくない。

 これまで説明してきたように、Araxis Mergeは、開発者が使いやすく、完成度が高い機能を豊富に備えたツールだ。それに加えて、アプリケーションの画面開発に応用したり、チーム開発における品質保証のプロセスに組み込んだりすることもできる。独自の工夫により、適用シーンをさらに増やしていくこともできそうだ。

 まずは、マージツールに適用し、開発工程の作業効率アップにつなげてみてはいかがだろうか。ラインアップはPro版とStandard版の2つがある。Windows用とOS X向けの体験版も用意されているので、まずは試してみることをおすすめしたい。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.


提供:株式会社エージーテック
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2015年2月18日

関連情報

Araxis Mergeの30日評価版ダウンロードページ。Windows版とMac OS X版がある。

機能概要や機能デモの紹介。ファイル比較だけでなく、画像比較やフォルダツリー比較、インプレース編集の操作イメージも分かる。

本稿で紹介するAraxis Mergeの他、開発支援ツールやデータベース製品の情報も。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。