情報処理学会,卓上出版シンポジウム,1988年7月21日〜23日 箱根 静雲荘


Kanzenは完全か?

これは以前 Computer Today のワープロ特集号 (1987年7月号) に掲載したものを DTP シンポジウム向けに清書したものである. なるべく原文のままとし,必要なところは脚注にして内容を補った.

NTTソフトウェア研究所 竹内郁雄

アンチワープロ派からワープロ派へ

自分でもなぜか分からないのだが, 私は計算機のいろいろな分野に関して極端に保守的なことが多い. 逆にこれはと思うと妙に早飲み込みで首を突っ込んでしまう性癖もある. しかし,ワープロに関しては明らかに前者だった. 私のいる研究所は研究の道具として使うものについてはすぐ新しい製品を導入する, よくいえば先進的,悪くいえば早とちりのところがある.だから, ワープロも東芝の最初の JW-10 から始まって主なワープロは大体使おうと思えば使える状況にあった. しかし,どういう風の吹きまわしのせいか, 私はワープロにはとんと興味が湧かなかったのだ.

今思い返して強いて理由を挙げれば, 第一にワープロ中毒者の生活をつい垣間見てしまったこと, 第二にワープロで打つより手で書いたほうが速く文章が書けると思っていたこと, 第三にワープロの印刷に親しみがもてなかったこと,などだろうか. 二番目も三番目もさしたる根拠があったわけではない. ただ,ワープロ中毒者を見てしまったという理由は, 私にとってはそれなりの重みがある.

ワープロ中毒者の最大の特徴は, 本来道具であるはずのワープロが半ば目的化してしまうことだ. 本人たちは文章を書く必要に迫られてワープロを使っているという意識なのだろうが, 傍目からはとてもそうは見えない. どう見てもワープロ自身に熱中している. 特に印刷形式に凝りだすとこれが顕著に現われる.少し話が横にそれるが, いろいろ便利な道具が出てきても人間が一向に暇にならないという,これは典型例になっている. つまり,以前は研究者が自ら印刷屋さんをやる必要はなかったはずだ. それがかなりの時間と労力を仕上げの印刷についつい割いてしまう. 面白いことを認めるにやぶさかではないが, 私はこれでいいのかなあとやっぱり思ってしまう. それにワープロならばこそ起こる文書の氾濫も愉快なものではない.

というわけで,私はワープロに興味のない時期がかなり長かった. 例によって,ときとしてそれが極端に出て, 研究所内の文書をみんな筆ペンで書いた時期もあったという調子である. さて,極左の人間はしばしば突然極右に転向するという. 私のワープロ嫌いからの転向もまったくその類いだった. ある日突然ワープロを買おうと思いたったのだ. これにもそれなりの理由があった.一番大きな理由は本屋さんへの不義理の念である. だいぶ以前から頼まれていた本の原稿書きにさっぱり取り掛かれない. 一度百枚以上書いた原稿が気に入らず, 修正を加えるのも面倒だというので自分で没にしたことがあったのもボディブローとして効いている. やはり,電子的な手段がないと…,というわけだ.
で,結局,いまだに原稿は出していない.

ワープロのカタログを集めたり, ワープロ回りの本を漁ったりする楽しい一週間のあと, PC-9801 UV2 にプラズマディスプレイをつけたシステムを買い (このエキセントリックな組み合わせは, 山に篭って原稿を書くという夢を見たため), 今をときめく一太郎を使い始めたのが昨年 (1986年) の秋口である. ただし,スンナリといったわけではない.

一太郎奮戦記

第一の問題はキーボード.私が研究所で毎日使っているのは VT100 (DEC 社) 相当品のキーボードで, 手は完全にこのキーボードに馴染んでしまっている. 以前,JIS キーボードの練習はしたことがあったが,今はローマ字しか打てない.
†現在愛用しているのは漢字フォントのきれいなアンリツの専用ターミナル DDY881 である. 自宅でも9600ボーのモデムで DDY881 を使っている. パソコン上のターミナルエミュレータでもいいかもしれないが, 私はあんな音のうるさいものを自分の部屋で使う気はしない. これからのパソコンの最大の技術課題は音であると私は信じている.

