taro-h’s diary

たろログ

ブログです。近況報告とか振り返りとかとか

「UNIXという考え方―その設計思想と哲学」を読みました。

はじめに

かなり前の話になりますが、「Unixという考え方」という本を読みました。 手書きのメモを取りながら読んだので、それを貼りつけつつ、感想を述べたいと思います。

PDF

f:id:mutsu00062:20200314020643j:plain f:id:mutsu00062:20200314023652j:plain

PDFに書いてある中で、特筆したいこと

  • Small is Beautiful
  • 効率より移植性

この2つの理念が刺さりました。

Small is Beautiful.

まずこの概念です。
「変更を容易にする」という目的を優先して、できるだけプログラムの単位は小さくすることが推奨されています。
一つの理想の形が、shellコマンドとpipe&redirectを使って行う一行shellです。コマンドの組み合わせを変更することで非常に柔軟に処理を変更することができるというのがその説明で、今までの業務での実体験もありかなり納得しました。

効率より移植性

2枚目のPDFの一番上に書いてあるとおり、「より高速なマシンが現れるので、移植性が最重要」と考えます。
コンピュータの処理速度の向上のスピードは非常に早いので、効率の問題については自然と解決するという前提に立ちます。
移植性を失って、新しい新機種のマシンにアプリケーションを移せなくなるのが一番ヤバイと考えます。
効率化を全く諦めるわけではありませんが、移植性を犠牲にするような効率化という選択肢は行わないのが理念です。
具体例として、現状のホストコンピュータの性能をギリギリまで引き出すためにコードをハードウェアに合わせてチューニングするようなこと(トリッキーな調整など)は行わないという例が挙げられていました。

感想

割とさくっと読めた本でした。難しい概念も出てきませんでしたし、わからない単語を調べるようなこともそこまで多くなく、寝る前に寝転がって読む本として非常に良かったなと思います。

実際の開発、設計の役に立ちそう

この本を読んだときには、「ふーん、そういう考え方があるんだなぁ」程度の認識だったんですが、その後に「あ、この考え方は実際にこういう場面で適用できるな」という場面に出くわしました。
運用自動化についての書かれたスライドの中で、です。

speakerdeck.com

このスライドを読んだとき、「ビビッ!!」っとすごい衝撃を受けました。特に3つめ、「自動化は小さな単位で、変更に強い形で実装する」というソリューションですね。
この本で読んだ、「Small is Beautiful.」の理念が生きていましたし、その利点である変更に強いという要素が見事に活かされていました。
この本を読んでいなければ、このスライドを読んでそこまでの衝撃は受けなかっただろうと思います。

UNIXってこういう考え方するんだ!おもしろいね!」というような知的好奇心を満たすだけではなくて、しっかり今後の開発等においても役に立ってくれそうで、読んでよかったなと思います。

*1:今改めてこのスライドを読んで、「使い捨て」にするという心持ちも大事だなと思いました。 ついつい夢のある、しっかり設計したシステムを作り込んでしまうので...(そして大概ちゃんと完成しないので)