gnus-mime 0.10 説明書（日本語版）

gnus-mime 0.10 説明書（日本語版）
************************

This file documents gnus-mime, a MIME extension for Gnus.

tm を使って Gnus の MIME 機能を強化するための package である `gnus-mime' について説明します。

gnus-mime って何？
**************

gnus-mime は tm ((tm-ja)tm-kernel) を使って Gnus ((gnus)) の MIME ((tm-ja)MIME) 機能を強化するための package です。

[注意]

     gnus-mime は Gnus 専用です。GNUS には tm-gnus ((tm-gnus_ja)) を使います。

gnus-mime を使うと tm-view ((tm-view-ja)) を用いて "*Article*" buffer で MIME preview を行うことができます。特に、 XEmacs では、text と同様に、絵も inline 表示をすることができます。

また、MULE ((tm-ja)mule), XEmacs/mule, mule 統合版 Emacs では多言語・国際化機能が support され、MIME message に対する charset の support, 非 MIME message に対する Newsgroup 毎の default-mime-charset の指定を行うことができます。

また、original の Gnus では iso-8859-1 ((tm-ja)iso-8859-1) の Q encoding の encoded-word ((tm-ja)encoded-word) の decode しか support されませんが、gnus-mime では、iso-8859-2 ((tm-ja)iso-8859-2), iso-8859-3 ((tm-ja)iso-8859-3), ..., iso-2022-jp ((tm-ja)iso-2022-jp), euc-kr ((tm-ja)euc-kr), iso-2022-kr ((tm-ja)iso-2022-kr), hz-gb-2312 ((tm-ja)hz-gb-2312), cn-big5 ((tm-ja)cn-big5) など、mule で利用可能なさまざまな charset の B ならびに Q encoding の encoded-word を扱うことができます。また、Gnus よりも RFC 1522 に忠実に処理しています。

MIME message の inline 表示
************************

gnus-mime では automatic MIME preview 機能を利用することができます。この機能を使うと Summary mode で記事を読む時、通常表示される Article buffer の代わりに tm-view で処理された preview buffer を表示します。(cf. (tm-view-ja))

このため、Base64 ((tm-ja)Base64) や Quoted-Printable ((tm-ja)Quoted-Printable) で encode された記事を decode して表示することができます。あるいは、text/enriched ((tm-ja)text/enriched) 形式のような書体や組版に関する情報を持った記事を整形して表示できます。当然のことながら、multipart ((tm-ja)multipart) の記事も正しく処理できます。

また、XEmacs では text と同様に絵も preview buffer 内で表示することができます。

metamail を使った場合と異なり、音の入った記事を読んだとたん、いきなり、音が鳴り出したり、video の入った記事を読むたびに video が再生されたり、 anonymous ftp ((tm-ja)ftp) や mail-server を利用した external-message の入った記事を読むたびに anonymous ftp を実行したり、 mail を送ったりすることが防げます。こうした content は preview buffer の中に入って再生 command を実行した時のみ再生されます。

しかしながら、遅い machine を使っていて、MIME 処理の overhead が気になる場合、automatic MIME preview を抑止することができます。

MIME 処理の仕組み
===========

gnus-show-mime が nil でなく、かつ、article が Mime-Version field を持っている場合、即ち、その article が MIME message の場合、gnus-show-mime-method が呼ばれて MIME 処理が行なわれます。

gnus-strict-mime が nil の場合、gnus-show-mime が nil でなければ常に gnus-show-mime-method が呼ばれて MIME 処理が行なわれます。

Gnus 5.2 以降では、gnus-strict-mime が nil でなく、かつ、article に Mime-Version field がない場合、 gnus-show-mime-method が呼ばれる代わりに gnus-decode-encoded-word-method が呼ばれます。でも、古い Gnus では有効ではないので、この場合、gnus-strict-mime は nil にしておいた方が良いでしょう。

 -- Variable: gnus-show-mime

     この変数が nil でないとき、automatic MIME preview が行なわれます。既定値は t です。

     この変数は Gnus の変数なので、gnus-mime が load される前に gnus が load された場合、既定値は保証されません。

     (cf. (gnus)Using MIME)

 -- Variable: gnus-show-mime-method

     MIME 処理を行なう時に、この変数に束縛された関数が呼ばれます。既定値は gnus-article-preview-mime-message です。

     この変数は Gnus の変数なので、gnus-mime が load される前に gnus が load された場合、既定値は保証されません。

     (cf. (gnus)Using MIME)

 -- Variable: gnus-decode-encoded-word-method

     gnus-show-mime と gnus-strict-mime がともに nil でない場合に、Mime-Version field がない article に対してこの変数に束縛された関数が呼ばれます。既定値は、gnus-article-decode-encoded-word です。

     この変数は Gnus の変数なので、gnus-mime が load される前に gnus が load された場合、既定値は保証されません。

     また、Gnus 5.0.* および Gnus 5.1 では無効です。

[注意]

     gnus-mime は Gnus の変数を用い、これを gnus-mime の初期値でdefvar しています。例えば、gnus-show-mime は nilではなく t で、gnus-show-mime-method は metamail-buffer ではなく gnus-article-preview-mime-message で defvar しています。 (cf. (gnus)Using MIME)

     setq ではなく defvar を用いているのは gnus-mime が loadされる前に ~/.emacs 等で user が行った設定を尊重するためですが、このことは同時に、もし gnus-mime が load される前に gnus が load されれば gnus-mime の機能は標準では働かないことを意味しています。よって、 ~/.gnus 等で gnus-mime や mime-setup を load することには問題があります。どうしてもそうしたい場合は、gnus-show-mime や gnus-show-mime-method の設定を行ってください。

Automatic MIME preview の仕組み
===========================

Gnus 5.2 以降では Gnus は１つの article に対して gnus-original-article-buffer (" *Original Article*") と gnus-article-buffer ("*Article*") という２つの buffer を持っています。ここでは前者を raw article buffer, 後者を preview buffer と呼ぶことにします。

raw article buffer には何も処理をされていない『生の article』が入っています。特に、mule ((tm-ja)mule) では code 変換を行なわない状態の記事が入ります。

preview buffer は raw article buffer を元に MIME 処理を行なって整形された記事が入ります。特に、mule の場合、この中で、charset もしくは newsgroup 毎に指定された文字 code での code 変換が行なわれます。

Gnus 5.0.* および Gnus 5.1 では raw article buffer と preview buffer の区別はありませんが gnus-mime が無理矢理 raw article buffer を作り出しています。よって、特に理由がなければ Gnus 5.2 以降を使われることをお勧めします。

(cf. (tm-view-ja)Two buffers for an article)

国際化
***

MULE ((tm-ja)mule), XEmacs/mule, および、mule 統合版 Emacs (*1) などの mule 機能を持った emacs では MIME charset ((tm-ja)MIME charset) および、非 MIME message/part に対する newsgroup 毎に指定された default-mime-charset での code 変換が行われます。

[Memo]

     (*1) 1996 年 10 月現在、半田 剣一 氏と RMS 氏が開発中の Emacs で、MULE の機能のうち、多言語化と国際化に関する機能が merge されたものを指しています。

具体的には、code 変換は次のように行われます：

 1. ある newsgroup を選択すると、その newsgroup に対応する default の MIME charset を gnus-newsgroup-default-charset-alist から捜し、もし、見付かれば、Summary Buffer の buffer local 変数 default-mime-charset にそれを設定する。もし、なければ、 default-mime-charset の大域値が用いられる。

 2. Summary Buffer 中の非 ASCII 文字は default-mime-charset の Summary Buffer 上での値で code 変換される。

 3. encoded-word ((tm-ja)encoded-word) の場合、宣言された MIME charset ((tm-ja)MIME charset) で code 変換を行う。

 4. article の code 変換は：

      1. もし、ある MIME message のある part が Content-Type field ((tm-ja)Content-Type field) に charset parameter を持っていれば、その MIME charset を用いて code 変換を行う。

      2. message header や非 MIME message など、charset が宣言されていない場合、 Summary Buffer 上の default-mime-charset の値で code 変換される。

 -- Variable: gnus-newsgroup-default-charset-alist

     newsgroup に対応する正規表現と default MIME charset を表す symbol の対からなる連想 list.

     既定値では、alt.chinese.* では hz-gb-2312 ((tm-ja)hz-gb-2312), alt.chinese.text.big5, hk.*, hkstar.*, tw.* では cn-big5 ((tm-ja)cn-big5), fj.* では iso-2022-jp-2 ((tm-ja)iso-2022-jp-2), han.* では euc-kr ((tm-ja)euc-kr), relcom.* では koi8-r ((tm-ja)koi8-r) が指定されています。

     ある newsgroup に対応する MIME charset が存在しない場合は default-mime-charset が用いられます。

 -- Function: gnus-set-newsgroup-default-charsetnewsgroup charset

     NEWSGROUP に対する default MIME charset を CHARSET に設定する。

     NEWSGROUP は newsgroup 名かその一部からなる文字列。（例： "gnu.emacs.gnus", "gnu.emacs", "gnu"）

     CHARSET は MIME charset を表す symbol. （例：iso-8859-1, iso-2022-jp）

MIME message の作成
****************

mime-setup ((tm-ja)mime-setup) を使っている場合、tm-edit ((tm-edit-ja)) を用いた MIME message の作成を行うことができます。

[注意]

     mime-setup の標準設定では signature の自動挿入が抑制されます。

     (cf. (tm-ja)mime-setup)

C-c C-x C-m (mime-editor/insert-mail) に対する実装は標準では与えられません。これは、Gnus と組み合わせるべき mail reader をどうすれば良いかが判らないからです。また、大抵の場合、C-c C-x C-y (mime-editor/insert-message) で事足りる（即ち、挿入したいmessage を選択してその "*Article*" buffer を表示すればそのmessage を C-c C-x C-y で挿入することができます）からです。

しかしながら、mime-editor/mail-inserter-alist の message-mode の値に設定したい実装を指定することで C-c C-x C-m を利用することができます。

例：C-c C-x C-m と同じ動作をさせる場合
=========================

     (set-alist 'mime-editor/mail-inserter-alist
     	   'message-mode (function message-mime-insert-article))

例：MH の folder から取り込む場合
======================

     (autoload 'tm-mh-e/insert-mail "tm-mh-e")

     (set-alist 'mime-editor/mail-inserter-alist
     	   'message-mode (function tm-mh-e/insert-mail))