なんだかんだで自力でいろいろ直した事が多いので、 それを書きとめておこう、という事と、 割と基本的な所でモバをもっていない人向けの宣伝が少なめな気がしたので こんなコーナーができました。

私の環境

私は、メインの開発環境には、486DX33Mhz(だと思う、もらい物なので不明)のLinux機を使っています。PCカードなんてもちろん読み書きできないし、FreeBSDのクロス環境なんていうのもありません。 一応XなしのFreeBSD2.2.5で、必要最低限の物をそろえた環境もつくりました。 これは、当時ロムのマウントがしたかったけど、 どこにもそれができるカーネルのバイナリが落ちていなかったので、 カーネルのコンパイルの為だけにつくりました。 BSDにのりかえてもいいんだけど、めんどいのでやらなかった。 しかも最近ではマウントできるカーネルも落ちているし、 少し大きめのフラッシュカードがあればFreeBSDのデスクトップなどはいらない気もします。 使い方によっては小さめのカードでもFreeBSD機はいらないかも。 ここらへんの事は後述

デスクトップはLinuxだけどPocketBSDってどう?

私ってばデスクトップ機しかもってなくてPCカードなんて読み書きできんし、 FreeBSD機ももってないけどどーよ?っていうコーナーです。 でも、それ以外にも使いはじめないとわからない事とかもてきとーに書きます。

問題点

まずは敵を知れ、という事でこまる事。

ポケビ以外のFreeBSD機がない事による問題

つまりデスクトップがFreeBSDじゃない、という事の問題はカーネルのコンパイルと、必要なバイナリのいくつかが手にはいらない、という二つに集約されます。

PCカードが読み書きできない問題点

