koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

『UNIXという考え方―その設計思想と哲学』読了しました

はじめに

UNIXという考え方―その設計思想と哲学』読了しました。

booklog.jp

何気なくターミナルを使って操作をしてはいるものの、UNIXがどのような考えのもとで作られたのかということは、あまり知りませんでした。

これを機に勉強したいという思いで本書を読みましたが、とても面白かったです。

学んだこと、読んだ感想をまとめたいと思います。

章立て

第1章 UNIXの考え方:たくさんの登場人物たち

第2章 人類にとっての小さな一歩

第3章 楽しみと実益をかねた早めの試作

第4章 移植生の優先順位

第5章 これこそ梃子の効果!

第6章 対話的プログラムの危険性

第7章 さらなる10のUNIXの考え方

第8章 一つのことをうまくやろう

第9章 UNIXとその他のオペレーティングシステムの考え方

各章ごとの感想

第2章 人類にとっての小さな一歩

設計思想の一つ、「スモール・イズ・ビューティフル」に関する内容でした。

部品をたくさん作り、小さなプログラムの集合としてOSを作っていくことで、保守しやすくなり、他のツールと組み合わせやすくなったりという利点が述べられていました。

この小さな部品を作って、それを組み合わせていくという考え方は「オブジェクト指向」に通じるものがあると思い、その利点を納得しながら読むことができました。

第3章 楽しみと実益をかねた早めの試作

人間による3つのシステムのお話でした。

人間に若年期、成熟期、老年期と3つのライフステージがあるように、システムにもそのような段階があるのだというお話。

システムにもライフステージがあるということは、私自身全く考えたことがなく、とても興味深い話でした。

第1のシステムから第3のシステムになるまで、その段階に応じてシステムに集まってくる人が異なるということで、「システムは人が作る」ということを改めて意識させられました。

第5章 これこそ梃子の効果!

プログラムによる梃子の原理を意識するというお話。

「偉大なプログラマはコードを借りてきて、それにより1時間働いたら、5時間や100時間分の成果を上げる」という内容でした。

自分には「コードを借りてくる」という意識をあまり持ててないなーと思いました。 例えば、便利なgemがあっても、RubyRailsの標準機能で実装することができたら、それでいいのではと思ってしまいます。

車輪の再発明をしない」、「コードを借りてくる」という意識をもっと持った方が良いのかなーと考えました。

また、自分は独自技術症候群になりやすそうだなーと思ったので、そこも注意していきたいと思いました。

第6章 対話的プログラムの危険性

全てのプログラムはフィルタであるというお話が印象的でした。

自分は経験がほとんどありませんが、自分の考えうる範囲で、Railsアプリを考えてみると、DB上のデータをどのように出力するかの違いに帰着するのかなーと思いました。

第7章 さらなる10のUNIXの考え方

その他のUNIXの設計思想のお話でした。

「森林を守る」、「沈黙は金である」などの言葉はユーモラスですが、その背景には「紙に出力した時点で、そのデータを操作することはできなくなるため、やめよう」、「不要なコメントを表示させないことで、パイプラインを使ったプログラム同士の連携がしやすくなる」など、とても納得できるものでした。

全体を通しての感想

総じて、とても興味深く、面白い本でした。

「小さなプログラムの集合を作り、組み合わせることで、最終的には大きなプログラムよりも有用なシステムとなる」という考え方はオブジェクト指向に通じるものがあると思いました。

また、「試作は早く行い、ユーザーの反応を確かめるべき」という考え方は「リーンスタートアップ」や「アジャイル開発」の考え方に近いと思いました。

このように昔に作られてシステムであっても、その背景にある考え方は現代の考え方に通じるということが、とても面白いと思いました。

技術や考え方は日進月歩で変わっていくものだと思いますが、良い考え方や優れた考え方は残り続けて、応用されていくものなのだと考えました。

そのため、時には昔の考え方を学ぶことで、現代の考え方がより理解できることもあるのだろうと思いました。

こういうのを温故知新というのでしょうか🤔