まだWinMege無しでプログラミングしてどこを変更したか分からなくなって困ってんの?

 

プログラミングをする時、コンパイラやインタプリタ以外で最も必要なツールはなんですか?

と聞かれて、あなたならなんと答えますか?

おそらく統合開発環境とかエディタと回答する人が多いと思いますが・・・・

 



 

プログラミングで最も必要なツール???

プログラミングで最も必要なツールと言えばコンパイラやインタプリタでしょう。
これが無ければコンピュータで実行ファイルを作れませんしね。

しかし今回の設問は『コンパイラやインタプリタ以外で最も必要なツール』という事ですから、おそらく一番多い回答は統合開発環境やエディタという回答が多いだろうと思います。
私もそう思います・・・・

がっ!!!

ホントにそうでしょうか?

コーディングってエディタが無くてもできますよね。やろうと思えばメモ帳でもWordでもExcelでもできますよね。
コンパイルorインタプリタの前にテキスト形式のファイルに保存する必要はありますが、文字さえ書ければコーディングのツールなんてなんでもいいんですよ。

※Wordでコーディングしてる人見たことありますし(笑)

エディタや統合開発環境は、あくまで「使い易さ」や「効率の良さ」を提供するに過ぎないんですよね。

※とは言え、実際のところ業務で使うにはエディタや統合開発環境が無いとハナシになりませんけど。
※今回紹介するツールも「使い易さ」や「効率の良さ」を提供するに過ぎなかったりしますが、その辺は大目に見てね(笑)

で、『プログラミングをする時、コンパイラやインタプリタ以外で最も必要なツールはなんですか?』と聞かれたら、私はきっとこう答えます。

 

WinMerge(うぃんまーじ)に決まってるやんけ! 

 

WinMergeってなんやねん!?

2つのテキストファイルの比較をしてくれるソフトです。

テキストファイルの比較?

はい、テキストファイルの中身を比較してくれるツールです。
比較だけじゃなくマージもしてくれますが、基本的にはテキストファイルの比較がメイン機能です。

※WinMergeはテキストファイルだけじゃなく、Excelファイル等の比較もしてくれます。

 

テキストファイル比較ツールはプログラミングをする上で外せません。

WindowsならばWinMergeが有名と言うかデファクトスタンダードと言ってもいいでしょう。
WinMergeを使っていないシステム開発会社はないんじゃない?と思うぐらいプログラミングには必須です。

Macでも同様なツールはあるのは知っていますけど、WinMergeほど強力なものがあるのかどうかは知りません。
これから探そうと思っているところです。

 

で、テキストファイル比較ツールなんて、そんなものがプログラミングの役に立つの???

 

Yes! 役に立ちます。
って言うか、WinMerge無しにプログラミングやりたくないです。

WinMergeって何にどう使ってどう便利なの?

個人的な趣味でプログラミングするならWinMergeが無くてもさほど困らないでしょう。
あれば便利ってとこでしょうか。
ですが、仕事においてはこれが無いと仕事になりません。(ちょっと言い過ぎですけど)

どう使うかと言いますと、2つのテキストファイルを比較します。
そのままですね(笑)

中身が似たようなテキストファイルが2つあるとします。
両者の違いはほんの僅かで目視では見落としてしまうとしましょう。

そういう時にWinMergeを使うと便利です。
とっても便利です。
すごく便利です。
ごっさベンリーです。

↓この図を見てください。
一文字だけ違うところがあるんですが、どこか分かりますか?
なかなか分かりづらいですよね。

 

↓今度は同じファイルをWinMergeで見てみましょう。
どこが違うか分かりますか?
すぐに分かりますよね?

 

こんな間違い探しみたいな使い方もできますけど、これはあくまでも参考です。
プログラミングにおいてはそんな間違い探しみたいな事は無いと思います。
プログラミングにおいては修正前後のソースコードを比較するのです。
これがとっても重要!!!

ソースコードの差分比較ってそんなに重要か!?????

Yesです!!

重要です。
ってか、重要じゃないなんて、どういう思考回路を持てばそんな事が言えるのか?
なので「ソースコードの差分なんて重要じゃないっしょ」と言う人とは一緒に仕事できません。

仕事のプログラミングというのは、新規に作るものばかりではありません。
現状動いているシステムがあり、そのシステムを改修する事の方が多いです。
現状動いているシステムのソースコードに対してプログラムを追加・変更・削除するのです。

で、、、、

プログラムって一文字でも違えば動作は変わってしまいます。
文字を変えていなくても行の順番を入れ替えただけでも動作が変わります。

言うまでもなく当然ですけど。

なので、仕事においては、プログラミングしたらどこをどういう風に変更したのかを社内のチームメンバーやお客様に説明することがあります。
これをソースコードレビューと言います。

そのソースコードレビューの際にWinMergeを使うと違いが分かり易いのです。
修正前と修正後のソースコードをWinMergeで表示すれば、変更箇所が分かります。
どこをどう書き換えたのかがひと目で分かります。

↓この図を見てください。
左が修正前、右が修正後。

 

 

 

 

 

 

 

 

どこをどう変えたか分かりますよね。

