English
This page is in Japanese, about how to read and write NetNews in Japanese with Forte Agent.



Forte Agentで日本語ニュースを読み書きする

Forte Agent Version 1.7 が公開されました。ようやく、Delegate 等の漢字コード変換ソフトを使わなくても日本語が扱えるようになりました以下の記述はまだ、Version 1.7 に対応しておりませんので、ご注意ください。Version 1.7 では、Option - Language で「iso-2022jp」を選ぶだけで記事を問題無く読めるはずです。投稿の方は、少々の問題があります。詳しくは後に書く予定です。現在の所は、fj.news.reader にて

Date: Thu, 18 Nov 1999 06:08:32 GMT
Subject: ついに Agent で日本語が使えるように
Message-ID: <812mvu$ivd$1@pistols.est.co.jp>

から始まる一連の記事をご覧ください。わたしが使っているニュースサーバにはこの記事が届いていないのですが…。

一連の記事

など。


Forte Agentで日本語ニュースを読み書きする方法を説明します。「Forte Agentって何?」という人はまず一階上へ。そちらでは図を交えてその魅力をお話させてもらっています。なお、サカタ氏(tomohisa@sprynet.com)の叱咤がなければここまでたどり着けなかったであろうと記すとともに感謝申し上げます。

さて、Forte Agentには

の2つがあります。以下特に断らない限り「Agent」で以て両方を、「Forte Agent」で有償版を、「Free Agent」でForte Free Agentを指します。ちなみに両者は、細かい使い勝手も含めて、そう違いません。しかしFree Agentにはフォルダーがないな...。Clickable URLsもない...。しかしAgentがどんなものかとりあえず知るにはFree Agentで不足はありません。有償であるForte Agentはいわゆるsharewareではなく、試用は出来ません。登録キーがないとダウンロードしても使えません。

さて、日本語ニュースを読み書きするには次の2点を利用者の注意により満たす必要があります。

  1. 漢字コード変換をおこなう (この下で説明)
  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」も助けになるでしょう。

「文章の所々が緑色に!」は別ページへ

整形を済ませても、(いわゆる)半角スペースが文中にあると、妙なところで改行が入ってしまうことがあります。Word Wrap (英文で単語区切りで改行されないようにする)機能が働いているためです。日本語で投稿する際には、特に必要ではない機能でしょうから、機能を抑制しておくとよいでしょう


漢字コード変換

