TL;DR

複雑さは見かけのコードで減らせるものではなく、受け入れて理解し、依存関係を整理するものだという考え方。

もとはヒューマンコンピュータインタラクションの格言で、テスラーの法則とも呼ばれる。

なぜ必要か

Wikipedia によると、Larry Tesler は 1980 年代半ばに Xerox PARC で働いていたとき、ユーザがアプリケーションとどう関わるかが、アプリケーションそのものと同じくらい重要だと気づいた。Tesler は、100 万人のユーザが毎日 1 分ずつ複雑さに時間を使うくらいなら、エンジニアが 1 週間かけてそれを取り除くべきだと主張した。複雑さを誰が引き受けるかを考えるときの指針になる。

仕組み

Wikipedia によると、どのアプリケーションにも取り除いたり隠したりできない固有の複雑さがあり、それは開発の側かユーザとのやり取りの側のどちらかで扱わなければならない。ソシオメディアの記事は「タスクの複雑性はある点を超えて減らすことはできない。移動のみ可能である。」と説明している。

例

ソシオメディアの記事では、入力の負担をユーザからシステムへ移す例として、入力中の自動補完、ドロップダウンや日付ピッカーで有効な値だけを選ばせること、ユーザ ID や今日の日付の自動入力を挙げている。

注意点

複雑性保存の法則(koushisa)では、次のように述べている。

複雑性を見かけのコードで減らすという考え方は根本解決ではない

複雑性は受容し、理解し、依存関係を整理する

ソシオメディアの記事によると、ログイン情報を保持して今日の予定を初期表示するように、複雑さをほぼすべてシステム側に移すと、それが合わない利用者にはかえって使いにくくなるおそれがある。Wikipedia によると、Bruce Tognazzini は、アプリケーションを単純にするとユーザはより複雑な作業を試みるようになると反論している。

関連

出典