さて,御存じのように, JIS キーボードと ASCII キーボードでは特殊記号の位置がかなり違う. 特に,カッコの位置が微妙にずれている. これは普段 Lisp のプログラムをタッチタイプで打っている人間にとってはものすごい苦痛である. それに右のシフトキーのすぐ左に余分のキーが一つあるのも困る. シフトキーもほとんど反射運動的に押すキーだからである. このことだけでも,私にとってワープロをあきらめさせるに十分な理由だった. 時間がかかってもやっぱり自分のワープロは自分で作ろうかと何度も考えたものである. NEC にひょっとすると輸出用の ASCII キーボードがありはしないかと問い合わせたりもした (結果はノー).

ところが,そこへ天の助け,キーコン (日本テクニカル工業) という製品があったのだ. これは,PC-98 の本体とキーボードとの間につなぐ延長コードのようなもので, キーボードのコードを内蔵の ROM で変換してくれる. キーコンはキーボードに馴染みのない一般ユーザのためにアイウエオ順の配列を作るのがもともとの目的で, ROM の中身のデフォールトはアイウエオ配列である. 自分の好みのキー配列を作るには自分で ROM を焼けばよい. かくして PC-98 に ASCII キーボードがついた. (「ム」のキーはもちろん改行だが,「ロ」のキーが完全にはシフトになりきらず残念. このほかにも私はキーボードについては執念じみたものをもっており, いまでもいろいろ悪戦苦闘している.これは本題から外れるので割愛.)

第二の問題は, 普段使っているエディタが例のリチャード・ストールマンの作った Emacs であること (実際には DEC-20 上の元祖 Emacs ではなく, 天海良治君たちが ELIS 上に作ってくれた Zen が大半). これはいまや私にとってまさに紙と鉛筆で, カーソルの移動 (たとえば,コントロール F やコントロール B) などもう脊髄レベルでやっているとしか思えないくらいになっている. なにがなんでもこういう反射神経的なレベルのエディタコマンドは共通にしたい. かといって,一太郎にパッチを当てるほど頑張る気はしない. しかし,これも上のキーコンで部分的にかたがついた. (キーコンに関しては三上博英君に随分お世話になった. その後,MS-DOS に簡単なパッチを当てるとキーコンは不要なことが分かったが後の祭.)

かくして「憧れの」一太郎を使い始めたのだが, 悪い噂はやはり本当で実に使いにくい.それでも, 人間の学習能力あるいは適応能力はたいしたものでキーボードの上段にあるファンクションキーも含めてほとんどタッチタイプで打てるようになった. 二ヵ月足らずの間にかれこれ400字詰め原稿用紙にして200枚は打っただろうか. しかし,二ヵ月後とうとう我慢ができなくなってしまった. やはり自分のワープロが欲しいという気持が極まったのだ. こうして誕生したのが標題の Kanzen である. 皮肉なことに一太郎の最後の仕事は Kanzen の仕様書を打つことであった.

趣味のワープロ

さて,ここでワープロ論議に対する私の立場を明らかにしておく必要があろう. 世の中にはたくさんの種類のワープロがあり, どれもワープロとしてちゃんと機能している. ある人から見て使いにくいはずのワープロも別の人から見れば使いやすい. 実際,トータルスループットでいえば, どのワープロも慣れた人が使えばそれほど差がないのが現実だろう. これはバリバリのスポーツカーでも, ちっぽけなファミリーカーでも街中を移動する分にはたいして差がないのと同じことである.

だから,口を極めてあるワープロを非難しても, 自分の考えたワープロがいくら素晴らしいと言っても, 所詮は趣味の世界の話なのだ.もちろん, いかにもそれらしい理屈をこねてもいいが, 理屈に納得するのも反対するのも個人の考え方次第だから, それを強制することは無理だし,むしろやってはいけないことだと思う. 逆に趣味の話だと割り切ってしまうと,言いたいことが言いやすい. たまさかここでは一太郎を槍玉に上げてしまったが, 私は一太郎に悪意をもっているわけではない. ここでいくつか理屈めいたことも述べるが, これは私の「趣味」の中身を鮮明にするための理屈にしかすぎない. それが読者の「趣味」に合うかどうか,私には分からない.

