オルタナティブ・ブログ > Software Development >

ソフトウェア製品開発現場の視点

製品作りには機能の割り切りが必要

»

ソフトウェアを使っていて、何でこんな変な仕様になっているのかと不思議に思うことがあると思う。最初は「いい加減な仕様だ」と思っても、よく調べてみると「変な仕様」の多くは、開発者が機能を割り切った結果だということが多い。変な仕様だと気づかせずに仕様をまとめるのがベストではあるが、「変な仕様だ」と言われても、仕様を割り切った結果として多大な効果を生んでいるものもある。

Lotus Notes では、一つの文書を同時に編集・保存してしまった場合「競合文書」というものが作られる。共有データベースの宿命として、どうしても同時に編集してしまうケースが発生する。何の対処もしないと、後から保存した文書が前に保存した文書を上書きしてしまい、前の文書の内容は消え去る。この問題を避けるため、通常のデータベースでは最初の人が編集を始める段階で、その文書を他の人が同時に編集できないようにロックするなどの手段がとられる。しかし、Lotus Notes は、「競合文書」という概念を導入してこの問題を回避した。同時に文書が編集されていた場合には、どちらかを優先することなく両方を残してしまうことにした。これが「競合文書」と呼ばれている。「競合文書」があれば、その変更内容を、もう一方の文書に手作業で、反映させることが必要になる。

これは大きな発想の転換で、通常のリレーショナルデータベースの発想からは出てこない。データの内容は文書であるという割り切りから出てきた大胆な仕様だが、この割り切りによって、多大なコストの削減と製品仕様の単純化を同時に達成することができている。

最初に「競合文書」ができることに驚く人が多いが、すぐに慣れてきて対処できるようになる。「競合文書」は製品の特性と使われ方を十分に考えた、割り切りの仕様だと思う。

Comment(2)