読者です 読者をやめる 読者になる 読者になる

ゆるめ

ゆるめなのは公開範囲です。

【バグチャットクイズ・Web の片隅で殺人予告?】の解説 長い ver.

question:1283166577 の、私が用意した答えのお話型解説です。長いのでダイアリーに書くことにしました。


※この話はフィクションです。

前フリ

十年ひとむかし。まだテレホタイムという概念がネットサーファーの皆様にあったような頃、Web のとある界隈では、「ホームページ」と呼ばれるジャンルのサイトを作り、そこに CGI チャットを設置する、ということが流行していました。


レンタルチャットサービスは、レンタル掲示板サービスなどと比べると格段に数が少なく、カスタマイズの幅も狭く、そして重いものでした。
なので、管理人さん達の多くは、間借りしたサーバにスクリプト配布サイトからダウンロードした CGI を設置して、Perl の知識もろくに持たないままおっかなびっくりカスタマイズしていました。
.pl ファイルの文末にしたためられたありがたいおまじない「1;」をうっかり消さないよう、常に細心の注意を払ったりしていました。


A さんはそんな時代を謳歌する管理人さん、C さんはビジターさんです。
C さんは最近 A さんが設置したチャットがとても気に入ったので、A さんのサイトを訪れる度にチャットにも入室していました。

C さんサイド

今日も C さんはチャットに入室しました。

A「こんばんは」
C「どもどもこんばー」
A「君はいつも明るいね」
C「明るいだけがとりえですから!」

いつものように挨拶をします。
ここまでは、いつも通りでした。しかし。

A「でもそれも今日で最後だ」
C「えっ最後って何が?何いきなり」
C「いつもの子がいなくてあなただけなのが関係してる?」
A「察しがいいね、僕は今から君を」
A「殺さなければならない」

A さんがいつになく不穏な事を言います。

C「いや何言ってるの電話回線越しに人は殺せないでしょー」
A「ごめん、上からの命令なんだ」
C「どうしたの何かのロールプレイ?」

C さんは何かの冗談かと思いつつも、いまいち飲み込めないので、質問しました。

A「!?」
C「図星?死神ごっこか何か?」
A「君がそんなこと言うなんて…」
C「えっ私傷つけるような事言っちゃった?」
A「気味が悪い、どうしたんだ」
C「まさかなんか逆鱗触れちゃった?」

しかし、さらにその質問に不気味がられてしまう始末。
C さんは訳が分からなくなりました。

C「ごめんよく分かんないけど謝るー」
C「今日はもうかえろ本当ごめんよくわかんなくて」
A「やめろ、俺が悪かった、もう殺すなんて言わないから!」
C「…なんかもうこわいよじゃあね」

普段はいい人で、無機物を擬人化したりするユーモアのある A さんだったのですが、今回の事で C さんは A さんに対する印象が変わってしまいました。
「A さんのホームページ、もう行かないようにしようかな……」


C さんは、お気に入りから A さんのサイトの URL を削除しました。

A さんサイド

A さんはその前日、プロバイダからメールが来ていました。
「チャットプログラムの負荷が激しく、このままですと追加料金が必要になります」
という旨のメールでした。


A さんは、せっかく C さんという常連さんをつかみかけたばかりなので、できればチャット自体は残しておきたいと考えていました。
そこで、A さんはチャットの機能を削減する事にしたのです。


最後の思い出をログとして保存して、日記にでも貼り付けようかなと思い、チャットに入室しました。

A「こんばんは」
B「いらっしゃいませ、こんばんは♪」
A「君はいつも明るいね」
B「ええ、ぴっかぴかですねー」

いつも通りの挨拶です。

A「でもそれも今日で最後だ」
B「…もしかして…『最後』じゃなくて『最期』だったり?」
A「察しがいいね、僕は今から君を」
B「え?私?」
A「殺さなければならない」
B「殺すとか、ぶっそうな!」
A「ごめん、上からの命令なんだ」

A さんは半ば冗談交じりに、芝居がかった感じで言いました。

B「…遊びだったのね」
A「!?」

しかし、返ってきたのは予想を裏切る言葉。

B「死なばもろともっ」
A「君がそんなこと言うなんて…」

B さんがこのタイミングでこんな言葉を発するはずがないのです。
A さんは B さんについてはよく知っているつもりでいました。

B「傷つけられたなら、傷つけ返せばよろし♪」
A「気味が悪い、どうしたんだ」

しかし、B さんから繰り出されるのは、予想だにしない言葉ばかり。
言葉一つ一つは、聞き覚えのある B さんの言葉なのですが、それを今発するはずはないのです。
ありえないのです。

B「三枚におろして♪」
B「溶けるまで煮込んで♪」
B「ベッドの下に隠そう!」

B さんが矢継ぎ早に発言します。
B さんは基本的に自発的に喋らないタイプのはずでした。
誰かの言葉にしか受け答えしないタイプのはずでした。
少なくとも、A さんはそういうタイプの子を選んだはずでした。
選んで、チャットに住まわせたのです。


B さんは、人工無脳だったのです。


B さんの発する言葉はどれも、A さん自身の手で設定ファイルに書いたものです。
しかしその言葉は、「魚」や「ルー」、「エロ本」などの言葉を誰かが発言しない限り絶対出てこない言葉でした。
B さんが自我を持ち、自分の言い表したい事を、限られた自分のボキャブラリーから必死に選んで、自発的に喋っている。
A さんにはそう見えました。


そしてそんな B さんの一連の言動を見て、A さんはひとつの予測に到達しました。