Kanzenの設計思想の多くは一太郎に対するアンチテーゼになっている. だから,一太郎についてもう少し語らせてもらおう. 私が一太郎に対して不満だったのは主に次の点である. †当時,私が使っていたのはバージョン2である.

  1. モードに満ち満ちている. 入力中と変換中の二つのモードの間で私はしばしば迷い子になった. 特にモードによって反射神経レベルの打鍵に対する反応が異なるのにはかなり消耗した. たとえば,変換中はコントロールキーでカーソルが動かせない. 改行キーや空白キーの意味がモードによって変わる.これは最後まで馴染めなかった.
  2. 先打ちが効かないことがしばしばある.これも反射神経を逆なでする.
  3. 漢字に変換しすぎてくれる (私はもっぱら連文節変換を使用した).事実, 私の編集作業のかなりの部分は漢字になってしまったものをひらがなに戻すことだった.
  4. エコーバックがいわゆる WysiWyg (What you see is What you get) でない. 入力中の文字が画面上にある文字をどんどんオーバーライトしていく. 無変換と分かっている場合もそうだから困る.
  5. タッチタイプで打てるようになったとはいえ,やはりファンクションキーは遠すぎる.
  6. コマンドが重い. Emacs に慣れた感覚からいうといちいち伝票を書いてお伺いをたてないといけないような感じ. 初心者にはいいかもしれないが,使いなれた人間向きではない.
  7. 辞書のカスタム化がやりにくい. 私は「行なう」と送る主義 (趣味) で「行う」が嫌いである. ところがそのようにカスタム化することは不可能だった.また, 私は「プログラミング」をローマ字で puroguramingu と打たされるのはいやだ. だから,よく使う外来語を元の綴りのまま辞書登録したかったのだがこれが難物だった. 300語ほど登録するのにどれだけ時間がかかったことか.
  8. 早晩改良されると思うが,学習の結果をよく突然忘れてしまう.

こう見てくると, 一太郎に限らず最近のパソコンワープロが集中的に競争しているレイアウト機能や印刷機能については不満がないことに気がつかれたと思う. それは私の場合当たり前で,もともとそんなものに興味がなかったのだ. つまり,私がまずワープロに求めるのは文章を書くための文房具たることである. だから,一次入力や編集の機能の優れたワープロが欲しいのだ. この頃のワープロの宣伝を見ると, 書くための道具ということが強調されているようだがその実が上がっているようには思えない. やはり清書の道具という感が強い
とはいうものの, このごろはそういう機能がやはり欲しい.

Kanzenの考え方

さて,では Kanzen はどうなのか.Kanzen は Emacs コンパティブルエディタ Zen の上の漢字エディタである. これは NTT で開発した Lisp マシン TAO/ELIS 上にインプリメントされている. Kanzen は Zen に漢字の Kan を冠した名前である. まず御託から述べよう.Kanzenの 設計にあたっては次のことを考えた.

