しかし、勝手に公開してもいいのか、という議論の余地があるのだ。メールを 公表されていない著作物だと解釈すれば、著作権法で定められている公表権の侵 害だ、というのである。これに対する反論として多いのは「メールは著作物では ない」というものだが、私の感触としては、これは反論としては通らないのでは ないかと思う。BBSで掲示された文章は著作物として保護されるという考え方が主 流だと思われるのだが、だとすればメールだけ著作物とみなされないというのは 不自然だからだ。
実はアスキーネットで、つい最近、多分IDを間違って送ってしまったメールを 「これは何だろう」という感じでうっかり公開してしまった、という事件があっ た。これはflameでも何でもない。何なのか分からなかったという程度のことで、 その後、発言事態も削除されたため、大きな問題にはなっていない。そもそも、 IDを間違って送る側にも責任がある。IDが合っているかどうか、十分確認してか ら送る、というのが当然だし、私の場合は、IDは極力cut&pasteのような手段を使 って、直接手で入力しないようにしている。
しかし、それを公開していいかどうかはまた別問題で、受け取ったら受け取っ た人がどう使おうが勝手じゃないの、という意見があったのは、現実的にはその ような解釈をする人がいるという証拠である。考えてみれば著作権などというも のは、普段の生活にはあまり関係ないわけで、ネットに参加する人は全員著作権 法を熟知している、などということはまずあり得ない話だ。もっとも、そのよう な混沌とした所がネットの共有感を増しているという考え方もあるかもしれない が。
*「魔王」の中には、NIFTY-ServeのIDに対応する文字列を検出するコードがある。 ただし、この処理は、実は未公開である。というのは、「魔王」には裏バージョ ンがあって、この処理は裏魔王にしかない機能に含まれているからだ。一体何な のかというと、それほど大したことはない。フォーラムの保守に関する処理や、 その他、単に発言をアクセスするだけなら不要な機能である。
裏魔王の機能に、会員リストに従ってメールを送るというものがある。 1995/9/24には、FPROG会員19275名に対して同一内容のメールを発信した。 FENICS-ROAD 2 (2400bps回線)を使って、 送信にかかった時間はほぼ300分ジャストである。5時 間放置して、二万人弱にメールを送ることができたわけだ。
この機能を公開してしまうと、ダイレクトメールを送るのに使う人が出てくる に違いない。これは頭がいたい。もっとも、フォーラム会員全員にメールを出す というのもダイレクトメールには違いないが。これは嫌なら入会しなければ済む。 メールを送らないでくれ、というオプションも用意しようと思うのだが、これだ けの人数だと、特定の人にだけ送らないのは、かえって手間がかかる。
IDの一覧リストを作るのも、実に簡単なのである。というのは、フォーラムに はそのための機能があるからだ。「会員情報」である。これが何の役に立つのか、 私にはよく分からないのだが、少なくとも会員全員にメールを送るためのリスト を入手する手段になることは間違いない。
なぜダイレクトメールに使われると頭が痛いのか。無差別にメールを送るとい う行為は、NIFTY-Serveの会員規約では何等問題がない。誰にメールを送るかは、 送る人の自由である。その証拠に、入会した途端に知らない人からメールが来る という伝統がNIFTY-Serveにはあるではないか:-)。問題になるのは、無差別に送 るということではなく、その内容なのだ。つまり、会員規約第14条(営業活動の 禁止)「会員は、ニフティが承認した場合を除き、NIFTY-Serveを使用して営業活 動、営利を目的とした利用、及びその準備を目的とした利用を行うことができま せん。」に抵触すると考えられるのである。実例としては、アダルトビデオの通 販をします、というメールが大量に発信され、問題になったことがあった。
私見としては、こんな程度のことは別に目くじら立てる程のものではない、例 えばダイレクトメールが嫌だという人と、欲しいという人がいるのなら、メール のオプションとしてダイレクトメールを受け取るかどうかを指定する機能や、送 信側が大量に送信するためのサービスを用意して、それに対しては別途サーチャー ジを設定する、という方向の方がよほど建設的だと思う。
もちろん、メールだと資源が無駄、という考え方がある。確かに、電子掲示板 に書けば済むことを、わざわざ二万通のメールにする必要はないように見えるか もしれない。しかし、メールと掲示板の歴然とした差は、それが目に止まる確率 にある。例えば、FPROGの場合だと、全員にメールを出した直後は、訪れる人数が 二倍程度になるのだ。
*NIFTY-ServeのIDは、アルファベット大文字が3つと、数字5個の組み合わせとな っている。Peopleのように数字8桁というよりも、覚えやすいかもしれないが、そ う簡単に覚えられる程でもない程度だ。
それはさておき、文字列から、IDに相当する箇所を探して、その先頭のポイン タを戻すような関数を作った。LIST 1である。これは見れば分かる通りで説明す るまでもないと思う。アルゴリズムは次のようになっている。まず大文字を探す。 見つかったら、そこから後がIDの形式かどうかを調べて、OKなら処理終了。ダメ なら、ポインタを一つ進めて、可能性がある限り処理を続行する。
ところで、LIST 2である。これは一体何だろうか。実は同じ処理を、少し変え たものである。発想としては、オートマトンをイメージしている。状態を表わす のにstsという変数を使っている。処理は、ポインタを一つずつ進めながら行われ る。アルファベットが現れると、状態が1,2,3と変化し、状態3から数字が現れる と、4,5,6,7,8と変化して、8になったら終了である。この処理は、もし高速性を 追求するのなら、256×8バイトのテーブルを使うこともできるが、いささかメモ リの無駄のような気もする。
さて、LIST 1とLIST 2のどちらを選択すべきだろう。
---- LIST 1 ---- /*--------------------------------------------------------------------*/ /* "[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9]" 相当文字列をサーチ */ static char *scan_id(char *s) { while (*s != '¥0') { if (*s >= 'A' && *s <= 'Z') { if ((s[1] >= 'A' && s[1] <= 'Z') && (s[2] >= 'A' && s[2] <= 'Z') && (s[3] >= '0' && s[3] <= '9') && (s[4] >= '0' && s[4] <= '9') && (s[5] >= '0' && s[5] <= '9') && (s[6] >= '0' && s[6] <= '9') && (s[7] >= '0' && s[7] <= '9')) { s[8] = '¥0'; return s; } else { break; } } s++; } return NULL; }
---- LIST 2 ---- static char *scan_id(char *s) { int sts = 0; while (*s != '¥0') { if (sts < 3) { if (*s >= 'A' && *s <= 'Z') { sts++; } else { sts = 0; } } else { if (*s >= '0' && *s <= '9') { sts++; if (sts == 8) { s[1] = '¥0'; return s - 7; } } else if (*s >= 'A' && *s <= 'Z') { sts = 1; } else { sts = 0; } } s++; } return NULL; }