StudyCS.log

CSを勉強している人が、学習の足跡を残すための手記

「UNIXという考え方」を読んだ

f:id:HoriK:20210227112358j:plain

 大学に入ってからというもののしばしばLinuxを利用しているが(というか普段使いしているのだが)、どこかLinux(またはUnix)由来のシステムやコマンド類に違和感を感じているところがあった。例えばLinux(またはUnix)には多くの小さなコマンド類が存在しているが、そのほとんどが単一の小さな仕事しかこなさず、もっと言えば一見して使い道のなさそうなものも用意されている。実を言えば今まで、これらを効果的に利用する場面なんて本当に存在するのか、小さな機能を統合してしまって大きく強力なコマンドに差し替えたほうが良いのではないか、と思っていた。

 この本はこのような違和感とLinux(またはUnix)の思想を解さない上述のような見当違いな発想を払拭してくれた。

 そもそもコマンド類は組み合わせて利用することで初めて真価を発揮するものだ。その際、コマンドの一つ一つを単機能の小さなものにすることで、シェルは高い柔軟性を獲得することができるし、コマンド自身のプログラムも保守されやすくなる。

 ユーザとの対話を避けている部分にも納得がいった。ユーザに見せるために書かれる、ある意味無駄な(システムには影響しないような)出力ストリームを削ることで、コマンド同士をスムーズに連結させることができるようになっている。考えてみればとても合理的だ。

 そして、コマンド類だけでなく、小さく作って組み合わせるという思想はLinux(またはUnix)のシステム全体、ひいてはコミュニティ全体に及んでいる。多くのプログラムをこの哲学に沿って設計することにより、ソフトウェアの柔軟性と再利用性、移植性が高まり、結果的に開発効率が良くなる。

 Unix哲学に従ったソフトウェアがどうしてここまで発展を続けてこれたか、Linuxディストリビューションを始めとするソフトウェアの盛衰がどのようなサイクルで回っていくのか、これらの理解に結びつく良書であった。

参考文献

 「Mike Gancarz: 著 芝尾桂: 監訳 『UNIXという考え方』2001/02/23 オーム社