WinMerge使わなくても、エディタのウィンドウ2つ並べて見比べればいいじゃんと思う人もいるでしょう。
もちろんそれでもいいですよ。
でも、差異部分に色が付いている方がより分かりやすいですよね。
ソースコードレビューと言うか仕事における時間は有限かつ短いので、少しでも効率良く・分かりやすく・間違えにくくするという工夫が必要です。
『○○でやればいいじゃん(だから□□は不要)』じゃなくて、
『より分かり易く、誤解が生まれにくい方を使う』という考え方が必要だと思います。

このようにして変更前後のソースコードを比較したものを見ながら

  • 勘違いは無いか?
  • 不具合は無いか?
  • 既存の処理に良からぬ影響を与えていないか?
  • 仕様を満たしているのか?

等々を考えるわけです。

WinMergeはマージもできますが、何か?

で、WinMergeは比較だけじゃありません。

マージができます。

WinMergeっていう名前ですからね。
マージってのは、「結合」とか「混ぜる」とかっていう意味です。
一人でプログラミングをやるとこういう作業は必要無いと思いますが、複数人で一つのファイルを各々が改造することがあります。
で、最後にそれらを一つのファイルに混合しなければいけません。
その作業の時にWinMergeを使うと簡単にマージができるのです。

差異部分において、左ペインのコードを右ペインにコピーしたければ、Alt+右矢印キーだけでコードをコピーできます。
右ペインのコードを左ペインへコピーしたければ、左矢印キーです。
(設定によっては矢印キーだけでもコピー可能)

同じファイルでも全然違う離れた場所をそれぞれが改修している場合はマージは簡単ですが、全く同じ箇所を触っているとややこしいのです。(これを「衝突」とか」ぶつかる」とかって表現することが多いです)
その場合もWinMergeで両者のソースを見ながら正式採用する部分を選び出します。

実際のところぶつかってしまうとマージが大変なので、同時に同じファイルを複数人が改修しないように気をつけた方が良いですけどね。

WinMerge、3つのファイルでも比較・マージできるってよ。

最近のWinMergeは3ファイルの比較・マージができるみたいですね。私は3ファイルってのはやった事ないですけど、使い方によっては便利でしょうね。

まぁ3ファイル以上比較できるツールは他にもあるのでそう珍しいことでは無いと思いますけど。

WinMergeはTortoiseSVNでも使えるってよ。

ソースコードの管理をSubversion(さぶばーじょん)でやっている会社は多いでしょう。
※Git(ぎっと)については私は業務で使ったことがないのでよく分かりません

SubversionのクライアントツールとしてTortoiseSVN(とーたすえすぶいえぬ)を使っている人が多いでしょうか?
TortoiseSVNでRev間の差分を見る場合や衝突場所を見る場合、TortoiseSVN(に付属の比較ツール)で見てなおかつマージことができますが、この付属の比較ツールが使い難いと言うか分かりづらいんですよ、私はね。
で、付属の比較ツールじゃなくてWinMergeを使うことができます。
TortoiseSVNの設定でWinMergeを指定しておくと、比較・マージをする時にWinMergeが立ち上がるようになります。

TortoiseSVN付属の比較ツールの使い方がよく分からないなら、WinMergeに設定しておくのはマジオススメです。

WinMerge以外にテキスト比較ツールってあるの?

あります。
たくさんあります。
私は昔はDF(でふと読むらしい)というツールを使っていましたし、今でもサブで使っています。
WindowsにもMacにも同種の比較ツールはあります。

また、テキストだけでなくExcelファイル比較ツール、バイナリファイル比較ツールと数多くありますので、場面場面に合わせたツールを使い分ければいいでしょう。

私の場合、WinMergeをメインにしており、ソースコードの比較やExcelファイルの比較をWinMergeで行っています。
DFはバイナリファイルを比較するのに使っております。
バイナリファイルの比較はStirling(すたーりんぐ)を使うこともあります。

※昔はソースコードの比較にDFを使っていましたが、WinMergeが登場してからすぐに乗り換えてしまいました。周囲も乗り換えていましたし、行く現場行く現場でWinMergeが浸透していました。

でも、WinMergeはコメント部分の比較にどうも不具合があるみたいなんですよね。
明らかに差異があるのに同一と判断されることがあるんですよ。
現在の最新のVerでは直っているかも知れませんが、私は結構古いVerを使っています。
※もしかしたら設定が間違ってるだけなのかな?

後は、Rekisaってのが好きでたまに使います。
結構同種のソフトは豊富にあるので、色々使ってみると自分の好みのものが見つかるでしょう。

参考リンク

WinMerge
DF
Rekisa
Stirling

まとめ

プログラミングをする上で『差分』っていうのは重要です。
だからこそテキスト比較ツールと言うか差分確認ツールがたくさん出ているのです。

差分を蔑ろにすることなく確実に確認しましょう。
差分をしっかり確認するようにすれば、どこをどう変更したのかが把握しやすくなります。¯˘
どこをどう変更したのかが把握しやすくなると、新たな不具合を作ってしまう確率が減ります。

仕事においては改修前後のソースコード比較を必須にして欲しいと思いますが、個人の趣味でプログラミングするに場合もテキスト比較ツールはできるだけ使うようにすることをオススメします。
そうすればしょーもない不具合が減ってプログラミングがもっともっと楽しくなると思いますよ。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。