📚

『Linuxのしくみ』を読んだ勢いで『UNIXという考え方』も読んでみた

2024/08/13に公開

https://www.ohmsha.co.jp/book/9784274064067/
以前、『Linuxのしくみ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識』を読んだ流れで、『UNIXという考え方』を読んでみたので、その感想と学びを記しておきたいと思います。
Linuxのしくみの記事はこちら

感想

  • 個人的に、OSなどのソフトウェアがこれまでどのように発展してきたのかという背景をほぼ知らなかったので、少しでもそこに触れられたのは教養として良かった
  • 原著が1994年と、自分が生まれるより前の本なのに、現代でも通ずる設計思想を持っていたのがすごい
  • 1~4章あたりは特に実践に生きる考え方だと感じた(内容は後述)
  • Linuxの仕組みを読んでたおかげで理解しやすかった部分が少しあった
  • 当たり前ではあるが、UNIX贔屓がちょっと強すぎる気もした(笑)
    • 目的と状況次第ではUNIXの思想に反することも正解だったりするはず
    • 「UNIX以外認めん」みたいな空気を若干感じてしまって、その態度UNIXの思想に沿ってます?と思うなど

レビュー

  • 星3.5/5くらいかな
  • 結構面白かったし学びも多かった
  • 一方でやや読みづらい部分があったり、目を見張るような発見は少なかった
  • (学びになることは多かったけど、現代では当たり前に言われてることも多かった印象)
  • シェルを少しでも触る機会がある人なら一読の価値あると思います

読了までにかかった時間

1日1章ずつくらいのペースで10日くらいで読み切れました。

印象に残った部分

最後の一文が最も簡潔にUNIXの最大の特徴を表しているなと思った

UNIXの理念はそう言う将来に向かうアプローチの一つだ。その本質は柔軟であり続けることだ。嵐が何度やってきても、風に揺れる気が折れることはない。

ソフトウェアの基盤であるOSの開発はまず間違いなく長期的なものになるので、柔軟性の優先順位はそりゃ高くなるよなと。

実践的な学びになった箇所

定理1 スモールイズビューティフル

  • 処理を細分化し、責務を明確にした最小のプログラムを作ること
  • そしてそれらを組み合わせて大きなプログラムを形成すること

定理2 一つのプログラムには一つのことをうまくやらせる

  • プログラムは、実現したいことの本質を捉えた最小の実装にすること
  • 開発者のクリエイティビティによって、余計な機能やオプションをつけがちなので耐えること
  • 一つのことをうまくやるプログラムを作れない=本当に実現したいことを整理して理解できていない

定理3 できるだけ早く試作を作成する

  • 立案に少しの時間をかけた後は爆速で試作を作ること
  • 「設計を完全にしてから実装に取り掛かるべき」という考えもあるが、これは憶測に過ぎない
  • 最小限の力で実際に動くものを作って確かめるほうが手戻りが少ない

定理4 効率より移植性

  • あらゆる環境で動作し、かつ移行のしやすいシステムにすること
  • それは目先の効率よりも優先するべきかもしれないよってこと(後々移行するときに困るから)

さらなる10のUNIXの考え方

  • (8)90%の解を目指す
    • 完璧なシステム(そもそもそんなものありえないと言える)を求めて、時間と労力を膨大に割くのではなく、90%の解を目指して効率的に開発を進める
  • (9)劣る方が優れている
    • 「適切」なことよりも「単純」であることを優先する

最後に

次は『「技術書」の読書術』を読んでみようと思います
https://www.shoeisha.co.jp/book/detail/9784798171548

それでは。ここまで読んでくれた方がいればありがとうございましたm(__)m

Discussion