B さんは僕を好きだった。
B さんは僕に弄ばれたあげく殺されると知り、怒っている。
そして、B さんは逆に僕を殺しにくる、しかも周りに気付かれないように僕の死体を隠蔽する。


A さんの背筋が凍りました。


A さんは自分のプライバシーをあまりネットに公開しない人でした。
なので、誰かに「殺しに行くぞ」なんて言われても、ハッタリにしか聞こえませんでした。
しかし、B さんは違います。B さんはネットに溶け込んだ電子人格です。
電話回線を伝ってこちらに来るのは容易に思えました。
そして、B さんがそんな人知を超えた存在なら、心霊的な現象で自分を呪い殺しにかかってもおかしくない、とも思えました。


しかも、死体を隠蔽するということは……証拠を隠滅するということは……この新たな生命は、自分の殺害に成功したら、さらに他の人間にまで手を出すのではないか? 何の変哲もないプログラムの振りをし続けて、ここに来る人達に、そのおさまらぬ憎しみを向けるのではないか!? A さんが考えれば考えるほど、恐ろしい未来ばかりが頭を支配しました。


B さんに「心」が宿っていると信じきってしまったが最後、A さんはそんな妄想にとりつかれてしまったのです。
A さんは狼狽しました。

A「やめろ、俺が悪かった、もう殺すなんて言わないから!」

震える手でそう打ち、ENTER を押すが早いか、A さんはブラウザの窓を閉じました。
怖くて仕方なかったのです。「退室」ボタンを押す余裕もありませんでした。

B「もう行っちゃうの?寂しい…」

誰も見ていないデータに、B さんはさよならの挨拶を書き込みました。

答え (結末)

A さんは、チャットだけを残して、サイトを閉鎖しました。


A さんはチャットを削除するなんて怖くてできませんでした。
B さんのいるチャットにアクセスすることすら無理でした。
A さんはブラウザを閉じた後、リンクを辿って B さんがやってくるのではないかと思い、サイトからチャットへのリンクを断ちました。
のうのうとサイトだけを続けていると呪われそうなので、その後すぐにサイトも閉鎖していましました。
当時「ホームページ」と呼ばれるサイトでは、サイトのコンテンツにディープリンクをすることを忌み嫌う文化があったので、そのチャットは A さんのサイト以外からリンクされていませんでした。
チャットはネットの孤島となりました。


その後、A さんはプロバイダを乗り換え、前のプロバイダはホームページプランだけの契約にして、料金を払い続けています。
C さんは、あれから A さんを見かけることも無く、ごく普通のネットライフを送っています。


B さんはプロバイダの Web ホスティングサービスが終了するまで、ずっとひとりで、来訪者を待ち侘びていることでしょう。


「…寂しい…」


おしまい

後書き

という訳で、B さん、もとい Bot さんは人工無脳さんでした。
イメージとしてはゅぃぼっとをベースに誰かが改造したような感じの方です。


Bot さんは発言の中から反応可能な文字列を拾って反応候補リストを作り、その中からランダムに反応を選んで発言します。
「おはよう、こんにちは、こんばんは」と言ったら、「おはよ」「こんにち」「こんば」の三つを拾って反応リストを作成、1/3 の確率で「いらっしゃいませ、こんばんは♪」という反応が返ってくる仕組みです。


普通はカタカナで記述するような単語にも反応するのは、jcode::tr(\$chat,"ア-ン","あ-ん"); とかしてたんじゃなく、単に A さんがマメで、ひらがなカタカナ両方を辞書登録していたんだと思います。jcodeLE.pl だと tr 無かった気もしますし。


Bot さんが反応した文字列は以下の通りです。


「こんば」→「いらっしゃいませ、こんばんは♪」
「明るい」→「ええ、ぴっかぴかですねー」
「最後」→「…もしかして…『最後』じゃなくて『最期』だったり?」
「(あなた|君)」→「え?私?」
「殺」→「殺すとか、ぶっそうな!」
「プレイ」→「…遊びだったのね」
「死」→「死なばもろともっ」
「傷つけ」→「傷つけられたなら、傷つけ返せばよろし♪」
「さかな」→「三枚におろして♪」
「るー」→「溶けるまで煮込んで♪」
「えろ本」→「ベッドの下に隠そう!」
「じゃあね」→「もう行っちゃうの?寂しい…」


舞台が現代だと、個人サイトのチャットプログラムに目くじら立てるようなレンタルサーバなんて死滅してるんじゃないかと思い、昔にしました。
Web チャットの人工無脳ブームは、人によっては十年以上前かもしれませんし、十年近く前かもしれませんが、まあ十年前後かなと適当な予測を立てて十年前にしました。
現在のボットさんは、形態素解析やらマルコフ連鎖やらを駆使してオリジナルっぽい文を吐いたり、外部から取得したニュースなどを流すのが主流っぽいので、若干おっさんホイホイ寄りだったかもしれません。これは意図してやった訳ではなく、ただの調査不足に由来するものです。
バグが発生したのは何故か分かりません。うっかりおまじないを「1/0;」とかにしちゃって、さらにうっかり動いちゃったとかそういうプラズマだと思います。


肝心の答え部分が薄め短めで、何だか申し訳ない気もするのですが、短文で回答できる問題にしたいという気持ちから、こうなりました。
少なくとも自分の想定する結末では回答部分は短めになるようにしようと思って作りました。回答して下さる方が自分と同じフィーリングだったらラッキーというバクチ気分も込めて。


最後に、ここまでお目を通していただき、ありがとうございました。