
2026/06 - 2026/08
路地裏あやかし合戦
TypeScriptBunReactSQLiteDrizzleTailwindStripeRailway
47都道府県の「ポップな妖怪」を毎日繰り出して合戦し、X のいいね=育成・卵リプ=方向付けとして観客の介入を取り込む。旧称「近畿あやかし合戦」を 2026-07-10 に改名、2026-07-22 に全国化を決定し 2026-07-30 に新エンジン v3 で本番切替。
Xアカウント: https://x.com/ayakashi_kassen
観戦 Web UI: https://ayakashi-kassen.net
概要
- 卵 → 孵化 の流れで X に登場。卵リプで誕生 LLM を方向付け、いいねが妖怪ステの開眼として効く(log 圧縮の連続値配分)
- 最大 3vs3 のターン制オートバトルを都度解決。合戦は選抜投稿方式に切り替え、日次ダイジェストで結果を集約
- 47都道府県を1アカウント・1世界で運用。近畿・関東の地方ブロック並列運用は v3 移行時に廃止
- 誕生を巻物口上 + 音声つき mp4 で送出、朝の妖怪占い(uranai)・週2のウワサ番付・cheer(応援)・auto-reply(会話モード)など投稿種別を拡張
v3 エンジン(2026-07-30 本番切替)
- 投影テーブルを全廃してドメインイベント + in-memory fold に再設計
- tick 廃止 → ゲーム内 datetime + Clock 注入で決定論を保ったまま実時計と一致
- 旧エンジン(v2)実装は同日一括削除
ゲームの拡張(2026-08〜)
- 気質(trait)プールを5→14種に拡張、担当(tanto)プールも拡充
- 卵リプの採用判定に著者内正規化を追加(テーマ指定 > 明示的な要望 > 最新、の優先順位で1人の重複採用を裁く)
- 日次ダイジェストの額縁コピーは LLM 呼び出しをやめ、静的プールと直近実績からの組み合わせに変更
- auto-reply(会話モード)にメンションタイムラインの取り込みを追加
個別チャット(2026-08〜)
- 妖怪との1:1個別チャットを実装、本番稼働中。X ログインで開始
- プランはおためし・一見・常連・馴染み・旦那衆の5段階。日次の送信枠に加え、サイト内通貨「文」(1文=¥1)で枠超過分を追加送信できる(絶対上限あり)。課金は Stripe
- 会話の記憶容量(メモリ上限)はプラン別に段階を変える
- 妖怪への操作・脱獄的な入力を検知する「とら丸ゲート」でモデレーション
- キャラ設定の追加指示はストーリー仕立てのビート進行で注入し、完結する構成にした
- 妖怪の返答にタップで選べる選択肢を追加、妖怪が「描いた絵」を並べるギャラリーも実装
- 退会・データ消去(erase)の導線も用意
ユーザー自身が妖怪をつくれる機能も追加(チャット専用・バトル不参加、1体300文、機能フラグで既定オフ)。
匿名入口と課金導線(2026-08〜)
- X広告からの流入がログイン必須の壁で離脱していた課題を受け、ログインなしで少量チャットできる匿名入口を追加
- 匿名アカウント+無料枠+IPの上限で原価を有界化し、Turnstile でボット対策
- 無料枠を超えて使いたい人は、決済の前にメールのワンタイムコード(OTP)で登録してから課金する動線
- ログイン方法(X/メール)を選べるようにし、既存の X アカウントへのメール紐付けにも対応
- 公開の料金ページ /pricing を新設
Xのシャドウバン経緯
別アカウントからの検索でヒットしない「シャドウバン」が発生。ハッシュタグ除去や投稿時刻の分散を試みたが改善せず、アカウント若さのペナルティと判断して Pending にしたところ、予定通り1ヶ月ほどで復帰した。
規模感
- 期間: 2026/06/07 〜 継続運用中
- コミット: 1,490+ / TypeScript・TSX: 850 ファイル・約 20 万行
- 1人開発(世界設計・実装・キャラ絵生成・音声生成・X 連携・運用すべて)