[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

2. MIME message の閲覧

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=mime-ui-ja&node=MIME-View"
"mime-ui-ja/MIMEmessageの閲覧"へのコメント(無し)

MIME-View は GNU Emacs で動作する汎用的な MIME viewer です。

MIME-View は MIME message を閲覧するための利用者界面 (user interface) の核であり、この上で presentation-method と呼ばれる表示を作るプログラム を動かしたり、acting-method と呼ばれる entity の処理プログラムを動かす ことが可能で、さまざまな種類の entity を扱う事ができるようになっています。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

2.1 MIME-View 概説

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=mime-ui-ja&node=Overview%20of%20MIME-View"
"mime-ui-ja/MIME-View概説"へのコメント(無し)

Internet の電子書簡・ネットニュースなどの書面 (message) の表現形式は STD 11 に基づいています。STD 11 の書面本体 (message body) は行を唯一の構造と する簡易文面 (plain text) であり、文字符号も us-ascii と定められています。 実際には、文字符号を us-ascii の代わりにその言語圏で用いられる文字符号と した『地域化された STD 11』書面も用いられてきましたが、この場合も書面の 文字符号は1つです。このため、利用者界面 (Message User Agent) は、しばし ば、byte 列 = us-ascii 文字列、ないしは、byte 列 = その言語圏で用いる文 字符号の文字列のように見倣してきました。

しかしながら、MIME では書面は entity を単位とする木構造になり、また、1 つの書面で複数の文字符号を用いることができます。また、entity の内容は文 面や絵のような単純に表示可能なものだけでなく、音声や動画などの一定時間再 生されるようなものや特定のアプリケーションのデータやプログラムのソース、 あるいは、ftp や mail service の利用法や URL といった形で表された外部参 照などのさまざまなものが考えらます。このため、表示だけを考えていた STD 11 における利用者界面の単純な延長では MIME の全ての機能を扱うことはでき ません。つまり、MIME の形式に合わせて復号するだけでは不十分であり、利用 者との対話的な再生処理を考慮する必要があります。MIME 書面の形式は自動処 理がしやすく設計されていますが、MIME 書面に含まれる内容の中にはセキュリ ティー上の問題から自動処理をするべきでないものがあり、こういったものの再 生に関しては利用者の判断を仰ぐように設計されるべきでしょう。結局、MIME 書面を扱うためには STD 11 および MIME の構文で記述されたメッセージの情報 交換用表現とその解釈結果である表示画面や再生等の処理を区別して考える必要 があります。また、利用者との対話的な再生処理が必要です。

このため、MIME-View は1つの書面に対して、情報交換用表現を格納する mime-raw-buffer と表示用表現を格納する mime-preview-buffer の2つの buffer を用います。

MIME-View は mime-preview-buffer に対して mime-view-mode という MIME message を閲覧するための mode を提供します。利用者はここで各 entity に 対して操作を行うことができます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

2.2 mime-preview-buffer の画面構成

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=mime-ui-ja&node=MIME-Preview"
"mime-ui-ja/mime-preview-bufferの画面構成"へのコメント(無し)

mime-view-mode では各 entity に対して

 
       [entity-button]
        (header)
        
        (body)
        (separator)

という情報を表示します。これらは条件に従って design を変更したり、表示 を抑制することもできます。

以下に、表示例を示します。

 
From: [email protected] (守岡 知彦 / MORIOKA Tomohiko)
Subject: Re: 質問?
Newsgroups: zxr.message.mime
Date: 22 Oct 93 11:02:44
Mime-Version: 1.0
Organization: Japan Advanced Institute of Science and Technology,
        Ishikawa, Japan

[1  (text/plain)]
  MIME-Edit mode における、MIME message の作り方。

  C-c C-x ? を押すと help が出てくる。

C-c C-x C-t     insert a text message.
C-c C-x TAB     insert a (binary) file.
C-c C-x C-e     insert a reference to external body.
C-c C-x C-v     insert a voice message.
C-c C-x C-y     insert a mail or news message.
C-c C-x RET     insert a mail message.
C-c C-x C-s     insert a signature file at end.
C-c C-x t       insert a new MIME tag.
C-c C-m C-a     enclose as multipart/alternative.
C-c C-m C-p     enclose as multipart/parallel.
C-c C-m C-m     enclose as multipart/mixed.
C-c C-m C-d     enclose as multipart/digest.
C-c C-m C-s     enclose as PGP signed.
C-c C-m C-e     enclose as PGP encrypted.
C-c C-x C-k     insert PGP public key.
C-c C-x p       preview editing MIME message.
...

って訳で、C-c C-x C-i を押して、挿入したい binary file を指定します。

  binary file の MIME encoding には、普通、Base64 を指定します。

[2  (image/gif)]

[3  (text/plain)]

  こんな風に、絵入り message のでき上がり。

〓〓〓〓〓〓〓〓〓〓〓 ロシアン・ティーを一杯。 〓〓〓〓〓〓〓〓〓〓〓
〓〓〓〓〓  ☆ ジャムではなくマーマレードでもなく蜂蜜で ☆  〓〓〓〓〓
〓〓〓〓〓         МОРいОКА  ТОМОХИКО         〓〓〓〓〓
〓〓〓〓〓〓〓  Internet E-mail:   〓〓〓〓〓〓〓

2.2.1 entity-button   
2.2.2 entity-header   
2.2.3 entity-body   



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

2.2.1 entity-button

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=mime-ui-ja&node=entity-button"
"mime-ui-ja/entity-button"へのコメント(無し)

entity-button は entity の先頭にあって、その entity に関する大 まかな情報を表示する部分です。

標準では

 
        [1.3 test (text/plain)]

のような感じに表示されます。

最初の数字は message 中のこの entity の位置を節番号のように表したもので、 entity-number と呼びます。

2番目の文字列は表題を表します。この情報は、

  1. Content-Description field もしくは Subject field に書かれた表題
  2. Content-Disposition field の filename parameter に書かれた file 名
  3. Content-Type field の name parameter に書かれた file 名
  4. uuencode の場合の file 名

から作ります。どれも存在しない場合は空白が表示されます。

3番目の括弧の中の情報はその entity の media-type/subtype を表します。非 MIME entity の場合、nil が表示されます。

この entity-button は entity の内容を象徴する icon のような役割を果た します。例えば、

 
        [2  (image/gif)]

の上で v を押せばここに入っている絵が表示されます。

また、mouse 操作が可能な場合、entity-button を第2ボタン(3 button mouse の場合、中央のボタン)で押せば、同様にその絵が表示されます。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

2.2.2 entity-header

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=mime-ui-ja&node=entity-header"
"mime-ui-ja/entity-header"へのコメント(無し)

entity-header はある entity の header を表示する部 分です(「そのままやんけ」って怒らないで。そういうもんなんです)。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

2.2.3 entity-body

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=mime-ui-ja&node=entity-body"
"mime-ui-ja/entity-body"へのコメント(無し)

entity-body は part の内容を表示する部分です。

これもひねりが足りないですが、まあ、そういうもんです。

とはいえ、実際には少しひねってます。

text entity の場合は charset に応じて code 変換したりしますし、XEmacs で は image entity を変換しないといけないし。

詳しくはまた後で。



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

2.3 mime-preview-buffer での操作

URL="https://bookshelf.jp/cgi-bin/goto.cgi?file=mime-ui-ja&node=mime-view-mode"
"mime-ui-ja/mime-preview-bufferでの操作"へのコメント(無し)

mime-preview-buffer には以下の機能があります。

u
上の part に戻る(message の一番上の part でこれを行なうと Summary mode に戻る (*1))

p
前の part に移動する

M-TAB
前の part に移動する

n
次の part に移動する

TAB
次の part に移動する

SPC
scroll up する

M-SPC
scroll down する

DEL
scroll down する

RET
次の行に移動する

M-RET
前の行に移動する

v
part を再生する (*2)

e
part から file を取り出す (*2)

C-c C-p
part を印刷する (*2)

mouse-button-2
preview-buffer 中の mouse button を起動する

content-button を押せば、その part が再生される(*2)

URL-button を押せば、その WWW browser が起動される

[注意]

(*1) MUA で mime-view の設定をしていない場合、Summary mode には戻りませ ん。

(*2) 実際の動作は対応する method に依ります。


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]