先ず「漢字コード変換」ですが、これは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と組合わせる

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つの準備作業が必要です。

  1. まず、DeleGate の準備。Windows 版の DeleGate は ftp://wall.etl.go.jp/pub/DeleGate/bin/windows/ 以下から入手できます(wall.etl.go.jp が動いていないときなどは、ほかの場所を試して見てください)。実行ファイルが ZIP 形式で圧縮して置いてありますので、取ってきて復元(解凍)したら実行ファイルの名前を delegated.exe にして path の通ったディレクトリに置いてください。「path の通った」の意味が分らないのなら C:\Windows ディレクトリ(フォルダー)で構いません。ファイル名を変更しない場合は、バージョンアップの都度、バッチファイルの書換えが必要となります。 マニュアルも英語版のみですが同梱されています。 この DeleGate を起動するバッチファイルを下記例を参考に作ります。これはバッチファイル本体とパラメーターファイルとの2つからなります。

    バッチファイル(例えばstartd.bat)は次の一行からなります。Agentと同じディレクトリに置いて、デスクトップにショートカットを作ればいいでしょう。併せてプロパティーで「バッチファイル」なし、「最小化の状態」で実行する、にしておくとよいでしょう(付図参照)。実行時の「パラメータの値が許容範囲を超えています.」はプロパティーの「メモリ」→「環境変数の初期サイズ」を「自動」にすることで出なくなります。

    delegated DGROOT=C\:/windows/temp/delegate +=infoweb.nntp

    同じディレクトリにパラメーターファイルを置きます。(この例ではファイル名infoweb.nntp

    
    -P119
    SERVER=nntp://news.infoweb.or.jp:119
    CHARCODE=SJIS
    MANAGER=あなたのE-Mailアドレス
    DGROOT=C\:/windows/temp/delegate
    VARDIR=C\:/windows/temp/var
    CACHE="no"
    RES_NS=202.248.2.226
    

    この例では C:\Windows\temp\delegate ディレクトリと C:\Windows\temp\var ディレクトリが必要ですので、存在することを事前に確認してください(大文字小文字は関係ない)。作っておかないと c:\temp\delegate と c:\var\spool 以下のディレクトリが自動的にできます。動作中に勝手に消してはいけません。場所の変更の仕方はマニュアルを読んでください。C:\Windows\temp\var 以下には、ログファイルができているので、問題がなければ、適当な間隔で消しておくとよいでしょう。

    このうち以下の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
    DGROOT=C\:/windows/temp/delegate
    VARDIR=C\:/windows/temp/var
    RES_NS=202.248.2.226
    

    準備が済んでいざ利用する暁には、必要に応じてバッチファイルを実行し、DeleGateを起動することになります。DeleGateはAgentより先に起動しなくてはならないというわけではありませんが、少なくともAgentがニュースサーバーに接続しようとするより前に起動されている必要があります。初期化に少し時間がかかりますし、起動しっぱなしでもほとんどメモリを食わないので、いっそスタートアップに入れて自動的に起動してもいいでしょう。ただし、十分テストをしてからのこと。

    なお、DeleGateを終了させるには、当該DeleGateが動いているDOS画面でCtrl+C。

  2. 次に準備作業の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を介した投稿時に投稿過程がいつまでも完了しないことが昔からたまにあります。(進行状態バーが右に延びきったままで止まる。) 原因不明。こうしたとき投稿自体はたいてい成功してます。不審に思い一旦動作を中断して再度送ろうとすると同じ記事が出て行ってしまいます。しかもニュースサーバーによっては投稿したばかりの記事が見えるようになるのに少し時間がかかるのでなおのこと失敗したと思ってしまいます。こうした時でも、クライアント側で Message-ID を生成しているのであれば同じIDのものは何度投稿されようがサーバーは無視するのでダブることはありません。以上の理由によりもし Agent 側で生成したいのであれば自分のパソコンのFQDNを「localhost」の代りにAgentのニュースサーバーとして与え、かつHOSTSファイルの「localhost」の隣にそれを付加すれば行けます。(筆者のHOSTSファイル。これで(このままで)2つのプロバイダーを自在に使い回してます。)

    なお、以前、RESOLV=file:\\WINDOWS\\HOSTS を書くという記述がありましたが、現在(5.4.0 ぐらい以降)の DeleGate では、書いてあると、うまく動かなくなってしまうようです。以前の記述のまま、どうしてもうまく行かない人は、RESOLV の記述を削除してみてください(特に質問などは来なかったのですが...)。

  3. 次にWindows側の設定です。C:\Windowsディレクトリにファイル名「HOSTS」(拡張子なし)のテキストファイルを探します(大文字小文字関係なし)。「HOSTS」がなければ「HOSTS.SAM」という見本(SAMple)ファイルがあるでしょうからそれの拡張子を取り、「HOSTS」ファイルを作ります。HOSTSファイルには以下の1行があるようにします。(行の順序は関係ありません。)

    127.0.0.1       localhost
    

    行頭の数字連との間は空いていれば空白でもタブでも構いません。localhostの後ろに何か他の文字が加わっていても(スペースで区切られていれば)構いません。

  4. 以上で漢字コード変換は一切自動的に行ってくれるはずです。漢字コードに関しては十分ローカルのテストグループで実験してください。

    fj.news.readerやfj.os.ms-windows等で「これ読めますか?」とか「うまく行ったかな?」などという実験をしないように。実験には、例えばbekkoameの契約者ならbekkoame.test、というような場所が用意されています。また、fj.testを使うことは勧めません。何故なら(そこを読む人は余り居ないとは言え)世界中に配信され世界中のネットワーク資源を消費する点では、fj.news.reader等に投稿するのと変わりないからです。そんな大規模な実験が必要でしょうか? インターネットを利用する上ではネットワーク資源の有効利用という視点が求められます。

    確認の仕方ですが、DeleGateを介して投稿したあと、DeleGateを介さずに直接news serverに自分の記事を取りに行き、それがちゃんとJISで書かれているか、更にForte Agentの場合はヘッダーが

    Content-Type: text/plain; charset=ISO-2022-JP
    Content-Transfer-Encoding: 7bit

    となっているかも見ます。ヘッダーは「Message」メニューの「Show all header fields」で見ることが出来ます。JISになっているか否かは「読めない」だけでは分かりません。誤って英語の設定になっていたため日本語が壊れているだけというのもありがちです。念のためファイルに落しPage Browserなどで読んでみると良いでしょう。(nkfでは確認できません。) MIMEヘッダー

    nkf -m [入力ファイル] > [出力ファイル]

    で解読できれば正常です。(しかしこれだと「誤ってSJISがMIMEされていた」としても見逃してしまう。検査用途にはnkfは向かない。)

    なお、NNTP/DeleGateを介して記事を読むと

    Content-Type: text/plain; charset=x-sjis
    Content-Transfer-Encoding: 8bit

    のヘッダーを日常目にするでしょう。これは読む際にSJISに変換したためであって異常ではありません。

  5. たまにエラー「An online error occurred. Connection closed unexpectedly by server」()が出るようですが、現状筆者のところではversion 4.0.2ではこのエラーは一度も起きておらず、Agentの利用環境として安定・確立しています。もし4.0.2でも起きたのなら同じ操作をもう一度行うか、それでもダメならDeleGateを起動し直してください。(上述のようにサーバーの誤設定でも同様のエラーが出ます。ただしその場合は「たまに」ではなく一度もつながりません。)また、上述のように投稿時に投稿過程がいつまでも完了しないことが昔からたまにあります。(進行状態バーが右に延びきったままで止まる。) DeleGateに関しての疑問は佐藤さんに直接聞くのではなく、DeleGateメーリングリストに出すべきです。(余談ですが、入会の挨拶をする人がたまに居ますが、そうした習慣は一部のメーリングリストのものです。)(DeleGateメーリングリストは、ときおり、メールアドレス付きで全参加者リストが流れます。それが嫌な方のための方法も、用意されています。)

設定2つ目「英語用の設定を日本語用の設定に直す」へ


JISで読み書きする

Windows 3.1など、DeleGateが使えない場合は、JISのまま読み書きすることになるでしょう。通常、JISコードで書かれた文はパソコン上では意味不明の記号と化します。しかし(それを避けるため伝送途中で)SJISに変換せずともそのまま読めるようにしてくれるソフトが実は幾つもありますのでそれを使います。書く際には(SJISで)書いたものをJISに手ずから変換してAgentの記事作成画面にペーストします。JISコードで書けるエディター(秀丸エディターMule for Win32など)を使ってもよいですが、それだと一旦ファイルに落とす必要がある(画面をコピー&ペーストしたのではSJISがAgentに渡ってしまう)ので、それより普通のエディターで(SJISで)書いてそれをクリップボード経由でJISに変換、そのままペーストした方が便利だと思います。そうしたツールがあります。そもそも冒頭で触れたように、DeleGateを使う使わない以前の問題としてAgentのエディターに直接日本語を書いてゆく、つまりinline入力するのは、所詮英語版アプリのさが、うまく行かないので、どのみちペーストを介することになるでしょう。

  1. TextShop
  2. MView
    (Windows95でも動きます)
  3. Kakitori
    ("The Monash Nihongo ftp Archive" というページに飛びます)
  4. nkf ネットワーク漢字フィルター

順番をつけてみました。nkfは上記説明の通りの武骨な変換ソフトです。エディターのマクロと組むのがよいでしょう。しかしKakitoriを使えば同じことをはなから自動化できます。TextShopはこれに更に桁折りなどここで我々が必要とする機能を備えたものです。とりあえず読むだけでいいのならMViewが便利です。これはJISを直接読むことを可能にしてくれます。(ただし書く段は何もやってくれません。) MViewは設定にやや癖があり、またAgentを離れても実に興味深いものなので別に一ページを設けて述べます。実はMView同様JISを直接読めるソフトは他にも色々とあるのですがここでは省略します。


設定2つ目「英語用の設定を日本語用の設定に直す」へ

inserted by FC2 system