« カバンを軽くする文具2018 | Main | 英語で読むITポリシー「Chaos Engineering」 »

2018.09.08

英語で読むITポリシー「Worse is Better」

quote for TOEICでランダム表示しているIT関連の英文からピックアップ。まずRui Ueyamaさんも紹介していた「Worse is Better」から。

「悪い方が良い」原則と僕の体験談

lld v1は、「悪い方が良い」エッセイの言葉を借りるなら、MIT/Stanfordスタイル(良いデザイン)で書かれていて、lld v2はニュージャージースタイル(悪いデザイン)で書かれている。どうして「良いデザイン」を捨てて「悪いデザイン」で書き直したのか? それを理解するためにまずlld v1のデザインを見てみよう。

一見、正しそうな原則(これをMITスタイルと呼んでいる)に対し、当時のUNIXが採用した考え方を、当時のベル研USL(Unix Systems Lab)があったNew JerseyにちなんでNew Jerseyスタイルと呼び「正しくないがBetterである」と言っている。

まず、原文からMITスタイルの部分を引用してみる。

Simplicity - the design must be simple, both in implementation and interface. It is more important for the interface to be simple than the implementation.

シンプルというキーワードは他のUNIX哲学でも頻繁に聞かれるが、実装とインタフェースのどちらをシンプルに保つべきかというと、インタフェースだというのがMIT側の「正しい」考え方。確かにそうあるべきだと思う。

Simplicity - the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface. Simplicity is the most important consideration in a design.

一方のNew Jerseyスタイルは、逆に実装こそがシンプルであるべきだと言っている。原文では例として、当時のUNIXで時間がかかるようなプログラムを途中で中止した場合に、プログラムカウンタ(命令の実行位置)をどうするかの議論を紹介している。MITスタイルではプログラムカウンタを実行前の位置まで戻すべきという考えだが、UNIXのユーザーはUNIXでこの問題を解決することが難しいことを知っているため、エラーを見てユーザーが再実行するかを決める。つまり実装ではなく使用方法(インタフェース)で工夫するというわけだ。

Completeness - the design must cover as many important situations as is practical. All reasonably expected cases should be covered. Completeness can be sacrificed in favor of any other quality.

また、New Jerseyスタイルでは、完全性も犠牲にしてよいと言っている。

In fact, completeness must sacrificed whenever implementation simplicity is jeopardized. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.

何より過激なのは最後の「意味がないのはインタフェースの一貫性だ」という部分だろう。数年前に流行ったAPIエコノミーなどを標榜する人にとってはインタフェースの一貫性こそ大事という考えなので、このWorse is Betterは受け入れにくいだろう。当時も相当な論争になったようで、元の著者は別名義で自分の主張に反論する記事を書いたなどの後日談もある。

いずれにしても、ユーザとのインタフェースを優先しすぎると実装がとんでもなく複雑になるという事象は様々なシチュエーションで起こりうる。そんなときに途方に暮れるのではなくUNIXの先駆者の経験則のひとつである「Worse is Better」も思い起こすきっかけになればと思う。

|

« カバンを軽くする文具2018 | Main | 英語で読むITポリシー「Chaos Engineering」 »

英語で読むITポリシー」カテゴリの記事