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

読みたいと思っていた「UNIXという考え方」を読みました。

エンジニアさんのブログや読書記録などでよく書名を見かけていて読みたいとなあと思っていましたが電子化が(たぶん)為されていないようだったので、いずれ機会を見て…と思っていた矢先、書店で偶々発見してしまったのでその場でサッと購入したものとなります。リアル店舗はこのような出会いがあるから良いですね。

概要

目次込みで約150ページ。やる気が満ちていればさっと読み終えることが出来る量だと思います。残念ながら私は1章毎に読み進めてその度に休むという塩梅でしたので、読み終えたのは約2週間後でした…。

感想

題名にもあるようにこの本は「UNIXの考え方」について記されたものですが、通して読んでみると現代でもソフトウェア開発の心得として幾度と無く見聞きする内容が記載されていまして、良い意味で新鮮味が無いように思えました。そういう意味ではこのような考え方が現代では当時より広範囲に普及した一方、執筆当時はそのような状況ではなく色々あったのだろうな…と無駄に感慨深げになりました。

その見聞きする内容ですが以下のようなものです。

私自身、以前よりもプログラムファイルを書くほうになりました。その上で体感したこととしては、小さくしようと思っていても気付いてみれば無暗にプログラムを大きくしだしていることです。機能を実装するため、関数を追加したり何某を追加したり…。やはり強く心がけるレベルでないといけないよねと改めて思いました。

機能実装絡みで言うと、「必要以上のユーザフレンドリーを避ける」もまた思い当たる節があったりしてなんともはや…でした。本書ではその例を「対話型のインターフェース」として記載していますがまさにそれが私の経験と合致したりもして、読んでいて思わず「あー…」っていう顔をしていたと思います。

プログラムをフィルタにする=(パイプなどで)組み合わせることを想定する、と捉えています。本書ではパイプを使用するときに意識するであろう標準入出力とエラー出力を挙げて、そのような観点でも拘束的インターフェース(対話型のインターフェースなどを総じてこう呼んでいた)は使用するべきではないとしていて「確かにそうだね…」となりました。

出力の話は他にもありまして、例えばlsではカレントディレクトリにファイルが無い場合は何も出力されず終了しますが、これは逆に何かしらが出力されてしまった場合にその内容を処理することを別途思案する必要が生じるため、何も出力されないことが合理的だとしていてなるほどとなりました。この辺は、これが正解!だというよりもまさに考え方(思想)に基づく実装という感じがしていて納得し易かったです。

他の点についても的確な話をされていて、改めて自身が抱いている考え方を捉えなおすにはぴったりかと思いました。

うーん…と思ったところ

まとめ

UNIXというものの考え方の良さが書かれていて、現代に根付いていることが実感できる良い機会でした。じゃあ後は実践に移すだけですね…。言うだけならタダ。

© てっくらのーと/mkr-note 2024