画像RSS

2025年12月31日水曜日

禍話リライトまとめ、12月報: ジャンル分け、切抜き追加など

これまでの振り返り

現在、禍話リライトをまとめたページを作成しています。 現状、noteにあるリライトはほぼすべてまとめを終えているはずです。

最初、配信ごとにリライトをまとめたページを用意しました。

その後、特殊な形式でまとめたページも作成しました。

続いて、シリーズごとにまとめたページも作成しました。

ここまでが、過去の記事で紹介した内容です。以降は最近に追加した新規のまとめです。

FEAR飯関係者のまとめ

FEAR飯関係者に関するまとめを作成しました。FEAR飯の関係者が登場する話や、提供した話を個別にまとめたものです。

このまとめですが、かなり抜けが多いと思われます。抜けを見つけた際には指摘のコメントをいただけますと幸いです。 また、イソロクさん (五十六さん?) や介護職のIさん、アオさんについては存在は認識していますが、まとめに含めていません。どの話に登場するのか忘れてしまった、そもそも表記がよく分からないなどの理由があります。

話の提供者についてのまとめ

禍話ではFEAR飯の方々が自分で集めた話を語るだけでなく、視聴者がダイレクトメールを通じて話を送ることがあります。最近は「創作ホラー劇場 ミッドナイトギャラリー」という企画もあります。 そこで、分かる範囲で話の提供者ごとにまとめたページも作成しました。提供した話や関係する話を2話以上確認した方が対象です。

広義の「禍話関係者」ではありますが、先程のページには含めないことにします。酢豆腐さんは分類が難しいですが、ひとまずはこちらに入れています。

こちらも抜けが多いと思われます。ご指摘いただけますと幸いです。

note以外のリライトのまとめ

禍話リライトといえばnote。noteといえば禍話リライトとニンジャスレイヤー。

そう言っても過言ではないほどに禍話リライトはnoteに投稿されることが多いです。ただ、note以外にも少数ですがリライトは投稿されています。

このページではnote以外のウェブサイトで投稿されたリライトをまとめています。ただし、noteに同じ内容のリライトがある場合は対象外とします。

noteにないリライトは等閑視されがちなのではないか、という懸念からこのページを作成しました。むくろ幽介さんのリライトは多くの人が読んでいると思いますが、個人サイトに投稿されたものは見逃している人も多いのではないかと思います。

逆に言えば、このページに書かれていないものは私も見逃しています。抜けがあればご報告いただけますと幸いです。

ジャンルの分類

ジャンルごとにまとめたページも作成しました。怪談でありがちなジャンルごとに分類しています。

このページはリライトがある話を優先してまとめました。リライトがない話についても、徐々に整備していく予定です。

切抜き動画へのリンクを追加

禍話の配信の一部を切抜いた動画が投稿されています。そこで、切抜き動画へのリンクをまとめの各話に追加しました。 以下のチャンネルの切抜き動画を対象としています。同一の話の切抜き動画が複数存在する場合、上から順に優先して選択しています。

  1. FEAR飯
  2. 『禍話』切り抜きチャンネル【公認】
  3. 禍話の分家

以上です。来年も禍く過ごしましょう。

2025年12月14日日曜日

C#でnoteの検索結果を全て取得する

noteで「禍話」に関する記事を全て取得するためにC#でプログラムを作成しました。noteのAPIの扱い方の参考になるかと思い、汎用的になるように加工して公開します。

noteでは、次のURLから検索結果をJSON形式で取得できます。

https://note.com/api/v3/searches?context=note&q=(検索ワード)&sort=(ソート方法)&size=(結果の数)&start=(開始番号)

各種のパラメータの意味は以下の通りです。

q=(検索ワード)
検索したい言葉。URL用にエンコードが必要です。「禍話」を検索する場合は「%E7%A6%8D%E8%A9%B1」となります。
sort=(ソート方法)
検索結果のソート方法。新しい順であれば「new」と書きます。
size=(結果の数)
検索結果の取得数。最大値は20のはずです。
start=(開始番号)
検索結果全体のうち、どこから取得するか。

次のプログラムは、noteの検索結果をすべて取得し、テキストファイルに出力します。 短期間で連続してnoteのAPIを叩くと、noteのサーバから怒られてしまいます。そのため、時間はかかりますが、Thread.Sleepを挟む必要があります。


using System.IO;
using System.Net.Http;
using System.Text.Json;
using System.Web;

// 待機時間生成用
var random = new Random();

