テキストエディター雑感(たぶん、その1)

Completed on 2000.09.26



 テキストエディターに関するよもやま話をします。

 雑感であります。ので、まとまりはないです。

テキストエディターって

 文書編集プログラム、テキストエディターは、コンピューターを使う 上で最も基本的な道具のひとつである。文章を書くという用途でないと しても、テキストエディターがなければ(使えなければ)、そのコンピュー ターはまともに使えないとさえ言っちゃってもいいくらいだ。なにしろ、 職業プログラマーならば仕事をしている時間の大半をエディターとの対 話に使っている(いやあ。今どきはどうかなあ……)。アマチュアでも、 プログラムを書いたりスクリプトを書いたりするのに使う。プログラミ ングをまったくしない人ですらOSの各種設定ファイルの編集や、簡単な 説明文書の閲覧などでお世話になっている。

 まあ、こんなのは常識以前。

 あまりに基本的、本質的な存在なので、誰も初めは気がつかないほど だ。でもそのうちに気になり出す(人が多いと期待する)。その証拠に 商用パッケージだけでなく〈フリーウェア〉や〈シェアウェア〉(こと ばの定義にはここでは立ち入らない)も実にたくさんの種類が発表され ている。ダウンロードサイトなど覗けば、よりどりみどり。

 こんなにたくさんあるのは、どーせなら気に入ったものを使いたいと 思う人がたくさんいるからに違いない。その点、文房具に似ている、と いうよりは、まさにコンピューター世界の〈筆〉、〈メモ帳〉、〈消し ゴム〉、〈鋏〉、〈クリップ〉、〈ステイプラ〉……と言ってよかろう。 そしてこんなにたくさんの種類があるのは、みんな、出来合いのエディ ターでは満足できないからに違いない。ペンやメモ帳や消しゴムやにた くさんの種類の商品があるのと同じように。

 使っていて満足できない人の中で、「自分で書いちゃえ」と思える人 は自分で書いて発表する(ここがリアル文房具とは異なるところ)。自 分で書くのはなぁと思っている人は、発表されたものから物色して使う。 これを延延と(笑)繰り返す。

 テキストエディターは「プレーンテキストの編集をする道具」だけれ ど、最近のエディターはもっと色色のことができる。HTMLソースの編集 もできるものもあれば、RTFのファイルも見られたりいじれたりできる ものもある。電子メイルの読み書きをできるものもある。HTMLも電子メ イルもプレーンテキストといっていいが、タグと呼ばれるデータを伴っ ていたり、MIMEと呼ばれる構造や埋め込みデータを持っていたりして、 こうしたデータや構造を適切に処理して表示したり、利用者が楽に編集 できるようにしたりしているのが「売り」だ。

 それでソフトが肥大化するのは歓迎できないが、便利なのは確かだし、 それぞれの用途に専用アプリケーションを揃えるのもかったるい話。ソ フトにあまりお金をかけたくないという人もいるだろうし、多くのソフ トを立ち上げておくにはメモリーやCPUがキビシイという人もいるだろ う。それにだいたいアプリケーションごとに操作体系が違う(〈ひとつ の操作を憶えればどのアプリケーションにも通用する〉マッキントッシュ のあの理想は、何処に行っちゃったんでしょうね?)。ひとつのソフト (の使い方)を知っていればそれだけでいろんなことができるというの は、利用者にとってもうれしいことだ。「テキストエディターの汎用ア プリケーション化」を促す利用者側の要因は整っている。

 実は、ぼくは上の全部に当てはまらないこともない。

 それにしても、テキストエディターには「決定打」というものがない。 いや、「これで決まりでしょう」というものはあるのだが、そして事実 そういうプログラムは圧倒的なシェアを誇ったり名声を確立していたり するのだが、だからみんなもう開発を(個人ベースであれ、営利企業で あれ)諦めるかというとそんなことはなく、みんなあいも変わらず「新 製品」をつくったり発表したりしている。これは一体どういうことなん だろう? といって、別にこの随筆でその疑問に答えるわけではないけ ど。

昔、行エディターというのがあった

 ぼくがコンピューターに触り始めたのはMS-DOSからで、それ以前の実 物はろくに知らない。エディターに着目・言及した文献も少ない(テキ ストエディターにみるコンピューター史、というのは、面白い視点だと 思う。コンピューターとOSの歴史でもあるし、処理能力の発展も眺めこ とができるし、利用者インターフェイスの変遷も捉えられる。誰かまと めてくれないだろうか)。でもまあほんの少しは知っている。ので、知っ たかぶり。

 今や若い人にとっては当たり前のようにスクリーンエディターが存在 している。スクリーンエディターしか知らない、エディターと言えば 「そういうもの」だと思っていた、そもそもスクリーンエディターって なに? という人が増えている。なんだかちょっと哀しい。そうではな い世界もあり、スクリーンエディターが使えない状況でもなんとかしな ければならない時もある。

 昔はOSがテキストエディターを標準装備していた(いや、今でもして ますけれども)。

 第二種情報処理技術者あたりの勉強では今でも出てくるのではないか と思うが、OSにも狭義のOS広義のOSがあって、広義の OSには「文書編集プログラム」や「連係編集プログラム」などが含まれ る…………という、あの「文書編集プログラム」がテキストエディター なんですね(ちなみに、「連係編集プログラム」は、コンパイルしてリ ンクして、のリンクに使うリンカーのことでした)。

