Emacspeakで遊ぼう!

巨大なファイルをダウンロードして、MeadowとBEPをセットアップしてしまった あなた!「しゃべったあ!」と喜んだのもつかの間、さて、こんなに大きなエディ タでなにをしよう(??)と困ってはいませんか? このページでは、インストールしたままのMeadow+BEPでできることをいくつか解 説してみます。遊んでみてください。そして早くEmacsに慣れましょう。 でも、その前にC-h Tででてくるチュートリアルには目を通しておいてください ね。

Emacsのモード

最初にちょっと難しめの話です。でも読んでおいてください。

Emacsというエディタには「モード」というものがあります。テキストファイル を編集するときはテキストモード(text-mode)、コマンドプロンプトを開いたと きはshell-modeという具合です。それぞれのモードでどのキーがなにをするのか が違います。ここがEmacsのおもしろいところと言ってもよいでしょう。同じエ ディタの中でモードによってEmacsはいろいろな顔をしてくれるわけです。これ から紹介するいくつかの「遊び方」はそれぞれ違ったモードを使います。

カレンダー

最初に紹介するのはカレンダー(calendar)です。これはその名のとおりのカレン ダーなのですが、Emacsがいろいろなモードを持っていることの紹介としては適 していると思います。

ではカレンダーを動かしてみましょう。動かし方はEmacsの中で次のように入力 します。

M-x calendar RET

M-xはESCを押してx、またはメタキー(ALTキー)を押しながらxを押すことです。 RETはエンターです。

RETを入力すると、カレンダーが実行されたことを示すメッセージが流れます。 画面には横に3カ月分(もっと多いこともあるでしょう)ならんだカレンダーが表 示されます。outSPOKENを持っている人は確認してみてください。でもそのまま 横1列を音声で聞くと、何とも役に立たない数字の列です。

さて、この状態で「.(ピリオド)」を入力してみてください。今日の日付と曜日 が英語で出力されます。なんでピリオドなのか。おそらくDOSやUnixの「カレン トディレクトリ」のイメージだったのだと私は思っています。

では次にC-b C-f C-n C-p または上下左右の方向キーで移動してみてください。 画面上のカーソルは左右では1日、上下では1週間の単位で移動します。1文字 ずつではないところが「カレンダーモード」です。

では、上下左右のキーを使って、4月1日に移動してみましょう。そして、そこ で「h」のキーを押します。すると、日付の後に、「April fool's day」としゃ べります。カレンダーモードの「h」は世界各地の「Holiday」を教えてくれるキー なのです。残念ながら日本の祝祭日は知らないみたいですが……。 ついでに、ここで「x」を入力してください。そして同じように上下左右で移動 してみましょう。すると、HolidayとしてEmacsが知っている日のところだけ女性 の声でしゃべります。この機能でいろんなHolidayを見つけることができます。 (いらないって?)

最後に、終了して前いたバッファに戻るのは「q」です。

ディレクトリエディタ(ファイラー)

次はもう少し実用的なモードです。C-x d(またはM-x dired RET)と入力してくだ さい。するとディレクトリ名を聞いてきます。最初はデフォルトのディレクトリ 名が入っているので、C-a C-kとかでデフォルトの指定を全部消すとかして、自 分がみたいディレクトリの名前を書いてエンターしてください。適当に大事じゃ ないファイルがありそうなディレクトリを指定してみてください。ディレクトリ 名の区切り文字が「\」じゃなくて「/」なので気をつけてください。

dired(読み方不明。ディレドと読む人もいます)はいわゆるファイラーです。fd やwhf、explorerみたいなものと思ってください。 上下方向キーやn, pを押すと、ファイルリストの中を1ファイルずつ移動します。 できることはファイルのコピーや移動、名前の変更、削除、それにもちろんその まま開くこともできます。(実行はできません)。 それに、ここはEmacsの中なので、C-sを押してファイル名を「検索」することも できます。

上下に移動していると、ディレクトリのところだけ声が変わっていることがわか ります。それから後で説明する削除マークやその他のマークをつけたファイルも 声が変わります。

画面にはUnixやDOSのlsコマンドの結果みたいに、1行に1ファイルが表示されて いて、ファイルのサイズや日付も同じ行に表示されています。これを知るには、 C-e l (行読みコマンド)を使うか、outSPOKENなどのスクリーンリーダーを使っ てみてください。