// HTTPクライアント
using var httpClient = new HttpClient();

// note検索の基準値
int start = 0;

// startは20ずつ増加する
const int START_STEP = 20;

// 検索ワード
string? searchQuery = HttpUtility.UrlEncode("検索ワード");

// 出力先
using var sw = new StreamWriter("output.txt");

while(true)
{
    // 検索APIを呼び出す
    string noteUrlText = $@"https://note.com/api/v3/searches?context=note&q={searchQuery}&sort=new&size=20&start={start}";
    HttpResponseMessage httpResponseMessage = await httpClient.GetAsync(noteUrlText);

    Console.WriteLine(noteUrlText);

    // ステータスコードを出力
    Console.WriteLine($"Status Code: {httpResponseMessage.StatusCode}");

    // JSONデータを取得
    string? jsonContent = await httpResponseMessage.Content.ReadAsStringAsync();

    // noteの検索結果を解析する
    JsonDocument searchResult = JsonDocument.Parse(jsonContent);

    // note_cursor
    int cursor = 0;

    // dataエレメントがあるか確認
    if (searchResult.RootElement.TryGetProperty("data", out JsonElement dataElement))
    {
        // note_cursorエレメントを確認
        if (dataElement.TryGetProperty("note_cursor", out JsonElement noteCursorElement))
        {
            if (Int32.TryParse(noteCursorElement.GetString(), out int cursorConv))
            {
                cursor = cursorConv;
            }
        }
        else
        {
            // note_cursorエレメント取得失敗時はエラーと見なし、中断
            Console.WriteLine("失敗");

            break;

        }

        Console.WriteLine($"cursor: {cursor}");

        // notesエレメントを確認
        if (dataElement.TryGetProperty("notes", out JsonElement notesElement))
        {
            // contentsエレメントを確認
            if (notesElement.TryGetProperty("contents", out JsonElement contentsElement))
            {
                for (int i = 0; i < (cursor - start); i++)
                {
                    JsonElement contentElementChild = contentsElement[i];
                    string? authorId = null;

                    // 題名を取得
                    if (contentElementChild.TryGetProperty("name", out JsonElement nameElement))
                    {
                        sw.WriteLine($"題名\t{nameElement}");
                    }

                    // 記事投稿日時を取得
                    if (contentElementChild.TryGetProperty("publish_at", out JsonElement publishAtElement))
                    {
                        if (publishAtElement.TryGetDateTimeOffset(out DateTimeOffset dateTime))
                        {
                            sw.WriteLine($"投稿日時\t{dateTime.ToString("yyyy-MM-ddTHH:mm:sszzz")}");
                        }
                    }

                    // userエレメントを取得
                    if (contentElementChild.TryGetProperty("user", out JsonElement userElement))
                    {
                        // ユーザ名を取得
                        if (userElement.TryGetProperty("nickname", out JsonElement nicknameElement))
                        {
                            sw.WriteLine($"作者名\t{nicknameElement.ToString()}");
                        }

                        // ユーザのnoteページを取得
                        if (userElement.TryGetProperty("urlname", out JsonElement urlNameElement))
                        {
                            sw.WriteLine($"作者noteページ\thttps://note.com/{urlNameElement}");
                            authorId = urlNameElement.ToString();
                        }
                    }

                    // note記事のURLを取得
                    if (contentElementChild.TryGetProperty("key", out JsonElement keyElement))
                    {
                        sw.WriteLine($"noteのURL\thttps://note.com/{authorId}/n/{keyElement}");
                    }
                }
            }
        }
    }

    // cursorはstartから20増加する値になるはず
    if (cursor >= (start + START_STEP))
    {
        // 次のstartは20増加
        start = start + START_STEP;
    }
    else
    {
        // 20増加した値にならなかった場合、この周回で検索を終える
        break;
    }

    // 短期間でのnoteへのアクセスを防止するため、ランダム時間だけ待機
    Thread.Sleep(random.Next(10000, 15000));

    sw.WriteLine();
}

C#でBloggerページの自動更新

禍話リライトまとめを作る際に、Bloggerのページを自動で更新するプログラムが欲しくなり、Blogger APIを叩くプログラムを自作しました。

下準備: ページIDの取得

ページの自動更新のためには、ブログのIDとページのIDを知っている必要があるようです。

ブログのIDは簡単に確認できます。Bloggerのサイトを開いたときに、自動でリダイレクトされる先のURLを見れば解決します。URLは「https://www.blogger.com/blog/posts/(数字の羅列)」という形式であり、この数字の羅列がブログのIDです。

