[
トップへ |
全ページ一覧 |
最近の更新
] [変更点] [
過去ログブラウザ |
ファイルマネージャ
]
ちまたにあふれるヘボ web BBS を一掃し、 その代わりにプライベートな news server を開設できるようにする仕組みです。 perl CGI が動かせる環境になら簡単に設置できます。 内容の表現能力に制限がないこと、スレッド維持の機能(はクライアント側に持つのですが) など、従来の web BBS の究極の状態を具体化します。
Webベースのコミュニケーションはますます活発になっています。 しかし、web ベースのそれは基本的に発信側からの一方通行です。 相互のコミュニケーションをとるために、 perl script による中途半端な BBS CGI が氾濫しています。 しかしそれらは、内容の記述能力もはなはだ貧弱だし、 スレッドを作って追う、という機能も貧弱です。
Wiki に注目したのも相互コミュニケーションの為ですが、 対話をしようとしたときの使い勝手は BBS にさえ劣ります。
でも、Wiki は後から見直すと、構造化されてるからねぇ。 (この書き込みではどういうフォーマットがいいか苦労してます)うーん、Wiki 談義になってしまう。 参加者が同じ完成イメージを共有できる内容なら、 Wiki で構造化されたコンテンツを完成させることができるでしょう。 対して「対話」はどこにすすんでいくかわかりませんから。 (BBSちっくに使うための format コマンドを追加できるかと考えても みましたが、思いつきませんでした。jwiki はそういう意味でも失敗。)
それなら、個人的な news server を立ててしまうのはどうでしょうか。 他との配送は基本的に考えず、ローカルなニュースグループのみを持ちます。 (例えば ohkubo.jwiki とか ohkubo.micromouse とか) nntp を、RFC822 な message database query interface としてのみ利用するわけです。 (そのようなニュースサーバの有用性は、過去にも MSN などが示しました。)
あ、単に「相互に記事を配送しなくても news server ってのは役に立つ」ってことです。 MSN が BBS でなくインターネットプロバイダとしてあたふたと営業開始した頃、 サポート窓口としてそれなりに機能していたようなことを聞きました。 他にも、Cyberdog をクライアントとした Apple のニュースサーバとか。 こんな古い例を持ち出さなくても、現在進行形の news://newsgroups.borland.co.jp/ なんてのがありました、はい。
netnews なら、本文については MIME 拡張も受け入れることができます。 世にやはり氾濫している Netscape Messanger と Outlook Express なら、 HTML 拡張を積極的に受け入れることで、インライン画像入りのメッセージまで 自然に作成、表示することができます。こんな風に。 http://www.aichi-pu.ac.jp/ist/~ohkubo/spool/htmltest1.msg (Netscape で開くと完璧です。RFC822 形式のメッセージです。 View Source してみて下さい。 残念ながら Netscape 6 や IE では、変換後の html しか見えません。)
スレッドを立てて後で追う、という機能も、 news reader のそれを用いるのが現時点では最高の解だと考えられます。 いかに工夫して Cookie で既読を管理する BBS Script も、 ローカルで持つ news reader にはかなわないでしょう。
後ろ向きなんじゃない?新しいプロトコルなり、フォーマットを作った ほうが、いろいろできそうだけど。 たしかに普及の前提として、それが NNTP の拡張とするのはわかるけど。 (クライアントなんてダルくて作ってられないってことでしょ?)(XML と) HTTP という時代の流れから逆らっても、得るものは少ないでしょう。 一応 MIME encoding でくるんでしまえば何でもOKなので、 フォーマットとはレイヤーの違う部分の話です。 プロトコルとしては、RFC822 message を取り扱うには POP と IMAP4 と SMTP とがありますが、 グループも扱うことができる点で NNTP がより勝れており、 足りない点があったとしても、全く新しいものを提案しなくても、 NNTP を拡張すれば事足りるのではないかと。
では、leafnode なり、perl NNML::Server なりで、 素直に news server を運営するのはだめなのでしょうか。 県大には firewall があり、外からのセッションは基本的に開くことができません。 例外は、apache の reverse proxy を通してアクセスされる http だけです。 また、利用者の側にしても、news.ohkubo.ist.aichi-pu.ac.jp:119 などとして nntp が問題なくつながるような環境は少なくなっていると思います。
また、自前で news server を立てて運用するというのは、 自分のサイトの相互コミュニケーションのためといっても、 なかなかできることではありません。 しかし、BBS な perl script の設置はたいてい何とかなります。 でも、そんなもの僕のページには恥ずかしくて付けられません。
ならば、NNTP のセッションを、ローカルの計算機で HTTP にラップしてしまい、 Web server に置いた CGI と連動して、news server があるように見せかける という方法はどうか、というのがこの NNTP2HTTP の着目点です。 これで、世の中途半端な BBS script を一掃し、 「マトモ」な相互コミュニケーションの手段を rest of us に与えることができます。
NNTP サーバは作らないけど、NNTP で通信するの?うーん。 つまり、 CGI_NNTP2HTTP --FireWall---- HTTP2NNTP -- NNTPClient というわけ?
左右が逆になってしまいましたが、
Client Machine Web Server news reader | (NNTP) (web space as spool) | | nntp2http -----(HTTP)---Firewall----(HTTP)----CGIこんな感じです。nntp2http を Web Server 側で動かせば、 普通の news reader で直接接続する公開 news server にもできます。
個人的な理由は、Robo-e というロボカップ用ロボットのメーカーさんに、 ユーザの相互コミュニケーションの場所が欲しいと言われて、 画像インラインHTML記事OKなニュースサーバが適任かなぁ、 と思ったのが発端です。
port 21 が firewall を越せません。自由に設置できません。 ここでの努力が最終的に "RFC: NNTP over HTTP" などと規格化され、 apache にそういうモジュールが実装され、 また逆に leafnode が http を解釈するようになり、 Netscape Messanger や Outlook Express もそれを自前で喋るようになれば、 それらでもよくなります。
上に述べました。画像の張りつけとスレッドと既読管理。 どんなに頑張っても news reader 以上の物は作れないので、作りなおすだけ無駄です。
ちまたにあふれる画像BBSでも一緒では?説明が偏ったかもしれません。 ガーバーフォーマットのパターンとか、DXF な設計図とか、 VRML な何かとか、MIME message なら何でも受け入れます。 そして幸いなことに、それらのサポートをプログラミングするのは他の人の仕事です。 (Netscape Messanger の HTML message を、bento 代わりに使おうとしているのは 「後ろ向きな流用」と言えないこともありませんが...)
メーリングリストを自由に立てるのは、普通の人は持っていない特権です。 スレッドの問題も解決できません。 また「足跡掲示板」代わりには道具が大きすぎます。
しんちゃんにはちょっとも理解して貰えない、 rotten web bbs-es の alternative としての perl CGI available な web server になら設置可能な news server を作る。
ただし、nntp を http に置き換える肝心の部分が client side で動くんで
そこを perl で書くと、ユーザにいちいちそれを入れさせるという負担が。
Java にそういうことやりやすくなるクラスがあればやぶさかじゃないんだけどな..
とりあえずはテスト実装ってことで勘弁してよ。
NNML なる「perl による最小の news server」が CPAN にあったんで参考にしよう。 wc してみるとすっげー小さいし。
ちなみに、Java のプロパティは、
import java.util.*; static private ResourceBundle resources;resources = ResourceBundle.getBundle("hello");
private String strResource(String s,String def){
try{
def= resources.getString(s);
}catch(MissingResourceException e){
System.out.println("Missing Resource:"+s);
}
return def;
}
なんて書くと、hello.properties なんてファイルから取れます。
ところで、Wiki っていろいろあるんだね。どれがいいの? やっぱり大久保版?うちでは rwiki 使ってます。