余談。「狭義のOS、広義のOS」云々はプログラマーになりたてのぼくに はよく理解できなくて、「ふ〜ん。テキストエディターというのは、 オペレーティングシステムの一部なんだ」と信じ込み、 これで恥ずかしい思いをした

 ともかく、MS-DOSならedlinという行エディター、UN*Xならedという やはり行エディターが〈標準添付〉だった。〈標準品〉は、えてして低 機能で使いづらいものだ(edは実はけっこう凄いヤツなんだけど、でも 使いやすいとは思えない)。マッキントッシュにはTeachTextというス クリーンエディタがついていた(なぜなら「モードレスオペレーション を善とするマッキントッシュには、モーダルな行エディターは存在し得 ないから」……)が、これも貧弱な代物だった。

 さて、行エディター。英語でいうならline editor(これは〈正しい〉 英語なのかな?)。日本語でなら「行指向エディター」というべきでは ないかとぼくは思っている。が、誰も賛同しないに決まっているので黙っ ている。

 グラフィックエディターといえばグラフィックを編集するもの。パター ンエディターはパターンを編集するもの。フォントエディターはフォン トを編集し、テキストエディターはテキストを編集する。それにならう なら行エディターは「行」を編集するものであるべきではないか? (「 行を編集」って、……?) 同様に、スクリーンエディターも画 面を編集するわけではないのだから、「画面指向エディター」というの が〈ほんとう〉だろうと思っている。が、誰も賛同しないに決まってい るので黙っている。

 行エディターが行エディターたる所以は、テキストを「行(改行コー ドで区切られるあの「行」ね)」単位に編集するところにある。たとえ でいうなら、スクリーンエディターが「ノートを広げて文章を書く」と するなら、行エディターは「石盤に蝋石で書く」ような感じだろうか。 まーそーゆーよーな歯がゆさがあります。

 非コンピューター世界、現実界で考えれば、ノートなり原稿用紙なり 巻紙を広げて書くわけだし、文章を直す場合はノートや原稿用紙なり巻 紙を広げて、場合によっては何ページ分も目の前に広げて朱を入れる。 それが「自然」な行為だ。スクリーンエディターはちょうどそのように、 画面(ウィンドウ)上にタテヨコに広がったテキストの中の一箇所に編 集操作点を位置づけて、挿入したり削除したりすることができる。〈三 次元的〉編集といえよう。いや、〈二次元的〉かな? たとえなので気 にしないでください。

 行エディターはそうではなく、テキストを画面上に広げて見るという ことが基本的にできない。まして、広げたテキストの中にカーソルを動 き回らせるということなどできない。〈一次元的〉である(ほんとうか ぁ?)。すべての指令(コマンド)は行単位に働く。挿入も削除も行単 位。「この行の後ろに新しい行を挿入」とか「この行からこの行までを 削除」とかする。行内のテキストの挿入削除はどうするかというと、エ ディターによるが、