ただ、ページのIDは簡単には確認できないようでした。そのため、まずはページのIDを調べるプログラムを作成しました。

以下のプログラムは次の2点を予め実施する必要があります。

  • GoogleのAPIの認証のため、APIキーまたはOAuthクライアントIDを作成する (参考: アクセス認証情報を作成する)。作成したAPIキーまたはOAuthクライアントIDはすぐには有効にはならないため注意する。
  • NuGetパッケージで「Google.Apis.Blogger.v3」をインストールする。

このプログラムは、ページのキーを列挙し、そのID、題名、URLを出力します。 この例ではAPIキーを使用していますが、OAuthクライアントIDを使用しても良いです。どうせ必要になることを考えると、OAuthクライアントIDを作成した方が良いかもしれません。


using Google.Apis.Blogger.v3;
using Google.Apis.Services;

// Bloggerサービス
var service = new BloggerService(new BaseClientService.Initializer()
{
    ApiKey = "APIキー",
    ApplicationName = "アプリケーション名"
});

// リクエスト
var request = service.Pages.List("ブログのID");
request.MaxResults = 100;      // 結果の最大数

// レスポンス
var response = request.Execute();

// レスポンスを出力
using (var sw = new StreamWriter("output.txt"))
{
    foreach (var item in response.Items)
    {
        sw.WriteLine(item.Id);
        sw.WriteLine(item.Title);
        sw.WriteLine(item.Url);

        sw.WriteLine();
    }
}

本番: ページの更新

ようやく本題に入ります。以下のプログラムは次の2点を予め実施する必要があります。

  • GoogleのAPIの認証のため、OAuthクライアントIDを作成する (参考: アクセス認証情報を作成する)。“client_secret.json”をダウンロードしておくこと。作成したOAuthクライアントIDはすぐには有効にはならないため注意する。
  • NuGetパッケージで「Google.Apis.Blogger.v3」をインストールする。

このプログラムは、既存のBloggerのページの題名、内容を更新します。


using Google.Apis.Auth.OAuth2;
using Google.Apis.Blogger.v3;
using Google.Apis.Blogger.v3.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using static Google.Apis.Blogger.v3.Data.Page;

namespace BloggerPageUpdateProgram
{
    public class Program()
    {
        public static void Main()
        {
            new Program().Run().Wait();
        }
    
        private async Task Run()
        {
            // Googleの認証
            UserCredential credential;
            using (var stream = new FileStream("client_secret.jsonのパス", FileMode.Open, FileAccess.Read))
            {
                credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.FromStream(stream).Secrets,
                    new[] { BloggerService.Scope.Blogger },
                    "user",
                    CancellationToken.None,
                    new FileDataStore(this.GetType().ToString())
                );
            }

            // Bloggerサービス
            var service = new BloggerService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "アプリケーション名"
            });

            // Blogger接続用のデータ
            var blog = new BlogData();
            blog.Id = "ブログのID";
            
            // Bloggerのページへの書き込みデータ
            var page = new Page();
            page.Kind = "blogger#page";
            page.Blog = blog;
            page.Id = "ページのID";
            page.Title = "ページの題名";
            page.Content = "ページの内容";

            // リクエスト
            var request = service.Pages.Update(page, "ブログのID", "ページのID");

            // レスポンス
            var response = request.Execute();
        }
    }
}

2025年12月6日土曜日

画像生成AI遊びの記録

今時はネット小説に挿絵があって当たり前の時代。せっかくだから、流行りの生成AIを使って挿絵を作成することにした。 ここでは、没にした画像も含め、挿絵に使用したAI生成物を紹介する。

Stable Diffusionを使用した。モデルはPhotonである。 自前で環境構築を試みたが、パソコンの性能が微妙だったため、色々と機能に制約がある状態だった。 例えば、SDXLが使用できず、512×512より大きい画像の出力も無理だった。

以下、特に断りが無ければいわゆる「ポン出し」の画像である。そのような画像については、法律上は著作物として扱われないと思われる。

禍話リライト「髪ゼリー」(「こっくり譚」より)
採用
候補

最初は特に意味もなく、青いゼリーの画像を想定していた。途中から、サムネイルにしたときの鮮烈さを求め、赤色のゼリーに変更した。そんなわけで、青いゼリーの画像と赤いゼリーの画像がある。

禍話リライト「蝋燭の男」
採用
候補

