シコウノキロク

雑記ブログ。誰かの役に立ったり立たなかったり

よいプログラマと偉大なプログラマ[UNIXという考え方]

海外を転々としながら仕事をしており、私が尊敬しているエンジニアからオススメされた書籍「UNIXという考え方」。

本書を知るきっかけになったのは、Linuxディレクトリ構造やコマンドがしっくりこなくて四苦八苦していることを相談したことに端を発します。

話を聞いてすぐに購入していたものの、yumyum...と叩くことに意識が持って行かれて積読していました。

しかし、ある日ふと目に留まってから気になって仕方なかったので読んでみたところ、

最近生じてきたモヤモヤにすっかり応えてくれた!この本すごくいい!!

私のような初心者趣味プログラマにも有用だったのですが、読む人のレベルによっては捉え方が異なるのではないでしょうか。

エンジニア経験を重ねた後に再度読み返したいですね。

そんな素晴らしい本書をぜひ布教したいと思い、記事を書くこととしました。あとは、どう感じたのかの備忘録。

では、本書について簡単に説明した後、私が現時点で特に刺さったところ3点を書いていきます。

目次

  • 本書について
  • 小さなプログラム
  • 試作によって学ぶ
  • 偉大なプログラマ

本書について

現在のUNIX参考書のほとんどは、UNIXUNIXに含まれる大量のツールの使い方を紹介するに留まっている。本書では、それらの背後にある基本的な考え方を取り上げる。

UNIXには基礎をなす定理が9つあります。それらをUNIXの歴史や背景を説明することで我々の考え方に落とし込んでくれるのが本書です。

読み物としても面白く、UNIX?あーLinuxの元になったOSだよね。というレベルの知識の私でも飽きずに最後まで一気通読できました。

取り上げられている話題が興味深かったこともありますが、定理に行き着くまでにUNIXが辿ってきた問題や解決法に至る考えの道筋を丁寧になぞってくれて腑に落ちやすかったからです。

本を読んでいる間は凄腕の方達の考え方をトレースしているため、私もUNIXハッカーの気分です。

冗談はさておき、以下から、UNIXの基礎をなす定理の中で私が特に刺さった定理の4つを取り上げています。

小さなプログラム

モヤモヤ:関数・メソッドはどの程度の行数にすればいいのか

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

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

結論:ある出力が得られる範囲で、可能な限り小さくする

あるモジュールを作る場合、極端な例ですと全て同じメソッドに書いても良いわけです。

しかし、保守性や移植性からある程度細分化するのが推奨されていますよね。

そのある程度の基準がわからずモヤモヤしていたのですが、現時点で指針ができました。

コードを書いた量も大したことないので、取り敢えず上記のような簡単なルールで運用していきます。

試作によって学ぶ

モヤモヤ:完璧でスマートなアイデアはどう実現化するのだろうか

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

結論:大至急試作を作る。話はそれから

最近勉強中のスタートアップと似通った考えです。

本書では三つの段階を経ることで三つ目のシステム-最終的な完成品-に行き着くとしており、一つ目のシステムは正しくなくても素早く作る必要があると述べられています。
作ったシステムを使ってもらい重要なものが何であるかを早く教えてもらうためです。

最初は、最終的な完成品を目指すよりもスピードとフィードバックを重視!

偉大なプログラマとは

モヤモヤ:外部モジュールやパッケージばかり勉強・使用するプログラマでいいのか

定理6:ソフトウェアの梃子を有効に活用する

結論:先人の偉大な知恵はどんどん勉強して使っていく!

これが一番の気づきでした。

とてもありがたいことで、外部モジュールはすごく便利で常に使わせてもらいます。

しかし、これらの機能や使い方を調べている際に、モジュールの使い方を学んでいる?これいいのかな?と思っていました。
言い換えると、よいコードの書き方やアルゴリズムの考え方等を勉強しないとプログラマとしてどうなんだろうと。

本書では、よいプログラマは良いコードを書くが、時間がかかり効率の悪いプログラマとみなされかねない、と述べられています。
一方で、偉大なプログラマは他人のモジュール・プログラムを借りてきて、その有用性を高めつつ素早くアプリケーションを作成します。

現時点の私では有用性を高めるというのは難しいですが、偉大なプログラマの振る舞いを念頭に置きながら活用することはできます。

だから、モヤモヤした気持ちを持つのではなく、先人たちに感謝を述べつつ積極的に拝借させてもらいます!

ただ、よいコードやアルゴリズムに対する興味が日に日に強くなっているので、気づいたら勉強している可能性は高いです。

さいごに

いかがだったでしょうか。私は初心者の現時点に読んで良かったです。紹介してくれたエンジニアに感謝です。

本書を読んだことでモヤモヤが晴れ、気兼ねなくpipやyumyum...叩くことができます。

気づきに突っ込んでもらえたり、本書に興味を持っていただければ幸いです。

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

  • 作者:Mike Gancarz
  • 発売日: 2001/02/01
  • メディア: 単行本

ちなみに、綺麗にまとめてくださっていたり、最初の30ページを無料で読めたりしますので、気になる方は下記リンクよりぜひ!

UNIXという考え方 The UNIX philosophy · GitHub

UNIXという考え方: その設計思想と哲学 - Mike Gancarz - Google ブックス