info
kitetu.net
2008/3/15 土曜日 (22:12:53)、宇田川 浩行 による、Emacs への投稿。
「Emacs キー配置考」連続記事の第4回「模索」は、Emacs のデフォルト・キー配置の問題点を考え、改善案の方向性を明かにすることを目的とします。
ただし今回は、問題の性格上、正しい答えを簡潔に提示するということは難しいため、副題の通り「模索」の過程を記していくということに主眼を置いています。次回でその成果物を配布する予定になっていますので、技術・設計上の話題に関心がない方はもうしばらくお待ち下さい。
表記について
本記事で実際のキー操作を説明する際には、下記の通り Emacs では一般的な表記を使用します。
改善のおおまかな方針
より使いやすいキー配置を探していく過程は、一つの基準にとらわれず、複数の選別基準を重層的に適用しながら進めていくものとします。ざっと見渡すと、操作しやすさ・覚えやすさ・一般的な慣習といった順で、ある機能がどのキーに置かれているのが最適なのかを探り、機能間の優先関係を調整しながら総合していきます。具体的には、下記のような作業です。
Emacs では、キー配置に関する最低限のルールが公式に存在しますが、ここではあくまで合理性を最優先事項とし、Emacs の慣習や、その他アプリケーションの慣習は二次的なものとして扱っています。つまり、扱いやすさや理解のしやすさの観点から機能の配置を絞りこんでいった上で、最終的な配置を確定できない場合に採用する、補助的な基準と考えています。
最適なキー配置を探る作業は試行錯誤の連続です。明確な基準を立てずにその場しのぎの設定を続けていくと、その時は便利で自分に合っているように思えますが、普段使わなかったり知らなかったりするものの実は便利な機能が眠ってしまったり、新しい機能を使いたくなった時につじつまが合わなくなったり、いきあたりばったりの変更を余儀なくされてしまいます。こういった作業を要することが Emacs 使用上のわずらわしさの代表格でもあり、キー配置に関して「木を見て森を見ず」は悪癖といえるのではないかと思います。
前述のように段階的な絞りこみを行なっても、最終的に「総合」によって全体的な関係を調整していくという作業は、安定して使用できるキー配置の設定には不可欠なものです。
方法論の概略
Emacs で利用される機能の数は膨大ですが、当然キーボードのキーは有限で、それも大して多くはありません。そのキーボード上で、いかに多く、柔軟な機能の操作が出来るようにするか、ということが問題になります。もちろん、多くの機能を人間が把握するには、機能が理解しやすく整理されていることも必要です。
それを実現するためにここで説明する方法は、人間の「言葉」が持っている性質からヒントを得たものです。その特徴は以下の通りです。
それぞれの詳細は順を追ってみていく事にしますが、人間が限られた語彙を組みあわせたり、使いわけたりして自在に多様な表現を行なうことと本質は一緒です。
各キーがもつ意味の一般化
通常、主にマウスで操作するアプリケーションのショートカットキー等と呼ばれるものや、Emacs のように主にキーボードで操作するアプリケーションのキー配置では、あるキーの文字に機能名の頭文字を対応させる、といったことが自然に行なわれています。例えば一般的なウェブブラウザでは C-r キーでページの再読み込み (reload) ができたり、C-n で新しい (new) ウィンドウを開いたりできます。
名称のみでなく、並び方がまとまっていたり、操作しやすかったりすることで機能が設定されることもあります。例えば、C-x で切り取り, C-c でコピー, C-v で貼り付けといった対応関係は一般的なアプリケーションで共有されています。また、3D ゲームの分野ではおもしろいことに w, s, a, d のキーが前進・後退・左方向・右方向を意味するものとして幅広く通用しています。これは、視点の移動をマウスで行なうために、普通右手の位置にあるキーボード上の矢印キーを左手で操作できる範囲で見立てたものです。これらは扱いやすさから広まり、慣習として定着して一般的な意味を表わすようになった例です。
要するに、キーには何らかの理由で固有の意味が与えられ、それに相当する機能が対応づけられます。一般的なアプリケーションでは、キーで操作するということ自体が補助的な扱いであるため、それほど深刻に考えることはありませんが、Emacs の場合は数あるアプリケーションの中でも例外的に事情が違っています。それは全ての機能がキーボードで操作できるという前提があることと、その機能の数が圧倒的に多いことによっています。
その状況の中、「キーへの意味づけ」の段階で注意を欠くと様々な問題を抱えてしまいます。Emacs では特に指摘できる問題が下記のようにあります。
一例として、Emacs のデフォルトにある C-@, C-w, M-w, C-y のキーが挙げられます。これはそれぞれ選択範囲の開始位置を決めるキー、選択範囲を切り取るキー、選択範囲をコピーするキー、貼り付けるキーです。連続して使うことの多い機能ですが位置的には完全にばらばらです。貼り付けが C-y なのは、Emacs ではいわゆる「コピー・アンド・ペースト (コピーと貼り付け)」に対応する用語は、Kill-ring という保管場所への削除またはコピーしたテキストの保存と、それを引っぱりだすこと (Yank) になっているからです。他のキーは恐らく、空いていて適当なところに置いただけだと思います。コピーよりも誤作動すると厄介な切り取りが押しやすい (間違えやすい) 配置にあるのは、Kill-ring の概念上、コピー (Kill-ring への保存) が削除 (kill) の変則的動作として考えられているからかもしれません。しかし、こういった用語は自然に連想できるものではありませんし、初めて使いはじめた人が戸惑いやすい部分ではあると思います。
本記事の改善案では、開始位置は C-s (set / start: セット又は開始), コピーは C-e (end: 終端, 目的), 切り取りは M-e (〃), 貼り付けは C-w (write: 書き出し) にしています。この案ではすべて平坦な意味が付けられており、すべてのキーを隣りあった配置にできます。ここでは安全性からいって、コピーの方を Ctrl キーで使うようにしています。
前者 (Emacs デフォルト) と後者 (改善案) の違いは、前者では対応する言葉が用語的で限定的なのに比べ、後者では普通の言葉を対応させていることです。後者では、意味が広くとれる分、明確にその機能の特徴を表わしているわけではありません。しかし、我々が日常使う言葉は、「文脈」というものによって、簡略化されています。同じ言葉でも、場面が違えば違う意味をもち、文脈が共有されている者の間では、必要以上に言葉を限定しなくても意志疎通ができます。
このように、本記事の改善案では、まず各キーに対応させる言葉を可能な限り一般化しています。そうすることで、下記のような利点を得ることが出来るからです。
とはいっても、まだ漠然としているかもしれません。前者と後者で、後々の拡張性にどれほどの差が出てくるか、ということをこれから見ていきたいと思います。
第5回「続・模索」に続く
この記事に寄せられたご意見は、現在 0件です。(RSS 2.0)
この記事へのトラックバック URI :
http://www.kitetu.net/old/notes/0011.html/trackback