ネットブックでEmacs環境を構築する


それではお待ちかね、ネットブックEmacsをインストールする話です。

この手順通りにやることで、あなたのネットブック
立派なEmacs専用機に大変身します。

古くから、モバイルギアリナザウによってUnix環境を
持ち歩き、そこの中でEmacsひきこもり生活を始めて
いる人がいますが、その環境構築には多大な手間が
かかりました。

しかし、この方法を使えば、OS換装の手間もなく、
単にEmacsをインストールするだけでよいのです。

OSはWindowsのままですが、Emacsにはeshellという
立派なシェルがありますので、各種Unixコマンドや
スクリプト言語の環境を整えておけばLinuxと何等
変わらない操作性を得ることができます。

あなたも、「物書きマシン」、「Emacsが動くpomera
というコンセプトでネットブックをとらえてみませんか?

僕は、愛用ネットブック
「パソコンの形をしたノート」
だと解釈しています。

あくまで文房具という位置付けです。

そういう視点でものを見ると、一般的に貧弱とか
使えないとか惨々な言われようのネットブックでも
いろいろなことができ、機能に恵まれています。

  • 安価
  • 軽い、小さい
  • さほど発熱しない
  • 使い慣れたEmacsの機能がフルに使える
  • 物書きマシンとしては超大容量ハードディスク(160GB〜)
  • 音楽や動画も再生できる
  • ゲームもできる
  • PDFを読む電子ブックリーダ
  • ネット接続できる

それでは始めましょう。

http://ftp.gnu.org/gnu/emacs/windows/
から最新のバイナリ(現時点ではemacs-23.3-bin-i386.zip)を
ダウンロードし、インストールします。

インストールは解凍するだけです。

適当なフォルダ(たとえばd:\emacs)を作成し、
そこにzipファイルを展開します。

すると、emacs-23.3というフォルダができて、
d:\emacs\emacs-23.3\bin\runemacs.exeが
Emacsの実行ファイルになります。

そこで、スタートメニューにEmacsという名前で
d:\emacs\emacs-23.3\bin\runemacs.exeへの
ショートカットを作成しておきます。


そうすることで、Windows→EでEmacsを立ち上げることができるからです。

また、そのEmacsショートカットはスタートアップにもコピーしておきます。

これでWindows起動時に自動的にEmacsが立ち上がります。

結論から言うと、僕の愛用ネットブックEeePC 1001HAでは
とても快適にEmacsを使うことができています。

Unix的環境を持ち歩いて快適に文章執筆をする夢がついに叶いました。

想像してみてください。

普段はSKKで快適に文章を書いています。

anything.elだってきっちり動きます。

必要に応じてEmacs Lispを書くことができます。

B5サイズで1kg少々の重さで、打ちやすいキーボード、
バッテリ持続時間(実働)は約3.5時間と申し分ありません。

CPUは省電力のAtomなので機体がひどく発熱することもありません。

発熱は夏場はとても不愉快ですが、これなら問題ないレベルです。

また、ハードディスクは熱に弱いのでハードディスクにも優しいです。

性能面は今の基準ではとても貧弱ですが、重いサイトを閲覧したり、
複雑な数値計算や大規模開発を行うわけではないので、問題ありません。

Emacs専用機だという位置付けをしっかり
しておけば、性能なんて無視できるのです。

他にもMPlayerをインストールして、
音楽や動画も楽しんだりしています。

これらももちろんEmacsから起動しています。

というか、デスクトップアイコンはひとつもないですし、
スタートメニューもめったに使いません。

ほぼすべてのプログラムはEmacsから
eshell経由で起動しています。

開いているウィンドウはだいたいEmacsだけです。

そのため、Emacsは常に最大化しており、タスクバーは隠しています。

いかがでしょうか?

ネットブックは快適なEmacs専用機になるのです。


さて、ネットブックEmacsを快適に使うには、
形状の制約と折り合いをつける必要があります。

そのためにネットブック専用のノウハウが出てきます。

まず、キーの数が少ない問題です。

たとえばEeePC 1001HAではHome/End/PageUp/PageDownがないです。

実際にはFnキーを押しながら矢印キーで
これらのキーコードを送ることができます。

これら特殊キーはワンタッチで押せるのが魅力なのであり、
わざわざそこまでして使うメリットは感じません。

実質ないに等しいです。

でもよく眺めてみると、右上にある
BackSpace/Delete/Insert/PrintScreen/Pauseは
Emacsユーザにとってほとんど使わないキーです。

