ソフトウェアの単純さ:本音と建前

ユーティリティコマンドはユーザが計算機を使いやすくするためのものだ。ただし、何を持って「使いやすい」とするかは難しい。システム全体を貫通するグランドデザインがあって、コマンド体系が首尾一貫している、例外がないというのも一つの基準だろうし、とにかく貪欲に便利そうな機能を取り込むというのもしかりだろう。どちらがいいというわけでもないし、そのさじ加減はプロジェクトリーダの腕の見せ所だろう。

GNUは後者側に属するプロジェクトだが、「grep -r を使う罪悪感」なんてことを考える人もいるらしい。蛇足だが、grepには文字コードロケールの問題があって、国際化とソフトウェアの複雑さのテストケースとして、GNU grepPlan9 grepを比較してみるのも面白いと思う。

しかし、「grep -r」ぐらいで嘆いてはいけない。Plan9には、「cp -r」すらない。つまり、ディレクトリfooからbarにファイルを再起的にコピーするには、例えばtarを使って、

% @{cd foo && tar c .} | @{cd bar && tar x}

のようにしなくてはいけない。

UNIXに慣れていると、正直戸惑うことも多い。「美しい」というのは手を抜くためのいい訳じゃないかと思うこともある私の、「Plan9使い」への道はまだまだ険しい。