NeXT 上の Lotus Improv

Lotus Improv は NeXT にピボットテーブルと、まったく違うスプレッドシートのモデルを持ち込んだ。だがプラットフォームとともに消えていく。Christopher Drum がエミュレータで動かし、どこが正しかったのかを振り返る。

日本語
コピー
黑色背景上的 Lotus Improv 标题图:灰字 Lotus 在右上角,左下方是彩虹色的 Improv 字样,一个略微倾斜的深色方块衬在它后面

人はこれを口にするとき、呪文を唱えるように敬虔な口調になる。コンピュータ史における「歩まれなかった道」のひとつとして、声を潜めて語り継ぐ。信奉者たちは賛辞を書き連ね、YouTube に持ち上げるだけのレビューを上げ、市場で敗れたことを惜しみ、なぜ世界を席巻できなかったのか、それぞれの理由を並べる。Lotus Improv の伝説は、いまも消えていない。1988 年ごろに話を戻し、Steve Jobs の立場に立ってみれば、彼が今日私たちが「ピボットテーブル」と呼ぶものの初期の姿に一目惚れした理由は理解できる。当時の NeXT は自らの市場を必死に探しており、システムを一式買わせるだけの独占ソフトが喉から手が出るほど欲しかった。「かつて VisiCalc が Apple II を成功に導いたように、Improv が NeXT を成功に導くかもしれない」——Jobs の頭にそんな考えがよぎったはずだ。Improv を NeXT 専用にする。それは、NeXTWORLD Magazine 創刊号が投げかけた「Why NeXT?」という、会社につきまとう問いへの、清醒で先見的な答えのように思えた。

NeXTWORLD Magazine 編集長 Michael Miley による最初のコラム「Black Box」。答えの TL;DR はこうだ。NeXT は「新しい種類のコンピュータ」であり、「人間関係のコンピュータ」であり、協調作業のために土台から設計された最初のマシンである。

NeXT と Improv はどちらも、それぞれの時代の計算上の難題に革新的な解を提示した。NeXT はターミナルを恐れる人々にも UNIX を受け入れさせ、メガピクセルディスプレイで初めて Display Postscript を実現し、このシステム向けのソフト開発をたやすくした。Improv は多次元データモデリングを考え直し、英語に近い数式を提供し、データビューを思いのままに並べ替えられるようにした。どちらの骨格も今日まで残っている。NeXT の OS である NeXTSTEP / OPENSTEP は macOS へと進化し、そこから iOS が生まれた。Lotus は Improv をあっさり手放したが、今日の表計算ソフトをちらりと見ればわかる通り、ピボットテーブルはすっかり定着した。それどころか今見ても独特で、他の表計算ソフトではとてもここまで優雅にできないデータ操作を今もやってのける。その伝説性ゆえに、愛すべきギークとしての義務を感じる。だが……


歴史的背景

CIA の図はこちらの記事から:https://www.msn.com/en-us/news/technology/the-hidden-debt-that-apple-owes-to-the-cia/ar-AA2avYYa


今日のマシン

  • 前回:Windows 11 上の v4.4
  • NeXTstation Turbo
  • 68040 CPU(可変クロック、約 40–50MHz)
  • 128MB メモリ
  • 2GB ハードディスク
  • モノクロ「Megapixel」ディスプレイ
  • NeXTSTEP 3.3

Lotus Improv Rel_ _1.0(v108r0)


はじめよう

いくつかのことが重なり、ようやく Lotus Improv を語るべき時が来た。ひとつ目は、毎年恒例の「国際表計算の日」がまた巡ってきたこと。ふたつ目は、Improv がもともと NeXT 専用だったこと。Steve Jobs の没後 15 年(!)にあたる今日、ここでこのマシンを見るのも一興だろう。みっつ目は、自慢に聞こえるかもしれないが、このブログがちょうど1周年を迎えたこと。Stone Tools を始めようと決めたとき、頭にあったソフトは4本あり、Lotus Improv はそのうちの1本だった。正確に言えば、「こういうものを語れる場所があれば」と初めて思わせてくれたのが、まさにこれだった。最初に書いた Deluxe Paint もその4本のひとつ。残りはまだ2本。賭けたい人はどうぞ。

社会の崩壊を眺めるのが好きな人に朗報:自分自身だけを対象にした予測市場を開いた。2027年2月9日に私は何歩歩くのか? 木曜日までに手元の本を何ページまで読むのか? 明日、私の靴下は左右揃うのか?!

困ったことに、Deluxe Paint なら熟知していてすぐ書けるが、他の分野の生産性ソフトについては、実際のところほとんど経験がない。Improv が生まれた環境を先に把握しなければ、公正に評価することはできない。だから私は動かずにいた。ああ、Improv を書くために丸一年じっと堪えたことを、あなたに伝えたい。この自制心はもはや人間離れしている。

見たい未来を顕現させる。

Improv が表計算である以上、合計や超越関数といった数学的演算ができるのは当然だ。それは皆わかっている。「計算ができる!」というだけでは、なぜこれが存在するのかを説明できないし、「NeXT 世代の表計算」という看板も支えられない。だから別のやり方で紹介しよう。それが独有の強みを発揮する例をいくつか見て、さらに Improv 2.1 Revealed! の本の流れに沿って、モデルをひとつ作って本場のアメリカ野球を楽しむ——私が愛し、完全に理解もしているスポーツだ。

NXIsle

NeXT の初期社員の仮バッジ。ポラロイド写真を使っている。私が知る限り、唯一見つかっていないのは Susan Kare のもの。RRAuction 第4402号出品。この写真群は2024年8月に 12,501,apparentlybya+1 で競り落とされた。

スティーブ・ポール・ジョブズ氏が Apple を追い出され、そして戻ってくる話は、産業史の研究者に任せたほうがいい。タイムラインで概要には触れたし、もっと突っ込んだ話を知りたいなら、ちょうど今年、この時期を扱った本が出ている。NeXT のハードウェアは評判こそよかったが、結局主流にはなれなかった。長い目で見れば、NeXT のエンジニアリングが本当に生み出した成果は NeXTSTEP だ。UNIX を、すっきりとして使いやすく、グラフィカルなインターフェースの中にきれいに包み込んでいた。これはかなりのものだ。

先人に敬意を。DOOM もワールドワイドウェブも(写真は Tim Berners-Lee の最初の Web サーバー)、NeXT から生まれた。

僕にとって、実際にプログラミングの道へ引き込んでくれたのは、NeXTSTEP/OPENSTEP の開発者ツールを支えていた技術だった。Objective-C と Interface Builder で、これらは後に OS X の開発環境になった(Big Nerd Ranch の Aaron Hillegass による Cocoa Bootcamp に感謝)。iOS と Swift が登場して久しい今でも、NeXT の技術は Apple のソフトウェアの Foundation 層に残っている。NS を接頭辞に持つクラス群がその証拠だ(Objective-C 時代の名前空間の技法)。

