プログラマが知るべき97のこと/コマンドラインツールを使う

現在ソフトウェア開発ツールは、IDE(Integrated Development Environment :統合開発環境)という形でパッケージングされて提供されることが多くなっています。MicrosoftのVisual StudioやオープンソースのEclipseがその代表例ですが、その他にも様々なIDEがあります。IDEはすで、に多数の人の支持を得ています。使いやすいだけでなく、ビルドプロセスに関わる細々した作業から解放されるからです。

使いやすい反面、IDEにはデメリットもあります。IDEが使いやすいのは、元々人間がしていた判断、作業の多くを裏で自動的にやってくれているからです。つまり、IDE以外のプログラミング環境を使ったことがないプログラマは、ツールが裏で何をしているのかをずっと知らないまま、という可能性もあります。ボタンをクリックしてから、実行ファイルがプロジェクトフォルダに現れるまでの間に行われることは、彼らにとっては一種の「魔法」かもしれません。

一方、コマンドラインのビルドツールで仕事をすれば、ビルド時に具体的にどういうことが行われるのかを詳しく知ることができます。makeファイルを自分で書こうとすれば、実行ファイルができあがるまでの間にどのようなステップ(コンパイル、アセンプル、リンクなど)を踏むのかを嫌でも知る必要があります。ツールのオプションを一つ一つ使って機能を確かめることも、知識を深めるのに大いに役立つはずです。コマンドラインのビルドツールをはじめて使う人は、GCCなどのオープンソースのツールを使うとよいでしょう。または、プロプライエタリなIDEとともに提供されているコマンドラインツールを使うという方法もあります。どれほど巧みに設計されたIDEであっても、結局は、コマンドラインツールにグラフイカルなフロントエンドをかぶせたものですが、実際にコマンドラインツールを使えばそのことがよく理解できるでしょう。

コマンドラインツールを使う利点は、ビルドプロセスについての理解が深まるということだけではありません。作業によっては、コマンドラインツールの方がIDEより簡単に効率よくできるものもあるのです。たとえば、検索や置換などの作業には、IDEに用意されているユーテイリテイよりも、grepやsedなどの方がはるかに便利です。スクリプトを書けるのもコマンドラインツールの強みです。スクリプト化することでツールによる作業を簡単に自動化できます。たとえば、1日1回決まった時間にビルドを実行する、1つのプロジェクトのバージョンを複数作る、テストスイートを実行する、といった作業を簡単に自動化できるのです。IDEで同じことが絶対にできないわけではないでしょうが、コマンドラインツールほど容易ではないのは確かです。IDEの場合は、ビルドオプションの指定にGUIのダイアログボックスが必要になり、ビルドプロセスの開始にもマウスのクリックが必要になるということが多いためです。開発作業にIDEしか使ったことのない人は、こういう自動化が可能であることすら知らないかもしれません。

ただここで忘れてほしくないのは、IDEは開発作業を簡単にし、プログラマの生産性を向上させるために存在するということです。私は何も「IDEを使うな」、と言っているわけではありません。私が言いたいのは、「IDEが裏でしていることをよく見て理解しよう」ということです。そのためには、コマンドラインツールを使ってみるのが最善の方法であるというわけです。コマンドラインツールを使うことで、IDEが裏で何をしているかを知り、ビルドプロセスを円滑に進めるのにどのような作業が必要かを知れば、IDEをより有効に使えるようになるでしょう。もちろん、コマンドラインツールの使い方を習得し、その素晴らしい能力と柔軟性を知ったために、その後はIDEを使わなくなることもあるかもしれませんね。