これらのキーに活躍の場を与えてあげましょう。

僕はDeleteにC-v(scrollup)、
BackSpaceにM-v(scroll-down)、
Insertにscroll-other-window、
Pauseにscroll-other-window-downの
コマンドを割り当てました。

ネットブックはキーボードが小さいため、
これらの遠いキーにもすぐに手が届きます。

また、立ちながらでも右手親指でスクロールができます。

これによりまるで本を読むようにネットブック
持ち、テキストを読むことができます。

PDFはテキストに落としてEmacsのview-modeで読んで
いるので、電子ブックリーダーとかは不要です。

立ちながら携帯電話をいじるように、
ネットブックを操作できるんです。

デメリットと思われた点が、一点してメリットに様変わりです。

これを実現するのは以下の設定です。
.emacs (~/.emac.d/init.el)の
「最後」に入れています。

(defmacro defkey (keymap key command)
  `(define-key ,keymap ,(read-kbd-macro key) ,command))

(setq my-overriding-mode-map (make-sparse-keymap))
(defkey my-overriding-mode-map "<delete>" 'scroll-up)
(defkey my-overriding-mode-map "<backspace>" 'scroll-down)
(defkey my-overriding-mode-map "<insert>" 'scroll-other-window)
(defkey my-overriding-mode-map "<pause>" 'scroll-other-window-down)
(define-minor-mode my-overriding-mode
  "Overriding"
  :global t :init-value t)


global-mapに設定していないのは、これらのキーに
機能を割り当てているモードがあるからです。

最後に登録したマイナーモードにより、
強引にキーを割り当てているのです。


次にポインティングデバイスの問題です。

ネットブックに限らずノートパソコンの
ポインティングデバイスって本当に
使いづらくてイライラしますよね。

なかなかマウスカーソルが進まなかったり、
文字タイプ中にマウスクリックになったりと、
本当に困ったちゃんです。

Emacsに限らずノートパソコンを快適に使うためには、
マウスに頼らない操作を身に付けることが大事です。

幸いEeePC 1001HAではワンタッチでポインティングデバイス
無効にするスイッチがあるので、必要なとき以外は無効にします。

今度はマウスカーソルが邪魔になるので、
マウスカーソルを右下に完全においやります。

これを行うのが以下で定義するM-x banishです。


(defun banish ()
(interactive)
(set-mouse-position (selected-frame) 1000 1000))


一度実行したらマウスカーソルは右下端に
移動するため見えなくなります。

これでうっとうしいマウスとはおさらばです。


最後に、ネットブックの小さい画面では
Emacsは常に最大化して使うことになります。

Windowsの機能でWindowsを最大化するには、
M-x maximize-windowを定義します。


(defun maximize-window ()
(interactive)
(w32-send-sys-command 61472)
(w32-send-sys-command 61488))


そして、.emacsに (maximize-window) を入れる
と最大化されるはずなのですが、タイミングの
問題なのかうまく最大化されないので、以下のようにします。


(eshell)
(insert "maximize-window")


このようにするとEmacs起動時にeshell(Emacs上のシェル)で
maximize-windowと入力されるので、RETを押せばよいです。

なお、set-frame-fontでフォントを変更したら
ウィンドウの大きさが変わるので、フォント変更後は
M-x maximize-windowで再度最大化します。

僕は使うフォントごとにコマンドを作成し、
フォントを切り換えて最大化するようにしています。


(defun bigfont ()
(interactive)
(set-frame-font "Ricty-18:bold")
(maximize-window))
(defun mediumfont ()
(interactive)
(set-frame-font "Ricty-16")
(maximize-window))
(defun smallfont ()
(interactive)
(set-frame-font "Ricty-12")
(maximize-window))


あとは、msysgitをインストールすると、
gitと各種Unixコマンドが手に入ります。

これらは、VCやeshellで活躍しています。

http://code.google.com/p/msysgit/

さらにMPlayerRubyをインストールして
Linuxと変わらない使い勝手を手に入れています。

http://mplayerhq.hu/
http://www.ruby-lang.org/ja/

ネットブック」を「ポータブルEmacs専用機」と
再定義して使うお話、いかがだったでしょうか?

次回は、2大プロジェクトの1つめを公開します。
お楽しみに!


P.S.
ごめんなさい、僕はxyzzy使ったことないです。
でもこのコンセプトはxyzzyでも通用すると思います。