NSCapable。NXPlicable。NXCusable。こういうのを一枚のリストにまとめたけど、一つも使い道がない。

今回の検証には NeXTSTEP 3.3 を使った。OPENSTEP へ移行する前の最後のバージョンだ。NeXTSTEP は見た目も使い心地も現代のシステムそのものだが、いくつか風変わりな点がある。現代の OS、とくに macOS に馴染んでいれば、使っていて蕁麻疹が出るようなことはない。Apple との合併後、ジョブズが OS X にさまざまな視覚的趣向を盛り込むのに熱心だったことを思うと、NeXTSTEP はかなり素朴に見える。「lickable」と呼べるものは何もない。Susan Kare が初代 Mac より大きなキャンバスとパレット(NeXTSTEP は 2-bit)を持っていたら何を作ったかと昔から気になっているなら、答えはここにある。僕は気に入った。Dock はすでにあったが、後に OS X へ移ったときのあの軽快で生き生きとした感じに比べると、ずっと硬い。シェルフ効果も、動的な拡大もない。常にそこにあり、アイドル時にも自動で隠れない。アプリによっては実行中に Dock アイコンが変わる(Mail など)し、変わらないものもある(Edit など)。奇妙な設計が一つ。Dock はアイコンのタイルに三つの点がないことでアプリが実行中だと示す。装飾されるのが非アクティブなアイコンだというのは、ずいぶん変わった選択だ。ファイル閲覧はシステムの使い勝手に少し複雑さを加えている。ファイルブラウザにはお気に入りのミニ Dock が付いていて、現在選択中の項目のパスが巨大なアイコンで描画され、そのあとにファイルブラウザ本体が続く。ファイルやフォルダをドラッグするには、項目のフルサイズのアイコンを使うしかない。たとえばリスト表示で見ているときは、リスト項目をフォルダや Dock にドラッグできない。ここは少し戸惑う。

すべてのアプリのメニューは、移動可能な縦型メニューが一手に引き受ける。メニューをどこかに固定すると、それが現在のアプリの位置として設定され、アプリごとに独自の位置を持てる。理屈の上では、アプリを切り替えるたびにメニューがあちこち飛び回る可能性がある。ありがたいことに、右クリックで現在のマウス位置に呼び出すこともできる。どこか RISC OS の香りがする。それから、macOS の回るビーチボールが好きな人には朗報だ! あれが出るときの、あの小さな ASMR のぞくぞく感が味わえる。とくにカラーワークステーションで動かしているときは。何かに「我が家」のような感じを与えるのは、たいていこういうささやかで面白いことだったりする。

最初の NX 接頭辞(NX は NeXTSTEP、NS は OPENSTEP)でさえ、フジツボのようにコードの表面にこびりついて残っている。

正直に言うと、NeXTSTEP に慣れるうえで僕の最大の問題はマウスだった。デフォルトのままだと妙な使い心地で、加速曲線が二層あり、遅い動き用と速い動き用に分かれている。「遅い」と「速い」のしきい値を越えて別の加速曲線が効き始めると、カーソルが画面の半分ほども飛んでしまう。ものすごく、ものすごく、ものすごく、ものすごくゆっくりマウスを動かさない限り、カーソルを見つけられない。幸い、エミュレータの Previous にはこれを補正するためのツールがある(「Whetstone」の節を参照)。

総じて、ときどき頭を少し切り替えて、現代の習慣をいくつか忘れさえすれば、すぐに NeXTSTEP に馴染める。35 年経った今でも、その見た目と感触は現代の OS とよく似ている。ほとんど腹立たしいほどに? それはまた別の話かもしれない。

Formula 1

問題:下の Improv のスクリーンショットの、どこが面白いだろうか?

答え:自分でそのコピーを組み立てるのに必要な情報がすべて詰まっている。データ、数式、寸法、関係のすべてがむき出しで、はっきりと見える。これを指摘したのは、スクリーンショットが Improv のワークシートを共有する良い方法だと主張したいからではない。実際にはそうすることもできるけれど。事実、上の表はスクリーンショットから再構築したものだ。言いたいのは、Improv の環境ではデータがどれほど「手に取れる」かということだ。数式は自然に読め、値の参照は表の中の項目名と一致する。名前負けしていない。もう少し徹底的に見てみよう。Improv を理解するには、スプレッドシートについての既成概念を忘れる必要がある。スラッシュコマンド? 聞いたことがない。B1? J93? K12 = int(A14 * lookup(B2..B7))? 狂人のたわごとだ。汎用の英数字による列・行の識別子は使わず、自分の領域に固有の「項目カテゴリ」で行と列を定義する。言い換えれば、「A から L 列が月、1 から 31 行が日付を表す」と決めつけるのではなく、「months」というカテゴリを作って 12 の項目を定義し、「January」「February」などと名づける。次に「days」というカテゴリを作り、そうした項目を 31 個定義する。その違いを示す比較動画を見てほしい。まず、LibreOffice Calc で月/日のグリッドを作り、January 1 に値を与え、December 31 を January 1 の倍数として計算する。

0:00

/0:47

次は、Improv で同じ表を作る手順だ。注目すべき点は三つある。順序項がどう生成されるか、カテゴリにどう名前を付けるか(この単純な例では必須ではない)、そして数式がどう作成され、どう適用されるか。

0:00

/0:42

消化するには多い。分かっている。まず、新規の空ワークシートには無限の空セルからなる表ではなく、セルが一つしかない。Improv は自分で定義したデータだけを扱い、しかも定義した範囲に正確に従う。LibreOffice の例では、各列の先頭にラベルを付けて列に意味を与えたが、それは自分の都合のためであって Calc のためではなかった。昔ながらの行・列の命名がもたらす、あの温かく包み込まれる感覚を味わい直したいなら、Improv で「columns」というカテゴリを作って項を A、B、C…と名付け、「rows」というカテゴリを作って 1、2、3…と名付ければいい。本気でこんな凡庸なやり方でカテゴリと項を扱うなら、Improv の数式ビルダーの魔力もそがれてしまう。下部パネルにはすべての数式が、定義された粒度で、表示されている順序どおりに適用されて収まっている。例では December:1 = を指定したが、同じように December = を指定して十二月全体を対象にすることもできる。その一つの数式が十二月の各リスト項目に作用し、セルごとに数式をコピーする必要も、セル参照に絶対/相対の印を付ける必要もない。次は前の表の簡単な拡張だ。一月の各日に 10% を加え、十二月の対応する日は一月の値の二倍にする。

数式 1 は特定の項 January を対象に、THIS で各項目の現在の Day を取得し(現在のレイアウトでは視覚的に複数行 Days として表示される)、PREV で一つ先のセルへ跳ぶ。もっと言えば、「一月のこの日 = 一月の前日 * 1.1」と言っている。その後、各十二月の値は対応する一月の値(「現在の行」は暗黙)の二倍だと、より一般的に定義している。

