【書籍】UNIXという考え方 - その設計思想と哲学

今回ご紹介するのはこちらの書籍。

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

イントロダクション

標準入力、標準出力、標準エラー。
僕はその存在を知りながら、なぜその利用価値に気付かなかったのだろうか。

本書を薦める対象者

  • 標準入出力やシェルスクリプトの実用性に疑問を持っている人
  • ソフトウェア開発に終わりがあると思っている人
  • UNIXにあまり触れたことがない人
  • 全人類

内容のご紹介

50年もの間、様々な人を魅了し愛されてきたOS、そうUNIXです。
本書はそんなUNIXの背景にあるソフトウェア設計の思想・哲学を説いている本になります。

全体で150ページ程度と薄めの本です。
目の前にパソコンがなくても読めちゃうので、通学/通勤のお供にもってこいですね。

本書では以下の9つの定理について、著者の体験談や例え話を用いて分かりやすく説明されています。

  • [定理1] スモール・イズ・ビューティフル
  • [定理2] 一つのプログラムには一つのことをうまくやらせる
  • [定理3] できるだけ早く試作を作成する
  • [定理4] 効率より移植性
  • [定理5] 数値データはASCIIフラットファイルに保持する
  • [定理6] ソフトウェアの梃子を有効に活用する
  • [定理7] シェルスクリプトを使うことで梃子の効果と移植性を高める
  • [定理8] 過度の対話的インタフェースを避ける
  • [定理9] すべてのプログラムをフィルタとして使う

また、必須ではないとしつつ、多くの人がどちらかというと賛同する、以下の10の考え方についても言及されています。
※ ()内は僕の補足です

  • (1) 好みに応じて(ユーザが)自分で環境を調整できるようにする
  • (2) オペレーティングシステムカーネルを小さく軽くする
  • (3) 小文字を使い、短く (コマンド名の話)
  • (4) 森林を守る (紙に印刷した操作できないデータはもう死んでいる)
  • (5) 沈黙は金 (無駄にメッセージを出力しない)
  • (6) 並行して考える (CPUをできるだけだけ忙しく働かせて活用する)
  • (7) 部分の総和は全体よりも大きい (再利用するために小さい部品を組み合わせて大きいアプリを作る)
  • (8) 90パーセントの解を目指す
  • (9) 劣る方が優れている (単純さと完全性の優先度の話)
  • (10) 階層的に考える

原著は1995年発行で、翻訳版の本書は2001年初版発行となっており、もはや古典です。
従って本書での具体例は古く、人によっては馴染みのないものかもしれません。

しかし、主張する考え方はシンプルでいて力強く、多くの人にとって有用なものです。
ソフトウェア開発者だけでなく、他の仕事をされている方にとっても、きっと良い刺激になるかと思います。

感想など

僕が本書に出会ったのは社会人になって数年後だったけど、Linuxに初めて触れた学生の頃に読んでおきたかった一冊。

僕は仕事でUNIX系OSに触れることはほぼ無い。
会社では支給されているWindowsマシンしか使えない。
ソフトも勝手にあれこれインストールして良いわけではなく制約も多い。

そんなWindowsユーザの僕にとって本書で一番印象深かったことは、

  • 人ではなく他のプログラムと対話するプログラムを作るべき
  • そのプログラム間のデータの受け渡しには標準入出力を使用するべき

という旨の主張だった。

標準入力、標準出力、標準エラー。
ほとんどのプログラミング言語の入門書で、最初の方に紹介されているであろうこの機能。
僕はその存在を知りながら、なぜその利用価値に気付かなかったのだろうか。

これらはUNIXに限らずWindowsでも勿論使える。
ツールで処理するファイルを指定してもらう為に、ファイル選択ダイアログなんて要らない。
リダイレクトして標準入力でいいじゃないか。
そこから次のプログラムにデータを渡す為に、中間ファイルや共有メモリなんて要らない。
標準出力からパイプでつなげればいいじゃないか。

そう、テキストデータならね。

まぁ、業務では何だかんだで文字を扱うことが多いので、様々な場面において良い指針になると思う。
Excelファイルだって中身は大半テキストだしね!

今ではMicrosoft公式のWSL(Windows Subsystem for Linux)というものが登場し、UNIXの豊富なコマンド群とシェルスクリプトがWindows10で使える。
本書の哲学によって生み出される恩恵を、Windowsユーザも存分に享受できる環境が整いつつある。

もし本書を読んだことがない方は、来たるべき全人類UNIXer化時代に向けて、時もOSも越えてきた哲学に一度触れてみてはいかがだろうか。
 
 

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学