では、diredの中で使える主なキー操作を書いてみます。削除や名前の変更以外 は遊んでみてもかまいません。

終了
キー操作「q」。diredを終わって前にいたEmacsのバッファに戻ります。
ファイルサイズを聞く
キー操作「:」。選択しているファイルのサイズを教えてくれます。選択し ているのがディレクトリだったら、その中身のサイズを足して教えてくれま す。 英語の数字ヒアリング練習にも使えます(^_^)。
ファイルの日付
キー操作「c」小文字です。ファイルの最終変更日時を読み上げます。別の コマンドとして「a」というのもあります。これはファイルの「最終アクセ ス日付」を教えてくれるのですが、Windowsでは1日単位でしか記録されな いらしく、あんまり意味がありません。「c」の方を使ってください。
ファイル種別の
キー操作「'」。そのファイルがどういうファイルなのかを教えてくれます。 画像ファイルの場合は縦横のサイズも教えてくれます。ただし、cygwinとい う開発環境が入っていないとWindowsでは動かないかも知れません。(未確認)
今表示しているディレクトリ名
キー操作「;」。今表示しているディレクトリの名前をフルパスでしゃべり ます。
いろいろなマークの消去
キー操作「u」。これから説明する削除マークなどの何種類かのマークを消 して元の状態にします。ファイル名を読み上げる声も元に戻ります。
ファイルを開く
キー操作「RET」または「f」。現在選択中のファイルをEmacsで開きます。 ディレクトリだった場合はそのディレクトリに入ります。開いたバッファを C-x k などで消すと元のディレクトリ表示に戻ってきます。
ファイルのコピー
キー操作「C」大文字です。Cを押すとコピー先を訊ねてきます。デフォルト は今いるディレクトリが入っています。 普通の編集操作の要領で行き先を入力します。ディレクトリ名を入力するとその ディレクトリに同じ名前でコピーされるし、ファイル名まで入力するとそのファ イルにコピーされます。
ファイルの移動/名前の変更
キー操作「R」大文字です。これを入力するとコピーのときと同じように今 いるディレクトリが表示されて、異動先のディレクトリ名/ファイル名の入 力を求めてきます。ディレクトリ名を入力すればそこへの移動に、ファイル 名なら名前の変更になります。
削除マーク
キー操作「d」。そのファイルに「削除マーク」をつけます。画面上ではそ のファイルの表示されている行の先頭にDがつきます。ファイル名を読み上 げる音声が棒読みになるので削除マークがついていることがわかります。こ の状態ではまだ削除はされていません。削除マークを消すのは「u」です。
削除実行
キー操作「x」。削除マークがついたファイルを本当に削除します。xを押す と、「この五つのファイルを削除しますか?」みたいに英語で尋ねてきます。 ほんとうによければ、「yes」と入力します。いやなら「no」です。ちゃん と「yes」と3文字入力してエンターしないと削除されません。
処理マーク
キー操作「m」。コピーまたは移動のためにファイルにマークをつけます。 画面上では行の最初に*がつきます。こうしておいて、CやRコマンドを使う と、いくつかのファイルをまとめてコピー/移動することができます。
バックアップやオートセーブファイルのお掃除
Emacsは編集したファイルのバックアップとして最後に~をつけた名前で編集 前のファイルを残します。diredの中で「~」を押すと、そういうバックアッ プファイルを見つけて削除マークをつけてくれます。また、Emacsではいき なりOSやEmacsがクラッシュしたときのために、ファイル名の前後に#をつけ た名前で編集中の途中経過を記録します。普通はファイルをセーブすると消 されるのですが、なにかの拍子とか編集を途中でやめて内容を破棄したとか で残ることがあります。diredで「#」を押すと、そういうファイルに削除マー クをつけてくれます。ただ、こういう機能はファイル名に#をよく使ったり、 ファイル名の最後に~をつけるのが好きな人(?)にはあまりお勧めしません。
ファイル表示順の変更
キー操作「s」。diredを起動した直後はファイル名は名前順にならんでいま す。「s」キーを押すことで、表示順が日付順と名前順の間で切り替わりま す。最近変更したファイルを探すときなどに便利でしょう。
必要なファイルだけ表示
C-x d でディレクトリ名を入れてエンターを押すとそのディレクトリの全部 のファイルが表示されました。Explorerとかと同じなのでこれだけだとあま りおもしろくありません。ディレクトリ名を入れるところでワイルドカード (たとえば「neko*.txt」とか「*bk.txt」とか)を入力すると、それにマッチ するファイル名だけが表示されます。ここで指定するワイルドカードはDOS ではなくUnix形式ということに注意してください。よい点としては、 「*bk.txt」みたいに「先頭はなんでもいいから」という指定ができたり 「*xx*」みたいに「ファイル名のどこかにxxがある」という指定ができると ころです。DOSユーザが困りやすいところとしては、「*.」とすると「ファ イル名の最後に.のある名前」になって、「.のない名前」にはならないこと です。実は「.のない名前」を指定するのは結構めんどうなので割愛します。 (とっさにでてこない……)

