Forte Agentで日本語ニュースを読み書きする方法を説明します。「Forte Agentって何?」という人はまず一階上へ。そちらでは図を交えてその魅力をお話させてもらっています。なお、サカタ氏(tomohisa@sprynet.com)の叱咤がなければここまでたどり着けなかったであろうと記すとともに感謝申し上げます。
さて、日本語ニュースを読み書きするには次の2点を利用者の注意により満たす必要があります。
97年1月より、漢字コード変換に使えるDeleGate(デリゲート)がパソコン(Windows95/NT)上で簡単確実に使えるようになったので、従来に比べ各種の制約や手間が大幅に省けるようになりました。DeleGateの作者佐藤氏に大いに感謝しましょう。詳しくは「漢字コード変換を行う」で述べます。また、旧Free Agent 1.0では「日本語を強制的に表示させるソフト」が必要でしたが、これは96年10月21日に出た新版1.1から既に不要となっています。なお、Agentの画面に(日本語IMEで直接)日本語文を逐次入力して書き進めて行くのはあまりうまくいきません。筆者 楠が文章を書く際は、秀丸エディターなど日本語対応のエディター・ソフトで書き、更に整形(桁折)まで済ませてから、Agentの記事作成画面にペーストするようにしています。(秀丸エディターによる桁折はマクロ集のALLRET.MACなどを使えばよい。) 個人的にはそれほど面倒だとは思ってません。「Thirteen-Ten Editor」や「テキストプロセッサ TextShop」も助けになるでしょう。
「文章の所々が緑色に!」は別頁へ。
先ず「漢字コード変換」ですが、これはfjで使われる「漢字コード」(文字規約)とパソコンで使われるそれとが──同じ日本語でも──違うことから必ず要する作業です。この変換は読むときも投稿するときも必要です。日本語対応のnews readersならばこの変換は裏で自動的・勝手にやってくれるのでピンと来ないかもしれませんが、これを怠ると他人の記事はまず読めません。ただ逆にあなたの記事はパソコンのコードのままでも他人に読めてしまうこともあります(理由は単純で、世にはパソコンの利用者が多いから)。が、それは、「インターネットにおける合意 RFC1468」違反という事実を無みするものではありませんし、読めない人が相当数出ることも変わりありません。fjは公共の場ですから、その合意に反し、広く他人の読めない記事を流すことの意味を考えてください。そして、合意はいい加減に成立したものではなく、技術上の理由(制約)を受けてのことであり、パソコンのコードのままで送るとその記事は世界中に配信されて行く内に一部が読めなくなってしまうことがあります(しかも書いた本人は気づかない)。SJISの配信は技術的に保証できないのです。なお、「RFC=合意」では必ずしもありません。
パソコンで使われている漢字コードは「MS漢字コード」とか「シフトJISコード」「SJIS」と呼ばれているものです。fjのそれは「JISコード」とか「7-bit JIS」(後者の意味で前者が使われることも多い)「JUNETコード」と呼ばれますが、正確にはRFC 1468にて「ISO-2022-JP」として定義されています。ISO-2022-JPにはいわゆる半角カナを含みません。「漢字コード」の件と一緒に、
半角カナも使えない
ということも記憶しておいてください。なお、「ISO-2022」と「ISO-2022-JP」は別物と考えた方がよいです。「国際規格ISO何たらの日本語に関する部分」という理解は当たっているようで誤解の方が大きいです。まず以って前者はISO及びJISの規格ですが、後者はRFCであり、その名前にそぐわずISOやJISの規格ではありませんしなる見込みもありません。ISO-2022-JPがJISコードと呼ばれる理由は別のレベルにあります。(文字コードは「文字エンコード方式」と「文字集合コード」の2階建になっている。) 余談ですが、「SJISは一私企業が勝手に作った私的規格」という言い方も正論には違いありませんが、本質は善悪ではなく「どの文脈で正論か」という思考の視野の広さです。
さて、この漢字コード変換は自動的に出来るものなら便利です。幾つかの方法がありますが、もっとも優れているのは「NNTP/DeleGate」というソフトを使うことです(by 佐藤氏@電総研)。筆者 楠はこの方法です。従来これは、通常パソコンの側ではなくプロバイダーの側で動かすものだったのでほとんどの挑戦者にとってこれを用意するのは無理だったでしょうが、97年始めに佐藤氏がWin32(Windows95及びNTのこと)への移植を精力的に進め、早くも1月中旬には実用の域に達しました。よって筆者は躊躇なく、Agentをこれと組み合わせて使うことを勧めます。速度的にも全く不利はないことに気付くでしょう。しかしWindows 3.1では動きません。Windows 3.1の場合はDeleGateをプロバイダー側で動かすか、後述する「JISでそのまま読む」しかないでしょう。(あるいは上野博氏のOS/2版DeleGateとwin-os2の組もある。)
プロバイダーに「NNTP/DeleGateを漢字コード変換付きで動かしてくれ」と頼むのも一つのやり方です。「うちではForte Agentで日本語ネットニュースを読み書きできます」というのはプロバイダーにとっては労少なくしてちょっと気の利いたサービス(他所と差をつける話題作り)になるはずです。Forte Agentにはそれだけの魅力があると思います。
NNTP/DeleGateはプロバイダーのニュースサーバーとパソコンのAgentとの間に位置し、そのあいだを流れる日本語文の漢字コードを自動的に変換してくれます。Agentのニュースサーバーとして(本物の)ニュースサーバーの代りにこのNNTP/DeleGateを指定することになります。実は、サブジェクトなどは漢字コード変換の他に更なる処理(MIMEのエンコード/デコード)が必要になるのですがそれも自動的に行ってくれます。つまり全くのお任せです。ただしForte Agentの場合Agent側でのMIMEヘッダー生成を必ず無効にするのを忘れずに。さもないと他人に読めないサブジェクトを撒いてしまいます。なお、NNTP/DeleGateを通すと、エスケープ落ちしたサブジェクトも自動的に修復されるという利点もあります。
プロバイダー側 ┏━┓ ━┫A┣━┓ ┏━┓┏━┓ ┗━┛ ┗━┫B┣┫C┃ ┗━┛┗━┛ パソコン側 A news server B NNTP/DeleGate C Agent
MS WindowsでDeleGateを使えるようにするには3つの準備作業が必要です。
まず、DeleGateの準備。Windows版のDeleGateはftp://ftp.etl.go.jp/pub/DeleGate/bin/windows/以下から入手できます。当面version 4.0.2を手に入れてください。それより新しいものはここで説明する用途にはバグがあるようです。実行ファイルが無圧縮で置いてありますので、取ってきたらそのままpathの通ったディレクトリに置いてください。(「pathの通った」の意味が分らないのならC:\Windowsディレクトリ(フォルダー)で構いません。) マニュアルは別途ソースと一緒に配布されているので必要なら別途入手してください。(ただし英語のみ。) このDeleGateを起動するバッチファイルを下記例を参考に作ります。これはバッチファイル本体とパラメーターファイルとの2つからなります。
バッチファイル(例えばstartd.bat)は次の一行からなります。Agentと同じディレクトリに置いて、デスクトップにショートカットを作ればいいでしょう。併せてプロパティーで「バッチファイル」なし、「最小化の状態」で実行する、にしておくとよいでしょう(付図参照)。実行時の「パラメータの値が許容範囲を超えています.」はプロパティーの「メモリ」→「環境変数の初期サイズ」を「自動」にすることで出なくなります。
delegated +=infoweb.nntp
同じディレクトリにパラメーターファイルを置きます。(この例ではファイル名infoweb.nntp)
-P119
SERVER=nntp://news.infoweb.or.jp:119
CHARCODE=SJIS
MANAGER=あなたのE-Mailアドレス
ACTDIR=/windows/temp/delegate
RESOLV=file:\\WINDOWS\\HOSTS
RES_NS=202.248.2.226
この例ではC:\Windows\tempディレクトリが必要ですので、存在することを事前に確認してください(大文字小文字は関係ない)。このバッチファイルを動かすとc:\windows\temp\delegateとc:\var\spool以下のディレクトリが自動的にできます。動作中に勝手に消してはいけません。場所の変更の仕方はマニュアルを読んでください。
このうち以下の3か所は必ずあなたの環境に合せて変える必要があります。
WindowsNTではシステム管理者の権限がないと1023番以下のポートを開けません。その場合は119の代りに10119などの値を用い、併せてagent.iniで
[Servers] NNTPPort=10119と指定すれば大丈夫でしょう。agent.iniを編集するときはAgentは終了させておく必要があります。see also WindowsNTでDeleGateを使う
ニュースの送受信だけでなくメールの送信もしたいのならもう一つ別にバッチファイルとパラメーターファイル(例えばinfoweb.smtp)を用意します。DeleGateを2つ動かすことになります。変更すべき箇所は同じ。メールの受信についてはDeleGateの説明書で勉強してください。
-P25
SERVER=smtp://mail.infoweb.or.jp:25
MANAGER=あなたのE-Mailアドレス
CHARCODE=SJIS
ACTDIR=/windows/temp/delegate
RESOLV=file:\\WINDOWS\\HOSTS
RES_NS=202.248.2.226
準備が済んでいざ利用する暁には、必要に応じてバッチファイルを実行し、DeleGateを起動することになります。DeleGateはAgentより先に起動しなくてはならないというわけではありませんが、少なくともAgentがニュースサーバーに接続しようとするより前に起動されている必要があります。初期化に少し時間がかかりますし、起動しっぱなしでもほとんどメモリを食わないので、いっそスタートアップに入れて自動的に起動してもいいでしょう。ただし、十分テストをしてからのこと。なお、DeleGateを終了させるには、当該DeleGateが動いているDOS画面でCtrl+C。
次に準備作業の2つ目、Agent側の設定です。
「Options」→「User and System Profile」の2枚目で、Agentのニュースサーバーとして
localhostを与えます。
次に、Agentを終了させた上で、agent.iniの
[Message] GenerateID=1の箇所を
GenerateID=0に修正します。Agentは標準では自力でMessage-IDを生成しますが、この設定によりこれを止めサーバーに付けさせるようになります。さもないとここに述べた設定手順ではMessage-IDが不備になります。agent.iniを編集するときはAgentは終了させておく必要があります。
なお、Agent側でMessage-IDを生成しなくてはならない理由はありませんが、二重投稿を避けられる利点はあります。同じ記事を図らずも複数投稿してしまう二重投稿はoffline readersにありがちな事故です。特にNNTP/DeleGateを介した投稿時に投稿過程がいつまでも完了しないことが昔からたまにあります。(進行状態バーが右に延びきったままで止まる。) 原因不明。こうしたとき投稿自体はたいてい成功してます。不審に思い一旦動作を中断して再度送ろうとすると同じ記事が出て行ってしまいます。しかもニュースサーバーによっては投稿したばかりの記事が見えるようになるのに少し時間がかかるのでなおのこと失敗したと思ってしまいます。こうした時でも、クライアント側でMessgae-IDを生成しているのであれば同じIDのものは何度投稿されようがサーバーは無視するのでダブることはありません。以上の理由によりもしAgent側で生成したいのであれば自分のパソコンのFQDNを「localhost」の代りにAgentのニュースサーバーとして与え、かつHOSTSファイルの「localhost」の隣にそれを付加すれば行けます。(筆者のHOSTSファイル。これで(このままで)2つのプロバイダーを自在に使い回してます。)
次にWindows側の設定です。C:\Windowsディレクトリにファイル名「HOSTS」(拡張子なし)のテキストファイルを探します(大文字小文字関係なし)。「HOSTS」がなければ「HOSTS.SAM」という見本(SAMple)ファイルがあるでしょうからそれの拡張子を取り、「HOSTS」ファイルを作ります。HOSTSファイルには以下の1行があるようにします。(行の順序は関係ありません。)
127.0.0.1 localhost行頭の数字連との間は空いていれば空白でもタブでも構いません。localhostの後ろに何か他の文字が加わっていても(スペースで区切られていれば)構いません。
以上で漢字コード変換は一切自動的に行ってくれるはずです。漢字コードに関しては十分ローカルのテストグループで実験してください。
|
Content-Type: text/plain; charset=ISO-2022-JPとなっているかも見ます。ヘッダーは「Message」メニューの「Show all header fields」で見ることが出来ます。JISになっているか否かは「読めない」だけでは分かりません。誤って英語の設定になっていたため日本語が壊れているだけというのもありがちです。念のためファイルに落しPage Browserなどで読んでみると良いでしょう。(nkfでは確認できません。) MIMEヘッダーは
Content-Transfer-Encoding: 7bit
nkf -m [入力ファイル] > [出力ファイル]で解読できれば正常です。(しかしこれだと「誤ってSJISがMIMEされていた」としても見逃してしまう。検査用途にはnkfは向かない。)
なお、NNTP/DeleGateを介して記事を読むと
Content-Type: text/plain; charset=x-sjisのヘッダーを日常目にするでしょう。これは読む際にSJISに変換したためであって異常ではありません。
Content-Transfer-Encoding: 8bit
たまにエラー「An online error occurred. Connection closed unexpectedly by server」(図)が出るようですが、現状筆者のところではversion 4.0.2ではこのエラーは一度も起きておらず、Agentの利用環境として安定・確立しています。もし4.0.2でも起きたのなら同じ操作をもう一度行うか、それでもダメならDeleGateを起動し直してください。(上述のようにサーバーの誤設定でも同様のエラーが出ます。ただしその場合は「たまに」ではなく一度もつながりません。) 目下原因追及中です。また、上述のように投稿時に投稿過程がいつまでも完了しないことが昔からたまにあります。(進行状態バーが右に延びきったままで止まる。) DeleGateに関しての疑問は佐藤さんに直接聞くのではなく、DeleGateメーリングリストに出すべきです。(余談ですが、入会の挨拶をする人がたまに居ますが、そうした習慣は一部のメーリングリストのものです。)
設定2つ目「英語用の設定を日本語用の設定に直す」へ
Windows 3.1など、DeleGateが使えない場合は、JISのまま読み書きすることになるでしょう。通常、JISコードで書かれた文はパソコン上では意味不明の記号と化します。しかし(それを避けるため伝送途中で)SJISに変換せずともそのまま読めるようにしてくれるソフトが実は幾つもありますのでそれを使います。書く際には(SJISで)書いたものをJISに手ずから変換してAgentの記事作成画面にペーストします。JISコードで書けるエディター(秀丸エディターやMule for Win32など)を使ってもよいですが、それだと一旦ファイルに落とす必要がある(画面をコピー&ペーストしたのではSJISがAgentに渡ってしまう)ので、それより普通のエディターで(SJISで)書いてそれをクリップボード経由でJISに変換、そのままペーストした方が便利だと思います。そうしたツールがあります。そもそも冒頭で触れたように、DeleGateを使う使わない以前の問題としてAgentのエディターに直接日本語を書いてゆく、つまりinline入力するのは、所詮英語版アプリのさが、うまく行かないので、どのみちペーストを介することになるでしょう。