「UNIXという考え方」を読んで、その共感したポイント

[UNIXという考え方 | Ohmsha](https://www.ohmsha.co.jp/book/9784274064067/)
[Amazon - UNIXという考え方―その設計思想と哲学 | Mike Gancarz, 桂, 芳尾 |本 | 通販](https://www.amazon.co.jp/dp/4274064069)
![](https://images-na.ssl-images-amazon.com/images/I/518ME653H3L._SX330_BO1,204,203,200_.jpg)


## 感想

[「プリンシプル オブ プログラミング」](https://qiita.com/e99h2121/items/89f095f64086436cb0c4) でも触れられている「UNIX哲学」そのものの本。哲学と、その背景にある「理由」を理解できる。最後に他のOSにもリスペクトがあるのが素敵。読み方としては一通り「プリンシプル オブ プログラミング」的な本を読んだあとそれでもUNIXを敬遠するなら、これを読んでみたら意外と考えが変わるかもしれない本であった。

素人さんお断りのUNIXというものが最も大切にしているのはなにか？である。


## 要点
### イントロダクション
- UNIXの創造者たちは、ユーザーは初めからコンピュータを使えるとみなした。「ユーザーは自分が何をしているかを分かっている」前提。

### 第1章　UNIXの考え方：たくさんの登場人物たち

- 定理
    - スモール・イズ・ビューティフル（小さいものは美しい）
    - 一つのプログラムには一つのことをうまくやらせる
    - できるだけ早く試作する
    - 効率性よりも移植性を優先する
    - 数値データはASCIIフラットファイルに保存する
    - ソフトウェアを梃子(てこ)として使う
    - シェルスクリプトによって梃子の効果と移植性を高める
    - 過度の対話的インターフェースを避ける
    - すべてのプログラムをフィルタとして設計する


### 第2章　人類にとっての小さな一歩

- スモール・イズ・ビューティフル
- `test` コマンドの例
- 小さなプログラム
    - わかりやすい
    - 保守しやすい
    - システムリソースにやさしい
    - 組み合わせやすい
- 一つのプログラムには一つのことをうまくやらせる
    - 本質をつかめる
    
### 第3章　楽しみと実益をかねた早めの試作
- 試作によって学ぶ
- 早い試作はリスクを減らす
- 第一のシステムのコンセプトは人間の想像力を刺激する
- 「専門家」が第一のシステムで証明されたアイディアを用いて第二のシステムを作る
- 第二のシステムは委員会が設計する
    - 第一のシステムは7人に満たない人間の頭からひねり出されるが、第二のシステムの設計には30人以上もの人が参加することがある
    - 第二のシステムは贅肉が付き、遅い
    - 世間は第二のシステムを鳴り物入りで歓迎する
- 第三のシステムは第二のシステムで「火傷」した人が作る
    - 第三のシステムは第一のシステムと第二のシステムの裁量の特徴を組み合わせる
### 第4章　移植性の優先順位
- 効率より移植性
- 数値データはASCIIフラットファイルに保存する
### 第5章　これこそ挺子の効果!
- ソフトウェアの梃子を有効に活用する
    - 「他の追随を許さない」ことはある種問題でもある。誰にも真似のできない無類の仕事は、自分を縛る鎖ともなる。
    - よいプログラマはよいコードを書く。偉大なプログラマはよいコードを借りてくる
    - **独自技術症候群を避ける**
    - すべてを自動化する
    - シェルスクリプトによって梃子の効果と移植性を高める
### 第6章　対話的プログラムの危険性
- 過度の対話的インターフェースを避ける
- 拘束的プログラムはユーザーを人間と想定している
- 拘束的プログラムは「大きいものは美しい」アプローチをとる
- 拘束的プログラムは、他のプログラムと結合するのが難しい
- すべてのプログラムをフィルタにする
### 第7章　さらなる10の小定理
- さらに小定理
    - 好みに応じて自分で環境を調整できるようにする
    - オペレーティングシステムのカーネルを小さく軽くする
    - 小文字を使い、短く
    - 木を守る
    - 沈黙は金
    - 同時に考える
    - 部分の総和は全体よりも大きい
    - 90パーセントの解を目指す
    - 劣るほうが優れている
        - UNIX方式には、「劣るほうが優れている」という考え方が深く染み込んでいる。多くの人が「UNIXはこれこれのシステムに到底及ばない」と言い続けて気が。「UIがひどい」とか「まじめなOSとは思えない」とか。「劣るもの」は「正しいもの」や「間違ったもの」より生き残る可能性が高いことになる。
        - UNIX愛好者は劣るものの生存能力を指摘し、「優れている」と主張する。
    - 階層的に考える
- UNIXは自由な世界だ。自由な世界では、個人の自由な発言が尊重され、意見の相違は起こってしかるべきものなのだ。
### 第8章　一つのことをうまくやろう
- プログラマの仕事の結果は大きな梃子の効果を発生させる。
- 梃子の効果を利用するために、独自技術症候群を絶対に避けることだ。
- 今日、世界に存在するソフトウェアは偉大な共有資産だ。
- どこでも使えるようにプログラムを作ろう。
### 第9章　UNIXと他のオペレーティングシステムの考え方
- 「宗派」
- UNIXの理念は将来に向かうアプローチ。


## 参考記事
[【技術書】UNIXという考え方-その設計思想と哲学を読んだ - suzu6の技術ブログ](https://www.suzu6.net/posts/316-the-unix-philosophy/)
[「UNIXという考え方」 - 覚えたら書く](https://blog.y-yuki.net/entry/2016/09/13/010000)
[【Unixという考え方】読書メモ](https://zenn.dev/mtd6458/articles/afbdda9481d511)
[『UNIXという考え方』　読書メモ - Qiita](https://qiita.com/ohkawa/items/2e204b7a9e8139741a01)
[「UNIXという考え方」から連想されるすべてのアイデア | DevelopersIO](https://dev.classmethod.jp/articles/re-unix-philosophy/)
[『UNIXという考え方』新人エンジニアにオススメする技術書 | IIJ Engineers Blog](https://eng-blog.iij.ad.jp/archives/5935) にはこう書かれている。
> そしてこの本が発行されたのも 1994年と、かなり古い。一般的な技術書なら、もうなんの役にも立たないでしょう。
> (もしや、今年配属された新人の皆さん、まだ産声を上げていないのでは…?)

しかし読んで見れば分かる通り何の役にも立たないことはまったくないという話。また[Amazonの書評](https://www.amazon.co.jp/dp/4274064069) にはこんな感想がある。
> はじめUnix/Linuxにふれた時は、**「なんでこんな複雑なコマンドを書くの？何故ユーザーインターフェースを使わないんだ」とわけが分からず、象牙の塔に籠もったマニアックな人たちが他の人たちに立ち入られないような複雑なものを作ったんだなぁという感想であった。
> それが、この本を読み、この本を背景とした勉強会に参加したら、一気に見る目が変わった。**
Unixが目指した世界、その背景にある哲学が、この本を読むとよく分かる。
それが分かると、自分がシステムを使って何を実現しようとしているのかも理解できるようになった。

ということで意外と我々開発者そのものがUNIXという考え方で共感し得るのかもと思ったりする。

https://pc.watch.impress.co.jp/docs/column/ubuntu/1407176.html

[名著「UNIXという考え方 - UNIX哲学」は本当に名著なのか？ 〜 著者のガンカーズは何者なのかとことん調べてみた - Qiita](https://qiita.com/ko1nksm/items/f1800c6ff6dd649d7429)

以上です～