図中のこの二つの数式が、このワークシートの数式のすべてだ。強調しておきたい。セルの中に隠れて、選択したり編集したりするまで姿を現さない数式は他にない。セルごとにコピーされ、相対セル参照が一つずつ * 1.1 と増えていく数式もない。あるのはカテゴリ(ここでは「months」や「days」)、項(「January」や「27」など)、あるいは特定の交点(「April:19」など)を、相対性の印 [THIS]、[PREV]、[NEXT] とともに参照しているだけだ。このシステムの隙をどう突こうか、どう混乱させてやろうかと考えているかもしれない。なぜこんな年寄りプログラムをいじめるのか。Improv はいったい何をしたというのか、そんな冷遇を受けるなんて。「項の名前が重複したら? 二つの数式が同じセルを指したら?」心配するな。すべて明らかになる。そしてこの年寄りプログラムを惑わせようとした自分を、当然のごとく恥じることになるだろう。

三つのケースを反転表示で示した。項目名の曖昧さ、インデックス参照、数式解決の曖昧さだ。

上の例では、Days の一つを「March」に改名したので、「March」を参照すると曖昧になった。「March」は今やその Day を指すのか Month を指すのか。明示的に Months:March と書けばいい。ただし、明示しなければ Improv はこちらの企みを見破って指摘する、数式 5 のように。数式 2 では December:15 を静的値 1000 に設定した。数式 3 では、同じく「対応する January 値の二倍」として計算するよう設定した。これらの数式にある「重なり」アイコン(交差する二つの四角)と、セル内の Overlap という文字に注目してほしい。重なりアイコンをクリックすると、そのセルをどちらの数式が勝たせるかを明示的に選び、曖昧さを解消する機会が得られる。数式の曖昧さをきれいに処理することは、当初プロトタイプチームにとって厄介な工学上の難題だった。Simson L. Garfinkel の「Improv: The Inside Story」、NeXTWORLD、1991 年秋号より:

Back Bay(Improv の開発コード名)のチームは、数式の衝突可能性をこのプログラムの真の弱点と見ていた。衝突を自動で解決する方法はないように思われた。 「Jobs は『それは弱点じゃない、素晴らしい機能だ!』と言った」と Paul(Kleppner)は振り返る。「1-2-3 なら、数式をコピーして上書きできる。」Improv が衝突を自動検出してユーザーに知らせられること自体が、大きな前進だった。

個人的には、Improv の解決策が気に入っている。もっと多くのソフトが、私が何を望んでいるかを推測したり当てにいったりせず、本当に愚かであればいいのにと思う。問題を明確な言葉で伝え、その解決に対して最大の制御権を私に与える、最も単純な道具を提供してほしい。助けるときは賢くあれ、賢さで助けようとするな。

自分でやってみる

本題に入る前に、索引と検索を備えた Improv の見事なヘルプシステムについて書き留めておきたい。 NeXT 版のマニュアルを見つけるのがどれほど難しいかを思えば、探索の途中でいつでも使えたのは本当に貴重だった。挿絵は整い、道具の説明は簡潔(時に簡潔すぎるほど)で、必要に応じてドキュメントの他のページへハイパーリンクしている。Improv はもっとできると考え、ヘルプをコンテキスト依存にした。

0:00

/0:26

Help システムを呼び出すと、デフォルトではユーザーインターフェース上で現在選択されているオブジェクトのドキュメントが表示される。これだけでも十分便利だが、上の動画で示されている「Point for Help」と組み合わせるとさらに強力になる。カーソルが ? の記号に変わり、クリックした場所の説明が Help ウィンドウに表示される。これは素晴らしいアイデアだ。Lotus がとある UI 部品を何と呼んでいるか分からず、検索のしようがないことがよくあるからだ。これで分かった。「Calc」ボタンは「Status Indicator」、ときどき現れる三角形のアイコンは「Formula Error Indicator」という名前だった。Pork chop sandwiches.

正しくない始め方

Usenet のアーカイブを漁っていたら、少なくとも一人がこれを「トイレットペーパー」と呼んでいた。Lotus は「item dispenser」と呼んでいる。今日では当たり前になったある機能への面白い試みで、NeXT 版の Improv にしか存在しない。可愛らしいが、新しい開発玩具を手に入れて興奮しすぎた匂いがする。

データのある軸を埋めるために項目の列を生成したいとき、このツールが順序付きのリスト項目を作ってくれる。意図をできる限り「推測」してくれるのだ。「Sunday」と入力して dispenser をプルダウンすると、一週間の七曜のリストが自動生成される。あとはこのリストを「引きちぎって」、項目をカーソルに載せ、既存の項目に貼り付けて、そのカテゴリに一連のリスト項目を追加する。つまり、リストを貼り付けるには、まずカテゴリに少なくとも一つ項目が存在していなければならない。これが面倒で、その既存項目はたいてい生成されたリストと何の関係もない。いつも最初にリストを作り、既存の項目に貼り付けてから、その無関係な元の項目を削除することになる。今ならセルに直接入力して、そのセルを隣接セルへ賢く拡張できる。実際、Lotus が後に Improv を Windows へ移して 2.0 版を作ったときは、この方式に切り替えている。既存の項目を ALT を押しながらドラッグしても同じことができる。

0:00

/0:20

最初の dispenser は、確かに NeXT 環境でしか思いつけない機能だった。開発者たちが Interface Builder の GUI の自由度に刺激を受けたのは無理もない。OS X 10.2 の初期に、私も同じことをやっていた。あれは GUI のアイデアをいじくり回し、要素を組み替えて新しい構成にすることを、ほとんど懇願してくる。「First Responder」と「bindings」の信奉者たち、手を挙げて! あの開発環境の大きな利点は、アイデアを試すときに「千回ノーと言う」のがとても簡単なことだった。Lotus はこれを取り入れ、NeXT 上で、かつて OS/2 や Microsoft の Presentation Manager ではずっと阻まれていた進歩を素早く実現した。

多くの Improv 開発者が同意するように、Interface Builder でユーザーインターフェースを開発する最大の利点は、一つの画面を素早く設計できることではなく、大量の画面を素早く試せることにある。「おかげでたくさんの酷い UI を作れた」と Pito は言う。「アイデアが浮かんだら、一時間後には画面に載せられた。」

「item dispenser」は Interface Builder の恩恵を受けた具体的なツールとして名指しされている。当時、これほど素早く反復的に GUI を開発できるものは他になかった。実際、今日でもApple 自身を含めて比肩するものはないとすら言える。

カスタムシステムバーの構築に関する Apple の助言:できるならやめろ。左から二番目のパネリストは、承認された配色「青、黒、白、茶」の通達を受け取っていなかったらしい。

次元の裂け目

