X-NSubject

X-NSubject

[1] Subject:領域 に漢字が使えなかった時代の遺産。 主に電子ニュースで、 fj.* を中心に使われていた。

電子ニュース・システムが日本に輸入されてしばらくして、 本文には制御文字 ESC (0x1B) が通らなかったのを通るようにして、日本語文字 (JIS 漢字コード) が使えるようになった。

けど、 Subject:欄は比較的必要性が薄かったため、 英語又はローマ字書きということになって、長らくその状態が続いてた。 (その名残で、今でも英語書きを好む人がいる。)

1992年頃 (記事のアーカイブにそれ以前のが残ってないのと、 電子メイルでのやりとりもあったらしいので、詳しくは分からない。) に、 Subject にも日本語を使おうという動きがあって、だけど ESC を落とす配送サーバーが未だに多かった。

そこで、私用の頭欄 X-NSubject を使って、そちらには日本語で Subject の内容を書くことにした。 X-NSubject は Subject とは 違って非標準の欄だったから、それは素通しで ESC も通る実装もあったけど、それでも落とす実装もあった。

やがて、サーバーニュース・リーダーパッチを作って配布してきたかいあって、 ESC を通す実装が多くなって、 Subject 本体に ESC を入れても問題が無くなって、 X-NSubject はその役目を終えて、消えようとしている。 (MIME header (encoded-word) との宗教論争も忘れちゃいけないけど、ややこしいから置いとこう。)

[2] X-NSubject: の N は Nihongo の N らしい。草創期には X-KSubject: (Kanji)とか X-JSubject: (Japanese) とかもあったらしいけど、そういう記事は残ってなくて、実装に跡をとどめるだけになってる。

[3] 当初の実装は ESC 落ちと思われる文字列を修復出来た。 ESC $ [@B] とか ESC ( [BJ] が ESC 落ちると $B とか (B とかになって、 それが行の最初と最後の方に現れるてな特徴的な構造になるもんだから、 かなりの確率で復元できる。

[4] X-NSubject: はかなり長く使われてて、 1996年くらいでもまだ至る所で見られて、 1998年でもあちこちで記事を見つけられる。 今の所2000年が一番新しくて、それ以後2002年になっても一応 X-NSubject: がついた記事はあったけど、 それはどうやら設定ミスらしくて中身は空っぽになってる。 (世紀を越せなかったと見ていいでしょう。)

[5] 幾つかの実装では、 X-NSubject: だけ書いとけば、 Subject: は kakasi でローマ字化するなりして、自動で埋めさせることが出来た。

[6] CPIM なんかだと頭欄そのものが言語属性を持つことが出来て、 (文字コードの話とは独立で) 英語 Subject, 日本語 Subject... ってのがあるけど、それの先駆けと言えよう。

[7] なお補足しておくと、 fj.* みたいな広範囲のニュース組では X-NSubject: とか使わねばならんかったけど、 local なニュース組とか メイルとかだと、実際には ESC 落とさないことが多くて Subject: に生 JIS 書いてたし、 EUC とか SJIS とか入れてたとこもあったらしいですよ。

現代的実装例

[8] (記事から Subject を取り出す)

 もし ($取り出したい言語が英語の時)
   戻る $Subjectの中身
 ;; でなくてもし ($取り出したい言語が日本語の時)
 そうでなければ ;; 取り出す言語が日本語または無指定の時
   もし ($X-Nsubject:の中身があれば)
     戻る X-Nsubjectの中身 ()
   そうでなければ
     戻る $Subjectの中身
 
 関数 X-Nsubjectの中身 ()
   もし ($X-Nsubjectの中身に ESC が無い時)
     $X-Nsubjectの中身 =~ s/(\x24[@B][\x21-\x7E]+)(\x28[BJ])/\x1B$1\x1B$2/g
   戻る $X-Nsubjectの中身
*メモ