蝋燭を握る手の画像にしたかったのだが、なかなか生成が上手くいかず、最初はただの蝋燭の画像で妥協した。 その後、i2iを利用して、どうにかそれらしい画像を捻り出すことに成功した。

i2iの元絵はこちらである。これを元に生成した画像を、さらにi2iにかけるなどの工程を踏んでいる。

禍話リライト「コンビニに来たカップル」
採用
候補

汚れた硬貨の画像や、地面に突き刺さったスコップの画像を生成したかったのだが、上手くいかなかった。 途中、山中を走る車の画像で妥協しようとした。 最終的には、山に佇む男の画像を作る方針に切り替え、まあまあ上手くいった。

採用した画像の元となったものは次のAI生成画像である。この画像をさらにi2iにかけて完成とした。

採用に至った画像には土饅頭のようなものが描かれているが、特にそのような指示はプロンプトには無かった。偶然の産物である。

禍話リライト「棒の手紙」
採用
候補

山積みの手紙の画像をポン出ししただけ。それ以上、何も思いつかなかった。letter違いで文字の山積みの文字の画像も生成された。

禍話リライト「保健室での譫言」
採用
候補

最初は保健室の画像を出そうとしたが、上手くいかなかった。その後、竹をテーマに適当なものが出来ないかと試みたが、それも失敗した。途中、壊れたハートの画像や、ラブレターを書く様子の画像での妥協を試みた。 最終的に、竹林の近くを走る足を出力する方向で落ち着いた。

禍話リライト「舐婆」
採用
候補

小汚い病院の画像を生成してお終いとした。これ以上は何も思いつかなかった。

禍話リライト「解説こっくりさん」
採用
候補

最終的には、目元を黒い四角形で隠した、巫女のような姿の女の子の画像となった。なお、AI生成物の背景を抽出して、暗い色になるように加工してある。

ここまでやれば、さすがに著作物として主張できるのではないか。無理か。どうなんだ。

ちなみに、加工前の生成物はこちら。可愛い。

禍話リライト「耳なし芳一」
採用
候補

当初は、文字がびっしりと書かれた腕の画像を生成しようとしたが、上手くいかなかった。その後は、バスの画像を生成する方向で切り替えた。

採用したものはバスの画像を生成し、それをモダンでビビッドでお経な感じに加工したものである。これも著作物と言い張って良いのではないか。

なお、お経の画像は下記を使用している。

加工する前の生成物はこちら。

『ロボットダンス』(Creepypasta私家訳、原題“The Robot Dance”)
採用
候補

「しょっぱい演劇」のイメージで、dirtyでoldな感じのmanを出力させた。 顔面の描写が微妙に破綻しているが、それが却って味があると思って採用に至った。

ところで、「mask」をプロンプトに指定すると、コ口ナ禍の風刺画のようなものが生成されて困惑した記憶がある。

禍話リライト「老夫婦」
採用

自宅のインターフォンの写真をi2iにかけたもの。

実物はもっと汚らしい。故障しまって以来、掃除もせずに放置しているためだ。ろくに客も来ないため、特に問題が無い。

いや、まあ、問題はあるのだが……。

禍話リライト「お礼娘」
採用

普通のプールの画像で妥協。「プールの中に墓石が立っている」という不思議な画像を作りたかったのだが、上手くはいかなかった。

試しに女の子の画像も生成してみたのだが、子供らしくない奇妙な体型だったため没となった。子供の顔に、子供の大きさの大人びた肉体がくっついており、かなり不気味だった。

禍話リライト「ベランダで自己紹介」
採用

自宅のベランダの室外機を撮影し、その写真をi2iにかけたもの。生成AIは網目の部分が苦手なのかもしれない。

禍話リライト「離脱の記録」
採用

ノートのある教室の画像をポン出ししただけである。数は沢山生成したのだが、使い道がありそうなものは少なかった。机と椅子を沢山描画させた結果、物が多い分、破綻が目立つ画像が多かった。

禍話リライト「柱の傷」
採用
候補

最初は傷の付いた柱の画像を生成しようとした。しかし、何故かログハウスや枯れ木が出力されてしまった。柱らしき画像が出力されたこともあるが、柱が新しすぎたり古すぎたりとしっくりくるものは無かった。

その後、「何かがあった現場」の画像に方針を切り替えた。これも上手くいかなかったのだが、妥協して1枚選んだ。

禍話リライト「ヤマガミさんの写真」(甘味さん譚)
採用
候補

「滝 (fall) を写した写真」の画像を生成しようとしたところ、秋 (fall) の画像が生成されてしまった。

