ソフトウェアをつくる道具
どの業界でもそうだとおもうのですが、何かを生み出す世界には道具が存在します。
(粉砕)ドライバー、とんかち、やすり、CAD、フォトショップ、イラストレータ・・・。
で、この道具がいいとか悪いとか、おすすめとか、そんなんつかえねーよとか、人それぞれ使うものが違ったりします。 愛着という言葉が一番よいのでしょうか。 以前、整備をやっている友達に、つかっているドライバーをみせてもらったことがありますが、なかなかの格好良さがありました。 若干、道具を造る人の趣味も入っているのが”道具”の面白いところ。
ソフトウェアを作る際にも道具は登場してきます。 ソースコードというテキストファイルを編集することが多いため、「テキストエディタ」が一番多く目にする道具です。
またそれらの管理に関連して、いくつかの便利グッツがあります。 あまりみられたこと、使われたことがない方も多いかと思いますので、その裏舞台を紹介します。
まずは、よく「diff とってみれば?」とかって使われる、ソースコード差分を表示するツール。 同じコードのバージョン違いなどで、相違点を見ることが出来ます。 ここでは、ビジュアルで見ることが出来る diff ツールのひとつ「df」からスクリーンショットを。
こんな風に、2つのファイルを左右に表示し相違点を表示してくれます。 また、これらから差分ファイルを生成するのもこれら diff ソフトの役割です。 diff から生成された差分ファイルを patch というソフトに与えると、修正されたファイルができあがるようになっています。
ソースコードはこんなふうにどんどん修正されていきますが、さっきの状態に戻したい!とか、リリースしたのどの段階だっけ?とかといった状態はよくおきます。 一人ならなんとかファイルコピーなどしてうにゃうにゃすれば、道具なしでできないこともありませんが、これが複数人の作業になるともう破綻。 また、たとえ一人でやっていたとしても、手管理というのはミスもあるし、精神衛生上よろしくありません。
こういうときにつかわれるのが、CVS や Subversion などのバージョン管理システムです。 各サーバにソースコード群を登録しておき、コミットやチェックアウトと呼ばれる操作でソースコードの登録をしていきます。 版数の管理はサーバ側で自動的にやってくれますので、元に戻したいといった要求にもちょっとした操作ですぐ答えることが出来ます。
また、多くのバージョン管理クライアントは上記 diff の機能もあわせて持っていますので、
CVS Repository – diff – SourceForge: wppluginsj/wp-kumonosu/wp-kumonosu.php
こんな風に、前のバージョンとの違いも簡単にみることができます。
これらの他にも、ソースコード内を全部検索する grep や、テキスト編集とはちょっと毛色が違いますが、プログラムを1行ずつ実行したり、その時点の変数をみたりできるデバッガなど、さまざまな道具を駆使してソフトウェアは作られていきます。
結構、「よくそんなに早く修正箇所分かりますね」といわれますが、案外これらを使っているだけです(笑) 特にデバッガは、プログラムを強制的にとめて、そこからボタンを押すごとに1行ずつゆっくり見ていけますので簡単に追えるんです。
WordPress とかだとこれで不具合箇所のあたりをつけて、grep で全検索。 で、 trunk (Subvertion 上の最新開発版)で同じようなところ見て、あ~もうなおしているじゃん、見なかったことにしよう、とかよくあります。 😛
このようなことをしようとすると、いろいろなソフトの組み合わせが必要になり操作が煩雑になります。 これを解決するのが、Eclipse や Visual Studio などの統合開発環境です。 テキストエディタはもちろん、grep、diff、CVS クライアントなどなどなど、使いそうな機能がオールインワンになっていて、各機能を連携して簡単に使えるようになっています。
手品のタネも、知ってしまえばな~んだと思うものです。 ソフトウェアの道具使ってみてください。
しかしながら、手品のタネは、分かっていても「すげぇ!技だ!」と思うこともしばしば。 ぼくもいつかそうなってみたいものです。 🙂