といった方法をとる。ぼくの知っているのはこのふたつだが、もちろん、 他にもあるかも知れない。

 「置換指令型」はedというエディターの方法で、「現在着目している 行の中の、abcという文型を、xyzで置き換 える」という指令を実行するもの。文型abcを空文字列で置き換えれば 削除になるし、文型abcをabcxyzで置き換えれば挿入/追加になる。置 き換えたい文型を、指令中でわざわざ明示しなければならないのが難点 である。

 「行編集指令型」は、edlin(ぼくたちは「えどりん」)と呼んでい ました)の方法で、簡単な文字単位の編集機能を提供するもの。着目し ている行は自動的に編集用のバッファに転写され、特殊キーを使って編 集できる。といっても大したことはできず、F1キーはテンプレートから 一文字コピー、F3は行の残り全部をコピー、F8は一文字スキップ、後退 キーは最後の一文字を削除、など。改行キーを押すとその行の編集が終 わる。

 「歯がゆい」でしょう。どちらの方法も、説明していてまどろっこし いくらいだから、お世辞にも使いやすいものではありません。

 もっと重要なのは、行エディターは基本的に「モード指向」であると いうことだ。エディターは利用者が投入したコマンドによってモードを 変え、コマンドの実行が終わるまではそのモードに留まり続ける。「挿 入」している間は、利用者が「挿入終わり」と言うまでは挿入モードに ある。挿入中に別の行の誤りに気づいても、その場でカーソルを持って いってちょいちょい直す、ということはできない。

 どうです。テキストエディターと言えば対話型アプリケーションの代 表格なのに、こんなに「不親切」だったのだ。にも拘らず行エディター がOS標準添付だったのは、なんといっても「作りやすい」からだったろ うと想像できる。

 モードに束縛されてよいなら、プログラム構造は簡単になる(GUIア プリケーションが複雑になる幾分かの理由は、イベント駆動とモードレ ス操作にある。もっとも最近は、平気でモードに束縛するものも散見さ れる)。オブジェクトも小さくなる。開発期間も短くて済み、コストも かからない。

 出力デバイスや画面表示の制御も、気にしなくてよければ気にしたく ないものだ。画面制御もけっこう厄介な仕事だし、「テキストを画面上 に広げる」というのは、見かけ以上にフクザツなプログラムが必要にな る。利用者の入力に敏感に反応しなくていいから、入力の読み取りも単 純に標準入力を読むだけで済ませてしまえる。

 種種の事情から画面指向にしたくてもできなかった、ということはあ るかも知れない――主記憶容量の問題とか(う〜む)、端末の能力が低 いとか、回線が遅くてたまらんとか(むむ)。UNIX世界では、昔は回線 速度が300ボーとか、端末がテレタイプだとかいうのはフツウだったみ たいだし……テレタイプでは画面指向編集なんてそもそも無理な話だ。 MS-DOSでは、たしかVersion 5になってようやくスクリーンエディター が標準装備になったと記憶している。

 ともあれ入出力の制御をしないということは、入出力デバイスに依存 しないで済むという長所ももたらす。可搬性が高いし、未知の端末に出 会ってもうろたえる必要がないし、特殊キーを使わなければどの端末で も同じ使い方になる可能性も非常に高い。「UNIXシステム管理者をやる なら、edは学んでおきなさい」と言われる所以であろう。

 標準品はこうでなければいけない。ちょっと状況が変わったくらいで 通用しなくなるようじゃ、標準品の値打ちがない。まさかそう考えて標 準エディターを行指向にした筈もないだろうけど。

 また、入出力の制御が単純である(殆ど制御しない)ことは、行エディ ターに別の価値――バッチ処理などの中で「非対話的」に使う、非対話 型ツールとしての用法――が生まれることにつながった。(すべての行 エディターがそうだというわけではない)

 ところで、「行指向のエディターである」ことと「入出力制御を簡単 に済ます」こととは、ほんらい直交した概念だ。行エディターだって肌 理の細かい入出力制御をしてもいい。いい例が、UNIX生まれのエディター vi 。あれが実はexという行エディターと同一人物だと知って驚く人も 多い。exはedのスーパーセットといえる強力な行エディターだが、入力 を一文字ごとに処理したりしている。

 さらにところで、操作が非対話的というか非直感的なところから行エ ディターと同一視されていたが(ぼくだけかも知れないが)、操作、指 令が行単位でなく文字単位であるエディターもあった。

 指令が文字単位というのは、バッファの内部モデルの話ではなく、利 用者インターフェイスのレベルの話で、極端にいえば、「次の行を表示」 ではなく「何文字めから何文字めまで表示」という指令しかない、とい うようなことだ。この手のエディターをぼくは触ったことがない。CP/M に文字指向のエディターがあり、マニュアルを見たが、いかにも使いづ らそうな印象だったので恐れをなして使わなかった(みんなWordStarを 使っていた)。それからかの有名な歴史的なエディターTECO は、伝説 から察するに文字指向のエディターだったのではないか。