(a)
キーボードに習熟したユーザを対象とする. これは日常の道具としてワープロを考えるならは当然のこと. また,最小のキーボードで使えるようにする. 最近のキーボードの巨大化は目に余るものがある. Kanzen はタッチタイプによる入力・編集を可能にするためホームポジションから指の届く範囲のキーだけで用が足りるようにする.
(b)
一次入力と編集を重視する. 高度な印刷用の機能は日本語 TeX のような本当に高機能のものを別に考える. (実際,現在斉藤康己君が作っている jTeX は市販のワープロではとても太刀打ちできないような美しい印刷が可能である
このためフォント情報を分離し,キーと文字との一対一対応を徹底する (Unique mapping の原則). 現在のコード体系は中途半端にフォント情報が混入している (たとえば半角英数字と全角英数字). これらは文章を考えながら打つときには無用の情報である. Zen はプログラムや英文の編集にも使うので, バッファ内の英数記号はすべて半角に統一する.
†これはもうとっくの昔に完成しており, 現にこの文書もそれで印刷されている.
(c)
Emacsの設計思想とコマンド体系を引き継ぐ.具体的には
(c1)
WysiWyg: 画面に見えているものと実際のバッファ (Emacsでは計算機内部に表現された編集対象のテキストをバッファと呼ぶ) がいつでも一致している. たとえば,文字の挿入時にはオーバーライトせずに画面上でも実時間で挿入が起こる. (無駄な再表示を防ぐ Emacs の実時間的再表示機能がここで活躍する.)
(c2)
モードレス: 入力中,変換中といったモードを作らない. 漢字への変換は入力の副作用のようなものと考える. Emacs のコマンドがいつどこでも効くようにする.
(c3)
注視点の安定: ユーザが画面を見る点をあまり変えなくて済むようにする. たとえば,入力や変換を画面の下のほうにある小さな作業スペースで行ない, 確定後に主バッファに移す,という (WysiWig にも反する) やり方をしない. またどうしても避けられないモードはカーソルの形でユーザに表示するなど, 現在注目しているところから目を動かさなくてもシステムの状態が分かるようにする.
(c4)
コマンド体系: 漢字入力のためのコマンドは必要最小限に押え, かつ Emacs の体系を崩さない.
(d)
モノクロディスプレイで使えるようにする. 私は数百万円もする超高精細のカラーディスプレイならいざしらず (実際はそれでもいやだが), 現在三十万円程度で22ないし24ドットの漢字が表示できるモノクロ (特にアンバー) の専用端末のほうが好きだ.第一目によい.余談になるが私は一日に10時間以上は端末を見る. それでも視力がまったく落ちないのはディスプレイの輝度をきめ細かくやや暗めに調整していることと, 決してビットマップディスプレイやカラーディスプレイを使わないことが理由だと思っている.
(e)
無変換をデフォールトとし,変換は先に指定する方式とする. ローマ字入力漢字変換の場合,変換の開始位置の指定は大文字シフトで行なう. (かな入力の場合は変換キーを先に打つことになろう. 現在 Kanzen はまだかな入力に対する仕様を決めていないが, いろいろな方法を実験中である.ただ,Emacs のコマンド体系との調和の問題が残っている.)
変換は変換開始位置から一文節だけ構文解析を行なう. つまり,構文解析は第一文節しか行なわない. これによって漢字に直しすぎるという弊害を防ぎ, 構文解析の手間を軽減しつつ文節内の接頭辞や接尾辞の解析をきめ細かく行なえるようにし, 変換の品質を上げる.
†旧 JIS キーボードではうまい方法がない. 現在は新 JIS キーボードのみの仕様が決まっている.これは, キーボード気違いといってもいい山崎憲一君がいま毎日使っている.彼の場合, VT100のキーボードで新 JIS をバチャバチャ打ち込むからすごい. キーの配列を憶えるのに2週間,それから通勤途中でのイメージトレーニングが2週間, これで何不自由なく打てるようになったのだ.彼は旧 JIS もちゃんと打てたのだが, 彼の弁によると,速度に本質的な差はないとのことだ.ただ, 旧 JIS はやはりミスタッチが多いらしい.

Kanzenの仕様

Kanzenの仕様はまだ完全に固定してるわけではない. 私が昨年 (1986年) の10月頃に仕様の第一版を書いてから, 実地に使ってみては仕様を改良するというサイクルを何回か繰り返している. (Kanzen のエディタインタフェース部分は天海君, 構文解析部分は杉村利明君がインプリメントした.私は仕様を考えただけである. いままでこういう場合自分でプログラムを書かなかったことはなかったから, 私も年をとったものだと思う.) なお,Kanzen は Emacs (Zen) への付加機能だから以下の説明を読むには Emacs の知識が必要である.
†これは現在ほぼ固定.

これからの説明はすべてローマ字入力で行なう. Kanzen を使うにはあらかじめ Meta-X Kanzen というメタコマンドを打っておく. こうしておいたうえで通常の ASCII 文字の編集モードから日本語編集のモードに入るには, コントロール J (以下コントロールは^と略記する) を打つ. ASCII 文字の編集モードへ戻るには ^C を打つ. この二つのモードは避けがたいモードだと思うが,それをユーザ可視にするため, モードが変わるたびにカーソルの形を変える (普通の漢字ターミナルだと, ブロックカーソルと下線カーソルの二種類はハードウェアで備わっている).

^J は linefeed のことであり, Emacs のプログラム編集モードでは改行後インデントのコマンドに割り振られている. しかし,これは改行キーとタブキーを続けて打てばよいので, Meta-X Kanzen を行なった後では linefeed を別の意味で使わせてもらう. J がちょうど Japanese を連想させるのも好都合である. ^C は Emacs ではもともと使われていない

†GNU Emacs では^Cは使われているが, 当時我々が使っていた DEC System-20上で Stallman が書いた Emacs では未使用だった.

さて,日本語モードでの入力と変換の様子を例示しよう.左側が入力文字列, 右側が画面に表示されたものである.

Ky Ky

[下線はその文字が大文字で入力されたことを示す.]

o

[ローマ字かな変換が起こる.下線がついたままであることに注意. この時点でdeleteキーを打ったらどういうふうに消去が進むべきかは面白い問題である. いまのところ反射運動的記憶が残っている間 (約1秒) はストロークの消去 (つまりKyに戻る), それ以上経ったら表示文字の消去というのはどうかということで現在実験中. しかし,これは打ち直すときに,たとえば「か」を k と a に分解して意識するという意味で, ローマ字入力に慣れたユーザにとってかえって反射運動的でないという意見がある.
このフィーチャはオプションになっていてユーザは自由に選べる.デフォールトは0秒 .]

uW 今日W

[次の大文字で変換が起動される.反転表示部は変換中であることを表わす. 変換中というのは反転表示部に固有のモードであってエディタのモードではない. だから,Emacs コマンドの意味は反転表示部があるからといって変わったりしない. 反転表示部の次候補選択と前候補選択はそれぞれ,^H,^G で行なう. ^H も ^G も現在のカーソル位置とは関係なく反転表示部に作用する (たとえ,見えている画面に反転表示部がなくても).^H は backspace (Emacs は backspace を消去の意味に使わないのが普通), ^G (bell) は一般のキャンセルコマンドだから本来の Emacs コマンドとの両立性はほとんど損われない (^G が前候補選択の意味になるのは直前のコマンドが ^H,^J などの場合のみ). なお,^J,^H,^G がどれもホームポジションに近いキーであることに注意.
†TeX のように米国文化で育ったものにはアミカケという概念がないらしい. しようがないのでここではゴチック文字で示した. (HTML では文字色を赤くした Y.A) ]

atasiha 今日たしは
I 今日私は

[次の大文字 I で, 「わたしは」の部分が変換起動.それと同時にもとからあった反転表示部が確定. 変換は,大文字のほか,句読点・空白・改行・カッコなど文章上の明らかな区切り記号, ^C (ASCII モードへの移行),^J (これは Kanzen への入口であるが, 日本語モードでは強制変換起動の意味になる), Meta-C,Meta-J,*,@,#,$ (これらの意味は後述) などによっても起動される.
変換起動とは,大文字で始められたところ (下線部) があれば, そこの第一文節の解析を始め,反転表示部があればそこを確定することである.つまり, Kanzen では一つのエディタバッファの中に反転表示部と下線の引かれた変換起動待ちの部分はおのおの一つずつしかない. 解析の範囲は,下線部から現在のカーソル位置または最初の区切り記号, 漢字・カタカナ・ASCII 文字などの直前まで.第一文節の後ろは全部ひらがなのまま.]

KyouWatasihaIshaniIku. 今日私は医者に行く
KyouWatasiHaishaniIku. 今日私歯医者に行く

[文節区切りの問題は入力時に解決済み.]

Yomerukadoukahadoudemoiinoja. 読めるかどうかはどうでもいいのじゃ

[決して,「読める華道科は銅でも飯野蛇.」にはならない.Kanzen はこういう口語体に強いのが特徴.]

KumitoriwoOnegaisimasu. 汲み取りをお願いします

[大文字は必ず漢字になるというわけではない. 第一文節の解析を指定するのが本来の意味. もちろん途中にひらがなが混じることもある.]

ima いま

[ひらがな確定入力がデフォールトなので,普通に打てばひらがな.]

Computerno いまCおmぷてrの
Seinouha いまコンピュータの いのうは

[外来語は原綴りで書くのが楽.ただし, 「コンピュータや」が「Cおmぷてりゃ」 になって構文解析がうまくいかないのが問題.]

ima*ko いまコ*
npyu- いまコンピュー*

[* を打つとカタカナ入力になる. * はカーソルとオーバーラップしてカーソルとともに動いていく. 注視点でのモード表示の一例になっている. しかしこれは普通のモノクロターミナルならではの非常手段. ビットマップディスプレイでは単にカーソルの形を変えるだけでよいだろう. カタカナ入力モードの解除は次の*,@,#,$,^J,Meta-C,Meta-J, または大文字.]

JuuzokuHensuu^Qxto^Qywo, 従属変数xとyを

[^Q でつぎの文字がエスケープされるのは Emacs と同じ.]

1887Nenniha 1887ねんには

[下線が左へシフトしてることに注意.構文解析の単位を明確にするためである.]

kokoha^CASCII^JNyuuryoku^J^J ここはASCII入力

[英字入力には ^C で戻る.最後の ^J で反転表示が解消する.]

#250ma'en^J 二百五十万円
Dai#5kaino^J 五回の

[#はアラビヤ数字漢字変換.大文字見なしなので,ma'en の m,kaino の k は大文字で打っても打たなくてもよい.]

@OokiiKoumyou^J 光明 [人名,「おおみや」と読む.]

[@ は単漢字入力の記号.漢字の音のほか,単語の読みで指定することができる.これは選択肢を減らす効果がある.@ookii と打ってもよい.]

$MitasangaKita 三田さんが

[$ は固有名詞を指定する.$ を打たなくてもよいが, その場合は固有名詞の優先順位が下げられ, 「見たさんが」が先に出る可能性が高い.ほかと同様,$mitasanと打ってもよい.]

Meta-C コマンド (Emacs では capitalize) により, 小文字で打ってしまったひらがなをあたかも大文字で打ち始めたようにすることができる (ほかの場所に下線部があれば, そちらを変換起動する).これは原稿を (画面を見ないで) 無変換のまま打ち込み,後で漢字に変換するときにも有効である.Meta-J コマンドは Meta-C と似ているが,その場でカーソル以降を変換起動し, カーソルを反転表示部の直後に移動させる (ほかのところに反転表示部があればそこを確定する). これらは打ち間違いをしたとき役に立つ.
Emacsコマンドはいつどこでも有効だから, カーソルが動かされて反転表示部に入ることがある. このときどうするかについてはいくつかの案がありもう少し実験をしてみないと結論は出せないが, 最も単純に,カーソルが入った瞬間にそこを確定してしまうというのが意外によさそうである (delete で後ろから反転表示部を消しに入ったときも同様).
†実際,現在はそうなっている.

Emacs 独特の Incremental Search (捜す文字列を一文字一文字打った瞬間から捜しにいく) の日本語版は, エコーバッファ上で確定した文字 (列) から incremental に捜すという方法である. なお,Zen ではサーチ用のエコーバッファとテキストバッファは異なるバッファなので, エコーバッファ上での反転表示部や下線部はテキストバッファ上のものとは関係ない.

このほかにも辞書登録や, フォーマッティングなどに関するコマンドが多数計画されているがここでは割愛しよう なお,漢字熟語 (複合語) の自動学習 について現在フィージビリティチェックを行なっている. これは漢字が続く複合語の途中でいちいち大文字を打たなくてもよくなるように, システムが複合語を自動的に学習する機能である. これは接頭辞,接尾辞の組みあわせの学習も行なう
†動詞や形容詞を簡単に登録できるところが一味違うところか.
‡かなりの機能がすでに組み入れられている.

評価

Kanzenのおおまかな仕様を決めてから, 天海君の努力でわずか二週間でプロトタイプが完成した. 当初は辞書と構文解析の品質があまりよくなかったが, それでも慣れ親しんだ Zen の中で日本語が扱えるというのは感激だった. その後,杉村君が健闘してくれて辞書と構文解析が急速に改善された.

手前味噌になるのはやむを得ないので勘弁して欲しいが, やはり自分で設計したワープロは使いやすい. 自分が使いやすくなるように定めた設計方針が実現されたのだから, これは当たり前だといってよい. 設計方針のところで述べたこと以外で, 使いやすさを裏づけているものとして私が挙げたいのは,

  1. 速い.現在 Zen も,構文解析プログラムも TAO のインタプリタで動いている にもかかわらず市販ワープロソフトより速い
    いまはもちろんコンパイラで動いている.文節の解析と画面再表示の CPU 時間は合せて100ミリ秒程度である
  2. 文節内の解析の品質がよい.解析を第一文節に限ったことで,速度と高品質の文節解析が両立した.
  3. 英文やプログラムの混合がスムーズ. 英文和訳の教科書,Lisp のマニュアル書きなどには最適.英文用のフォーマッターは始めから内蔵. 文章中に書いたLispのプログラムをエディタ内で実行してその結果を文章に埋め込むなどは朝飯前. もちろんプログラムの入力には自動インデントやカッコの対応チェックが使える.
  4. 辞書がディスク,システム,ユーザの三階層からなっており, マルチユーザで使える. システムには約七万語の語彙が入っており ELIS の主記憶に常駐. ユーザ辞書はユーザ毎の学習結果などを格納する. さらに各ユーザが小説を書くときと論文を書くときで辞書を使いわけるのも容易 (当たり前の機能ではあるが).

とはいうものの,Kanzen は Emacs に習熟していることと, コントロールキーやシフトキーの操作が軽快に行なえることが必須なので初心者にとっては多少敷居が高いかもしれない. 電気通信大学の角田博保さんによればシフトキーで変換の指定を行なうのはキーストロークモデルによればあまりよくないのだそうだ. しかし思いこみも趣味のうちで, 私自身はなかかいいと思っている.そういえば, ドイツ語は文と名詞の頭は必ず大文字である. ドイツ語のタイプが遅いという話は聞いたことがない. また,ローマ字を書くときも単語の頭をよく大文字にする. だから,ペンで原稿用紙のマス目を埋めるときのこれから漢字を書くのだという気分と, Kanzen のシフトキーを押す気分はよく対応しているのではなかろうか.

また,一般に変換は先決めではなく後決めのほうがよいとも言われているが,Kanzen のように無変換がデフォールトだと事情がやや異なるような気がする. 高橋秀俊先生が自然なモードという話の中で駅の切符自動販売機の子供用のボタンの前に重力だけでデフォールトの状態へ戻すカバーがついていることに言及されていた (と記憶している). 日本語はひらがなが自然のデフォールトだろう. だから,最初にあるエネルギーで漢字へポテンシャルアップしたらまた自然にデフォールトのひらがなに戻るというのはある意味でリズム感のあるモード遷移といえる. ユーザは文節の終わりを気にしなくてもよい. もちろん「無変換」のキーはいらない.

Kanzen を使っている現場を横から見た人は決まって, 「いつ変換キーを押したのですか?」と聞く. 次の大文字や句読点で順々に変換が起動されていくから, 一見逐次自動変換に見えるのだ.しかも何も特殊なキーのついていない普通の VT100 キーボードでいかにも軽快に打っているからビックリされるらしい. Kanzen の狙いの一部は見事達成されたというわけだ.

おわりに

Kanzen を Zen 以外の Emacs に移植できるかという質問をよくされる. 直接的な移植は無理だが, 仕様そのものは単純なので新たに実現するのは比較的容易だと思う 東北大学の佐藤雅彦さんが,Kanzen を見て Fukanzen というのを Nemacs に載せた. それが改良されて,現在 SKK (Simple Kana Kanji conversion system) として 物好な人に結構使われているようだ.
ただし,いまパソコンの上で広がりつつある MicroEmacs のように行のオーバー フローが折り返して表示されないような Emacs だと Kanzen の仕様を変更しない かぎり移植は難しいだろう. 構文解析とエディタの切り口は小さいので構文解析についてはあまり問題がないはずである.

ドンブリ勘定でいって, ワープロの品質はマンマシンインタフェース (速度性能を含む) によって40パーセント, 辞書と構文解析によって60パーセントぐらい左右されるような気がする. 実は Zen の上には Kanzen だけではなく,連文節変換をしてくれる Beta, 一太郎ファン向きの Neo など, いわばライバル関係にあるワープロも同時に開発されている. これらはその40パーセントの部分を競っているわけである. さて,勝負はいかが相成りまするや.

表1.Emacs の基本コマンド

Emacs は基本的にすべての文字がコマンドである. たとえば,a という文字は a をテキストに挿入せよというコマンドである (self-insert command). 編集用のコマンドはコントロール文字を使う. これで足りない分は,^X や ^Z の後ろにもう一文字打つという拡張と, Meta (Esc のキーで代用) の後ろにもう一文字打つ拡張 (Meta コマンド) で間に合わせる. 以下の表は Emacs コマンドの雰囲気が伝わる最小限の量に押えてある.

^F (forward) カーソルを右へ
^B (backward) カーソルを左へ
^P (previous line) カーソルを上の行へ
^N (next line) カーソルを下の行へ
^A (A is the first) カーソルを行の先頭へ
^E (end of line) カーソルを行の最後へ
^D (delete one char) カーソル位置の文字を消去
delete カーソルの直前の文字を消去
^K (kill line) 行のカーソルから後ろを消去
^space (mark) 範囲の始点 (マーク) を指定
^W (wipe) マークとカーソルの間を消去
^Y (yank) 消去した文字列をカーソル位置に復活
^S (search) incremental search
^R (reverse search) 逆方向の incremental search
^O (open line) カーソルの後ろに改行を入れる
Meta-A カーソルを文の先頭へ
Meta-E カーソルを文の最後へ
Meta-K カーソルから文の最後までを消去
^X^F file-name ファイルをテキストバッファに読み込む
^X^S テキストバッファをファイルに書き込む

Add HTML tags by NUE amagai