我田引水的環境自慢
どーでも良いようなところに凝って、自分だけで喜ぶ、 のがオタクの本領なのでしょうが、たまには人様に自慢したくなる事もある…。
目次
アンチエイリアスフォントを使う
能書き
インストール
アプリケーションごとの設定
課題・感想など
迷惑メールを撃退する
能書き
インストール
運用
成果
課題
行間を空ける
能書き
設定
アンチエイリアスフォントを使う
8/21/05 作成
8/27/05 改訂
能書き
Kterm や XEmacs を k14 フォントでずっと使ってきましたが、 今だにこれらは最高の日本語環境だと思っています。 ただ、最近は自分の視力が衰えてきたせいか、ときどき 14 pt のフォントが見難い事があります。 しかし、だからといって 16 pt あたりにすると、 途端に k14 フォントの「完全さ」というか「エレガントさ」がなくなるし…。 で、この際、「大きくても綺麗な」アンチエイリアスフォント (以下、AA font) を使ってみようと思い立ったのでした。
最近の Gnome は xft 対応で、しかも Firefox はデフォルトで gtk2+xft 対応になっているので、言わば「期せずして AA font は経験済み」でした。 でも、私は長らくこれを採用する気になれず、Firefox より Mozilla を使い続けていたのでした。これは主に Linux (Fedora Core 3/4) のデフォルトの AA font (すなわち Kochi {Mincho|Gothic}) がかなりしょぼかったせいだと思います。 しかし、松原さんのサイトで IPA font なるものの存在を知り、これならば AA font に移行しても悪くないのでは?と思いはじめたのでした。
しかし、道はなかなか険しく、結構右往左往させられたのですが、最近やっと、 Gnome の各用途 (Desktop font, Application font, Window title font) の他、EBview, XEmacs, Mlterm, Mozilla で、IPA font や Hiragino font を、そこそこ使えるようにできました。 かなりの使い勝手になったのではないかと自画自賛しています。
インストール
MLterm はsourceforge から download します。configure 時に "--with-type-engines=xft" するだけで、後は make; make install で OK です。IPA font は、単独では存在せず、grass というアプリケーションに附属しているものを使う他無いようです。 上記の松原さんのページにあるようにして、取得・展開・インストールします。 私は、fixed, proportional 両方をインストールし、かつ kochi への symbolic link を張らずにおきました。 (フォントの比較をやりやすいように思えたので、こうしましたが、 最終的には kochi へ link を張った方が無難そうです。後述。)
Hiragino font は、それぞれを任意の名前で /usr/X11R6/lib/X11/fonts/OTF の下に置きます。私は
hiragino_gothic_W3.otf hiragino_gothic_W6.otf hiragino_marugo_W4.otf hiragino_mincho_W3.otf hiragino_mincho_W6.otf等としました。そのディレクトリへ行って、fc-cache を実行します。(かなり時間がかかる。)
ここまでで、Gnome を含む gtk2 対応のアプリケーションで、IPA font や Hiragino font が、font を選ぶメニューに表われるようになります。 (OpenOffice はうまくいかない。)
アプリケーションごとの設定
Gnome
Desktop → Preferences → Font で設定します。私は、Application font と、Window title font を Hiragino Maru Gothic Pro W4 としました。ファイル名に日本語を使わないので Desktop font はデフォルトのまま。もちろん Font Rendering は Best shapes か Best contrast にしますが、後者は何故か Hiragino font が汚なくなる (ヒゲが出る) ようです。EBview
Tools → Options → Appearance → Font で設定します。Hiragino Kaku Gothic には、W3 と W6 があるので、それぞれを Normal と Bold にアサインしてやると、とても素晴しい表示 になります。Mozilla/Firefox
Firefox は Edit → Preferences → General → Fonts&Colors で、Japanese の Serif, Sans-serif font を、それぞれ IPAPMincho、IPAPGothic (もしくは対応する Hiragino Mincho, Hiragino Kakugothic) 等に設定します。ここで、size を大き目 (16 px 以上) に設定しておくと、より効果がはっきりするようです。私は、Serif に "Hiragino Mincho W3 Pro"、Sans-serif に "Hiragino Kaku Gothic W3 Pro" を指定して、デフォルトのフォントサイズを 17 px に設定して使っています。 (当初、Maru Gothic W4 Pro を使っていましたが、こちらに変更しました。)Mozilla は、gtk2+xft のバージョンのものをインストールする必要があります。 私は Mozilla Suites ページの "Other System & Languages" から辿って "Linux (x86), GTK2 and Xft" の見出しの下のパッケージを取ってきます。 (なんでこんなに分り難いところに置いてあるんだ?) これには Installer が無いので、例えば /usr/loca/mozilla 以下へ untar。 font の設定は Firefox と同様です。
MLterm
AA font で「Kterm + k14 と同等の環境」というのは、 やってみると結構大変。 なかなか「何にでも使えて、かつ統一のとれた表示をする」 にならないのです。 (あちらを立てればこちらが立たず。)実際、かなり右往左往しましたが、「結論は、MLterm を Proportinal なモードで使うが、ASCII 文字に関しては固定幅のフォントを採用する」という事になりました。 ちょっとちぐはぐですが… 具体的には
- MLterm を採用し、これを Variable
colmun width (Proportional) な AA font を使うモードで使う。
- ASCII 文字には Lunxi Mono
を、日本語には IPAP{mincho|gothic} か、ヒラギノを用いる。
これらの設定は .mlterm/main で
fontsize = 17 # font_size_range = 6-30 # step_in_changing_font_size = 1 use_variable_column_width = true use_anti_alias = true
などとしておいて、.mlterm/vaafont でISO8859_1=Luxi Mono-iso10646-1; JISX0208_1978=Hiragino Mincho Pro W6-iso10646-1; JISX0208_1983=Hiragino Mincho Pro W6-iso10646-1; JISX0208_1990=Hiragino Mincho Pro W6-iso10646-1;
とする。 - ls の highlighting のデフォルト設定から、bold を無くする。
即ち、.zshenv で
export LS_COLORS="ln=0;32:di=0;34:ex=0;31"
とする。 - MLterm を起動する前に、skkinput を起動し、環境変数を
LANG=ja_JP.eucJP LC_ALL=ja_JP
としておく。
XEmacs
XEmacs-21.5.x では、AA font に対応した branch が作られているようですが、まだかなり先駆的なもののようで、 私にはそれをビルドできませんでした。 なので、上に伸べた MLterm で -nw オプション付きで XEmacs を使う事にしました。実際には Gnome の launcher からmlterm --title=XEmacs -e xemacs -nwを呼ぶようにしました。 こうしておくと、Alt-Tab で window を選択する時、アイコンの下に XEmacs と表示してくれるので便利です。(このときアイコンも XEmacs になってくれればスマートなのですが、やり方がわからない…) あと、LANG や LC_ALL を C にしておかないと不具合が出るので、そういう面でもこの launcher からの invoke は便利です (当然、デフォルトで LANG=C, LC_ALL=C になっている必要がありますが。)
上記で述べた Mlterm のフォント及び -VA モードの選択は、実はこの面からの要求も加味されています。 Luxi Mono の幅は、Hiragino (の半分) より若干広いので、 英字と日本語が混在する文章では、XEmacs で fill paragraph しても各行の長さが揃いません。 最初これがとても気になりましたが、今はもう慣れてしまいました。 (メールの段落の右側をきちんと揃えて嬉しがっているのは、 どうも私だけのような気がする。)
Programming や HTML file の編集は、 context highlighting の機能が若干低いのと、色が見難い他は、indent や日本語と英数字のバランスも良く満足しています。 もう一つの主な用途である Wanderlust は、default の highliting が X でないターミナルに最適化されているせいか、どうにも見難い。 で、変更を初めたのですが、これが意外に大変で、 まだ満足なものにできていません。
課題・感想など
- Gnome の Font Preferences で IPAPxxx font を選ぶと、i が G, s
が Q に、などというとんでもない文字化けが起きる。 (IPAxxx ならば OK)
- XEmacs と Mlterm は Luxi Mono
と Hiragino Mincho W6
の組合せにしていますが、今のところこれがベスト。
Luxi Mono + IPAPGothic が次くらいでしょうか? ただ、Hiragino の
weight が W6 だと、若干太すぎで、暑苦しい感じがするのと、 強調などで
bold にした時にちょっと不自然。
一方、W3 では若干細すぎるような気がします。
この点では、次点の IPAPGothic がなかなか良い線行ってます。
多分、W4 か W5 の Hiragino Mincho
が入手できればそれがベストなんでしょうね。
- しかしその Hiragno も万能ではなくて、Mincho は Firefox/Mozilla
のデフォルトフォントにすると、英数字のベースラインが狂う (特に W3
で)。また、Maru Gothic は、英字の "r" の字体がちょっと変。
上の Mlterm の場合は英数字を Luxi Mono
にしているのでこの問題が出ないわけです。
- AA font の御利益は Analog LCD でもさほど劣化しないようです。
むしろ ThinkPad X23 の LCD の方がギザギザが目立つ。 (何故だ?)
FlexScan L565 (DVI) > FlexScan L557 (Analog) > TP X23
という印象です。
- FC-4 から、Firefox/Mozilla
で日本語の中に埋めこまれた英数字に、AA font
が使われなくなってしまい、かなり悩んだのですが、CSS で、
body {padding-left: 1em; margin-right: 1em; max-width: 38em; font-family: Gothic, Sans-serif; font-size: 17px; line-height: 140%}
の Gothic としてあったのが原因らしく、Sans-serif のみとしたら、無事英数字も AA font になりました。うーむ、 Browser は同じなのに、Gnome のバージョンが変ったら、Browser のフォントレンダリングの振舞いが変るって事でしょうか。 もう私などの理解を越えています。 - MLterm も、上で伸べた言わば「変則的な設定」 でなんとか使えているようなもので、"-AV" + "Luxi Mono" の組合せ以外ではかなり問題が出ます。
迷惑メールを撃退する
8/8/03 作成
2/16/04 改訂
10/2/04 再改訂
能書き
Spam (迷惑メール) に辟易していました。 2003 年の春先くらいから急に増え出し、その 4 月の時点で多い時には一日 20 通以上も来るようになっていました。 普通その程度の spam くらいなら片っ端から消していけばすむ事ですが、 どこでもメールシステムだと、ちょっと悲しい事になります。というのは、折角 ML のメールを監視から外すなどして、 個人宛のメールのみチェックしようとしているのに、 spam のせいで誤警報が激増して、「Mailcheck の封筒がくるくる回るので、メールを取りに行ってみたら spam だった」 という事が多くなるから。 それが殆んど「いつも」なので、いらだたしい事この上ない。
そこで、Linux Journal (2003年 3月号) に触発されて、Spambayes というフィルタを導入してみました。(その号の Bayes 統計の解説はよく分りませんでしたが) Spambayes 自体は良くできていて、インストールも比較的簡単な上に、 しっかり働いてくれています。
2003-04-25 ころに稼働を始めてからこれまで (2004-10-02) の間に、約 34000 通の spam を弾いてくれています。その間、フィルタを擦り抜けてきた spam は、約 510 通で、spam を漏らす確率は何と 1.5 % にすぎません。 一方フィルタに弾かれた ham は、この間 1 通のみでした。
最近 (2004-09) になって、Spambayes が正式リリース (-1.0) になりました。Sourceforge によると、2004-07-08 にリリースされた事になっていますが、そんな筈はありません。 (待ち焦がれていた私は、しょっちゅう見に行ってましたから。) ひょっとすると、1.0rc2 から変更が無かったので、そのリリースの日付けになっているのかも。
ともあれ、この項の前の版は改訂でちょっと読みにくくなっていたし、 誤りもあったので、これを機に、かなりの部分を書き直す事にしました。 以下の記述は特に断わらない限り、spambayes-1.0 (と Fedora Core 1) を前提にしています。
インストール
前提として、2.2.3 かそれより新しい Python と Procmail がインストールされている必要があります。私のところでは Python-2.3.4 (source から) と procmail-3.22-11 (rpm) です。
インストールは簡単です。
- ソースを Sourceforge
から取ってきて適当なディレクトリに展開する。
- そのディレクトリに移動して、
$ ./setup.py build # ./setup.py install
とやってインストールします。 - 新しいデータベースを作ります。
$ sb_filter.py -n
とやると、$HOME に .hammiedb というファイルができます。
- そのデータベースを「訓練」します。ham (spam
以外のメール)が $HOME/Mail/ham
に、spam が $HOME/Mail/spam に溜っているとすると、
$ sb_mboxtrain.py -d $HOME/.hammiedb -g $HOME/Mail/ham \ -s $HOME/Mail/spam
- $HOME/.procmailrc に、
MAILDIR=Mail/ML :0 fw:hamlock | sb_filter.py :0 * ^X-Spambayes-Classification: spam spam/.
なる行を加えます。~/Mail/ML/spam というディレクトリに spam を放り込む場合の例です。(トレーニングにつかう spam 溜めとは別にしておきます。)もし、まだ procmail がインストールされていない場合は、 「めざせモバイラ ⇒ どこでもメール」を御覧下さい。
- crontab に
21 2 * * * sb_mboxtrain.py -d $HOME/.hammiedb -g $HOME/Mail/ham \ -s $HOME/Mail/spam
というエントリを加えます(実際は一行)。 これで毎晩データベースを訓練しなおしてくれます。
運用
このままでもかなり役に立ってくれますが、 やはりデータベースを継続的に訓練した方が精度があがります。 やり方は簡単。普通にメールを読んでいて、「こりゃ spam だ」と思ったら、そのメールを $HOME/Mail/spam に移します。また、時折は spam 溜り ($HOME/Mail/ML/spam) を覗いて、もし ham が混っていたら、それを $HOME/Mail/ham に移動します。そうしておいて、上のインストールプロセスの 4. を実行します (もしくは、crontab にまかせる)。これで完了。
training に使ったメールには
X-Spambayes-Classification: ham; 0.05 X-Spambayes-Trained: spamのようなヘッダが目印としてつくので、古いのをどうしようか、 等と悩む必要はありません。どんどん放り込んでおけば、あとは spambayes が全て面倒を見てくれます。
成果
能書きの節でも触れましたが、spambayes の識別能力は大したものです。特に、数回トレーニングした後は、 殆ど spam が漏れてきません。2004-10 の時点で、一日平均 100 通近い spam が送られてきますから、もうこれ無しではやっていけない、 と言っても言い過ぎではないでしょう。
感心させられる事もあります。例えば、私は「サリューシネマ」という ML を講読しているのですが、ここから来るメールの中には、 ときどき「大半が広告」と言って良いような号があります。Spambayes は、真面目に映画の話をしている号はちゃんと通す一方、 「広告特集号」は弾いてしまいます。ちょっと感激。
さて、spam を確実に弾く能力もさることながら、もっと大事なのは「ham を誤って spam としてしまわない」事です。 この種の誤りは一件だけありました。 私信なので、ここに例として載せることができませんが、これは Shift-JIS のプレインテキストを、Base64 でエンコードしたパートをもつ、マルチパートメッセージでした。 大抵の場合、JIS 以外の文字コードを持つ日本語メッセージは、spam としてしまって問題無いのですが、この場合は、Shift-JIS の部分を独立のパートにした正当なメールの形式なので、そうもいかない。 本来は、そのパートの文字コード (この場合は Shift-JIS) を使って内容を判断する、というのが正しい動作なのでしょうが、 現在の Spambayes はそうなってないようです。 とりあえず、これをそのまま $HOME/Mail/ham に置いて、トレーニングしなおしたところ、 それ以降一年くらいの間同様の問題は起きていないようです。ただし、 そのようなメールは非常に稀にしか来ないし、 最近は spam 溜めをよくチェックしてないので、確信は持てません。
課題
スパムメールは増える一方で、最近一週間の平均は、一日 95 通! そのような絶対数の増加に加えて、日本語の spam の割合も徐々に増えてきました。 もともと日本語の単語にはあまりトレーニングが効かないようで、 その結果、すり抜けてくる数は英語のものより多い事があります。 なので、上記のマルチパートを正しく解釈してくれる事に加えて、 日本語の内容 (単語) を正しく解釈してくれたら良いなと思います。
もうひとつは、無意味つづりへの対策。オタク日記に書いたように、 トレーニングを怠っていると、すり抜けてくる spam が増えてきます。 (敵もさるもの:-) このうち、無意味なつづりを含む方は、 言わば無限のバリエーションが可能な訳で、 トレーニング (厳密にはトレーニング用 spam 溜めの更新) をまめにしていても、すり抜けを減らせこそすれ、 完全にからめ取る事は難しいようです。 最近「すり抜け率」が、約 2 % で高止まりしているのはこのせいもあるにちがいありません。 これにうまく対応するには、 アルゴリズムに何か根本的な変更か追加が必要な気がしています。 勿論私になにかうまいアイディアが有る訳ではありませんが…。
行間を空ける
能書き
あるアプリケーションを使い始めるにあたって、私がまず最初にチェックし、 ダメならば何とかしようと試みるのは、 「表示の行間に適切な空白が有るか」です。 フォントフェースでも、英語か日本語かでもなく、「行間が空いてるか?」 なんですね。(その次には、やはりフォントが来ますが:-)
まず、下の二つの表示を見比べて下さい。左(上)が Kterm をデフォルトで使った場合、右(下)が普段私が使っている設定です。
確かにわざわざ漢字が多い例を取ったというきらいもありますが、 みやすさの差は歴然としていると思います。
これは行間に、4 pixel 程空白を作った例です。 もっと空けるとさらにみやすくなりますが、 今度はアルファベットが間延びした感じになってしまうので、 これくらいが限度でしょう。
設定
どうしてこういう設定がデフォルトじゃないんだ?と思いますが、 設定しなおす事は比較的簡単です。(やり方を見付けるのは大変ですが。)
- Kterm: 次の行を、.Xdefault に足します。
KTerm*VT100*LineSpace: 4
もちろん、その後、xrdb .Xdefaults してから、Kterm を再起動します。 - XEmacs: こちらは、.xemacs/init.el か、.emacs
(実際にお使いのほうのファイル)に、
(cond ((string-match "XEmacs" emacs-version) (set-specifier minimum-line-ascent 6 nil 'x) (set-specifier minimum-line-descent 6 nil 'x) ) )
の行を書き足します。これは (Emacs-Lisp) バッファ内で評価するだけで、ぱっと表示が変るので、 すぐにでも試してみる事ができますね。 - Mozilla/Netscape/Firefox:
~/.mozilla/user_name/xxxxx.slt/chrome/userContent.css に、
* { line-height: 125% !important; }
という内容を付けたします。 というか、多分新しく作ることになると思います。 "!important" とあるのは勿論私のコメントで、不可欠ではありません。 (5/5/04 改訂) Firefox (Firebird を改称) にも同じ手が使えます。この場合、改変(追加)するファイルは、 ~/.phoenix/default/xxxxx.slt/chrome/userContent.css です。
しかしまあ、どうしてこうやり方がまちまちなんだ、 という疑問を持つのは私だけでしょうか?:-) もちろん、設定可能なだけでもありがたいのですが(例えば、今だに Xterm は行間隔設定のやり方が分らない)。
蛇足ながら、お暇でしたら、Mozilla の デフォルトと、 上記の設定を見比べて下さい。 後者は、フォントを alias-gothic と alias-mincho の 14 points に変えています。 もうデフォルトの設定には帰れない、と思いませんか?:-p
最後になりましたが、以上の設定方法は、いずれも ML や NetNews で教えていただきました。 どなたに御教授頂いたのか、どうしても探し出せませんが、 ありがとうございました。
34/1,792,089 Taka Fukuda Last modified: 2010-03-27 (Sat) 17:54:54 PDT