Lotus Improv(ロータス インプロブ)は、かつてLotus Developmentにより開発・販売されていたスプレッドシートソフトである。1991年にNeXTSTEP用にリリースされ、1993年にWindows 3.1用にリリースされたが、販売が低迷し、1994年に開発は中止された。Lotus DevelopmentがIBMに買収された後、1996年4月に正式に終了となった。

## 概要

Improvは、表計算ソフトの利用方法を再定義し、新しいスプレッドシートの作成と既存のスプレッドシートの変更を容易にする試みだった。従来の表計算ソフトでは、画面上のセルに、すべてのデータ、数式、メモを保存していた。一方、Improvではこれらの概念を分離し、入出力データにのみセルを使用する。数式、マクロ、その他のオブジェクトは、セルの外に存在させることで、編集を簡素化し、エラーを減らすことができた。Improvでは、セルアドレスではなく、すべての数式に名前付き範囲を使用した。

Lotus 1-2-3やMicrosoft Excelなどの主流製品と比較して商業的成功はなかったが、Improvは特定のニッチ市場、特に金融モデリングで強い支持を得ていた。これらの特別な市場で大きな影響力を持ち、さまざまなプラットフォームで、特にLighthouse DesignのQuantixなど、多数のクローンソフトが生み出された。AppleのNumbersでは、Improvのものと同様の数式と命名システムを組み合わせているが、従来のスプレッドシート内で実行される。

## 歴史

### 誕生までの背景

スプレッドシートの原型は、縦線と横線の入った紙で、会計用に特化したワークシートである。利用は、シート上のセルと呼ばれる長方形の領域にデータを入力し、そのデータに数式を適用して、他のセルに書き込まれる出力値を生成する。カリフォルニア大学バークレー校のRichard Mattessich教授は、財務モデリングや「もしも」の時の計算のためにスプレッドシートを使うことを提唱していたが、異なるシナリオで再計算するのに時間がかかり、計算が終わる頃には入力が古くなることを指摘していた。1964年、彼はコンピュータを使って、変更した時点からすべての計算を実行し、それによってシートを何日も掛けることなく、数秒で更新することを提案した。

一般的にビジネススクールではスプレッドシートによるモデリングを教えており、黒板に紙と同様のレイアウトでマークアップして利用していた。黒板を利用すると、エラーを修正しやすくなり、シートを授業で共有できる。1979年、それまで黒板を使ってきたDaniel Bricklinは、新しく導入されたパーソナルコンピュータを利用することにした。Bob Frankstonが加わり、2人で初の表計算ソフトVisiCalcを開発し、1979年にApple II版をリリースした。Morgan StanleyのBen Rosenは、このプログラムを見たとき、「VisiCalcは、コンピュータ業界の犬を振り回すソフトウェアの尻尾かもしれない」と書いた。

VisiCalcの成功により、膨大な数のクローンが出現した。これらの1つは、VisiCalcのプログラマーであるMitch Kaporによって作成された。彼が開発したLotus 1-2-3は、VisiCalcよりも大成功を収めた。これは、最新のIBM PCで実行され、それに合わせて調整されたという事実が大きく影響していた。Lotus 1-2-3は最初の月に60,000本を出荷され 、Lotusはまもなく世界最大規模のソフトウェア会社の1つとなった。

### ロータスの先進技術グループ(ATG)

Lotusは1986年に先進技術グループ(ATG)を設立した。彼らの最初の仕事の1つは、表計算ソフトの設定作業を簡素化できないかどうかであった。完成した表計算ソフトは使いやすいものだったが、多くのユーザは、作成を開始するために必要なシートの外観を想像するのが難しいと感じた。データは列に入力する必要があるか、それとも行にまたがって入力する必要があるか? 中間値はシート内に保存する必要があるか、それとも別のシートに保存する必要があるか?どのくらいの部屋が必要か? など。

ATGの開発者であるピト・サラスは、この問題に取り組むことにした。既存の現実世界の例を数か月調査した後、データ、そのデータのビュー、およびそのデータに作用する数式は、まったく別の概念であることが明らかになった。しかし、いずれの場合も、既存の表計算ソフトでは、ユーザはこれらすべての項目を同じ (通常は 1 つの) シートのセルに入力する必要があった。このように機能が重複しているため、どのセルにどのようなデータが格納されているのかが分からず、非常に混乱していた。このセルは入力値で、別の場所で使われるのか?計算の中間値なのか?もしかしたら、計算の出力値なのか?知るすべはない。そこで、データ、計算式、そしてデータと計算式をエンドユーザに適した形式で出力するビューという3つの概念をきれいに分離した、新しいスプレッドシートのアイデアが生まれました。同時に、この新製品では、データをシート内の位置で参照するのではなく、名前を付けて「目的別」にグループ化することができるようにする。つまり、シート上のデータを移動させても、計算には影響がない。