禍話リライト「ヤマガミさんの写真」(甘味さん譚)

写真の画像

この話は廃墟好きのKさんという女性から提供されたものだ。ただ、Kさんが廃墟に行った話ではない。奇妙な写真を見せられたという話である。

ある日、Kさんは知人から、ある男性に会ってほしいと頼まれた。その人物はKさんにとって大学の先輩に当たるが、大規模な飲み会で一度会ったことがある程度で、知り合いとすら言えない関係だった。その先輩が旅行から帰ってきて以来、おかしくなってしまったらしい。頼み事をしてきた知人は、Kさんの度胸を当てにしていた。

会いに行ってみると、先輩はにこやかな笑みを浮かべて出迎えた。元は社交的でお洒落な人物だったらしい。ただ、目の前にいる人物は明らかに何日か風呂に入っていない様子だった。ブランド物の眼鏡を掛けていたが、レンズには沢山の指紋が付いていた。

「Kちゃん、お久しぶり。元気だったかな」

知り合いでもないのに、妙に馴れ馴れしい口調だった。話を続けていると、どうやらふざけているわけではなく、本気で旧友か何かに会っているつもりらしかった。

「そうそう、この間、彼女と旅行に行ったんだよね」

先輩は旅行の話を始めた。

まず異様だったのが、旅行の行き先が漠然としていたことだった。具体的な観光地の名前を出すわけではなく、例えば「〇〇県」や「××地方」というような大雑把な地名を挙げて、そこに行ったと語っていた。

「旅行ガイドに載っているホテルに泊まっても詰まらないだろ。だから、駅前の案内から旅館を探したんだ。鄙びた感じの場所だったけど、それが大当たりでね」

先輩は旅館から見える景色が良かった、料理が美味しかったと宿泊した旅館を褒め始めた。ただ、具体的に何が良かったのか、どのような料理が出たのかなど、何もかもが曖昧だった。

「その旅館にヤマガミさんっていう仲居さんがいてさ。とても良くしてくれたんだ。結構年配の方だったんだけど、俺らみたいな若い人とも気兼ねなく会話してくれてさ」

「はあ、ヤマガミさん、ですか」

「仲良くなったから、一緒に写真を撮ったんだよ」

先輩はそう言うと、スマートフォンから写真を見せた。写真には水しぶきしか写っていなかった。 甘味さんは困惑したが、よく見ると、自然の滝を接写したものらしいと分かった。

明らかに異様な状況である。しかし、Kさんは一風変わった性格の持ち主。恐怖を覚えるよりも、むしろ楽しい気持ちになってきた。そこで、先輩に直球で質問した。

「滝の写真ですか」

先輩は相変わらずにこやかな笑みを浮かべつつ、口を開いた。

「そうそう。滝だよ。旅館の近くに滝があるんだ。気持ちの良い場所でね」

「ヤマガミさんはどこにいるんですか」

「水が上から下に流れているだろ。その向こう側にヤマガミさんが居るんだ」

滝の裏側が通れるようになっているのかと思って聞いたが、そうではなかった。先輩によれば、滝の裏には何もなく、通路や洞窟があるわけではないとのことだった。

「分からないかな。ここに目があるだろ。鼻は写っていないな」

先輩は写真の所々を指をさして、ここに顔のパーツがあると言った。ただ、どう見ても、滝以外は何も写っていなかった。

先輩は別の写真もあると言って、水面を写した写真を見せた。おそらくは滝の近くで撮影されたものだ。水面にはスマートフォンを構える先輩が写っていたが、その顔は無表情だった。それ以外には何も写っていない。ただ水面が広がるだけだ。

「ヤマガミさんはどちらにいらっしゃるんですか」

Kさんは攻めの姿勢を崩さなかった。

「俺が写っちゃっているけどさ、その隣に写っているだろ」

先輩が指さしたところは水面だけが写っていた。

先輩は同じような写真を数枚見せてきた。山道の接写。木の接写。岩の接写。どれにもヤマガミさんらしき人物は写っていなかった。

Kさんは写真を眺めているうちに、あることに気が付いた。旅館の写真が一枚も無いのである。さんざん褒めていた割に、旅館の内部や、旅館からの風景を写した写真は無かった。

「旅館では写真を撮らなかったんですか」

Kさんは尋ねた。先輩は張り付いたような笑みを崩さずに答えた。

「撮影禁止だったんだよ」

このとき初めてKさんは恐怖を感じたそうだ。