スクリーンエディターだからいいってわけじゃない

 対話型ツールとして見た場合、行エディターはスクリーンエディター の敵ではない。スクリーンエディターは行エディターより直感的に操作 できるし、対話性も増すし、フィードバックも優っている。

 しかし、逆説的だが対話型ツールの〈弱点〉〈短所〉はまさにその対 話性にある。世の中の多くのスクリーンエディターは対話的にしか 使えない。たとえば置換。並のエディターだと、こんな順序で実行 する。

  1. 置換コマンドを選択する。
  2. 置換対象(検索)文型を入力する。
  3. 置換(後)文字列を入力する。
  4. 実行する。
  5. 対象文型が見つかるたび、置換する/しない/取り止めを選択する。
 だが置換を実行するのに常にこれだけのステップを踏まなければなら ない理由はあるのだろうか?

 一括置換するかどうかなどのオプションを指定できるものもあるけれ ど、この手間自体はそう変わらない。GUI上のエディターならひとつの ダイアログで全部入力できたりするが、ダイアログボックス自体を鬱陶 しく思ったことはないだろうか。

 やりたいことがハッキリしているなら、そして使い慣れているなら、 余計なフィードバックなどなしで実行したいのが熟練した利用者の心情 というもので、そのために設計者はキーボードショートカット(マッキ ントッシュ)とかアクセラレータ(シアトルやXウィンドウシステム) といったものを用意する。だがダイアログボックス自体を見ずに済ます ようにできるというアプリケーションは聞いたことがない。

 もっと鬱陶しい例。ほとんど文書を書き上げた。でも用語や表現に ちょっと問題があって、用語AをA’に、BをB’に、CをC’に変え なければならない。まずいことに文書は合計10のファイルに分かれてい る――なんて場合。あるいは、複数のソースから参照している変数名や データ型名が変わってしまった場合。ヘッダファイルの名前が変わって しまって複数のソースを直さなければいけない場合。などなど。(「途 中で名前が変わることのないように充分デザインを練らなければいけな い」なんて、知ったかぶりの突っ込みはご遠慮願いたい)

 こんなとき、N個のファイルを開いてひとつひとつちまちま検索して は置換する、のはさすがに莫迦らしい。スクリーンエディターは、この 点が概ね「弱い」と感じる。

 実はぼくはちまちまやるクチなんですが(爆)、それでもこういう仕 事をするのにGNU Emacsは使わない。viを使う(GNU Emacsの強力さから すると、簡単にやっつける方法もあるのかも知れない)。非対話的な処 理の方法を知っていれば、効率よくやっつけられる。そして行エディター の中にはそういうやっつけ方ができるものもある。

(でも、行エディターでなくても最近はいろんなやっつけ方があるから、 行エディターを使うのはやはり流行らないかな)

「テキストを編集する」ということ

 テキストを編集するのは、別にテキストエディターの専売特許ではな い。

ファイルを読み込み、目的の箇所(=編集を加えたい箇所)を見つけ、 挿入したり削除したり置換したりする。これを繰り返して、ファイルに 書き出す。という作業を対話的に行なうのがテキストエディターだとい うだけのことで、同じことはプログラムでもしょっちゅうやっている。

 それどころか、世の中にはこうしたテキスト処理を得意とするプログ ラミング言語がいくつもある。すなわちAwk, Perl, Snobolといった言 語である。sedというのもある(sedがプログラム言語だという見方を、 ぼくはこれまでしてこなかったけれど、見ようによってはこれもプログ ラム言語と言える)。

 やりたいことがハッキリしていて、しかも対話型に処理する必要がな ければ、こうした言語でさらっとプログラムして軽く済ませるのがよろ しい。

GUIだからいいってわけでもない

 ついでに触れておくと、GUIはコンピュータを広めるのに大いに貢献 したけれど、GUIの弱点は非対話型操作が苦手なところだ。しかも残念 なことに、GUIのメジャーなプラットフォームであるMS-Windowsもマッ キントッシュもネイティブなウィンドウシステムであり、非対話型操作 を支援するユーティリティが貧弱だ(最近になって、GNUのソフトウェ アが移植されたりして、充実しつつはあるけれども)。

 GUIからコンピュータに触れるようになった人たちが、「コンピュー タを使うとは、なんでもかんでも対話式にがりがりデータを編集するこ とだ」とばかりにがりがり対話型アプリケーションを〈使いこなす〉の を見るのは、ちょっちかなしい。

 でもそういう人たちでも、PerlとかAwkとかの存在を知り、その味を 知れば、自分でプログラムを書いてデータファイルを食わせてというこ とをやり始めるので、「GUIシステムだからいいんだ」「対話的、直感 的、WYSIWYGだからいいんだ」と言い切るのは今や却って毒のような気 もする。