diredはC-x C-fでファイル名を入力しようとしているときにディレクトリ名だけ のところでRETを押しても自動的に開くので、いろいろと使い道があります。是 非憶えてください。

FTP

さて、diredを憶えたところでその応用形みたいなange-ftpを見てみましょう。 これはdiredと同じ感じでftpサイトを探検したりファイルをコピーしたりできる モードです。 ためしに次のように入力してみてください。

C-x d C-a C-k /anonymous@ftp.vector.co.jp:/pack/ RET

(diredのディレクトリ指定で行の最初に移動して、全部消した後に /anonymous@....を入力しました。)

最初の/の直後がログインする名前(ここでは匿名ftpなのでanonymous)、@の後ろ はftpサイトの名前です。ftpサイトの名前の最後に「:」をつけることを忘れな いでください。そして「:」の後ろはftpサイトの中のディレクトリ名です。わか らない場合は「:/」と「/」だけ入れてみるといいでしょう。

ここではdiredでできるほとんどのことができます。もちろん削除や名前の変更 にはそれなりの権限が必要なので、たぶんanonymousではできないでしょう。(で きたらきっと怒られます)。おそらく一番よく使うのは「C」(ファイルのコピー) コマンドでしょう。「C(大文字です)」を入力するとdiredと同じように今いるディ レクトリがデフォルトとして表示されます。自分のマシンにコピーしてきたい場 合は、デフォルトのものを全部消して、「c:/tmp」みたいに入力してエンターす るとコピーが始まります。もちろんマークを使っていくつものファイルをまとめ てダウンロードすることもできます。ダウンロード中は定期的にコピーされたパー センテージを読み上げます。

ちょっと変なところがあって、cとかaコマンドでの変更時刻の読み上げが1970年 とかになってしまうようです。画面にはちゃんとでているので、M-b, M-fなどの 移動コマンドを使って、ファイル名の左に書かれている時刻を読んでください。

シェル(コマンドプロンプト)

Emacsの中でいろんなプログラムを走らせることができます。その1例が shell-modeです。これはシェル、つまりコマンドインタプリタなどをEmacsの中 から利用できるものです。ためしに「M-x shell RET」と入力してみてください。

いつも耳慣れたコマンドプロンプト(DOS窓)の起動メッセージがBEPの声で流れて くるはずです。後はお好きなコマンドを実行してみてください。dirとかformat とか……。行単位で結果を出してくるプログラムならおそらく使えます。 *ただし*フルスクリーンの表示をするものとか常駐してしまうものはやめてくだ さい。スクリーンリーダーとかエディタはおそらくまずいです。 extraだとどうなるかまだ試してません。誰かやってみたら結果を教えてくだ さい。(フルスクリーン表示をしないように注意して)

五目ならべ

ここからはEmacsに付属しているゲームのうち、音声でそれなりに使えるものを 解説します。

最初に紹介するのは、お馴染みの五目ならべです。EmacsにはEmacs Lispで書か れた五目ならべプログラムが付属しています。ゲームを始めるには、「M-x gomoku RET」と入力します。

起動すると「Do you allow me to play first (y or n )」つまり、「私(Emacs) が先に打ってもいい?」と尋いてきます。じゃんけんはしなくていいらしいので、 気分にあわせて「y」か「n」を入力します。