Joel Spolsky は The Best Software Writing I の編集時に Lotus Improv へ個人的な注記を寄せ、その失敗をこう帰している。「Improv はデータのために厳密な n 次元超立方体を定義することを求める。従来のスプレッドシートの柔軟性は微塵もない。」Improv を最も悪く描くなら、Spolsky の言うとおりだろう。実際に使うと、彼が描写するほど取っつきにくいものではない。ただ、Improv が結局広まらなかった核心を突いているとは思う。さて、ここで全員で鼻をつまみ、「n 次元超立方体」という恐ろしく陰気な水域へ潜り、野球をモデル化してみよう。最初の次元は Year にする。

item dispenser で年をいくつか生成する。左下の、もともと「A」という名前だったデフォルトのカテゴリは「Year」に改名済み。

次に League の次元を加える。

名前の変更と追加の順序は自由。テンキーの Enter でカテゴリに空の項目が加わる。ここでは B2。

さらに進んで、もう少し細かい粒度で Division を加える。内部的に、Improv は作業を三つに分けている。データ、ビュー、そして数式だ。画面に映っているのは、Improv が三次元のデータを二次元のビューへできる限り平らにした結果にすぎない。必要に応じて Improv はビューに列を追加し、データの関係の全体像が常に見えるようにしてくれる。

3枚目のスクリーンショットでは、American の下に West と入力して Enter を押すと、対応する National の「Division3」列が自動で同期更新される。両者は常に同期したまま——これが後で自分を刺すことは絶対にない、と確信している。

ここで勝敗データを足した途端、四次元超立方体ができあがった。怖いか? モデリングは「Division」の階層までしかやっていないので、各分区の勝数をその場で合算して総数を出そうとしたら……まあ……「No dice」、野球ではそう言うらしい(たぶん。野球にサイコロなんてあるのか?)

Record の次元を追加し、項目は Win、Loss、Win Ratio とした。Format Panel で比率をパーセント表示にできる。Win Ratio に数式を1本足すと、Win Ratio のセルはすべて Error を表示する——計算するデータがないからだ。セルに簡単な等式を直接書いて何とかしようとしたら、まあ、少なくともどこがおかしいか教えてくれる Explain ボタンだけはあった。

惜しいかな、セルに入れられるのは具体的な数値、日付、テキストだけ。どんな数式でも、どんなに簡単でも、必ず Formula Panel(下部)に書かねばならない。こういう場合は、特定のセル向けの数式、たとえば American:East:2020:Win = 40 + 33 + 32 + 25 + 24 を書ける。だがスプレッドシートの意義は、こういう面倒を自動化してくれることにある。どうやら一番楽なのは Teams カテゴリを足して全球団の勝数を合算し、それから——待てよ……

いや、待て待て、これじゃ全然狙った結果にならない、なんてこった!

ちくしょう、自分に絶対吹き飛ばされないと断言していたやつに、まんまと吹き飛ばされた。ここで見えるのは次元モデリングの欠点だ。少なくとも一般人には、そしておそらく大半の典型的なスプレッドシート利用者にも。見た目はきれいな小さな表だが、「次元」という言葉そのものが問題を説明し、暴いている。カテゴリを1つ足すと、その項目は他のすべてのカテゴリに適用されてしまう。チームはそういうふうに動いていない。各 League と Division のチームはそれぞれ独立している。だが、抜け道はあるかもしれない。

グループで考える

Lotus のエンジニアは、カテゴリだけでは足りないと明らかに分かっていた。カテゴリはデータに硬直性を押しつけるが、現実のデータはいつも那么整っているわけではない。データを整理する別の方法が要る。グループとは、カテゴリ内部の、名前付きで順序づけられた項目の集合だ。カテゴリを作り、個々の項目を並べる。そのうち連続した一部の項目を選んでグループにまとめ、そのグループに一意の名前をつける。すべてをグループ分けし終えたら、グループをさらにグループ化でき、そのグループもまた……待て、自分で自分を混乱させている。グループはネストできる、それだけだ。

「clock」という言葉は毎回これを引き起こす。Clock clock clock clock clock clock clock。これが本物の単語だと信じ込まされるのはもうたくさんだ!

「Teams」を使うと、すぐにグループの副作用にぶつかる。そしてそれが複数のカテゴリに連鎖を引き起こしかねないことも。チームを足して「Division」でグループ化したいのだが、そうすると「League」もグループにせざるを得なくなる。元々3つあったカテゴリは1つに潰れる:「Teams」だ。実際の見え方はこうなる。

上の非現実的な例と同じく、数式での名前参照の利点は依然として享受できる。East への参照は American と National の両方に効く——National.East や American.East のように . で指定しない限り。グループは groupsum() 関数で小計できる。下の、よりデータの豊富な2022年から2026年の MLB 統計グラフで確認できる。ただし注意点として、Total フィールドでは Percent が衝突する恐れがあり、2つの数式が同じセルの計算の主導権を争っている。便利な SKIP キーワードは、指定に従ってグループ、セル、項目、カテゴリをスキップする(つまり「この数式を適用しない」)。

American と American West の合計が一致しているのは、手を抜いて American West のデータしか入れていないからだ。

グループ化によってデータ構造はより細かく、より具体的になる。だがカテゴリを1つ外すたびに、Improv を何十年もギークの心に居座らせてきたあの機能から一歩遠ざかる。何のことか分かるだろう。

「Pito」がなければ「pivot」は綴れない

ついに、事情通が待ちきれずに話したがっていた話題だ:「Lotus Improv がデータピボットテーブルを発明した。Wikipedia にもそう書いてある」。レトロな生産性ツールについて今のところ知っている範囲で、私がようやく認められるのはせいぜいこれくらいだ:Lotus Improv はおそらく、今日私たちが理解するデータピボットテーブルを発明した。だが、Yoda が、とっくに知っているはずの相手に Luke に妹がいることをもったいつけてほのめかしたように、もう一つ別のプログラム——未来の Stone Tools の題材——こそが「最初のデータピボットテーブル」の名にもしかしたらふさわしいかもしれない。ブログ主の権利を行使して、最終判决はその時に留保する。今日の議論にはこの説で十分通用するし、発明者本人が Lotus 社員の前で初めて披露した様子が YouTube に良い感じで残っている。データピボットテーブルの発明者、Pito Salas を紹介しよう。

縮略図の中で Mike Wells は 28:40 の質疑応答で、NeXT にまさかの「Objective Fortran」と「Objective Lisp」があったことを明かしている?!?!

Salas はすでに引退しているが、当時 Lotus Development の Advanced Technology Group で働いていて、このアイデアを思いついた。まず、実現したいもの——英語に似た数式、多次元データ、並べ替え可能なデータビュー——を示すスライドのような偽バージョンをでっち上げた。そして、進める許可を得た。「私が説明した[アイデア]は全部、身振り手振りで伝えただけでした」と Pito は振り返る。「どうやって作ればいいのか、まったくわかっていませんでした」。一年間黙々と取り組んだ末、コードネーム「Back Bay」というプロトタイプがアメリカを巡回し始め、財務モデリングに携わる人々を唸らせた。見た者はみな欲しがった。Improv がピボットをどう扱うか見てみよう。まずデータを入れずに始める。そのほうが動的ビューの構造をはっきり確認できるからだ。次にカテゴリを動かして、ビューがデータをいかに柔軟に提示するかを示す。続いてカテゴリを三番目の軸、つまり「Page Category」に置き、データをページ分割できるようにする。最後に数式と少しのデータを入力して、同時代のピボットテーブルにはできない小技を披露する。