これの問題は、モデムがあるPC-UNIX機かあるか、またはシリアルケーブルを買う気があるか?というのが重要な分岐となります。正直いって、デスクトップにはモデムがついていなくて、PCカードもよみかきできなくて、シリアルケーブルもなければ結構つらいです。
というかファイル転送がほとんど無理なのでつらいです。 TAとかの人はちょっと私にはわからないので、もっと詳しい人にきくか、メーリングリストに流しちゃってもいいと思います(たぶん)。
とりあえずモデムはある、という前提で話をすすめます。 PCカードの読み書きは、モデムがあればそんなに困りません。 モデムもシリアルケーブルもない、という状況だと、ファイル転送の方法がなくてこまります。
しかもシリアルケーブルは高いです(^^;
Winとの接続は私はよくしりません。 ようするにATDをATAでうけて、いろいろやった後にpppdをたちあげれればいいわけです。 Linux用での受け側のスクリプトを参考にして、できるかどうか考えてください。 たぶんpppサーバーがどっかにおちていればできます。

これは問題ないぜ

こんな事は問題ないぜぃ、という事を書きます。 ポケビユーザーにとっては当然なのであまり触れられてませんが、 外から見ると疑問に思う事なども多いと思うので。

モデム直通でデスクトップとファイルのやりとり

母艦がFreeBSDじゃなくて、PCカードが読み書きできない人で、シリアルケーブルを買う気がない人の生命線、モデム直通です。
このスクリプトは佐々木さんに教えてもらった、BSD同士をつなぐ物の受け側をLinuxに直しただけです。 佐々木さんに感謝。
いろいろ考えたんですけど、めんどうなのでppp-onとほとんど中身が同じスクリプトを作りました。 はじめはchatスクリプトを直接起動していたんですが、何かの理由で変えた気がします。 それでまず、ppp-connectというスクリプトを使います。 これは、/etc/ppp/ppp-connect-scriptというスクリプトをchatスクリプトにくわせます。
それでモバの方は、/etc/ppp/ppp.confをこんな風に書いて
母艦で
% ppp-connect
とやって、それと同時(ちょっとおそめ?)にモバで
% ppp mg_modem
とやります。 これで出来るはずです。 ftpは,
% ftp 192.168.0.1
とモバの方でやればおっけーです。 注意として、ノートのモデムは、物によってはうまくいかなくて、何か小物を使う必要がある、とかメーリングリストでいってました。 でも私はノートを持ってないのでしりません。

ポケビ特有の話

特有って程の物じゃないですが、ちょっとこうするといいぜぃ、みたいな事を書いときます。

辞書関係

ポケビ特有といえば辞書ですね〜。 この辞書がわりとすごい。 語彙がどの程度かは知らないですが、そこらの大学受験用の辞書といい勝負します。 ものによっては例文ものっているし、熟語も少し不便ですがあります。 モバをエディタによる物書き用のマシーンと考えるなら辞書はいいですね。 という訳でROMの辞書の使い方をば。

ROMのマウント

ROMのマウント出来るカーネルを作ってマウントするのが第一手です。 なんでこれが組み込まれていないのか、というのはなにか複雑な事情により正式に組み込む訳にはいかないらしいですが、個人でやる分には全く問題ないので、マウントできるようにした方がお得です。 今の所英和辞書しか使えないのがもったいないです。 国語辞書もあるので使いたいので、そのうちチャレンジする予定です。 でも口だけなので誰かやって下さい(^^;
という訳でカーネルは、メーリングリストに流れてるパッチをあてて自分でつくりました。 でも、最近はどっかにマウントできるようにしてくれたカーネルがどっかにころがってるらしいので探してみて下さい。 それでそのカーネルに、mknodをどっかからもってきて、

# mknod /dev/mgrom b 26 0
# mknod /dev/rmgrom c 86 0

とかやって、適当なディレクトリ(この場合は/c)をつくって、そこにマウントします。

# mkdir /c
# mount -t msdos -o ro /dev/mgrom /c

でおっけーです。起動時に自動でマウントしてくれるように/etc/fstabに

/dev/mgrom /c msdos ro 0 0

とか書き込むといいんじゃないでしょうか? これで/cにROMの中身がマウントできます。 しのかわさんに感謝。

辞書を使う

辞書ファイルが見えるようになったので、これを使います。 これは、なんか圧縮されてるので解析は大変だったんですが、そこは高橋さんがやってくれたのでそいつをそのまま使わせてもらいます。 高橋さんに感謝(^^)
という訳で、辞書はmgedicというのを使う訳ですが、そのままだとsjisででてくるので、nkfをかませるのが基本でしょう。 という訳でdicとかいう名前のshellスクリプトでラップしました。
#!/bin/sh

mgedic -q -f "/c/jspdic05.prs" $* | nkf -e

まあ、こんなのでいいんじゃないでしょうか? これで

% dic hello

とか

% dic in*

とかでいいんじゃないでしょうか? 後方一致とか前方一致もできてgoodです。 また熟語は、

% dic -p convenience

と-pというオプションをつけるといいなじゃないでしょうか? すると、

at one's convenience つごうのよいときに
for convenience(convenience') sake 便宜上
for the convenience of 〜 …の便宜のために
for convenience(convenience') sake 便宜上

となります。
次にemacslispについて。 mgedicと一緒についていますが、これは普通使うにはいくつか不便なところがあるので私はそれをいじって使ってます。 これは好みのわかれる所なので、使うかどうかは自分で考えるとか、自分にあわせてソースをいじってみて下さい。
私のいじった所は、調べてみてみつからなければ一文字けずって*つけて検索、をくりかえします。 最後がingのときはingもとります。 つまり、3単現のsとか分詞とかを調べる時にそのままでいいように、といじりました。 ソースはこんな感じです。 これで、適当なキーに.emacsでバインドしときます。

(autoload 'mgedic "mgedic" nil t)
(autoload 'mgedic-point "mgedic" nil t)
(autoload 'mgedic-idiom "mgedic" nil t)
(autoload 'mgedic-idiom-point "mgedic" nil t)

(global-set-key "\C-t" 'mgedic-point)
(global-set-key "\C-x\C-t" 'mgedic)
(global-set-key "\C-x\C-p" 'mgedic-idiom-point)
(global-set-key "\C-x\C-i" 'mgedic-idiom)

とかやって、単語の上でC-tとかC-xC-pとかやってください。 ただ、C-xC-pを最初にするとなんかエラーがでますね。 なんでだっけ? まあいいや、一度C-tでなんか調べるとその後は大丈夫です。 なんでだろ?

時代はskk

skkはモバにあってる気がするので時代はskkです。 世間はCannaらしいですが、私はskkがいいです。 Cannaを使っていると、
「Cannaちゃん、君はCannaちゃんなんだろう?」
「私は...です」
という声が聴こえてきて、...がなんなのかがとても気になるので私はSKKです。 そこがいい、という人もいるみたいで世間ではCannaが主流のようですね(嘘)。 私はユーノが好きなのでSKKです(半分本気)。 などとよくわからないネタを除いても、skkを使うメリットってのもあると思います。
  1. nemacsの起動がはやい(日本語入力をする時に起動)
  2. 辞書サーバーを起動してなくていい(日頃のメモリ節約)
  3. 辞書が小さくてもなんとかなる
  4. Win系より劣っている、という感じがあまりしない(自己暗示)
  5. mglで日本語入力が出来る(これはCannaでもできますね)
といった所でしょうか。 5のおかげでCannaとSKKが私の中では有力です。 直接入力シリーズはよくわからないのですが、mglでの入出力ができる、というのは割とでかいです。 だから、もしCannaとSKK以外をつかおう、と思っているのでしたら、 mglの入力を出来るようにするのがおすすめです。 SKKの入力はコメントいれて7000行位かかりましたが、Cannaなんてほんの126行ですから、ものによっては結構楽にいけるのでは?

nemacsでSKKを使う時の不具合

なぜかskkとnemacsを組みあわせると、isearchがなぜか動きません。 なんででしょう? という事で適当にごまかしたので書いときます。 ちゃんとした解決法を知っている人、教えて下さい。 skk-isearch-messageっていう関数がない、とかいわれるのでダミーを作ってやります。 本当は入力途中の文字を返すはずですが、調べるのがだるいので、ごまかし(^^;
.emacsに、

(defun skk-isearch-message ())

とか書いとくと、いいです。 nilを返すだけなのでほんとにダミーです(^^;
これで日本語で検索ができます。

SKKをmglで使う

100%MAXで手前みそですが、SKKをmglで使います。 imskk.soを/usr/local/lib/mgl/において、 環境変数MGLIMをimskk.soにセットします。 私の場合はbashですので、.profileにでも

export MGLIM=imskk.so

とか書いてあります。 まあここらへんは解るでしょう。 そして、mglで使うには、C-oで起動です。 get_key_imという関数が使われているところでは、日本語入力ができます。 UNIXの世界の割には日本語がすごい簡単に扱えます。 って日本でしか使われていないのでそれほど不思議でもないですが(もちろんmglやmnwを作った人の努力の成果です)。 つまり国際化ではなくて、初めから日本にローカリゼーションされている訳です。 mnwなどを使ったアプリなどでは、何も気にしなくても日本語がつかえます。 私の作った住所録などでそのまま日本語が使えるのも、全部mglとmnwが日本語に対応しているおかげです。感謝感謝。