「UNIXという考え方 — その設計思想と哲学」を読んだ

Yohei Noda
Yohei Noda’s Blog
5 min readMay 4, 2019

10日間のGWの間に本を何冊か読んだのですが、その中の一冊「UNIXという考え方-その設計思想と哲学」に、汎用的で現代の設計につながる考え方がたくさん書かれていたので紹介します。アジャイル開発やマイクロサービスなどにも通ずる古典と言えそうです。

実はこの本は、私がUNIXコマンドを初めて叩いた頃に軽く眺めことがあったのですが、当時はふーんそうなんだ、と思ったものの、経験も考えも浅かったからか、あまりピンとこなかった記憶があります。ここ数年はプロダクト方向性や各機能がもたらす影響や実装の設計など、色々と広く考える機会が多かったので、今回は”UNIX”という枠を超えて汎用的に捉えて読むこともできたように思えます。

原著が出版されたのは1994年と、随分古い本ですが、随所にUNIXプログラミングだけに依存しない考え方が散りばめられていました。

なぜ読んだのか

ベテランエンジニアの本を読んだり、記事を読んだり、話を聞いたりするうちに、UNIX、またはUNIXプログラミングに触れてきて得た考え方、が根底に流れているような気がしました。そこで、少しでもそういった源流の考え方に触れられるのではないか、と思って読んでみました。

構成

最初の1–6章で以下の9つの定理に触れています。

1. Small is beautiful.

2. Make each program do one thing well.

3. Build a prototype as soon as possible.

4. Choose portability over efficiency.

5. Store numerical data in flat ASCII files.

6. Use software leverage to your advantage.

7. Use shell scripts to increase leverage and portability.

8. Avoid captive user interface.

9. Make every program a filter.

また、7章で追加の10の考え方、8章で具体例とまとめ、9章で他のOSの考え方の違いについて触れています。

以下、気になったところのメモ

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

第3の定理である、

Build a prototype as soon as possible.

に関連する箇所で、

人間には、3つのシステムしか作れない

から始まる一連の文が面白かったです(3.1〜)。様々な技術要素のエコシステムに関しても、様々な製品・サービスの栄枯盛衰に関しても、全てを語っているようで。

  • 第1のシステムは、締め切りに追われた状況が人の想像力に火をつけ、元々の簡単な目標よりも便利なことができそうだと気き、「正しくやっている時間などない」状況の中でシンプルな物を作る。
  • 第2のシステムは、第1のシステムの魅力に寄せられてきた専門家が集まって大人数の議論によって設計を決定する。様々な機能がついて、市場には受け入れられる。しかし、それを広める「自称専門家」の人数が増えると共に質はどんどん落ちていき、ユーザーから少しずつ批判される。
  • 第3のシステムは、第1と第2のシステムによって得られた確固たるコンセプトと必要な機能を元に「正しく」設計してできる

第3まで到達するには、第1と第2を踏む必要があり、それをいかに速くやるか、というのが重要ということでした。試作と改良のサイクルを繰り返して改善していく、というのは、現代の基本的な開発スタイルによく似ています。

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

対話的プログラミング(=拘束的プログラム)の「ユーザー」は、あくまでユーザーを人間としていて、

人間の限界によって動作を制限されるようなシステムは、潜在能力をフルに発揮できない

ということでした。当たり前のことかもしれませんが、インターフェースを設計する際には「ユーザー」が誰なのかを考えなければならないです。その判断を誤ると下手な限界を作ってしまうことになりかねないですね。やや無意識にやっていたので、今後書く時に意識してみないとわからないですが、意識してみると間違っていることに気がつくことがあるのかも…どうでしょう。

また、この章では、

コンピュータの出現以来、書かれてきた全てのプログラムはフィルタだ

となんだか壮大そうに見えるけど確かにシンプルに考えればそうだな、というようなことが書かれていました。これを意識することで

アプリケーションをユーザーフレンドリーにしたい

という誘惑(!)に打ち勝てるということでした。注力する箇所によっては、”ユーザーフレンドリー”が悪にもなるという考え方はちょっと目から鱗でした。

まとめ

1994年に書かれた、既に古典と言っても良いかもしれないこの「UNIXという考え方」ですが、想像以上に良い本でした。自分が子供だった平成初期の頃のマシンで動いていたものが令和の時代の今も動いていること自体が単純にすごいし、それを開発した人達の設計思想を垣間見れた気がします。

こういった長く読み続けられている本は、いかに抽象的に捉えて今直面している具体に照らし合わせてみるか、で面白さがグッと変わってきますね。

--

--

Yohei Noda
Yohei Noda’s Blog

Head of EM Team & Engineer (KARTE Blocks) at Plaid, Inc@Tokyo, Japan. Ex-IBM software engineer.