0:00

/0:58

では、これを LibreOffice Calc v26.8 で再現してみよう。注目すべき点はいくつかあるが、その前に LibreOffice 初心者(つまり私)がたどたどしく操作する様子を眺めて笑ってほしい。

0:00

/1:32

これらのやり方を比べてみて、いくつか強く印象に残ったことがある。まず、Improv で比較的複雑なデータセットをモデリングするのは、頭の中で一度考えるのと同じくらい簡単で、データの見え方も頭の中のモデルと一致する。LibreOffice は、欲しいものとモデリングのやり方の間にかなり広い概念の溝を飛び越えることを要求してくる。行項目ごとに大量の冗長データを入力しなければならないからだ。「League」のようによそ行きにきれいに変換できる項目もあれば、「Record」のようにそうでないものもある。実際、「Win Ratio」を Improv で計算したものを変換する最善の方法が、今もってわかっていない。LibreOffice のピボットテーブルには「計算フィールド」という概念があるが、列をまたいで関連データを取り出して計算するのはかなり面倒だ。Apple Numbers、Microsoft Excel、Google Sheets、LibreOffice のいずれでも、ピボットテーブルのデータは切り離され、ピボットテーブルビュー専用のデータスナップショットになる。ピボットテーブルのデータはたいてい軽く調整できるが、元データには影響しない。逆方向も可能だが、元のデータテーブルの変更を反映させるには、まずピボットテーブルを明示的に更新しなければならない。Improv のやり方と比べると、これは使い勝手の大きな後退だ——Improv では、どのデータビューも基礎データを直接操作する。どちらのやり方でも、カテゴリのドラッグは同じくらい簡単だが、Improv では LibreOffice でいう「フィルター」、つまりページビューをドラッグ&ドロップで直接実現でき、しかも全体的に「手触りがいい」と、少なくとも私は思う。LibreOffice では別のパネルを開いて、その中でドラッグしなければならない。ただ、フィルターをさらにフィルターできる(特定のデータ部分集合を除外・包含する)のは確かに便利だ。Sheets、Numbers、Excel(オンライン版)はどれも厳密にパネルベースのピボット操作だ。興味深いことに、パネル方式こそ Lotus が当時拒否したインターフェースであり、しかも Steve Jobs の要求によるものだった。これも Garfinkel の記事からの引用だ。

「しかし、カテゴリアイコンをどこに置くか? 多くの案を試した末、開発者たちはアイコン専用のウィンドウを作ることにした。 『そこへ Steve Jobs が来た』と Paul は 1989 年 4 月の Jobs の訪問を振り返る。Jobs はこう言った。『カテゴリを直接つかんで、動かせるようにしないと。別のウィンドウに入れるのは、疎遠すぎる』と Paul は彼が言ったのを覚えている。 『(私たちは)追加パネルというアイデアを捨てた』。カテゴリの四角はワークシート上に直接置かれた。」

Numbers は間違いなく現代のピボットテーブルの中で一番見た目がいい。行と列を操作する GUI はすっきりとコンパクトだ。特に注目すべきはピボットテーブル自体の列名の位置で、記述する情報に対して左揃えになっており、スペースを圧縮しつつ、それぞれが対応するデータ点をはっきり区別している。

現代のピボットテーブルはどれも、私のデータに「総計」や小計の行と列をこれでもかと付け足したがる。私はそれらをオフにしたいのに、Excel はそれを許してくれない。

Google Sheets のやり方は大嫌いだ。あのスクロールビュー(現在は「Values」と「Filters」を表示中)の中で行や列を動かすのは、まさに苦行だ。

ここまで Improv の動的ビューの扱い方と現代のピボットテーブルを直接比べてきたが、両者が同じものだと言えるのは、Gordon Ramsay が和牛とグリュイエールチーズで作ったものと、Happy Meal の箱の底に残った木屑がどちらも「チーズバーガー」と呼ばれるのと同じくらいのものだと、安心して言える。Improv のほうがはるかにうまい。

動的範囲

「名前付き範囲」は Lotus の発明で、Lotus 1-2-3 で初登場した。乱雑なセル参照に秩序をもたらそうという試みだった。1-2-3 では Range > Name > Create で指定したセル範囲に名前を付け、以降はその名前で範囲を参照できる。つまり 1-2-3 でも現代の表計算ソフトでも、範囲 F1..F23 に Sales と名前を付ければ sum(Sales) が使える。一見すると、Improv がカテゴリとアイテムで多次元データを扱う方法とよく似ている。だが名前付き範囲はあくまで便宜のためのもので、データ値同士の関係を築くものではない。Improv では Sales はあるデータの基本的な側面を表す。すべての売上の合計を求めるのは同じことで、sum(Sales) だが、これをデータ上の次元として扱えば、はるかに深い操作が可能になる。ある年を指定すれば、sum(2020:Sales) は両方の軸に同時にマッチする。sum(2020:Arkansas:Sales) で合計の範囲をさらに絞り込める。現代の表計算ソフトと名前付き範囲で同じことをやるとどうなるか見てみよう。Improv の次元関係を模倣しようと思ったら、関心のある関係を数式ごとに定義しなければならない(しかもその数式を該当するセルすべてにコピーする必要がある)。たとえば:

= SUMIFS(Value, Year, 2020, League, "American", Record, "Win", Division, "East") / SUMIFS(Value, Year, 2020, League, "American", Division, "East")

意味は「Year が 2020、League が "American"、Record が "Win"、Division が "East" の行だけについて、"Value" という領域の数値を合計せよ」

もちろん、ハードコードしたフィルタ条件をルックアップテーブルから取った値に差し替えたり、LET 文で等しい値を抽出したりもできる。計算結果を入れる小さなサブテーブルを作ることだってできる。だがすぐに、自分が予想していたよりずっと複雑になる。私なら素直に昔ながらの方法で、セル参照を延々とハードコードする方を選ぶ。繰り返すが、Improv では勝敗の情報自体がひとつの次元であり、表全体の完全な解はこの一つの数式で済む:

Win Ratio = Win / (Win + Loss)

グラフ機能は平凡