サラスはまた、既存の表計算ソフトの最も弱い部分であることが多いのは、出力データのビューであると指摘した。入力、計算、出力がすべてシート上で混在していたため、レイアウトを変更すると、データが移動した場合に深刻な問題が発生する可能性があった。データと数式が分離されたので、これはもはや問題ではなかった。 サラスは、この分離が、既存の表計算ソフトで時間のかかる計算を必要とする多くの一般的なタスクが、ビューを変更するだけでほぼ自由に処理できることを意味することを示した。たとえば、スプレッドシートに月間売上のリストが含まれている場合、月ごとの売上を合計した出力列が表示されることは珍しくない。しかし、年ごとに合計したい場合は、通常、別の数式列と別の出力シートが必要になる。

### Back Bay

1986年の夏の終わりまでにには、サラスは、Modelerと呼ばれるシステムのスライドショーのようなデモをIBM PCで作成した。1987年2月、彼はGlenn Edelsonを雇って、C++で動作するバージョンを実装した。彼らがプロジェクトに取り組んでいくうちに、基本的コンセプトが優れたものであり、特に財務モデリングに役立つことが明らかとなった。春の終わり頃、彼らはBonnie Sullivanを雇ってプロジェクトの仕様を書かせ、Jeff Anderholmを雇って金融業界向けの新しいプログラムの市場調査をさせた。その年の夏、チームは Modeler を多くの金融会社に連れて行き、圧倒的に好評を博した。

1年後の1988年9月、チームはついにModelerの実装を開始する許可を与えられた。DOSやMac OSを含む多くのプラットフォームを調査した後、チームはターゲットプラットフォームにOS/2が最適であると判断した。当時、これは商用分野で新進気鋭のシステムであると考えられていた。このプロジェクトには、マサチューセッツ州ボストンの地名にちなんで「Back Bay」というコードネームが付けられ、マスコットのFluffy Bunnyが選ばれた。

翌月の1988年10月、スティーブ・ジョブズがLotusの開発チームを訪れ、新しいNeXTコンピュータを見せた。彼はBack Bayを見たとき、すぐに興奮し、NeXTプラットフォームでの開発を迫り始めた。Lotusの開発チームは同じようにNeXTに興奮していたが、OS/2プラットフォームでの作業を続けた。しかし、それは想像以上に困難であることが判明した。当時、OS/2は非常にバグが多く、 Presentation Manager UIは開発初期段階で、Lotus側での開発は上手く進まなかった。

## NeXTSTEP版リリース

何ヶ月もOS/2と格闘した後、1989年2月に、彼らはOS/2版の開発からNeXTSTEPでの開発に移行することを決定した。ジョブズはこの決定を知ったとき、チームに巨大な花束を送った。さらに重要なことに、彼はまた、NeXTSTEPについて教えるために、NeXT社員でソフトウェア専門家Bruce BlumbergをLotusの開発チーム派遣した。懸念された問題の1つが、実際には非常に有利であると判明した。バックエンドはC++で、フロントエンドはObjective-Cで記述されているため、プログラムを分離してバグを追跡するのは非常に簡単だった。さらに、NeXTSTEPのInterface Builderにより、チームは他のプラットフォームでは不可能な速度でさまざまなUIを試すことができ、この期間にシステムは急速に進化した。

1989年4月に再訪したジョブズは、チームにカテゴリシステムに関する課題を与えた。彼は、メニューや個別のウィンドウを使用するのではなく、画面上のカテゴリとデータを直接操作する方法を要求した。これにより、Improvの最も有名な機能の1つであるカテゴリ「タイル」、つまり出力シートを数秒で再配置できるアイコンが生まれた。ジョブズは終始サポーターであり続け、さまざまな方法で製品を改善するようチームを常に鼓舞し続けた。 Blumbergは、NeXTが最初のOSメジャーアップデートであるNeXTSTEP 2.0をリリースする過程で、深刻になった技術的な問題を支援するためにオンコールを続けた。

1991年2月に発売された「Improv for NeXT」に対し、ジョブズから「トラック1台分」もの花束が贈られるほどであった。このプログラムはすぐにヒットし、主要なコンピュータ雑誌、珍しく主流のビジネス雑誌からも賞賛と素晴らしい評価を受けた。ImprovはNeXTのキラーアプリになるかもしれない」という前評判が当たって、当初はImprovを動かすためだけに何千台ものマシンが金融市場に出回ることになった。この結果、NeXTはこの市場で足場を固め、Appleに買収された後も、1990年代後半までその状況は続いた。

## Windows版リリース