本稿はFEAR飯のかぁなっき様が「禍話」という配信で語った怪談を文章化したものです。一部、翻案されている箇所があります。 本稿の扱いは「禍話」の二次創作の規程に準拠します。

作品情報
出自
禍話アンリミテッド 第三夜 (禍話 @magabanasi放送)
語り手
かぁなっき様
聞き手
加藤よしき様

禍話リライト「柱の傷」

何かの現場の画像

Aさんという会社員の男性の体験談。Aさんは意図せずに他人のトラウマを抉ってしまったことがある。

当時、Aさんはかなり安いアパートに住んでいた。敷金、礼金が0円と破格の物件だ。事故物件というわけではなく、とてつもなく古いのである。柱には、昔の住人が子供の身長を計ったときに付けたと思しき傷が残っていた。

ある日、上司がこの部屋に泊まりに来た。出張する際の準備の関係で、社員の誰かの家に泊まりに行く必要があり、位置の都合からAさんのアパートが選ばれた。少し飲んだ後、明日も早いからと就寝した。

夜、Aさんが眠っていると、物音を聞いて目を覚ました。ガリ、ガリという音が聞こえる。木か何かを削っているようだ。古いアパートとはいえ、さすがにネズミはいない。何だろうと思って音の聞こえる方を見ると、暗い部屋の中で上司の姿が見えた。

上司は柱のそばに立ち、腕を懸命に上の方に伸ばしていた。暗い中、目を凝らしてよく見ると、上司が何をしているのか分かった。片手にフォークを持ち、柱の上の方に傷を付けていた。身長を計っているのであれば、そこまで背が高い人はいないだろうというような位置だ。

酒の飲み過ぎで奇行に走ったのか。いや、まさか。さすがに夢だろう。Aさんも酒が入っていて眠かった。何をするでもなく、そのまま再び眠りに落ちた。

翌朝、目が覚めると、柱のかなり上の方に新しい傷が付いていた。夢ではないことに気付き、Aさんは上司を問い詰めた。

「ボロボロの部屋だから別にいいですけど、さすがにこれは無いですよ」

「これ、俺が付けたのか。ごめんな」

怒りはしたものの、恐ろしく古い物件だったから、大して損害は無い。Aさんは冗談めかして言った。

「だいたい、成長しても、こんなに背が高くなるわけないじゃないですか」

「いや、ホントごめんな。ごめん」

上司は顔を洗いたいと言って、洗面台の方へ向かった。その途中、Aさんの横を通り過ぎる間際に囁くような声で言った。

「伸びるぞ。人は伸びる。そういう状態が続いたらな」

Aさんが呆気にとられていると、上司はテキパキと出張の準備を進め、そのまま部屋を出ていった。

上司が出張から戻ってしばらくした後、上司が退職した。急な退職で、関係者は穴を埋めるのに苦労した。それでも、上司は「実家の都合」の一点張りで、詳しい理由を聞くことも、止めることもできなかった。

残された上司の机を整理していると、引き出しの中から便箋のセットが見つかった。便箋はレシートと一緒に100円ショップの袋の中に入っていた。レシートの日付は、上司が最後に私物を取りに来た日だった。便箋の1枚が包装から取り出されており、それにはこのように書かれていた。

「最悪の部下だ。カサブタを剥がしてくる」

あの夜の奇行と退職の理由に何か関係があったのか、今となっては分からない。

「人が伸びる」と聞くと、首吊り自殺の末路が思い浮かぶ。首吊り死体を放置すると、首が伸びてしまうらしい。「そういう状態」という言葉が嫌な想像を膨らませる。

Aさんは今はもう別の物件へ引っ越した。かつて住んでいた古いアパートの部屋には既に別の人が入居しており、何事もなく幸せそうに暮らしている。


本稿はFEAR飯のかぁなっき様が「禍話」という配信で語った怪談を文章化したものです。一部、翻案されている箇所があります。 本稿の扱いは「禍話」の二次創作の規程に準拠します。

作品情報
出自
禍話アンリミテッド 第二夜 (一時間後からQを視聴) (禍話 @magabanasi放送、「部屋の柱の傷」より)
語り手
かぁなっき様
聞き手
加藤よしき様

2025年12月4日木曜日

禍話リライト「離脱の記録」(こっくり譚より)

教室の画像

安藤さんという中学校の教師の体験談。

安藤さんは今はベテランの教師だが、若い頃は生徒たちからは気楽に話せる相手として親しまれていた。そんな彼だが、一度だけ生徒に手を上げてしまったことがあった。

