最近読んだ書籍の紹介(UNIXという考え方)
本の紹介
タイトル
- UNIXという考え方 その設計思想と哲学
読んだきっかけ
- 確か自分が好きなエンジニアがTwitterか何かで紹介していたから。 ずっと読みたいなーって思っていたけど。実務や資格の学習とかで中々読む時間が無く、ようやく読了。
- 20年前から現代(令和)まで通ずるエンジニアとしての本質が書かれているとのことで、興味を持った。
要約
- 概要は以下の9項目。内容はこの9項目について、アメリカ人らしいジョークや実例(20年前の話とあってかなり古い)を 交えながら、解説してある。
Small is beautiful.
1つのプログラムには1つのことを上手くやらせる。
できるだけ早く試作する。
効率より移植性を重視する。
数値データはASCIIフラットファイルに保存する
ソフトウェアを梃子(てこ)として使う
シェルスクリプトによって梃子の効果と移植性を高める。
過度の対話的インターフェースを割ける
すべてのプログラムをフィルタとして設計する。
この9項目について、自分の所感。
Small is beautiful.
1つのプログラムには1つのことを上手くやらせる。 -> 上記2点は今の時代では当然かなと思う。ただ、当時の時代はそこまで当たり前ではなくて、 これができていないソフトウェアは、急速なハードウェアのようなプラットフォームに追従できなくて、 敗北していったらしい。今の進歩とはまた違っていて、CPUやメモリ等の本当にハードの部分の進歩。 この辺りの時代背景がかなり具体的に書いてあって、歴史の教科書としてはおもしろかった。
できるだけ早く試作する。 -> これも当たり前なんだけど自分が本当にできているのか、と自問自答したところ、できていない部分もあるな、と思い反省した。 今の時代は顧客側もネットからの情報やIT子会社抱えてたりでそれなりに知識がある状態で、"調べます。"とか"検証します。"みたいな スピード感では、とても追いつけないんだろうなと思った。
効率より移植性を重視する。
数値データはASCIIフラットファイルに保存する。 -> ここに対する意見は1, 2と同様。
ソフトウェアを梃子(てこ)として使う
シェルスクリプトによって梃子の効果と移植性を高める。 -> シェルスクリプトには短い文字数で、膨大な処理が書けるんだから、上手く使おうねっていう話。 今のPythonに通ずるような話でおもしろかった。
過度の対話的インターフェースを割ける
すべてのプログラムをフィルタとして設計する。 -> ここも当然なんだけど、具体例がおもしろかった。特にUNIXは"沈黙を金"と言っている箇所。 WindowsとUNICのファイル一覧出力処理について。
こんな感じで、UNIXはファイルが何も無かったら、何もメッセージを出力してくれないから、 不親切ですか?そうでもないよね?っていう一例。
UNIXなら、以下みたいな使い方ができる。
ls -l | awk '{ print $4}' | sort
awkコマンドをパイプで繋げて、lsの出力結果のうち4番目の値のみを出力できる。 これがWindowsのように"DIRECTORY : NO FILES FOUND"っていう結果を出力してしまったら、 "FOUND"を出力してしまうよね。邪魔だよね。UNIX、無駄が無くていいよね。 みたいな話。
所感
本が書かれたのは平成13年(2001年)2月23日。約20年前。最近のバズワードでもある"マイクロサービスアーキテクチャ" みたいな考え方が確かに記載されてあったけど、正直そこまで新鮮な考えは無かった。自分から進んで人に薦める程の書籍では無いかな、という印象。ただ、20年前からこの考えを提唱していることは シンプルにすごいと思った。
本の内容とは関係ないが、休憩の取り方は大事だと思った。休憩時間にスマホとかの電子機器を触るのはNG。 スマホ触ると5分くらいの感覚で15分経ってる。外の景色見ながらぼーっとすると、15分くらい休んだ感覚で3分くらいしか経ってない。 スマホってやっぱり使い方を気を付けないと、無駄な情報を沢山取り込むことになる。
ブログでも口頭でもいいが、やっぱり学んだことはアウトプットしないと、自分の理解度は計れない。 こうやって文章にすると、自分が如何に技術的に未術で、普段から感覚的に話をしているかを痛感する。 もっと開発をするなり、勉強をしたことをアウトプットしながら、文字通り体に染み込ませて、自分の知識レベルの基準を高めたい。