最後の大きな機能はグラフで、NeXT の描画能力を活かしている。グラフを作成すると、まったく別のアプリケーション Presentation Builder が起動する。こいつは野心的で、大きくなったら PageMaker になりたいと思っている。グラフを生成すると空白のページがまるごと一枚でき、そこにグラフが載る。パレット一式と作図の流れで、ページ全体にわたってグラフやそのタイトル、色、位置などを細かく調整できる。複数のグラフを同じページに生成することも可能。任意のテキストや図形、要点を指す線、さらには音声注釈(NeXT のシステムツールで "Lip Service" という)まで自由に配置できる。つまりこういうことだ。ページに任意のテキストを置くツールはあるのに、そのテキストを中央揃えにするツールはない。Lotus が手を広げすぎた感はかなり露骨だ。プログラムは、得意な部分の出力をきちんとやればそれで十分で、「ページレイアウト」は専用ソフトに任せればいい。繰り返すが、私はソフトにもっと馬鹿になってほしい。ましてや、不合理なほど大量のパレット、パネル、"inspector" に散らばったフォーマットツールの山のことは言うまでもない。

"PresentationWindow5" こそがページそのもの。選択した図形の背景色を変えたいなら、どのボタンを押す?「Palette パネルの Fill オプション」だと分かっただろうか?私は分からなかった。

これらのツールが NeXT 上で持つ利点がひとつある。NeXT の Display Postscript スクリーンレンダリングエンジンのおかげで、私たちが作るものはすべてデフォルトで Postscript になる。ドキュメントを PostScript として「印刷」すれば、生成された .ps ファイルはどんな現代のシステムでもレンダリングできる。Affinity で直接開いてみたところ、Improv で見たものとまったく同じものが得られた。切り詰められたテキストも含めてすべて、しかも_高品質_の切り詰められたテキストだ。

いいね! 完全に透明な話をすると、この図の要素はひとつひとつが完全に独立したオブジェクトとしてインポートされている。テキストは編集できない。テキストに見えるベクター図形にすぎない。オブジェクトは妙な具合にグループ化され、余計なマスクチャンネルが大量に付いている。Improv からインポートして「ちょっとだけ手直し」するのが目的なら、かなり骨が折れる。もっと簡単なのは、棒グラフ、つまり本物のデータだけ残して、あとは全部描き直すことだ。

著者が不器用に煩わしい点を列挙する

ほら、私は魅力的な語りを紡ごうと努めてきた。話題から話題へと移り、呼応や観察を縫い合わせ、あなた、親愛なる読者を、よく考え抜かれた旅へと導こうとしてきた。あなたと私だけが、キーボードの前に並んで座り、ソフトウェアについて語り、ともに学ぶ。だがときには、どうしても詰め込まなければならない雑多なものが、それを論じる自然なつなぎを見つけられないことがある。というわけで、ここからは Improv について私が知っておいてほしい他の事柄の脳内吐き出しだ。

  1. アンドゥがない。私が紹介したアンドゥのないプログラムはこれが初めてではないし、生まれるのが早すぎたからと許せる類のソフトの話でもない。

  2. 下部の数式パネルは、表示されている順序で数式を適用する。順序が重要なら並べ替えたくなるのは当然だ。切り取りと貼り付け以外に、それを実現する仕組みが一切ない。これはアンドゥの欠如より厄介だ。

  3. Improv は数式にセルの相対性を持たせるために特別な PREV NEXT THIS キーワードを使う。つまりこの値は前の値の2倍、とかそういうことだ。だがここは多次元の表だ。ではこれらのキーワードは一体何を指すのか? 数式の中では、ひとつのカテゴリを選ばなければならず、相対参照できるのはそのカテゴリだけだ。多次元データを使って値を計算する数式、たとえば Sales Projection[THIS] = Years[PREV]:Region[THIS] * 1.178 では、これらのキーワードは機能しない。そんな数式を書いて動くと期待するのはごく自然なことなのに。

  4. スクリプトがない。Lotus 1-2-3 のユーザーは特に腹が立つだろう。苦労して組み上げた自動化を Improv に持ち込めないからだ。同じ会社が作ったことを思えば、これは大きな意外だ。これだけでもかなりの数の潜在的な乗り換え希望者を追い払うと言っていい。自分の金融帝国をゼロから建て直す時間など誰にもない!

  5. 3D 表がない、つまりプロジェクト間のリンクがない。ひとつのプロジェクトには最大100のワークシートを含められ、相互に参照もできるが、それは同じプロジェクトファイル内に限られる。

  6. あるワークシートのあるカテゴリが、別のワークシートのあるカテゴリと項目単位で完全に一致していれば、それらはマッチし、データも期待どおりに流れる。残念ながら、共有カテゴリを同期させることはできない。一方のワークシートで項目を変更しても、そのリンクされたカテゴリを使っている他のワークシートには変更が反映されない。つまり、他のワークシートが継承する「マスター」カテゴリを作ることはできない。初期の生産性ソフトウェア時代の多くのことと同じく、すべてを円滑に動かし続けるにはユーザー自身の勤勉さが大きくものを言う。Windows 版の第 2 版でさえ、この機能は入らなかった。誰かが立ち上がってこの難題に挑んでくれればいいのだが。(伏線)

2.0 版と言えば……

Improv 2.0

1993 年、NeXT はハードウェア事業を畳んで Intel プラットフォームへ移行し、NeXT Software に社名を変えて OPENSTEP をリリースした。同じ頃、Improv もまた Intel へ移行したが、NeXT とは袂を分かった。2.0 版で、Lotus の開発者たちはついに OS/2 では果たせなかった成功を手にする。Improv を Windows 3.1 に移植したのだ。2.0 版の機能セットは 1.0 版と失望するほど似通っており、しかもこの時点で競合製品が Improv の独自機能をいくつか取り込み始めていた。Undo はようやく付いた。Kapor のささやかな恩恵に感謝すべきだろう。スクリプト機能は LotusScript として登場した。新しい Windows インターフェースは画面上にボタンを山ほど並べ、ロール紙の台を取り外して、よりまともなリストビルダーに置き換えた。新しいものはほぼこれだけだが、ありがたいことに古い問題は一つも減っていない。

2.0 版の見どころの一つは日本語向けのローカライズで、つまり日本語の数式が書ける:月:合計=sum(1月..3月)

セル参照の相対性は依然として一次元に固定されたままだ。数式は自由に並べ替えられず、目的の位置へ切り取って貼り付けるしかない。3D ワークシートはない。そこへさらに、Lotus の PC 向け製品戦略が混乱に拍車をかける。Improv が好みに合わないなら、同じ会社のもう一つの Windows 表計算 1-2-3/Windows のほうがしっくりくるかもしれない。あるいはもう一つ別の選択肢、Lotus Symphony。あるいはもう一つもう一つ別の選択肢、Lotus Works。あるいはもう一つもう一つもう一つ別の選択肢、1994 年に出た Lotus 1-2-3 for DOS Release 4。いずれにせよメディアの評価は悪くなかったが、レビュアーは無条件の推薦を出すのに気が進まないようだった。たとえば『Compute』1994 年 7 月号のこのレビュー。

「Improv はまったく新しい種類のプログラムだ。Excel のピボットテーブルや Quattro Pro の Data Modeling Desktop はデータを並べ替える能力を模倣しているが、どちらも Improv の同等機能ほど強力でも柔軟でもない。普通の行と列の作業なら、おそらく従来の表計算を使い続けたくなるだろう。だが大規模なモデルの中の関係を本当に探りたいなら、頼りになるのは Improv だ。」

あるいは『PC World』1994 年 2 月号のこのレビュー。

「使いやすい汎用表計算を探しているなら、Improv は答えではない。Improv は表計算として宣伝され、見た目も使い心地もこの比較の他の製品と大差ないかもしれないが、最も正確な説明はこうだ。多次元データモデリングツールである。万人向けではないが、得意なことは非常によくやる。」

このレビューだけを見ると、ほんの数か月前に『PC World』が Improv を第 10 回技術卓越賞のアプリケーションソフトウェア部門の「受賞者」に選んだばかりだとは、とても想像できない。

打ち負かしたのは Quattro Pro 5.0 for Windows Workgroup Edition(なんて長い名前だ)と DOS 版の WordPerfect 6.0a。そう、DOS だ。Windows 95 の登場まであと 1 年余りという時期に。

Improv 3.0

精神は 3.0、実体はおそらく別物。先ほど不器用に伏線を張った Quantrix を手短に見ておこう。元 Lighthouse CEO(そして元 Sun CEO)の Jonathan Schwartz のブログによれば、「1989 年、私は数人の友人とソフトウェア会社 Lighthouse Design を立ち上げ、NeXT プラットフォームに全力を注いだ。当時誰も認めようとしなかっただろうが、Lighthouse は Steve Jobs を宇宙の引力の中心と見なす連中が作った会社だった。」Jobs への忠誠は報われた。彼の助言という形で、彼らの製品は NeXT 上で繁栄した。Schwartz いわく、結局の問題は Lighthouse を NeXT 上で繁栄させることではなく、まず NeXT 自体を繁栄させることだった。Lighthouse が傾き買い手を探していたとき、彼らは NeXT に買収されることを望んだが、Jobs は乗ってこなかった。彼らは Sun に買われ、製品は金庫にしまい込まれ、二度と日の目を見なかった。

これが Microsoft Office が NeXT に移植されなかった理由だ(とはいえ、それ以前に Steve は Bill に対してかなりひどい態度だったらしい)。Randall E. Stross の Steve Jobs and the Next Big Thing より。

Microsoft はこのプラットフォームを支援しようとしなかった。そこで Lighthouse が作ったのは、NeXT 上で Office スイートに最も近いものだった。プログラミングツール、プロジェクト管理ソフト、Concurrence というプレゼンツール(Jobs が使っていた。後に Keynote を「触発」したとも言われる)、そして2 本の表計算ソフト——ParaSheet と Quantrix。ParaSheet はより伝統的な路線で、Quantrix は紛れもなく Improv のクローンだ。他に言いようがない。同じ分割ワークシート/数式、同じ THIS NEXT PREV の数式ツール、同じドラッグ可能なカテゴリ、Improv 文書のインポートまでできる。ある Hacker News の読者曰く、「2 冊のマニュアルは互換性がある」。

左が Quantrix、右が Improv。Quantrix はボタンによる親切な機能を多数備え、ボタンには文脈に応じたツールが表示される。左側のラベルの付いたもの? ドラッグすれば賢く項目を作成でき、Improv の「アイテムディスパッチャー」を置き換えるものだ。

Lighthouse は Improv の背後にある発想を受け継ぎ、さらに推し進めて、あり得た v3 の姿を思い描いた。要するに、私が Improv に文句を付けた点はすべて Quantrix が解決している。アンドゥがある。ドラッグ&ドロップで並べ替えられる数式がある。スクリプトがある。ワークシートをまたいだカテゴリの同期がある。「アイテムディスパッチャー」はインラインの小ウィジェットに置き換わり、今どきの表計算ソフトのようにドラッグして展開する。多次元セルの相対参照がある。Intel 向け OPENSTEP でも、Motorola 68K 上の NeXTSTEP でも動く。色もある。失ったのは文脈依存ヘルプだ(すべてを手に入れることはできない)。それから、以前に見せたグラフ編集用のごちゃごちゃしたパネルやパレット? それらは一つの整然とした「インスペクタ」にまとめられた。要するに? 今日 Lotus Improv の最良のバージョンを体験したいなら、Lighthouse Quantrix v2.3 を使えばいい。元の優れたツールはすべて揃い、より良く作られ、インターフェースもまともになっている。しかも Lighthouse は自社の NeXT アプリをライセンスコード付きで無償配布した。なんて太っ腹だろう?

LightHouse Design は既存ユーザーのために、すべての Lighthouse アプリケーションの 2 ユーザー無償ライセンスを提供している。ただし FrameMaker(Adobe Systems, Inc. からのみ入手可能)、OmniWeb(すでに 1 ユーザーライセンスあり)、JavaPlan(現在も販売中の製品)は除く。 ——ライセンスに関する説明、1997 年頃

Improv 4.0

私の「逆転」の定義が緩いことを許してくれるなら、最大の逆転はこれだ:Quantrix は今も動いている。生きていて、価格は「お問い合わせ」なので、クレジットカードは財布に戻しておこう。現在は明らかに、一般大衆ではなく、プロ向けのハイエンドな金融モデリング層を狙っている。そう、かつて Lotus が最初に Back Bay のプロトタイプを見せた相手だ(タイムライン参照)。自己紹介動画では、35 年前の機能の多くが革命的な新機軸として売り込まれている(わかる?)。これは業界が停滞していることへの皮肉な告発なのか、それとも製品がようやく自分の居場所を見つけたのか? 判断はあなたに任せる。何が起きたのか正確に突き止めるのは難しいが、Quantrix のフォーラムで断片情報を見つけた。それが信じられるなら、Lighthouse の Quantrix 主任エンジニアだった Pete Murray が Subx を設立し、2003 年に Quantrix を Java アプリとして作り直した。Quantrix のサイトによれば、2010 年に IDBS が買収したという。私には今もって、Quantrix がどうやって Sun の束縛から逃れたのか全くわからない。当時 Sun は、Lighthouse のアプリを喉から手が出るほど欲しがる買い手に売ることを拒んでいたのだ。あれは早い段階で OS X アプリに変換できたはずなのに。ともあれ、比較的見栄えのする JRE アプリの一つではあるが、Java のレンダリング問題の典型的な症状も抱えている。特にテキストの配置と拡大縮小がそうだ。それ以外はクリーンで、不快感はない。退屈? 退屈だ。そう、まさにその言葉、退屈。「自分のターゲット層をよく理解している」と言った方が、まだ寛大かもしれない。

Improv の教訓