すると、画面上には五目ならべのための番面が現れます。これは画面いっぱいに、 縦横にならんだ「.」の列です。あなたはこの番面を、次のようなキー操作で移 動することができます。

移動すると異動先のマスの番号が行、列の順に読み上げられます。そこに駒があっ た場合、自分の駒なら「x」相手の駒なら「o」(スピーチサーバによって「zero」) と読み上げられます。

自分の駒を置くにはスペースキーを押します。すると自分の駒がそのときいた場 所に置かれた後、すぐにEmacsが次の手を打ち、その相手の駒が置かれた場所に 移動します。

後はこれを繰り返して、自分の駒が相手より速く5個直線にならべば勝ちです。 チャレンジしてみてください。

途中でやめたくなったら、しかたないのでC-x k でバッファを消すか、おもむろ に別のことを始めてしまってもEmacsは待ちくたびれないようです。

テキストアドベンチャー

きっとEmacs20あたりから追加されたと思うのですが、いわゆるテキストアドベ ンチャーゲームがついています。最近はあまりお目にかかることはないでしょう が、昔のまだBASIC全盛期のコンピュータを知る人やUnixに親しんでいた人の中 には、この手のゲームを懐かしむ人もいるようです。

実行は「M-x dunnet RET」です。すると、以下のようなメッセージが現れます。 ここだけはC-pで上に移動して読まないと読んでくれません。(以下私なりの日本 語訳、おかしかったら教えてね)

行き止まり
あなたは泥道の行き止まりにいます。道は東へ続いています。
遠くの方で道が分かれているのが見えます。ここの木々は背の高いroyal parlm
(しゅろの一種?)で、互いに同じ間隔を置いてならんでいます。
ここにはショベルがあります。
>

さて、この最後の「>」はプロンプトです。これに対してなにかのコマンドを入 力すると、それが解釈できるコマンドなら、それに応じたことが起こります。た とえば、「e」と入力してエンターを押すと、(これはeastの略なので)あなたは 東に移動して、周りの情景が変わります。(これが最初に取るべき行動かどうか は知りませんよ……)

「help」というコマンドで簡単な説明が表示されます。また、いつでもC-p, C-n でバッファの途中を読み直して、やることが決まったら最後のプロンプトのとこ ろに戻ってコマンドを入力することができます。私もまだちゃんとプレイしたこ とがないので、なにをすべきなのか、どれくらいの広さの世界なのかわかりませ ん。

ドクター

さて、これはゲームとはちょっと違うのですが、心理学の世界(?)では有名らし い「Eliza」と呼ばれるプログラムと対話することができます。なんでも、考え が錯綜してまとまらなくなったときに自分を取り戻すのによいとか……。

コマンドは「M-x doctor RET」です。すると、ドクターが現れます。英語が得意 じゃない人にはつらいのですが、ここで「Hi,」などと話しかけてみてください。 自分の話が終わったらエンターを2回入力します。するとドクターからの返事が 返ってきます。それに対してまじめに答えていくとよいらしいです。

ただ、どうやら現在のdoctorプログラムにはバグがあるらしく、うまく会話が成 立しないことがあります。特にEmacsを日本語環境など英語以外の環境で使って いる場合(今もきっとそうですね)に発生します。 設定がわかる人は、以下を.emacsに入れると解決するようです。 きっと将来のEmacsでは修正されるでしょう。

(defadvice doctor-mode (after meadow-doctor-mode first nil)
 "Fixes doctor for Meadow-1.14. But what was the problem in the
  first place?"
 (interactive)
 (setq sentence-end "[.?!][]\"')}]*\\($\\| $\\|\t\\|  \\)[ \t\n]*")
)

おまけのあやしげなファイルたち

Emacsの機能という訳ではないのですが、Meadowディレクトリの 1.10/etcディレクトリにはEmacsの動作に必要な大切なファイル に混じって、Emacsの古い時代から蓄積されたあやしげなファイルがおいてあり ます。EmacsやGNUプロジェクトに関するまじめな主張や議論からJOKESやsex.6 みたいななんでここにあるの?なものまで。 そういうファイルは全部英語ですが、気が向いたら見てみてください。 なんとなく昔の偉大なハッカーのみなさまの声が聞こえる気がします。


2001/04/1
Bilingual Emacspeak Project