好みと慣れと主義の間

 お気に入りのエディターと出逢えた人は、幸せだ。それだけで「コン ピュータライフ」は快適なんじゃないだろうか。

 どんなアプリケーションもそうだろうけれど、テキストエディターに は「癖」がある。それは設計思想かも知れないし、作者の美的感覚かも 知れないし、単に作者の好みかも知れない。主義信条だったりすると厄 介だ。「文書編集というのはこうあるべきなのだ」なんて〈主張〉を押 しつけられたら、使う方はたまらない。(ま、使わなければいいだけか)

 でも多かれ少なかれ〈作者の主張〉が現れてしまうのがテキストエディ ターというプログラムの宿命かも知れない。(プレーン)テキストとい うデータをどう取り扱うか、文字の集まりと見なすのか行の集まりと考 えるのか、といったところから始まって、タブ文字はどうするか、スペー ス8個分か4個分か、利用者に選ばせるのかどうか、選ばせるにしても文 書タイプごとに設定できるようにするかどうか、表示領域からはみ出す 行は折り返すのか折り返さないのか、などなど……

 プレーンテキストは印字可能な文字の集まりでしかないが、その範囲 の中でものすごい「バリエーション」がある。各種プログラミング言語 のソーステキストをそれぞれの言語に合わせて取り扱うかどうか。 LaTeXの文書はそれらしく扱えた方がうれしい/どうでもいい、HTMLは HTMLでまた違う/違わない、などなど……

 「言語に合わせて」というけど、ひとつの言語の取り扱い方にも好み や慣れや主義主張が分かれる、などなど……

 もっと基本的なところを挙げれば、操作体系。カーソルを上下左右に 動かすのにどのようなキー操作を結びつけるのか。

 (そうして、〈宗教戦争〉が勃発するんだな……)

 ど〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 しても我慢できない人は一念発起して自作するわけだが、うまくしたも ので、「好みの問題」は「慣れの問題」でもある。気に食わないと思っ ていても、(それを使うしかなかったりなどして)使い込むうちに慣れ てきたりする。で、慣れるとそれなりに愛着を感じちゃったりするから、 これまた不思議なものだ。

 ぼくはたくさんの種類のエディターを使ううちに〈達観〉してきて、 特定のエディターに拘る(周囲にも、けっこう、いました)よりはむし ろ、「こんどの環境ではどんなエディターを使うのかな」なんてことを 愉しみにしたりするほどになった。アマチュアの人は選り好みをしても いいし「このエディター以外は使いたくねい」と言い切ってもいいけど、 プロは選り好みをできないことがある。環境によってはそういうことも 起こるのだ。

 プロ(何をもって「プロ」とするかはさておき)は基本的にいつどん なプラットフォーム、環境で仕事をするか判らないから、好き嫌いは別 にしてどんなエディターでも使いこなせるようであるべきだ、思ってい る。そこにある道具を文句をいわずに使う。使いこなす。それで仕事を する。いかしてるじゃないか(笑)。そんなことでいちいち文句をいっ て仕事にならないのは莫迦莫迦しいし、プロとしては恥ずかしいのでは ないかと思う。だいたい道具に文句つける奴ぁろくな職人じゃねえや。 (親方か、おまえは)

 もっとも最近はどのプラットフォームでもそこそこ同じような環境を 構築することができるようになってきたから、「自分の仕事道具を持っ てでかける」というのにも無理はなくなってきた。いい時代になったも んである(しみじみ)。

上で「職人」というのが出てきたけど、「プログラマーの職人気質」は しばしば批判される。言わんとするところは判るんだけど、同じ「現場」 のプログラマーなのに無条件にこういう批判をして平気な人がいるのは 不思議です。それについてはいつか別のところで書くかも知れない。
「〈職人〉にすらなれない人間が〈職人〉を批判しちゃいけねえや」と いうのが基本論調になるのではないかと思ってます。

 ぼくは今Mule(GNU Emacs)を常用している。好きだからではない。が、 ちょ→強力・ちょ→便利なのは事実なのだった。

GNU Emacsの場合は、「強力」「便利」という絶対的魅力があるから、 厭でも使う、使ううちに慣れる、慣れると肯定的に評価する、というこ とも起こる。でもそれほどでなくとも、貧弱なエディターでもいやいや 使っているうちに慣れてきて使いこなすようになる。最初はペン先が固 かったり滑りが悪かったりする万年筆も使ううちに馴染んできて書き味 がよくなるのと似たようなものだろうか。

どんなエディターが好きですか?

 こんな文章をここまで読んできたあなたも、相当な物好きに違いない。 もしいま使っているエディターがあてがいぶちのものだったりなんとな く使ったりしているのなら、「心から気に入るエディター探し」の旅に 出てみませんか。今からでも遅くはありません。

 そうして遍歴を重ねてみてください。何かが見えてくるでしょう。こ ないかも知れないけど。そうしていつしか、立派なエディター評論家に なれることでしょう。少なくともコレクターにはなれます。

私のテキストエディター遍歴

 これまでに触れたテキストエディタのうち記憶に残っているものを、 最初に触った年代順に挙げてみる。なに、ただの自己顕示欲です。

 主に仕事で、ソースコードや文書の執筆に使ったことのあるものを挙 げる。ワードプロセッサーは除外する。また、統合型開発環境(THINK C, TurboC/C++, Borland C++など)のエディター、メイラーのエディター も除外している。このほかにもFinalやPE/2(IBMパーソナルエディタ)、 秀丸、マッキントッシュならQUED'Mなんかに触っているし、UNIXでも neditなんてのも使おうとしてみた。ちょっと試してはさよならしたフ リーウェアやシェアウェアは数知れない(Nifty-Serveのデータライブ ラリには世話になった)。

