.
developing primaries

番外編ということで、Sigmarion2(以下 sig2)で Palm 用プログラムを書く、という話をしようと思います。なお、あらかじめお断りしておきますが、あくまで「書く」だけ、です。コンパイルはできませんし、コンパイルされたものを Palm にインストールする、というようなこともやりません。;-) 要は、こんな感じで開発してる部分もありますよ、という一例のご紹介というだけです。つまんないですね。;-)

Emacs for Windows CE の導入

実は私は昔、VZ Editor を使っていて、Windows でも WZ Editor を使っていましたので、sig2 で何かものを書くにあたっての選択肢としては、とりあえず Pocket WZ Editor というのがあったんですが、最近はめっきり Emacs で生きているのと、あとたまたま私が sig2 を手に入れてうきうきしていた時にはどこを探しても Pocket WZ Editor が見あたらなかったりしました。なんか日本語が変ですが、番外編なのでよしとします。

で、Emacs ですが、世の中としては Emacs 21 の時代ではありますが、Windows CE プラットフォームで動く Emacs は今のところ、

http://www.rainer-keuchel.de/wince/emacs-wince.html

で公開されている 20.7 の porting だけのようです。ちなみにこちらのサイトでは色々ともりもり port しておられるようで、他にも面白いものがありますが、それはさておき。

この Emacs porting では必要最低限のものしか配布していません。実行モジュール、dll、プラットフォーム依存の elisp セットだけです。配布パッケージは機種依存のコアと共通セットの二つに分けてありますので、両方ともダウンロードします。ファイル名を以下に記しておきますが、バイナリ・ファイルへの直リンクはやめておきます。上記サイトから各自落としてください。

  • emacs-wince-mips-hpc-wce211.tar.gz
  • emacs-wince-all-platforms.tar.gz

ちなみに、tar.gz 形式を展開できるツールが必要ですが、元々 sig2 で Emacs を使おうと思うような方は当然、Cygwin なり何なり用意があることと思います。;-) 展開したファイルは sig2 側でそれぞれ適切な場所に配置します。

もう一つ、Emacs の稼働用にレジストリを編集する必要があります。レジストリ編集ツールは同サイトでも公開されていますが、何を使っても構いませんので、以下の項目について設定しておいてください。すべて \HKEY_LOCAL_MACHINE\Environment\ 下に設定します。表の右側はサンプルとお考えください。もちろん、ディレクトリについてはここで指定するディレクトリを作っておかなければいけません。

COMPUTERNAME sig2
EMACSDATA /emacs/etc
EMACSDIR /emacs
EMACSDOC /emacs/etc
EMACSLOADPATH /emacs/lisp
EMACSPATH /emacs/bin
HOME /home
PATH /bin
SHELL none
TEMP /tmp
TMP /tmp
TMPDIR /tmp
USERNAME hogehoge
UNIXROOTDIR /

Emacs の環境構築

さて、これで「sig2 上で Emacs が動作する」というところまでは来ています。デスクトップにショートカット・アイコンを作るなりスタート・メニューの[プログラム]にショートカットを仕込むなりしておきましょう。続いて、本来の目的である「コーディングできる環境を作る」に移ります。

今の時点でもとりあえず、C のプログラムを書くことはできます。が、私は cc-mode 無しだと、後になっても読めるような綺麗なコードを書くことができませんので、cc-mode は入れておきます。今回のパッケージでは最低限の elisp しか付いてきませんので、足りないものは NTEmacs 20.7 用のパッケージからでも取ってきます。ちゃんとした elisp ならきちんと動きますので cc-mode に限らずこの際、いろいろ入れておきましょう。なお、NTEmacs 20.7 のパッケージはこちらにあります。

ftp://ftp.gnu.org/gnu/windows/emacs/20.7/

私が入れて使っているのは cc-mode、info、skk と Wanderlust と、それらの前提パッケージです。(info は skk のために入れました。入力方法がよく分からなかったので(笑)。)

なお、前提パッケージはいろいろありますが、この辺をいちいちここで取り上げるのはこのページの趣旨に反しますのでやめておきます。ちなみに、このページの趣旨は、「『そういうことをやっている人はいるのだから、自分も同じことがきっとできるだろう』と誰かに思っていただく」という辺りで、それ以上のことは望んでいません。:-)

副産物の話

いろいろやっている過程でついでに導入した Wanderlust ですが、おかげで快適、とは言えないまでも、まぁ使えなくもない、というくらいのメール環境が実現しています。で、この Wanderlust および、基本的な日本語環境構築については、こちらのサイトがたいへん参考になりました。というか、元々 sig2 で Emacs という話を始めたのも、google で WindowsCE と Emacs で引いてみたらこちらにたどりついたからです。ここでお礼を言っても仕方ないんですが、とても感謝しております。

http://cwaweb.bai.ne.jp/~daisaku/ce_emacs.html

こちらを参考にしていけば sig2 で Emacs で日本語で Wanderlust というところまではあまり苦労なく到達できると思います。まぁつまずくところがないとは言い切れませんが、それは sig2 に限った話ではない場合が多いので、Web であれこれ探している内に何とかなる範囲だと思います。なお、sig2 にはバイト・コンパイル済みの .elc ファイルだけを持っていきたいでしょうから、ソース・パッケージを持ってきて PC 側でビルドして、生成されたものだけ sig2 に持っていくために、PC 側にも Emacs な環境と、おそらくは Cygwin が必要かと思います。そうすると何かと楽になりますので、元々そうでない方も、この機会に Emacs で生きる人になることをお薦めします。;-)