NeXTSTEP版 (「Black Marlin」と呼ばれた) の出荷後には、Windows 3.1(「Blue Marlin」) とMacintosh(「Red Marlin」) への移植が試みられた。NeXTSTEPのAPIやObjective-Cが、 Windows 3.1やMacintoshのAPIやプログラミング言語とは大きく違うため、移植は非常に困難であった。(Macintosh版はリリースされなかったが) 1993年5月に発売されたLotus Improv for Windows v2.0(1.0は存在しない)は、Windows 3.1上で動作した。Windows版もNeXTSTEP版と同様、バイト誌で「使い勝手が抜群に良い」と評価された。

好意的なレビューにも関わらず、Windows版の販売は低調だった。1994年3月、LotusはImprovを1-2-3のアドインと位置付けて問題に対処すると決定したが、プログラムには1-2-3ファイルのデータを読み込むImprovの機能以外に共通点がない。これは販売に影響を与えず、バージョン2.1のリリース後、開発は1994年8月に終了した。このプロジェクトは、1996年4月にIBMがLotusを買収した直後に製品が正式に廃止されるまで、宙ぶらりんであった。

## Improv後

PCプラットフォームでのImprovの期待外れの販売と最終的な開発・販売中止は、ソフトウェア市場の多数の失敗後の分析のケーススタディとして使用されてきた。 NeXTプラットフォームでの売上は、NeXTの限られた市場シェアによって説明できたが、PCでの失敗は別の問題だった。有力な説明としては、NeXTでのリリースとは異なり、Windows版はLotus内部で1-2-3勢力から強い抵抗に直面し、企業の免疫反応が問題になったという事実がある。Lotusの販売およびマーケティング チームは、1-2-3 の販売に精通していたが、Improvを市場に売り込む方法を知らなかった。他の説明としては、 Microsoft ExcelがOfficeバンドルの一部として安価で提供されていた事実や、マクロ言語やundoの欠如など、導入時のいくつかの失敗が含まれていた。Joel Spolskyは、それが特定の市場を完全に狙ったものであり、Excelが特徴とする一般性に欠けていると主張して、それを設計自体にあると非難していた。

Lotus Improvは製品としては1990年代に消えたにも関わらず、業界では懐かしいアプリとして思い出され、Excelに関する書籍で言及され続けてきた。また、Improv消滅後、次々とクローンが登場した。これらの中で注目に値するのは、Lighthouse Designの「Quantix」であり、金融市場をターゲットとしたほぼ直系のクローンと言えるものだった。Lighthouse DesignがSun Microsystemsに買収された後、QuantixはImprovと同じ運命をたどって終わった。Sun Microsystemsを去ったPeter Murrayは、ISPを設立し、次にGoFishという名前のB2B会社を設立し、2001年にQuantixという名前の3つ目の会社を設立した。

## コンセプト

Improvの源、核心は、データの概念、データのビュー、および数式を 3 つの部分に分離することだった。スプレッドシート自体には、入力データのみが含まれる。データを「たまたまこれらのセルにあるデータ」と呼ぶ代わりに、シート内の各データセットに名前を付けて、カテゴリにグループ化することができた。数式は別のセクションに入力され、シート内の物理的な位置ではなく、その範囲を通じてデータを参照していた。スプレッドシートのように見えたり、チャートのように見えたりするデータのビューは、動的に作成でき、数に制限がなかった。

Improv と他のシステムの違いを説明するために、ある製品の月間販売数と単価から総販売数を計算するという簡単な作業を考えてみよう。

従来のスプレッドシートでは、単価は「A」列と呼ばれる1組のセルに、売上は「B」列と呼ばれる別のセルに入力される。次に、「A1×B1」という数式を「C」に入力する(通常は@times(A:1, B:1) または =A1\*B1のような形式である)。次に、この数式をC列のすべてのセルにコピーし、A1への参照をA2への新しい参照に変更することを確認する必要がある。シートはこれをある程度自動化することができるが、本当の問題は、単に数式が何を意味するのかがわからないということである。スプレッドシートのレイアウトを変更すると、シート全体が正常に動作しなくなることがよくある。

Improvでは、「単価」と「売上高」という列にデータを入力するだけである。次に、「総売上 = 単価 × 売上高」という数式を作成できる。その次に、「総売上高」ビューがワークブックに追加された場合、シートは数式の目的を「認識」しているため、そこに総計が自動的に表示される。

しかし、Improvの真の力は、プロジェクトの作業が開始されるまで明らかにならない。グループ化システムを使用すると、月ごとの売上を「1995年」や「1996年」などのグループにまとめ、カテゴリを「年」と呼ぶことができる。次に、単価を「衣料品」と「食品」などの製品タイプ別にグループ化できる。これらのグループ (小さなタブで表示) をドラッグすることで、ビューをすばやく変更できる。この概念は、後にいくつかの製品でピボットテーブルとして実装された。