エディタの名前プラットフォーム、寸評
COMPOSエディタ 某オフィスコンピューターのエディター
edlin MS-DOS。素人目にみても使いやすいものじゃなかった
ed UNIX。仕事ではろくに使ったことがないのに、なぜか思い出深い
vi(ex) UNIX, MS-DOS。クローンではstevie, elvis, (j)vimなど。
(j)vimが一番いいかも
gw-basic MS-DOS(某マイナーPC)。忘れ難い「環境」だった
RED MS-DOS(PC9801)。一時期はすごく世話になった。あの速さは 忘れられない
MIFES MS-DOS(PC9801), OS/2。Windows版もちょっと触った。
メジャーだったけど、そんなに感銘は受けなかった
WordMaster MS-DOS(某マイナーPC)。使い込みたかったんだけど使い 込めなかった記憶がある。日本語対応してなかったのかな?
WordStar C/CP-M86(某マイナーワードプロセッサー専用機)。 ちょっと触ったくらいだったけど、それでも凄さは感じられた
PSE MS-DOS, OS/2。初めて買ったソフトウェアでもある
ASLEdit Macintosh。マッキントッシュにはいい「エディター」が なかったなぁ。その中ではよく使った方かな
Emacs UNIX, MS-Windows。Nemacs, Mule, Meadowも含める。
愛憎半ばする、という感じでしょうか(^^)
VZ MS-DOS, MS-Windows。これにもずいぶんお世話になった

COMPOSエディタ

 誰も知らないだろう。

 昔昔、RICOMという機械(オフコンと呼ばれた種族)があり、 それにはCOMPOSというOSが載っていた。そのエディターである。実にこ れが「わたしとテキストエディターとの出逢い」であって、わたしの遍 歴はここから始まった。

 RICOMというマシン、COMPOSというOS、Cobolという言語に特化した文 書編集プログラムで、実はけっこう使いづらいエディターだったのでは ないかと思うけれど、初体験でもあり、興味津津、触った記憶がある。

 ちなみに、いちおう、スクリーンエディターでした。というか、viの ような「画面指向行エディター」だった記憶がある。プログラミング支 援(コーディング支援)として、マクロ機能がついていた。こんな機能 はその後しばらく見なかった。当時としては「先進的」だなと長らく思っ ていた。発見したのはぼく、ではなかった。残念(^^)

 それにしても、最初に触った機械がコレだから、「広義のOS」で勘違 いしちゃうのも無理はなかったと思うんだが。

gw-basic

 首を傾げる人が多いかもしれない。いったんBasicを起動しておいて、 Basicのエディターを使って編集する。当時のMS-DOSマシンにはOSの一 部としてBasicインタープリタが添付されていたから、ただで使えるテ キストエディターなのだ。

 この〈技〉を開発したのはもちろんぼくではなく、偉大な先輩だった。 ちなみにBasicといっても今のビジュなんとかとは似て非なる代物であ ることは言うまでもない。

 BasicではプログラムをASCIIテキストで保存することができる。すべ ての行に'(Basicでのコメント開始記号)をつければ、Basicに誤って プログラムと解釈されることのないプレーンテキストを書ける。リスト 表示はBasicの環境に備わっているし、行の複写は行番号をつけ替える だけだし、処理系によってはスクロールもできたから、まだ何も知らな い無邪気なnewbieだったぼくには行エディタなんかよりずっと快適な編 集環境ではあった。Basicの行番号は、コンパイル時にプリプロセッサ で削除してしまえばよい。

 こうした先輩の着想や工夫と共に、コンピューティングというもの、 プログラミングということを学んだ。

 とはいえ、こうした工夫は素晴らしいものだったが、こうした工夫を しなければならないこと自体、当時の(PC9801を除く)MS-DOSマシンに ろくなテキストエディタがなかったことを物語っている。(先輩たちが 単にBasic好きだった可能性も否定できないが、そんなことは考えない でおこう)

ed

 COMPOSエディター、edlinと触れた後に、edを教わった。

 高機能らしいとはぼんやり思ったものの、なんだかわけの判らない代 物だった。後に正規表現を勉強したときに再認識し、『ソフトウェア作 法』という本で再再認識した。

 「UNIXの『標準エディター』はedである」という言い方がされること がある。ご存知 vi(ex) はバークレイ生まれで、〈本家〉ベル研究所で はedに代わるエディターが開発されなかったから、だそうだ。

 ものは言いよう、だけど、TERMCAPが壊れていたり、未知のTERMだっ たりするとviもEmacsも使えない。システム管理者になったらedは憶え ておいて損はない、というのは確かに言えると思う。そしてどういうわ けか今だに(たぶんどんなUN*Xでも)標準添付されている。じっさい、 何度かこいつのおかげで窮地を乗り越えたことがある。

 また、ウェブでCGI経由でホストコンピュータの設定をいじる、とい う仕事をしたとき、とあるファイルをCGI経由で編集する必要に迫られ た。専用の設定ツールで編集するしかなく、しかしそのツールは中でエ ディターを起動している。この場合、画面指向の対話型エディターは使 えないので、edを使うようにしてやっつけた。持つべきものはいいツー ルである(ぼくが書いたのではないけど)。

 edの「凄さ」を物語っているのは、このエディターでの記法や概念が、 あるいはsedに引き継がれ、あるいはgrepに名残をとどめ、あるいはex に発展して、果てはAwkやPerlにまで影響を残す……というように、 UNIX世界を覆っている事実だろう。やっぱり侮れない。