一時期、生徒の間でこっくりさんが流行ったことがあった。ある女子生徒のグループが特に熱心に取り組んでいた。彼女たちは内輪で籠りがちな性向があった。

あるとき、そのグループの一人が安藤さんに話しかけた。

「安藤先生、ちょっとお話が……」

親身になって話を聞いてみたが困惑した。こっくりさんの話だった。どういうわけか、こっくりさんに誘われたのである。

学校としてはこっくりさんを禁止していなかった。こっくりさんも仲間内での一種のコミュニケーションと言えるだろう。ただ、ヒステリーなどの兆候があったら、対策が必要かもしれない。

安藤さんはこっくりさんへのお誘いに乗ることにした。女子生徒に案内され、こっくりさんの集まりに向かった。

そこは本来は文化系のクラブ活動に使用する教室だった。しかし、そのクラブは休止状態になっており、実質的には空き部屋になっていた。女子生徒たちはそこを溜まり場にしていたようで、彼女たち以外には誰もいなかった。

女子生徒たちはこっくりさんの準備を進めていた。十円玉。五十音と鳥居が書かれた紙。ノート。

ノート……?

そのノートは中学生が勉強に使っていてもおかしくはない、至って普通のノートだった。ただ、こっくりさんには不似合いだ。安藤さんは疑問に思い、女子生徒にノートを何に使っているのか尋ねた。

「こっくりさんの記録に使っているんです。読んでみてもいいですよ」

女子生徒に促されて、安藤さんはノートを開いた。

みんな:こっくりさん、こっくりさん、いらっしゃいましたらはいに進んでください。

みんな:こっくりさん、こっくりさん、いらっしゃいましたらはいに進んでください。

みんな:こっくりさん、こっくりさん、いらっしゃいましたらはいに進んでください。

……

一瞬、ドキリとしたが、2ページ目を見て謎は解けた。こっくりさんが来るまで決まり文句を繰り返さなければならない。それを律儀に書き記していただけのことだった。2ページ目で漸くこっくりさんが来てくれた。

こっくりさん:はい

ノートをパラパラと捲って流し読みしていくと、大したことは書かれていなかった。

みゆちゃん:こっくりさん、こっくりさん、山岸先輩は誰が好きですか。

こっくりさん:ぬまた

こんな具合に、他愛もない質問ばかり書かれている。そろそろ女子生徒にノートを返そうかと思っていると、ある記述が目に飛び込んだ。

まゆちゃん、ここで離脱。

よく読んでみると、他にも同じような記述があった。

えみちゃん、ここで離脱。

さきちゃん、ここで離脱。

……

安藤さんは女子生徒に尋ねた。

「なあ、この『離脱』というのは何かな」

「こっくりさんをやっていると、みんな寝落ちしちゃうんです。そのときに『離脱』って書いているんですよ」

こっくりさんの最中に、生徒が急に寝落ちする。

安藤さんは女子生徒の不可解な言葉に驚き、改めてノートを仔細に確認することにした。そのうちに、安藤さんはある発見をした。

よく読んでみると、女子生徒たちが全員寝落ちしている回がある。ここにいる全員の名前に「離脱」と書かれている。その次の行は、行頭に名前が書かれていなかった。

:こっくりさん、こっくりさん、お帰りください。

こっくりさん:はい

こっくりさんは帰りました。

安藤さんは女子生徒たちにおずおずと尋ねた。

「なあ、ここのページに全員が『離脱』したって書いてあるけど、続きは誰が書いているんだ?」

生徒たちはこっくりさんの準備を終えようとしていた。生徒の一人が答えた。

「それを確認するために、先生を呼んだんですよ」

安藤さんは動揺のあまり、その生徒の頬を張ってしまった。

生徒が泣き出して騒ぎになってしまい、安藤さんは先輩の教師からお叱りを受けた。幸い、大事にはならなかった。ただ、そもそも教師がこっくりさんに参加するのはいかがなものかと窘められた。

ところで。

こっくりさんを遊んでいると、生徒たちが一人一人寝落ちする。ノートには全員が「離脱」したと記録されている。つまり、全員がこっくりさんを遊んでおり、女子生徒たちの誰も端からノートに記録をつけていなかったことになる。

こっくりさんの記録をつけていたのは誰だったのか、最後まで分からずじまいだったとのことだ。


本稿はFEAR飯のかぁなっき様が「禍話」という配信で語った怪談を文章化したものです。こっくり譚のKさんが提供しています。一部、翻案されている箇所があります。 本稿の扱いは「禍話」の二次創作の規程に準拠します。

