[読書のススメ]「UNIXという考え方」を久しぶりに読み直してみた

「UNIXという考え方」を久しぶりに読み直してみた記録です。読んだことが無い方の参考になれば幸いです。
2019.04.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

名著は何時読んでも何回読み直しても良いものです。特に「UNIXという考え方」は今尚設計思想を知る一歩でとてもおすすめしやすい一冊です。

過去の職場にて「読んだことがない」というケースに遭遇したことを思い出し(思えば単なるフリだったのかもしれませんが)、

  • 自分の常識は他人の非常識
  • 人は忘れる生き物

ということもあり、改めて読み直してみました。

当書について

ページ数148というコンパクトな構成で、コードのサンプル等は例話での必要最低限に留められており、あくまでもUNIXの考え方を示した一冊となっています。強いて言えば、各種コマンドについてある程度理解があるほうが読みやすいかもしれません。

初版1刷は2001年2月23日でした。手元にある版は2001年9月10日の初版12刷で15年以上経過していましたが、内容は今でも当然のように通用します。

章構成

  1. UNIXの考え方:たくさんの登場人物たち
  2. 人類にとっての小さな一歩
  3. 楽しみと実益をかねた早めの施策
  4. 移植性の優先順位
  5. これこそ梃子の効果!
  6. 対話的プログラムの危険性
  7. さらなる10のUNIXの考え方
  8. 一つのことをうまくやろう
  9. UNIXとその他のオペレーティング・システムの考え方

内容構成

以下に挙げる9つの定理の解説が主になります。

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

やはり変わらないこと

幾つかの例話は流石に大分古くて通じないケースもでてきたなと思いましたが、やはり多くは今でも変わらないようです。

特に以下辺りの例話は不変だと感じました。ただ、シェルスクリプトは今だとGolangPythonあたりも含まれるでしょうか。

1つのプログラムには1つのことをうまくやらせる

プログラムを小さく収めることは大変むずかしいですが大事なことです。AWSの各サービスにも通じるものがあると感じます。

追いつめられた人間が第一のシステムを創る

確かにそうだなと思いましたが、これが頻発するのは余りよろしくない状態だと思います。

「正しく」やっている時間などない

追いつめられた人間が第一のシステムを創る」に掛かる例話ですが、「火事場だとそうなるよな」と思うしかありません。

シェルスクリプトによって梃子(てこ)の効果と移植性を高める

手出しできる人材は今でも本当に貴重だと思います。

環境によっては貫くのが難しいと感じたこと

職場環境もあれば、有識者の不在等も影響すると思われる例話です。

コードを他人が梃子として使う事を認める

今ではgithubでの公開等も含まれるでしょう。問題は業務中に書いたコードをオープンソースとして公開できるかどうかだと思われます。

すべてを自動化する

自動化に関して疑惑を持つケースは勿論、自動化されることへの危機感を持つ人が出てくることもあります。知識ある人の指導があれば大体は問題ないと思われます。

まとめ

挙げようとすれば結局全章・全項・全例話を挙げる事となり、それは単なる転載に近い行為だと考えました。故に、自身が今一度気をつけるべきだと感じた箇所を中心にしています。

通勤電車やお昼及びティータイム等、空き時間に未読の方が手にとってみることをおすすめするのは勿論のこと、既に読み終えた方も再読する切掛になれば幸いです。