viとその一族

 viに出逢ったのはedの後だったと思う。何にも知らなかったもので、 何とも思わずに使い方を憶えた。いずれにせよedよりはマシだったし。 実はけっこうヘンなエディターだと気づくのは1年後。凄さに気づいた のはもっと後。

 プログラムエディターとしては強力だと思った。でもこれで日本語の テキストを書くのは苦痛だった。昔はPCからシリアル経由でログインし て、日本語入力はPCのものを使っていた。だからviのモード切替えと日 本語入力FEPのモード切替えと両方を行なわなければならず、繁雑なこ とこの上なかった。やっぱりモード指向のエディターはイカン、と思っ たりした。でも仕方ないので使い続けた。

 しかし、プログラムをいじるのに必要なコマンドがちゃんと備わって いる点、ホームポジションからあまり指を動かさずに使えるようなキー 割り当てになっている点、外部コマンドを実行したりその出力を取り込 めるようになっていたりする点、「裏技」が充実している点、かわいが れば応えてくれるエディターだと思う。同じバイナリが画面指向でも行 指向でも動くというのも凄いし、端末の回線速度が遅いと判断するや 「オープンモード」で動作する、というのにもなんだか感動したものだ。

 もちろん、マルチファイルを装いながら実質シングルファイルである 点、無名バッファにバグがある(ように思えてならない、オリジナルは) 点など、文句もある。(この辺の不満は、クローンを使えば解消できる が)

 感心するのはexモードというか、exコマンド。あれが意図的にデザイ ンされたものか、成行きや事情でそうなったのか知らないけれど、ああ いうのをアイデアというのではないだろうか。

 マクロプログラミング、カスタマイズ、機能拡張の愉しみを知ってし まうと、ちょっと簡素でもの足りない気持になっちゃうけど、決して侮 れないエディターだと思う。日本語の文章を書くのに使う気にはなりま せんが。

RED

 Basicをエディターに使うのもそろそろ卒業したい気持になり、それ 以前に環境がそれを許さなくなった頃、たまたまPC9801を使う機会に恵 まれ、使ったのがこれ。

 びっくりした。マルチファイル、マルチウィンドウであり、その上速 い。なにしろ画面更新が速い。スクロールもめちゃくちゃ速い。検索も 速かったと思う。プログラム内部ではどんなことをしているんだろうと 不思議だった。

 こんなに高速で高機能なエディターが、なぜ自分らが普段仕事をして いる機械で使えないのか、悔しかった。こういったところから「可搬性 に優れたエディター」に拘るようになったような気がしないでもない。

 時を経てRED2とかいうのになった後、DOS上のいいエディターが欲し くて買ってみたけれど、もうかつての興奮はなかった。自分がエディター に求めるものが、変わってきていた。

MIFES

 一番よく使ったのはOS/2時代。MIFES/2という代物だった。メジャー なエディターではあったが、どういうわけか、惹かれなかった。どうし てだろう。

 MIFESもカスタマイゼーションやマクロが有名だった。キー割当をい じったりしたことはあるけど、なぜかMIFESのマクロは書く気にならな かった。

PSE

 もう市場からは姿を消したと思うが、PSEこそはぼくが初めて出逢っ た「本格的なエディター」であり、大きな影響を受けたエディターだっ た。

 すでにvi、RED、MIFESに出逢っており、これらにはこれらで感心した し影響を受けたのだけれど、可搬性(ひとつのバイナリがどのMS-DOSマ シンでも実行可能)、拡張性(マクロエンジン搭載)などの面で「本格 的」だと感じた。しかも安い。MIFESなんかが何万円もした当時、9800 円で手に入れられた。しかもソースコードも添付されていた。

 「TERMCAPの記法から着想を得た」という、作者独自のマクロエンジ ンが搭載されていた。スタック指向のForthっぽい言語で、読みづらく 書きづらかったけれど、マクロというものに触れたのもこれが最初で、 熱中した。

 今から振り返ると、いくつかの点で「素朴」であり「デザインが悪い」 と感じる。マクロも素朴そのもので可読性が悪い上に遅かった(後にバー ジョンアップした際、C言語風の記述からマクロを生成するプリプロセッ サーが添付された。残念ながらその時にはもう情熱は失くしていた)。 しかし当時、ひとりのプログラマーが、自分の動機と自分のアイデアに 基づいて、自力でひとつの世界を構築するという行為に、このソフトウェ アで初めて接した。多いに勇気づけられた。その意味でも影響を受けた と思う。

 バッファ管理、メモリ管理、正規表現などのソースを読んだ。参考に なった気もしたし、ならなかった気もする。自分でエディターを書く目 標があったのでそのまま使う気はなかったし、読んでもすぐ忘れてしまっ た。参考になったとすれば、可搬性を高めるためのコーディングの技法 や心構えを学んだところだろうか。

 ソースがついていたおかげで、当時ろくなエディターのなかったOS/2 に移植して、仕事で活用した。いろいろな意味で思い出深い。

