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

Posted on 2020-08-09 in zakki

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

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

概要

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

感想

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

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

  • 小さくする
  • 一つのことを上手くやる
  • 必要以上のユーザフレンドリーを避ける
  • 他から流用する
  • プログラムをフィルタにする
  • 早く作って早く評価する

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

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

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

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

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

うーん … と思ったところ

  • 他から流用する、を補強する記載として " 他から流用できるように自身もソースコードを公開する " という箇所があるのですがこれを言い切った視点があまりピンと来ませんでした。

    • この " 他から流用する " 話に関連して、1 行 1 行丁寧にプログラムを記載するよりも既存のプログラムを繋ぎ合わせることに秀でた人が成功を収めた、的な話があって少し極端だなあ … と思ったりはしました。
  • ちょくちょく "UNIX プログラマ is super sugoi" みたいな記載があって鼻白んだ。

    • 主語が大きい …。ジョークのつもりなのかなと思ったけど特に笑えなかった。

まとめ

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

感想