Rso's Jotter

日々の開発の知見のメモやその他雑記

システムは二度死ぬ

UNIXという考え方―その設計思想と哲学 を読んで、印象に残ったことをちょっと違う言い方でタイトルに書いてみました。

以下主にこの本の感想です。

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

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

UNIXという考え方―その設計思想と哲学 は 2001年に発行された古典に分類される本で、UNIXが大事している思想を解説しています。 Webなどで引用されたりしているので、だいたいの内容は知っていたのですが、真面目に読んだことがなかったので、改めて読んでみました。

タイトルに関連する内容は、本書では 定理3: できるだけ早く試作を作成する の部分で、最も印象に残った部分です。

この章の主張は、人間は以下の3つのシステムしか作ることができず、かつこの順番でしか作ることができない、というところから始まります。 3つのシステムは以下のような特徴を持ちます。一部私なりの解釈を含んでおります。

1. 追い詰められた人間により作られるシステム

 第一のシステムは、限られたリソースと不足した時間という環境において、少ないリソースをひねり出して作られるシステム。当然すべてのことを「正しく」つくる余裕などないので、本当に必要な部分だけ強引に作ったシステムとなる。このシステムは小さいため俊敏で、人々の想像力を燃え上がらせるアイデアを秘めており、それによりうまく行けば多くに人に利用される。

2. 第一のシステムで証明されたアイデアを用いて、多くの専門家が携わるシステム

 有効性が証明された第一のシステムを刷新し、多くの専門家が登場して構築されるシステム。第一のシステムは「正しく」作られていないので至るところに不備が見つかり、専門家からは格好の指摘の的となる。証明されたアイデアを元に多くの付加機能が実装される。豊富な機能一覧により、ビジネス/セールスサイドからは歓迎され、大々的にアピールされ、成功を収めたように見える。しかしその多機能性により速度は犠牲になり、第一のシステムよりユーザビリティが低下することとなる。

第二のシステムの失敗に気づいた人が作るシステム

第二のシステムは一見高機能に見えるが使われない機能も多く、保守性/効率性/ユーザビリティなどの観点で有用でないことに気づく。第二のシステムの反抗心から第三のシステムが生まれる。第三のシステムは第一のシステムと第二のシステムのいいところどりであり、時間のある環境で必要な機能を「正しく」作ることができる。第三のシステムこそが、費やした労力に対して、最大の利便性を発揮することとなる。

   

というような感じで、結局は第一のシステムから第二のシステムに進み失敗し、やっと第三のシステムに到達でき、この順番は飛ばすことができない、 と主張しております。そして、飛ばせないのなら、 早く作るしかない というのがこの章の結論となっております。

私自身でいうと今は新規システムの立ち上げフェーズを行っているので、まさに第一のシステムを開発している状態です。 本書の記載通り、時間もリソースも十分になく、通常ならあたりまえと思われる機能も削ることはざらです。その代わりできるだけ早く完成させ、ユーザからのフォードバックや、自分の考えているコンセプトに対してどんな反応があるのかを検証します。

私はまだここでいう第二のシステムの開発の段階には入っていませんが、ビジネスサイド/セールスサイドの要求を聞くと、こういう第二のシステムが作られることになるのは容易に想像できます。この第二のシステムの失敗に気づく最良の方法は、やはり早く構築することなんでしょう。

この最大限の利便性を発揮するシステムにたどり着くためには、少なくとも2回作り直す必要があります。 私はまだ第一のシステムの段階なので、早く次のフェーズのシステムに行きたいと思う次第です。