登場人物の名前を出す必要がある場合、適当な仮名を付けています。

作品情報
出自
元祖!禍話 第二十六夜(後半は猫ちゃん映画の話とかです) (禍話 @magabanasi放送)
語り手
かぁなっき様
聞き手
加藤よしき様

2025年12月1日月曜日

禍話リライト「ベランダで自己紹介」

室外機の画像

Aさんという男性が体験した話。

AさんにはBさんという友人がいた。Bさんは自宅に人を招かない。遊びに行きたいと頼んでも断ってくる。Aさんは、Bさんが何か秘密の趣味を隠しているか、壁が薄くて騒ぐと迷惑になるから人を入れたくないのだろうと推測を立てていた。

ある夏の夜。先輩と居酒屋に行った帰り道。先輩は飲み足りない様子だった。

「そうだ。この辺りにBんちあるからさ。そこで飲み直そうぜ」

AさんはBさんが嫌がるからと抵抗したが、先輩の圧力に押し切られた。酒やツマミを買って、Bさんの住むマンションへ向かった。Bさんの部屋は三階にあった。先輩がインターフォンを押すと、怪訝な顔付きのBさんが出てきた。

「ちょっと飲み直そうと思ってさ。お前も飲もうぜ」

Bさんは露骨に嫌そうな顔をしたが、断らずに二人を部屋に入れた。部屋はごく普通の男性の一人暮らしといった様子で、綺麗でもないが散らかってもいない。秘密の趣味を隠しているというわけではなさそうだ。安普請でもなく、騒音を心配する必要もないように見える。

どうして人を泊めたがらないのだろう。潔癖で他人が自宅に上がるのが許せないという性格でもないはずだが。

色々と疑問は沸き上がったが、気にせずに飲み直すことにした。ただ、先輩の元に電話が入った。恋人からの電話らしく、応答のために外へ出ていってしまった。

飲み会をしようと言い出した張本人がなかなか帰ってこず、AさんとBさんは気まずい気持ちのまま黙々と酒を飲み進めた。そのうち、酒が回りすぎて、二人とも眠くなった。そのままBさんの部屋で雑魚寝する流れになった。Aさんは眠気に身を任せて、そのまま眠りに就いた。

ふと目が覚めた。外の方に目をやると、ベランダの窓が開いていた。暑いからと窓を開けていたことを思い出した。よく見ると、ベランダに誰か立っていた。Bさんは近くで寝ている。そうなると、先輩がタバコでも吸っているのだろうか。Aさんは暗闇の中で目を凝らした。

先輩ではなかった。女だった。当然ながら知り合いではない。

女はこちらを見ながら、右に行ったり左に行ったりとうろうろしていた。三階だから誰かが忍び込んだ可能性は低い。まさか幽霊か。女と自分を隔てているものは薄い網戸だけである。AさんはBさんを起こそうとした。

「おい。女がベランダにいるぞ。おい」

「立ってねぇよ」

「いや、女が立っているぞ。何なんだあいつは」

Aさんは寝転がるBさんの肩を揺すった。すると、BさんはAさんの腕を強く叩き返した。寝起きの力ではない。ずっと前から起きていたようだ。Bさんは上体を起こした。

「だから居ねぇよ」

「でも……」

Aさんはベランダの方に目を向けた。うっかり女と目が合ってしまった。女は口を開いた。

「しつがいき」

Aさんが唖然としていると、Bさんはうんざりしたような声で言った。

「誰も居ないだろ。室外機しかない。本人もそう言っている。だから早く寝ろ」

Bさんは再び横になり、目を閉じた。

女は再び言葉を発した。

「しつがいき」

Aさんも横になり、何も聞こえないふりをしながら夜を過ごした。明け方には女は姿を消していた。

AさんはBさんから事情を聞いた。Bさんはどうしても引っ越せない訳があるらしく、あの女のことを気にしないようにしながら夜を過ごしているそうだ。

「自分が室外機だって言っているから、そういうことにしているんだよ」

Bさんは充血した目を瞬かせた。


本稿はFEAR飯のかぁなっき様が「禍話」という配信で語った怪談を文章化したものです。一部、翻案されている箇所があります。 本稿の扱いは「禍話」の二次創作の規程に準拠します。

作品情報
出自
元祖!禍話 第十二夜 (禍話 @magabanasi放送、「自己紹介と妥協」より)
語り手
かぁなっき様
聞き手
加藤よしき様