(まぁ、なくても何とかなりますが。)

コーディングの話 <- ここから無駄話 ;-)

まぁ、sig2 も Palm も持っていて、という方の多くはそうだと思うのですが、私は sig2 を PDA としては使っていません。私が sig2 に求めていたのは、そこそこのキーボードがあって、メールの返信だのドキュメントのドラフトだの何だのといったコマゴマとした書き物の面倒を最低限でも見ることができて、休みの日のカバンに入れてもあまりかさばらない携帯端末、という、ノート PC と Palm のニッチでした。

そういう意味で sig2 に Emacs が載った時点で、私が求めていた以上のものが実現できたわけです。日頃 PC で書き物をしている時の環境がほとんどそのまま持ち運べる、ということになると、やっぱりふだん書いている物は何でも書けるじゃん、ということになってしまいますので、行き着く先としてはもうコーディングしかありません。;-)

私がもっぱら書いているのは C のプログラムなんですが、C のプログラムを sig2 のキーボードで書こうと思うと、いろいろキー配置の問題でストレスがたまる部分もあったりします。でも、元々通常の文章と違ってコーディングなんてのはあれこれ考えながら書く分、入力スピードはあまりこだわらずに済む、という面もありますので、自分的にはまぁまぁ OK です。:-)

で、さらに無駄話をどんどん続けてしまいます。

snippet coding ノススメ

sig2 でプログラムを書き始めたのは本当に最近のことなんですが、意外と生産性が高いことに気づいて驚いています。元々私が書くプログラムというのは余暇の趣味みたいなもので、主に休日や夜遅く、仕事が終わって一息ついた後のものです。ですが、仕事の行き帰りやちょっとした空き時間に喫茶店に入った時なんかでも、書きかけのプログラムで煮詰まっている部分や構想中の次回作についてあれこれ考えているわけです。そういう 10 分とか 20 分とかいう短い時間はどうしても「後に残らない」んですよね。考えたことの大部分が揮発してしまうというか。Palm でメモ帳に書いたりアウトライン・エディターを使ったり、というようなこともやってみたんですが、それだと「考えること」より「それを残すための作業」に取る時間の方が長くてダメなんですね。好きなことをやっているのに、気持ちよくならないんですよ。;-)

(そうなると私の生産性はダメダメになってしまいます。)

で、sig2 なんですが。考えたことをその場でコードにしていくのが、なかなか良いようです。その場で考えていること、というのは、まさにコードのことなので、それを後に残すために書くなら、そりゃコードで書くのが一番です。もちろん抽象化とかモデル化とかいろいろありますが、元々方法論をどうこうしながら書いているわけでもないので、とにかく、コードで書いちゃいたいわけです。;-)

最終的にたどりついたのが、電車の中とかで、関数を1個ずつ書く、というスタイルです。sig2 には書きかけのプログラムごとにフォルダを作り、中に参照用のヘッダファイルと snippet.c と名付けたファイルを一つだけ置いておきます。で、よし、今からこの関数を書こう、と決めたらその関数を書きます。簡単に終わったり気力が余ったりしたら、また別の関数を書きます。間違ってもプログラムのフローを考えつつ複数の関数群に手を付ける、なんてことはしません。ただ心をムナしくして、関数1個だけを書きます。木を見て森を見ず、の精神(笑)で、ただただ部品を1個作るわけです。

そうするとばりばりフローに沿って書き散らすよりもコードのクォリティが高くなるような気がしますし、そういう書き方で全体を成立させなければならないのでネーミング・コンベンションなんかの、「構成のための要素」もしっかりしてくるような気がします。ま、全部、気がするだけなんですが。しかし何より重要なこととして、ちょうど通勤路の乗り換え一回分くらいの時間が楽しくつぶせます。これは事実。;-)

で、家に帰ったら ActiveSync 経由の Explorer で snippet.c の中身を吸い上げます。コンパイルは通ったり通らなかったりしますが、それはまぁそれとして、無駄話が長くなったのでこの辺で切りましょう。

あれ、もう書くことないか。じゃ、とりあえず、この辺で。気が向けばこの辺の環境についてはまた別途書くかもしれませんが、ここまでを一応まとめておきます。

まとめ

Emacs for WindowsCE はこちら ->

http://www.rainer-keuchel.de/wince/emacs-wince.html

elisp を追加するための NTEmacs 20.7 はこちら ->

ftp://ftp.gnu.org/gnu/windows/emacs/20.7/

Cygwin はこちら(念のため) ->

http://www.cygwin.com/

日本語で参考になるサイトはこちら ->

http://cwaweb.bai.ne.jp/~daisaku/ce_emacs.html

(おまけ) Wanderlust のサイトはこちら ->

http://www.gohome.org/wl/index.ja.html

sig2 で Palm プログラムは「書けます」が、それだけです。コンパイラもエミュレータもインストールも全部 PC です(笑)。でも、それでけっこう楽しくやれます。電車の中でクロスワード・パズルやら何やらやったり小説読んだり新聞読んだりするのもいいですが、プログラムを書く、というのも悪くないのであります、というお話でした。:-)