29. ミニCHAT -- みんなでチャットでひまつぶし

 BBSの書き込みってのは、いつ読まれるかわからないのが特徴だ。今日メッセージを書いても、誰かがそれを読むのは明日かもしれない。だからBBSへの書き込みは、それなりに(あくまでもそれなりに)、あとから読んでわかるような、ちゃんとした日本語を使うことが多い。紋付きを着てハカマをはいたような文章っていうか。すると当然そんなのヤダもっと気楽にダラダラとおしゃべりしたいんだ〜、という要望が出てくる。楽をしたいのは人間の本能だ。そんなダラダラお気楽族の要求を満たす究極の会話ツールがチャットである。
 というわけで、ここではミニBBSの改造によってミニチャットを作ってみた。実際にはBBSもチャットもスクリプトでやってる内容はたいして変わらないんだけど、チャットではお手軽感を強調するためにメッセージ入力欄は1行のみだ。さらに会話がどんどん流れるように自動リロード機能もつけた。それにともない、書き込みが自動リロードで消されないように、画面を入力フレームと出力フレームに分割している。よくあるチャットみたいでしょ。


実行例

 サンプルを見てみてね。


レシピ

【材料】
 <1> chatin.cgi…… ミニCHAT入力用スクリプト
 <2> chatout.cgi…… ミニCHAT出力用スクリプト
 <3> chat.htm…… ミニCHATフレーム用HTML文書
 <4> chat.log…… ミニCHAT用ログファイル

【手順】
(1) CGIの実行環境の確認

本スクリプトはCGIを利用するため、CGIの実行環境設定を行う。

(2) 上記<1>〜<4>ファイルをサーバーに転送する

これらはすべて同じディレクトリに転送すること。
すべてASCIIモードで転送すること。

(3) UNIXにログインしてファイルのパーミッションを変更する

$ chmod 705 chatin.cgi [Enter]
$ chmod 705 chatout.cgi [Enter]
$ chmod 604 chat.htm [Enter]
$ chmod 606 chat.log [Enter]

(4) UNIX上でスクリプトの動作確認をする

$ ./chatin.cgi [Enter]
$ ./chatout.cgi [Enter]
実行してとりあえずHTML文書が出力されることを確認する。

(5) ブラウザで表示して動作確認をする

名前欄、アドレス欄、本文欄を入力して登録ボタンを押す。
入力したメッセージが書き込まれていればよい。

参考: UNIXオペレーションの行頭にある"$"はUNIXのプロンプトなので、入力する必要はありません。


スクリプトの説明

 このスクリプトを使うには、リストの冒頭にある次の行を、自分のシステムに合わせて修正する必要がある。

$title = 'ミニCHAT';
 チャットのタイトルにする。

$mail = 'roro_pet@p4room.mda.or.jp';
 チャット管理人のメールアドレスにする。

$logfile = 'bbs.log';
 ログの保存ファイル名にする。

$maxlog = 50;
 ログの最大保存数にする。

$hold_days = 365;
 クッキーの保存日数にする。


ミニCHATの操作

 メッセージを書き込むには、まず以下の4つの欄を設定する。

 名前自分のハンドル名
 アドレスメールアドレスまたはホームページのURL
 自動更新自動リロードの時間間隔を決定
 本文メッセージ本文

 ここで、[送信/再読込]ボタンを押せば、書き込んだメッセージがすぐに表示される。本文欄を空白にして[送信/再読込]ボタンを押した場合は、再読込のみになる。
 名前は省略できない。アドレスはメールアドレスでもホームページのURLでもオーケーで省略も可能だ。なお名前とアドレスはクッキーを使って保存しているので、いったん記入しておけば次回からは入力する必要がない。
 自動更新は、デフォルトで「しない」になっている。この場合、新しいメッセージを書き込むか再読込を行うと、チャット出力が更新される。あまり短い間隔で自動更新させると、サーバーにとても重い負担がかかるので、自動更新は「しない」状態でチャットすることをお勧めしたい。実際に試してみるとわかるけれど、手動更新でもぜんぜん問題ないはずだ。
 なお、JavaScriptが利用できるブラウザなら、メッセージを書き込むと自動的に本文入力欄がクリアされる(NetscapeとInternet Explorerで確認済み)。


[おまけ解説一覧に戻る]