SEMI


Last modified: Fri Nov 12 15:57:31 JST 1999
Semi
[English page is here]

現在の最新版は SEMI 1.13.7 (粟津) です。なお、この版を使うためには FLIM 1.13.2 (笠縫) が必要です。

この版には Chaos 1.13, Nana-gnus 6.13, ET-gnus, Wanderlust 2.* 等が対応します。
SEMI 1.12, Semi-gnus 6.10, Chaos 1.12, Nana-gnus 6.12, T-gnus, Wanderlust 1.* 等を使う場合 FLIM 1.12.7 (結崎) SEMI 1.13.4 (寺井) の組合せ、もしくは、SEMI 1.12 系をお使いください。

なお、現在の開発用の枝は semi-1_13 です。


SEMI って何?

SEMI

SEMI は FLIM の機能を利用して、利用者に Internet message の構造を扱うための対話的な user interface を提供するための層で、 message の表示や entity の再生処理などを行う MIME-View と message の編集を行うための MIME-Edit からなります。

SEMI は MIME 処理を行うための user interface のための汎用的な核として、 さまざまな MUA (Message User Interface) で利用することを考慮しています。 MIME-View の表示および再生処理は、『実行状況モデル』に基づき、

  1. entity の構造に関する情報
  2. MUA の種類などの実行環境に関する情報
  3. 操作の種類
  4. SEMI 標準のものおよび利用者が mailcap 等で設定した処理条件
といった制約を満たした実行状況に関する情報を捜し出し、それに応じて行わ れます。このような方法により、message の構造を実行環境と利用者の意図を 反映した形で解釈することを可能にしています。再生処理に関しては例示イン ターフェース的な考え方による、利用者の操作に対する適応も行っています。 表示に関してもこの考え方を採り入れる予定です。

現在 SEMI 実装としては SEMI と widget を用いた WEMI があります。


SEMI archives


SEMI を利用している package

[NOTE] XEmacs で Semi-gnus を利用する場合は rmail-xemacs.tar.gz を入れましょう。XEmacs で rmail-mime を使う場合も同様です。但し、rmail-mime が正常に動作するかどうかは十分に検証されていません。


過去・現在・未来?

1993 年の初夏、私はレポートの現実逃避(^_^;から mh-e や GNUS で MIME 機 能(特に encoded-word )を利用する試みをはじめました。この後、encoded-word を扱うための program は“tiny-mime”という program として公開しました。当時は公開し てそれで終りというつもりだったんですが、まさかそれから5年も続ける羽目 になろうとは。

“tiny-mime”は思いの他反響が大きく、大量の mail に耐えかねて tm mailing list を作りました。mailing list の member の協力もあり、 “tiny-mime”は何度か version up され、mh-e や GNUS でこれを利用するた めの設定サンプルも公開しました。これらは後に“tm”という package にま とめて配布するようになりました。

“tm”では当初 body に対しては metamail を利用した viewer を用いていま したが、後に、Emacs Lisp で書いた“tm-view”という viewer を実装しまし た(修士研究の現実逃避(^_^;)。

tm mailing list の member から周辺 module が提供されたこともあり、tm は急速に成長して生きました。 やがては tm は高機能な MIME 機能を提供する MUA attachment として世界中で広く使われるようになりました。しかし、 一方で、tm の提供する機能の古さも目立つようになって来ました。これは tm が元々 Emacs 18 の時代に設計され、Emacs 18 を support し続けていたからです。 このため、Emacs 19 で導入された機能の内 Emacs 18 で emulate できないものは根幹部で利用することができなかったのです。 しかし、徐々に Emacs 19 以降や XEmacs への移行が進み、 Emacs 18 を support するための機能制限の デメリットが目立つようになって来ました。 また、長年の機能拡張のために見通しの悪くなった部分や、 当初の無知や技術力不足により emacs の慣習に反する部分や効率の悪い部分も見受けられましたが、 過去のしがらみでなかなかいじる訳にはいきませんでした。 こうした問題を解決したいと思うようになっていましたが、1996 年春ついに tm のリストラを決意し、その作業を開始しました。

tm は『大盛り package』という形で、tm に関わるさまざまな module や、 MIME 処理に関わらないものまで入っていましたが、これを APEL, FLIM, SEMI と EMH などの MUA interface module に再編しました。 bitmap-mule mu-cite などは別配布としました。その後、 Semi-gnus project などもはじまりました。

これまで、FLIM では mime-entity 抽象や mm-backend, mel-backend が導入 され、さまざまな環境での効率的な使用に配慮した抽象化を行った API の整 備が進んでいます。

SEMI では mailcap による外部 method の設定機能を追加しました。 Emacs lisp が苦手な人でも気軽に外部 method を設定でき、 SEMI 以外の MUA と設定を共有することも可能になりました。 また、tm では外部 method に特別な shell script を用いていたため非 UNIX 環境で工夫が必要でしたが、 新方式では mailcap file を書くだけで良くなり Windows 95 などの非 UNIX 環境では特にその恩恵が大きいといえるでしょう。 mailcap の導入に伴い、複数の method が競合しやすくなり、また、優先度を 決めるのが難しくなったために、method 選択 menu を導入しました。毎回 menu で選択するのは面倒臭いので選択結果を記録して、 2度目からは前回に最も似た method を選ぶ機能(用例に基づく適応インターフェース)を導入しました。 C-u v のように C-u 付きで再生すると 過去の用例を無視して全候補から選択することも可能であり、この場合には選 択結果を登録し以後の method 選択においてこの結果を配慮します (用例に関する例示インターフェース)。また multipart/alternative の選択表示も実装されました。mime-entity 抽象を利 用した API の整備も進んでいます。

今後は FLIM API のさらなる整備や、SEMI MIME-Edit の再設計が計画されて います。


SEMI 1.13 の開発目標

従来、mime-view は ``raw-buffer'' と ``preview-buffer'' という2つの buffer で message を管理するというモデルで設計されて来ました。

しかしながら、このモデルに基づき、message に対応する ``raw-buffer'' を要求すると、IMAP4 のように、大きな entity の不用意な転送が望ましくない表現方式でも ``raw-buffer'' が必要になり、 必要がなくても常に message 内容全体を転送することになり、問題です。また、 FLIM では既に ``raw-buffer'' と ``preview-buffer'' という2つの buffer で message を管理するというモデルは破棄されています。

このため、SEMI 1.13 では FLIM の mime-entity 抽象を全面的に用いて、 再生処理に於いて ``raw-buffer'' を不要にします。

SEMI 1.13 の新機能

bug fix


参考文献


[Emacsen(日本語)] [Emacsen (English)]