<html xmlns="http://www.w3.org/1999/xhtml" a0:Name="SuikaWiki" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:Version="0.9"><head></head><body><p><a0:anchor-end a0:anchor="1">[1]</a0:anchor-end> <a0:anchor>Subject:領域</a0:anchor> に漢字が使えなかった時代の遺産。
主に<a0:anchor>電子ニュース</a0:anchor>で、 <a0:anchor>fj.*</a0:anchor> を中心に使われていた。</p><p>電子ニュース・システムが日本に輸入されてしばらくして、
本文には<a0:anchor>制御文字</a0:anchor> <a0:anchor>ESC</a0:anchor> (0x1B)
が通らなかったのを通るようにして、日本語文字
(<a0:anchor>JIS</a0:anchor> 漢字コード) が使えるようになった。</p><p>けど、 <a0:anchor>Subject:欄</a0:anchor>は比較的必要性が薄かったため、
英語又はローマ字書きということになって、長らくその状態が続いてた。
(その名残で、今でも英語書きを好む人がいる。)</p><p>1992年頃 (記事のアーカイブにそれ以前のが残ってないのと、
<a0:anchor>電子メイル</a0:anchor>でのやりとりもあったらしいので、詳しくは分からない。)
に、 Subject にも日本語を使おうという動きがあって、だけど
ESC を落とす配送サーバーが未だに多かった。</p><p>そこで、私用の頭欄 X-NSubject を使って、そちらには日本語で
Subject の内容を書くことにした。 X-NSubject は Subject とは
違って非標準の欄だったから、それは素通しで ESC
も通る実装もあったけど、それでも落とす実装もあった。</p><p>やがて、<a0:anchor>サーバー</a0:anchor>や<a0:anchor>ニュース・リーダー</a0:anchor>の<a0:anchor>パッチ</a0:anchor>を作って配布してきたかいあって、
ESC を通す実装が多くなって、 Subject 本体に ESC
を入れても問題が無くなって、 X-NSubject
はその役目を終えて、消えようとしている。
(MIME header (<a0:anchor>encoded-word</a0:anchor>)
との宗教論争も忘れちゃいけないけど、ややこしいから置いとこう。)</p><p><a0:anchor-end a0:anchor="2">[2]</a0:anchor-end> X-NSubject: の N は Nihongo の N らしい。草創期には
X-KSubject: (Kanji)とか X-JSubject: (Japanese)
とかもあったらしいけど、そういう記事は残ってなくて、実装に跡をとどめるだけになってる。</p><p><a0:anchor-end a0:anchor="3">[3]</a0:anchor-end> 当初の実装は ESC 落ちと思われる文字列を修復出来た。 ESC $ [@B]
とか ESC ( [BJ] が ESC 落ちると $B とか (B とかになって、
それが行の最初と最後の方に現れるてな特徴的な構造になるもんだから、
かなりの確率で復元できる。</p><p><a0:anchor-end a0:anchor="4">[4]</a0:anchor-end> X-NSubject: はかなり長く使われてて、
1996年くらいでもまだ至る所で見られて、
1998年でもあちこちで記事を見つけられる。
今の所2000年が一番新しくて、それ以後2002年になっても一応
X-NSubject: がついた記事はあったけど、
それはどうやら設定ミスらしくて中身は空っぽになってる。
(世紀を越せなかったと見ていいでしょう。)</p><p><a0:anchor-end a0:anchor="5">[5]</a0:anchor-end> 幾つかの実装では、 X-NSubject: だけ書いとけば、 Subject: は
<a0:anchor>kakasi</a0:anchor> でローマ字化するなりして、自動で埋めさせることが出来た。</p><p><a0:anchor-end a0:anchor="6">[6]</a0:anchor-end> <a0:anchor>CPIM</a0:anchor> なんかだと頭欄そのものが言語属性を持つことが出来て、
(文字コードの話とは独立で) 英語 Subject, 日本語 Subject...
ってのがあるけど、それの先駆けと言えよう。</p><p><a0:anchor-end a0:anchor="7">[7]</a0:anchor-end> なお補足しておくと、 fj.* みたいな広範囲の<a0:anchor>ニュース組</a0:anchor>では
X-NSubject: とか使わねばならんかったけど、 local なニュース組とか
メイルとかだと、実際には ESC 落とさないことが多くて
Subject: に生 JIS 書いてたし、 <a0:anchor>EUC</a0:anchor> とか <a0:anchor>SJIS</a0:anchor>
とか入れてたとこもあったらしいですよ。</p><section><h1>現代的実装例</h1><p><a0:anchor-end a0:anchor="8">[8]</a0:anchor-end> (記事から Subject を取り出す)</p><pre> もし ($取り出したい言語が英語の時)
   戻る $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の中身
*メモ</pre></section></body></html>