VZ

 pseを知ったのと同じころ、pseの広告が載っていた同じ雑誌にEZとい うエディターの広告が載っていた。

 広告によればかなりの高機能であり、pseと値段もほぼ同じで、どち らを買おうか迷ったので憶えている。結局、EZはPC9800シリーズ専用だっ たので止めた。当時のぼくの作業環境はIBM 5560でありFACOM 9450Σで ありOS/2であり……だったのだ。ソースがついていたので頑張れば移植 できたのだろうけど、いかんせんアセンブラでは当時のぼくには荷が重 かった。

 このEZが、後のVZに変身したと知って少々驚いた。いや、それだけの 話なんだけど。

 自分でPCを買ったとき、環境を安く作りたくて、殆ど値段だけで買う ことにした。使ってみたらなかなかよいので使い続けた。一番活躍した のはHP 200LXでだろう。MS-Windowsでも使い続けたが、Windows95になっ てからは少々無理があったようで、じきにぼくはGNU Emacsに移行した。

 とにかく速かったのには感動した。マクロも、ほんのいくつか書いて みた。とても書きにくかったが、慣れると面白くなるから不思議だ。

GNU Emacsとその一族

  GNUプロジェクトやGNU Emacsというものを知ったのは、1987年ごろ だろうか。PSEの作者も自分の記事で言及していたような記憶もある。 有名なエディターだというのは知っていたが、使う環境がなかったし、 使う気もあまりしなかった。あ、仕事場にMicroEmacsというのがインス トールされてて、ちょっと触ったことはある。それがなんかヘンな感じ だったので、敬遠したのだ。

 とある仕事で、UNIX上で大部のLaTeX文書(とーぜん、日本語中心) を書かなければならないことになり、こりゃーviぢゃ無理、Emacsでも 使わなければやってられねーと、使い始めた。使うからには使いこなし たいので解説本も数冊買って勉強した。でも、あまり好きではなかった。

 その後、メイラーとしてふたたび(MS-Windows上で)使い出し、常用 するようになったが、今でも「好き」とは言い切るにはためらいがある。 ぼくの好みとGNU Emacsの好みは合っていないところがあるようだ。機 能拡張言語がLispじゃなかったら使っていないかも知れない。そんなこ ともないか。

 強力であり、便利であることは確か。ただし、その恩恵にあずかるに は、GNU Emacsの世界に住むことを決意しなければならない。そういう 強烈な個性がある。なんだか、アメリカ合衆国を象徴しているような感 じも……(爆)

問題のハズカシイ話

 そんなわけで、新米プログラマーはBasicをテキストエディターに使 うという技を教わって仕事に励んでいた。

 先輩が開発した技で、知恵と力と勇気のたまものではあったが、やは り使いやすいとはいえなかった。それでなくてさえ、コンピューターに 触るようになってから、文書編集環境というものが貧弱だなあと彼(ま たは彼女)は感じ続けていた。

 ある日、その不満がこぼれ出た。自分の仕事が一段落して、先輩と雑 談するうちエディターの話になり、ふと、「それにしても(MS-DOSには) いいエディターがないですよねぇ」と漏らしてしまったのだ。

 先輩は言った。「じゃあ、おまえが創ればいいんだよ」

 先輩があまりに平然と言うので、新米はびっくりした。テキストエディ ターを創るなんて、そんな大それたこと、できるんだろうか? なぜっ て……新米はおそるおそる、先輩に訊ねた。

 「それは、OSを改造するってことですか?」

 未熟でものを知らないプログラマーは、それをOSの一部を改造するよ うな大事業と勘違いしたのだった。

 先輩たちはにこにこ笑っていただけだったけれど、後になって自分の 勘違いが判ったときは(判るまでけっこう時間がかかった)冷汗をかい た。

 ほんのnewbieだった頃の、ほろ苦くも懐かしい思い出だ。

 ただ先輩のその示唆のおかげで、新米プログラマーは「(いつの日か) 自分が使いやすいと思うテキストエディターを創ること」を目標に、そ の後のキャリアを歩み始めた。ライフワークができたわけだ。

 このライフワークは、まだ完結していないどころか、着手もろくにで きていないそうである。






目次へ


(C) Copyright nulpleno. All rights reserved.