では、これで私と Lotus Improv の関係はどこに落ち着くのか? 冒頭でなぜあの「しかし……」を投げかけたのか? 自分に正直になるなら、「恋したくてたまらない」と「本当に恋している」の間には、震えるような緊張がある。何週間も経った今なら、なぜ世界を席巻できなかったのかを説明する資格は十分あると思う。優れた表計算ソフトではないのだ。r/Improv4Life に袋叩きにされないよう、この言葉には限定を付けておく。叩かれるのは後でいい。できることに関しては見事で、使っていて楽しい。できないのは、大衆に優れた汎用表計算の体験を提供することだ。そう名乗ってはいる。自らを「表計算の NeXT 世代」と位置づけている。Lotus Improv が表計算というカテゴリに対して成し遂げたこと、成し遂げられなかったこと、いずれにせよ一つ確かなのは、これが極上の技術デモだということだ。その観点で見れば、当時の私も Jobs と同じように確信し、NeXT を信じない人たちに興奮しながら見せて回っただろう。「俺のマシンが何をするか見てみろよ!」友人たちの間で技術的な優越感に浸る、あの得意な瞬間は確かに楽しい。そうだろう? だが 1、2 週間遊んで、最初のデータピボットの興奮が薄れる頃には、買ってしまった後悔のようなものが心のどこかにあることに、恥ずかしながら気づくかもしれない。

Adam Bosworth は自身の講演を振り返る記事の中で——それは ICSOC '04 での講演だった——ソフトウェアの複雑さと単純さをめぐる争いについて考え、こう述べている:

スプレッドシートを思い浮かべてほしい。あれは千変万化で、いい加減で、しなやかで柔軟な 媒体だ。皮肉なことに、すべての会計士と監査人にとっての悪夢でもある。 本当に複雑で豊かなスプレッドシートを確実に理解するのは ほぼ不可能だからだ。Lotus(現在の IBM)には ハーバード MBA と MIT 計算機科学博士がごろごろいて、彼らは Improv を作った。Improv の目標は 「これを全部直す」ことだった。監査人の夢だ。めったにない高度な 抽象化、行と列に形式規則を与える仕組み、要するに本当に 理解可能なものだった。そして完全に失敗した。野望を果たせなかったからではなく、 成功したからだ。

逆説はこうだ。Improv はデータの理解しやすさを高めると約束しながら、その対象読者を狭めてしまった。思いつくままに数行のデータを打ち込みたい、電話帳をその場ででっち上げるように? ならば自分のデータを、友人に関する抽象的な属性ばかりの行列として捉え直さなければならない。親しみやすい英語風の数式と便利なピボット GUI を備えてはいたが、Improv が実際に想定していたのは、こうしたおもちゃのツールが示唆するよりもはるかに厳密なデータモデリングだった。それは市場のごく薄い層に向けた新世代のスプレッドシートだった。とはいえ、硬派な数値計算のニーズが Improv の約束と完璧に噛み合う読者も、ごく一握りはいる。あなたがそういう人なら、間違いなく気に入るはずだ……Quantrix。


研ぎ直す

体験を改善する方法、明らかな不足、回避策、そしてこのソフトウェアを(可能なら)現代のワークフローに組み込む際の注意点。

エミュレータの改善

  • Previous は一度もクラッシュしたことがなく、初期と比べて設定はずっと楽になった。4.4 はずっと快調だ。
  • マウスの動きについてだが、(NeXTSTEP ではなく Previous で)「Slow movement」を「Fast」に、「Fast movement」を「Slow」に設定すると、追従がほぼ均一に近い手応えに調整できると分かった。自分にはこれでうまくいっているが、保証できるのはそこまでだ。
  • NeXTSTEP には「GKMouseScaler」という現代的なアドオンがあり、カーソル加速曲線を正確に描ける。もっと細かく制御したいなら使うといい。個人的には一度も必要なかった。
  • 2 ビットモノクロ表示で十分すぎると思う。カラーは要らない。

トラブルシューティング

  • これは Improv の 1.0 で、実際に何度か、しかもかなり突然にクラッシュした。特定のきっかけも、クラッシュを招く機能も見当たらない。ビーチボールが回り始めて、そのまま死ぬ。
  • NeXTSTEP 自体は安定していると思う。
  • 現代のリポジトリからソフトウェアを入れる際に覚えておくことが三つある。Previous の便利な機能のおかげで、NeXTSTEP の root/Net からホストのファイルシステムにアクセスできる。
  • ネット上では .tar.gz ファイルによく出くわすので、gunzip と tar を入れておこう。
  • .pkg ファイルを手に入れたら、ダブルクリックすれば勝手にインストールされるはずだ。

現実世界との接続

Improv は Lotus 1-2-3 にエクスポートできる。だが結果はたいてい期待外れだ。数式と計算値のある表を例に取ろう。セルに見えている内容はすべてエクスポートされるが、数式とセルの関係はエクスポートされない。手に入るのは現時点のすべての値のスナップショットで、並びはエクスポート時の表構造と視覚的に対応している。Improv が共有数式と多次元データを扱う方法が、従来のスプレッドシートへの美しいエクスポートを不可能にしている。Improv のドキュメントを Quantrix に取り込みたいなら、条件が二つある。Improv プロジェクトを .imx ファイルとして保存すること(デフォルトの .imp ではなく)、そして ~/Library/Services に Lighthouse FilterServicer.service が入っていること(「Version 3」の節で触れた Quantrix のソフトウェアリンクと同じサイトからダウンロードできる)。グラフのエクスポートは簡単だ。Display Postscript のおかげである。NeXTSTEP が生成する Postscript ファイルは、現代のマシンなら Ghostscript や他のグラフィックプログラムで問題なく開いて描画できる。

何が欠けている?

前述のとおり、NeXT では Lotus Improv よりも Lighthouse Quantrix v2.3 を勧める。Improv には重要な機能がかなり欠けている:

  • NeXT の v1 にはアンドゥがない。Windows の v2 にはある。
  • 数式は並べ替えられず、カット/コピー/ペーストに頼るしかない。
  • NEXT と PREV は単一の軸にしか効かない。同じ数式の中で複数の軸に効かせることが論理的にまったく筋が通るのに、だ。
  • Presentation Builder は一方で過剰に複雑、他方でごく基本的なツールを欠いている。
  • 他のプロジェクトの値を参照できない。つまり 3D ワークシートがない。
  • NeXT の v1 にはスクリプトの選択肢がない。Windows の v2 にはある。

要するに、従来の表計算ソフトが持つ粘土のような可塑性に欠けている。多くの人と同じように表計算をミニデータベースとして使っているなら、かなり苛立たされるはずだ。


Fossil Record

表計算が踊るのを見たことがあるか?一度だけ見た。

売上減少と、競合他社が独自機能を取り入れ始めたことで、Improv は値下げに踏み切り、主力ツールというより補助ツールとして自らを再定義した。

28 度。これでわかったはずだ。

NeXT はマーケティングで Futura Extra Bold Condensed を多用した。他の連中も同じだ。

本編はこちら。MacWorld 2000 での OS X 発表と見比べられたら、ボーナス点をあげよう。

出典: Stone Tools← ホームへ戻る