Windows 秘話: 機能を巡る戦い

ゼロから機能を設計し直すとき、古い機能は新しい機能のリクエストになります。

Raymond Chen

ときどき UI のコンポーネントについて大掛かりな見直しが行われることがあります。このような見直しが行われるとき、以前のバージョンにある機能も含めて、他のすべての機能の持ち点は、マイナス 100 点からスタートします。

このマイナス 100 点という概念は、C# 言語にある機能とない機能の理由を話し合うときに Eric Gunnerson が説明したのが最初だと言われています。一般的に、この原則は、どのような製品のデザイン プロセスにも当てはまります。すべての機能のアイデアの持ち点は、想像上の不足分であるマイナス 100 から始まります。つまり、新しい機能が検討に値する機能として浮上するには、総合的に製品に大きなプラスの影響があることを実証する必要があります。

既に比較的簡単に実行できる操作を簡単に行えるようにする機能は、それほど多くの点は獲得しないため、持ち点がプラスの値に転じることはありません。少数のユーザーにしかメリットがない機能も、最初の不足分を覆すのに必要な点を獲得することはできません。また、単独ではシンプルに見えても、他の場所で複雑さを増長する機能は、総合的にはマイナスの影響をもたらすと見なされます。これはマイナスの "点数" から始めるという追加のペナルティがなくても、既に十分悪い状況だと言えます。

[スタート] メニュー項目について

Windows 95 で導入された [スタート] メニューは、Windows 3.1 のプログラム マネージャに取って代わりました。プログラム マネージャには、"終了時に設定を保存" という名前のオプションがありました。このチェック ボックスをオフにすると、プログラム グループに加えた変更は、ログオフ時に破棄されましたが、Windows 95 には、これに相当する機能はありませんでした。

機能を廃止すると、古いデザインで採用されていた古い機能に愛着を持っているユーザーから激しい抗議があります。このようなユーザーは「Frimble Framble で X の機能を廃止するとは何事だ」と言います。ですが、この抗議は後進的です。その機能はデザインが見直された Frimble Framble から削除されたのではなく、デザインが見直された Frimble Framble には最初から存在していないのです。ですから、その機能は、削除されたのではなく、追加されなかったということになります。

古いコードをお払い箱にして、ゼロから作成するという決定は、おもしろ半分で行われているわけではないでしょう。古いデザインは、現代の作業負荷には適していない可能性があります。レコードの件数が数千の場合に機能するデザインは、レコードの件数が数百万になると機能しないことがあります。また、古いデザインは単に時代遅れになっていることがあります。デザイナーは、古いバージョンをベースに新しいバージョンを作成するのではなく、新しいスタートを切ることを選択したまでです。

以前のデザインで採用されていた機能には、新しいデザインの機能との戦いが待っています。多くの機能は、どのようなデザインでも考慮しなければならない基本的な機能なので、生き残ります。このような機能は、見直しのプロセスの最初にすべての機能が持っていたマイナス 100 点という不足分を簡単にプラスの値にすることができます。

一方、より難解な機能や使用頻度が低い機能は、最終版まで生き残れない可能性があります。また、点数ではなく、リソース不足から、生き残れない機能もあります。古いデザインに 100 個の機能があり、また、新しいバージョンに 100 個の機能を追加するのに十分なリソースがあるとしましょう。古いデザインの機能をすべて新しいデザインで採用した場合、新しいデザインは古いデザインとまったく同じになります。その場合、そもそも製品のデザインを見直す必要があるのでしょうか。

古い機能と新しい機能では、直接的な衝突が生じることがあります。古い機能 X は、新しい機能 Y と直接衝突する可能性があります。機能 X を維持する場合、当然の結果として、機能 Y は導入できなくなります。逆の場合も同様です。たとえば、機能 X は、レコードの件数が数十万件を超えた場合に機能しなくなる可能性があります。また、別の機能との戦いに敗れたからではなく、新しいバージョンを作成している人が、その古い機能の存在に気付いていなかったために、新しいバージョンで採用されないこともあります。

多くの場合、古い機能は、不本意ながらもバトルに敗れています。チーム メンバーは「機能 X を追加できたら良かったのですが、この機能を採用しないという苦渋の決断を下しました。機能 X をこっそり追加できれば良かったのですが、この機能の追加には 10 日かかるという試算結果が出て、そのスケジュールを確保することができないため、追加を断念しました。申し訳ありません」と言うでしょう。

どのプロジェクトでも、実現したいことの前に現実が立ちはだかります。デザインを行う作業の一環として、やるべき作業を天秤にかけて、実装する機能と実装しない機能を決めなければなりません。

Raymond Chen

Raymond Chen は自分の Web サイト「The Old New Thing」および同じタイトルの書籍 (Addison-Wesley、2007 年) で、Windows の歴史と Win32 プログラミングについて扱っています。このコラムは情報提供のみを目的としており、プロによる法律上の助言に代わるものではありません。

関連コンテンツ