[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

はじめに

今月の記事と GNU プロジェクトの関係は、周辺的なものにすぎない。お手元の GNU/Linux システムの GNU ツールをいくつか取り上げて、 こんな使い方もありますよ、と述べている点で、関係があるにすぎないのだ。 今月の記事の真の狙いは、プログラムを開発したり、使用したりする上での、 「ソフトウェアは工具だ」という考え方を説明することである。

ソフトウェアは工具だという思想は、Unix が最初に設計され、開発されたときの重要で不可欠な考え方だった (Linux も GNU も本質的には Unix のクローンである)。 残念なことに、最近ではインターネットや見栄えのよい GUI の勢いに押されて、 ソフトウェア工具論は流行らなくなっているようだ。 この思想は、様々な問題を解決するための強力な思考モデルを提供してくれるのだから、 まことに残念な話である。

スイス・アーミーナイフをズボンのポケットに (または、小物入れに) 入れて、持ち歩いている人は多い。スイス・アーミーナイフは持っていると重宝な道具だ。 それには、何本かのナイフ、ねじ回し、ピンセット、つまようじ、爪やすり、コルク抜き、 他にもたぶん、いろいろ付いているだろう。 日常のちょっとした雑用には、何にでも使える簡単な道具があれば済むのだから、 そうした用途にはまさにピッタリの道具である。

しかしながら、熟練した大工は、スイス・アーミーナイフを使って家を建てたりしない。 彼は、その代わりに道具箱を持っていて、そこには用途別の工具 — のこぎり、金槌、ねじ回し、鉋など — がぎっしり詰まっている。 しかも、彼は一つ一つの工具について、適材適所を心得ている。 ねじ回しの柄で釘を打ち込んだりすることは絶対にないのだ。

ベル研究所にいた Unix の開発者たちは、プロのプログラマやコンピュータ・サイエンスの専門家ばかりだった。 その彼らが、こういうことに気づいたのだ。 万能型のプログラムは、たった一つのプログラムを使えばよいので、 ユーザには受けがよいかもしれない。だが、いざ実際に作ってみると、そうしたプログラムは、

  1. 書くのが難しく、
  2. 保守やデバッグが難しく、
  3. 新しい状況に合わせて機能を拡張するのが難しい。

むしろ彼らは、プログラムは用途別の工具であるべきだと痛感した。 要するに、個々のプログラムは、「一つの仕事をきちんとやってのければよい」。 それ以上でもそれ以下でもない。そういったプログラムは、 設計するのも、コードを書くのも、修正するのも、ずっと簡単である — たった一つのことしかしないからだ。

それだけではない。適切な仕組みを使って、プログラムを組み合わせると、 全体が部分の総和以上になることにも、彼らは気づいた。 ある用途専用のプログラムをいくつか組み合わせると、 どのプログラムもそのために作られたのではない、ある特定の作業をやってのけることができる。 それも、それ専用のプログラムを書かなければならない場合よりも、 はるかに迅速に、かつ簡単にやってのけられるのだ。この記事の以下では、そうした使用法の (基本的な) 例をいくつか紹介する。(大事なことを一つ付記しておく。急がば回れだ。 必要になるかもしれないソフトウェア工具があれば、まずそれを作ること。 道具箱に適切な工具がまだない場合の話であるが。)


This document was generated on June 7, 2022 using texi2html 1.82.