先日マイクロソフトの設立記念日について書いた際に、MS-DOS の元となった OS である CP/M の説明の為に、もう12年も前に書いた自分の記事を引用した。
この記事の中に CP/M の話題が、ほんのちょっとだけ出てくる。それでリンクしたのだ。
まぁ、それは置いといて、この記事を書いた際にコメントをもらっていて、気にしていたが12年も放置していたことを思い出した。
世界初のスクリーンエディタとして、 O26 というものがある、という情報だった。
実は、情報をもらってすぐに、ある程度調査は済んでいたのだ。
その時の調査の雑感としては「O26 はスクリーンエディタではない」だった。
だけど、情報が少なすぎた。これが本当に世界初、というようなものであれば、もっと情報があるはずだ。
その情報がない、という時点でかなり怪しくもあるのだが、情報が少なすぎて確信が持てなかったので、記事を書くのは保留にした。
そして、書かないまま忘れていたわけだ。
最初に、根拠希薄だと断ったうえで、一番の有力証拠を挙げておこう。
12年前には普通に見られたのだが、すでにページが無くなってしまったようなので、WaybackMachine のアーカイブを示した。
以下、この命令表を参照しながら話を進めることになるので、PC などでお読みの際には、別ウィンドウで開いてすぐに見られるようにしておいてもらえると、話が分かりやすいと思う。
この命令表には、O26 で使用できたキー操作や、命令体系が書かれている。
しかし公式なものではない。後で示すが、キー操作や命令だけをまとめた「インスタント」という小冊子があり、そこから抜き出したもののようだ。
いずれにせよ、ここで示されているのは O26 の命令などの早見表ではあるが、それが何であるかなどの説明は一切載っていない。あくまでも「インスタント」…現在でいうチートシートのようなもので、本当に詳しく知りたいときはマニュアルを参照すればよい。
だが、マニュアルが今となっては失われている。
(こうした資料を集約しているアーカイブプロジェクト、bitsaver の CDC のディレクトリを隅々まで探したが、見当たらなかった)
そんなわけで、O26 がどのようなものであったのか、詳細が皆目わからないのだ。
わからないままに、O26 は世界で最初のスクリーンエディタだった、という話だけが流布している。
わかるところから順に確認していこう。
まず最初に予備知識。「スクリーンエディタ」とはなにか。
わざわざ「スクリーン」とつけているのだから、そうでないエディタもある。まずはその話からだ。
大前提として、初期のコンピューターは非常に高価なもので、個人が持つことなどできなかった。
皆で共有していて、個人が使いたいときには予約して時間割り当てをもらう。
その時間の中でコンピューター作業を済ませる必要がある。
コンピューターを使用する作業を手早く済ませるには、事前準備が必要だ。
「プログラムを作る」というと、今ではコンピューターに向かってテキストを編集するイメージがあるのだが、当時はコンピューターを使わずに行った。
パンチカードの穿孔作業にはコンピューターは不要なので、紙の上でプログラムを作成したうえで、パンチカードに穿孔してコンピューターが読み取れる状態にしておくのだ。
パンチカードは、今回の話の中心である CDC 6000 シリーズの場合、一度に 4000枚をセット可能で、1分に1200枚読めた。
1枚が1行だから、ちょっとしたプログラムならすぐに読み込みが終わる。
しかし、人間のやることだから必ず間違いはある。
パンチカードを読み込んでファイルを作り、そのプログラムをコンパイルしたら、エラーが出たとしよう。
文法エラーの行番号がメッセージに含まれているから、間違えた行はわかる。
ここでパンチカードを作り直してもう一度読んでも良いのだが、すでにファイルになっているので「エディタ」で操作してみよう。
まず、エディタのプログラムを動かす。
当時のコンピューターの操作方法は、タイプライターのキーボードと、プリンタだ。
エディタを動かす命令を実行すると、また命令待ちになる、
これは OS が命令を待っているのではなく、エディタが命令を待っている状態。
編集したいテキストファイルを読み込め、と命令を入力する。
続いて、エラーで示された行番号を元に、前後5行ほどを印字するように命令を入力すると、テキストファイルの一部が印字される。
なるほど。おかしな場所を見つけたら、修正する。
ここでもまた、「入れ替え」を指示する命令と、行番号を入れる。
さらに、正しい内容を1行分、間違えずに正確に入力する。
これで、間違えた行は、正しい内容に置き換わった「はず」だ。
行番号を間違えたり、入力でまた間違えていたりするとおかしなことになる。
なので、もう一度エラー行の前後5行ほどを印字する命令を入力する。
印字された内容が正しくなっていれば、修正は完了だ。
修正内容をファイルに書き戻して、エディタを終了する。
以上が、当時のテキスト編集の「普通の」やり方だ。
何をやるにも行番号が必要。行ベースで編集を行うので、「ラインエディタ」と呼ばれる。
ラインエディタは、テキストファイルの「修正」を行うことができるが、1から作成することはあまり想定していない。
先に書いたように、最初はパンチカードでファイルを作成するのが前提だ。
テキストファイルを命令で編集する、というのは面倒そうに見えるが、小さな修正だけなら特に問題なかった。
これに対し、現代的なエディタは「スクリーンエディタ」と呼ばれる。
連続して複数行にわたる長文だって入力できるし、単に「編集するためのエディタ」ではなく、1からすべてを作り上げられる。
文字を挿入したり、削除したりする編集点を、「カーソル」と呼ばれる表示で示す。
このカーソルを自由な位置に動かし、直接的に追記や削除を行う。
カーソル移動がカーソルキーだったり、マウスクリックだったり、文字が固定幅だったり、プロポーショナルだったり、リッチテキストだったりという違いはあれど、カーソルを使って編集する方式は、スクリーンエディタの仲間だ。
スクリーンエディタには、「必ず」カーソルが存在する。
名前の呼び方は違っても良いが、この概念が重要だ。
あと、カーソルという概念は、スクリーンエディタが普及する前は無かった。
だから、キーボードにカーソルキーが付くのはずっと後の話で、初期のスクリーンエディタは、何とかして普通のキーボードでカーソルを移動する。
「カーソル移動キー」は、スクリーンエディタにおいて、もっとも重要なキーだ。
さて、以上の知識を踏まえたうえで、O26 の命令一覧表を読んでみて欲しい。
最初の方にあるのは、命令ではなくキー操作の説明だ。
「SETS INSERT」という記述が多く並んでいる。
これについては後で説明を加えよう。
その後、MESSAGE、SYSTEM COMMANDS、FILE COMMANDS、と見出しが続いて、その後に LINE ENTRY AND DATA MOVE とある。
注目すべきはこの部分だ。
「行の編集」について多くのコマンドが示されている。
行の内容を削除したり、追記したり。
この際、X,Y で示されるのは、行番号。
編集はコマンドを行番号込みで使用して、行単位で行う、という操作方法だ。
つまり、O26 エディタは、以下のような特徴を持つ。
・カーソル移動に相当する概念が存在しない。
・編集が直接入力ではなく、コマンドによって行われる。
・編集コマンドには、行番号の概念が密接に結びついている。
これはラインエディタの特徴であり、「O26 は世界初のスクリーンエディタだった」という話とは全く違っている。
ラインエディタはプリンタを使用してテキストを確認しながら編集を行った。
プリントアウトされたものは変化しない。過去の情報であり、現在とは食い違っている。
だから、常に「最新の情報」を確認しながら編集を進める必要がある。
O26 は編集命令などを見る限りラインエディタの延長上にあるものだが、ブラウン管ディスプレイをうまく活用した機能を持っていた。
ここで、まず「ディスプレイ」について概要を示す必要があるだろう。
最初にディスプレイを搭載した市販機は、1960 年発売の PDP-1 。ベクタースキャンディスプレイで、グラフィックの表示は得意だが、文字表示にはあまり向いていなかった。
どうも、ここで「ディスプレイ」の有用性に気づいたらしい各社が、こぞって 1964年にディスプレイ付きのコンソールを発売する。
発売順などはよくわからないが、同じ 1964年発売なので、開発などは同時に進んでいたのだろう。順不同で紹介する。
まず、IBM 。当時のコンピューター最大手だ。
価格の違う3つの製品を出したのだが、いずれもラスタースキャン。文字の表示に適した方式だ。
一番高級機で、80文字 12行を表示できた。
次に UNISYS 。IBM にまともに対抗できていた大手だ。
こちらも2機種あるが、ベクタースキャン。グラフィック表示に適しているが、文字を表示する機能があった。
高級機で、80文字 12行を表示できた。
さて、O26 が作成された、CDC 6000 シリーズ。
最初の機種である CDC 6600 が 1964年に発売になっており、セットで使うディスプレイ付きコンソールも同時に発売している。
画面が2つにキーボードが1つ、という変則的な構成で、ベクタースキャン。
しかし文字の表示に特化したモードを持つ。この時、ベクタースキャンの特徴を活かして、文字サイズは3段階に可変。
一番文字を小さくしたとき、1画面に 64文字 40行を表示できた。
横に表示できる文字数こそ他社より少ないのだが、行数が多いため、画面に表示できる文字量で圧倒している。
しかも、これが2画面ある。
この「潤沢に文字表示ができる」ディスプレイを活用して、O26 というテキストエディタが作られたのだ。
(このディスプレイについては、6600 Computer System Reference Manualの54 ページに詳細が書かれている。
行数が示されていなかったが、画面写真の行数を数えて、少なくとも 40行表示できているのを確認)
コマンド表から「想像」できる、O26 の概要を示そう。
ここから先の話、O26 のマニュアルなどが見当たらないため、想像に過ぎない。
命令表などを読んでそれなりの根拠はあるが、間違えている可能性は多々ある、というつもりで読んで欲しい。
通常のラインエディタでは、編集する際には、まず編集したいテキスト周辺を印字、コマンドにより編集、正しく編集できたか、もう一度テキスト周辺を印字、という作業を繰り返す。
これは、プリンタの特性上当然となる作業の流れだ。
しかし、CDC のコンソールであれば、画面上にテキストを常に表示しておき、編集したらすぐに画面上にも反映、ということができる。
おそらくは、O26 の最大の特徴はここにある。スクリーンエディタではないが、従来のラインエディタではない、「スクリーンを活用した、非常に便利なエディット環境」ではあった。
先に書いたように、CDC のスクリーン上には 40行の表示が可能だ。
このうち おそらく 32行を使って、テキストを表示している。
画面は表示部分以外に数行余るが、おそらくはここでコマンドを受け付ける。
(もしかしたら、2つ目のディスプレイを使ったかもしれない)
編集コマンドでテキスト内容を変更すれば、それは表示部分にすぐに反映される。
この環境は、従来のラインエディタに比べれば、非常に使いやすかっただろう。
さて、命令表の最初の方には「INSERT MARKER」という語句が並んでいる。
O26 にはカーソルは無いのだが、INSERT MARKER という概念がある。
INSERT MARKER を任意の行に設定し、一部の命令は INSERT MARKER が示す行を編集対象とする。
ただし、命令を見ると、INSERT MARKER を対象とした命令と、行番号を必要とする命令が混在している。
実は、INSERT MARKER にはさらに特殊な「INSERT 8」「INSERT 9」と呼ばれる概念がある。
この2つは、「範囲の最初」と「範囲の最後」を示すものだ。
そして、命令によって行番号が必要だったり、2つの行番号で範囲を示したり、INSERT MARKER で特定行を示したり、INSERT MARKER 「以降」という範囲を示したり、INSERT 8/9 で範囲を示したり…と、なんとも命令系統が混乱しているのだ。
…ここで、追加で資料を示そう。
最初に挙げた命令表は「インスタント」から抜き出したものだろう、と書いたが、1981年当時の INSTANT であれば、bitsavers にあったのだ。
1-39ページからが O26 の記述になる。
ここで、最初に書いた命令表と見比べると、命令の体系が結構変わっている。
行番号を対象とするものはなくなり、すべてが INSERT MARKER (8/9 含む)を使った操作になっているのだ。
相変わらず直接テキストを編集することはできず、命令で操作することになる。
でも、行番号を意識する必要はなくなり、命令系統もずいぶんとすっきりした。
なお、先に「テキスト部分は 32行」と書いた根拠は、ここでの記述になる。
INSERT MARKER の設定部分が変更されており、先の命令表では 28行目にセットしていた操作が、32行目になった。
「4行おき」だったのがここで不自然に飛ぶことになったが、おそらく 32行目が最終行で、最終行にセットできるようにしたかったのだろう。
ここで重要なのが、1981 年にはすでに vi も word star も発表になっていることだ。
つまり、スクリーンエディタは当然になっている。
そして、O26 はプログラムが改良され、もともとラインエディタとして作られていたのが、スクリーンエディタっぽくなっているのだ。
(相変わらず編集に命令が必要だが、行番号を意識する必要がなくなった)
そう考えると、最初に書いた命令表も、いつのものだかわからないため怪しくなってくる。
最初から INSERT MARKER は存在したのか?
この命令表は、筆者の「昔のコンピューターの思い出話」の中で資料として示されている。
この思い出話は、1978~1983 年のものだ。
1981年のインスタントよりも内容的に「命令が整理されていない」ので、より古いもの思うのだが、1978年であればすでに vi は世に出ているのだ。
つまり、これが改良中の、徐々にスクリーンエディタの作法を取り入れている最中の O26 のもので、だからこそ命令に混乱があるのだ、という可能性も捨てきれない。
以下、調査結果をまとめよう。
12年前、vi が世界最初のスクリーンエディタだが、word star も vi を真似したわけではなく、独自に同じ発想に至ったのだろう、と書いた。
これに対して O26 の方が先に作られたスクリーンエディタだ、という情報をいただいた。
O26 は、1967 年に作成されている。
これに対し、vi はその前身となる ex の開発が、1976 年に開始されている。
(vi は ex の名前を変えただけ)
O26 の方が古いのだから、O26 が世界初だろう、という情報だったが、調査の結果、O26 はラインエディタであり、スクリーンエディタではなかった。
今のところは、世界最初のスクリーンエディタは vi 、という認識のままでよいかと思う、
O26 の当初の機能は、残念ながら文献が見つからずよくわからない。
しかし、「ある時点」の命令表と、1981年の命令表が見つかっている。
ここで分かるのは、O26 は作りっぱなしではなく、積極的にアップデートされていたということ。
スクリーンエディタが世に出て以降は、スクリーンエディタの作法を取り入れて便利に改良した節が見受けられる。
相変わらずカーソルの存在しないラインエディタなのだが、行番号を意識せずに使えるようになったのだ。
ここら辺の歴史経緯に気づかずに混同したのが「O26 は世界最初のスクリーンエディタだ」と言われている原因でないかと思われる。
ただ、作法的にラインエディタだったとしても、編集中のテキストを常に表示しているなど、非常に使いやすい環境だっただろうとは思う。
「スクリーンエディタ」ではないが、「当時はまだ珍しかった、スクリーンを上手に活用したエディタ」だったことは事実だ。
4.16 追記
元々英語のWikipedia に O26 の項目があるのが話の初めなのだが、急に気が付いて、「talk」を読んでみた。
Wikipedia では、編集の際に議論が必要となった場合の為に、表には見せない議論の場がある。それが talk だ。
で、確認したら、案の定「スクリーンエディタとは何か」という話になっており、もともと記事を起こしたらしい人が「編集バッファの内容をリアルタイムでディスプレイに表示するものをスクリーンエディタと定義する」と独断していた。
なるほど。その定義でいえば、O26 は世界初のテキストエディタだろう。
カーソルなど存在しないでも、作法的にラインエディタであっても、この定義であればテキストエディタとなる。
しかし、本文に書いた通り、世間的なテキストエディタの定義とは食い違う。あくまでも、コンセンサスの取れない独自研究に類する話のようだ。
どうも、ネットに(英語圏で)流布している、O26 が最初のテキストエディタだという説は、英語の Wikipedia が発信源のようだが、以上のように余りにも独特な主張である、ということを明記しておく。
僕は度々 Wikipedia を信じることの危険性を書いているが、ここでも同じ話の繰り返しでした。
同じテーマの日記(最近の一覧)
関連ページ
vi は世界初のスクリーンエディタか?【日記 13/11/11】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |